From b5922360d1af5732b04f167ecf3fb297ae547af3 Mon Sep 17 00:00:00 2001 From: taek Date: Wed, 17 Apr 2024 13:39:31 +0900 Subject: [PATCH] dev v3 release sync to main (#94) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added new ERC1271 signature verification logic in Kernel v0.2.3 (#43) * Added 1271 wrapper * Update kernel version to 0.2.3 * use kernel name and version from constants in tests * added delegatecall support (#44) * session key validator fixed for batch scenario * test: fuzz testing for batched options include array * fix: warning removed, forge fmt (#46) * Documentation & minor gas optimisation during userOpExecution (#50) * Add storage slot documentation & run coverage * Gas improvment on disabled mode check during execution Between 1 to 22% gas saved during userOp execution * Missing funds check gas improvments * Adding a bit of comments * Add p256 validator (#48) * Dev (#47) * Added new ERC1271 signature verification logic in Kernel v0.2.3 (#43) * Added 1271 wrapper * Update kernel version to 0.2.3 * use kernel name and version from constants in tests * added delegatecall support (#44) * session key validator fixed for batch scenario * test: fuzz testing for batched options include array * fix: warning removed, forge fmt (#46) --------- Co-authored-by: David Eiber * Initial commit * Update P256Validator.t.sol * forge install: FreshCryptoLib * Refactor with helper functions * Add P256Validator, tests, deps * Remove py scripts used for initial testing * Update foundry.toml * update deps * add non-malleable signatures --------- Co-authored-by: taek * deterministic deploy (#51) * ⚡️ Optimise gas usage when enabling p256 validator, add a few comments (#52) * ⚡️ Optimise gas usage when enabling p256 validator, add a few comments - Reducing the number of indexed variable inside a log highly decrease his gas usage, in the p256 validator, we only matter about the kernel account as index (it's 375 gas per topic, so per indexed props, so reducing the index on both key reduce the enabling gas cost by 375 * 4 -> 1500 gas) - Add a few reflexion todo comment, do you rly need to send the previous key in the event? Since it's cost with a `sload`& also in the event itself * ⚡️ Remove the oldKeys for the event signature * ⚡️ Only compare to raw msg signing instead of eth signed message for p256 * Fix/audit recovery (#53) * added threshold check to make sure threshold is not zero * added userOp.sender on callDataAndNonceHash * added userOp.sender on callDataAndNonceHash * added check if guardian is msg.sender * fmt * ZeroDev-RW-2 : using live weights * ZeroDev-RW-4 and ZeroDev-RW-2 fix * fmt * ✨ Introduce a new Ecdsa Validator, using EIP-712 as signature (#55) * ✨ Add a new ECDSA Typed validator, using EIP-712 signature to validate userOp * ✅ Adding unit test arround EcdsaTypedValidator * ✏️ Rename hash -> userOpHash in AllowUserOp sig * Fix/conflict master (#57) * Dev (#47) * Added new ERC1271 signature verification logic in Kernel v0.2.3 (#43) * Added 1271 wrapper * Update kernel version to 0.2.3 * use kernel name and version from constants in tests * added delegatecall support (#44) * session key validator fixed for batch scenario * test: fuzz testing for batched options include array * fix: warning removed, forge fmt (#46) --------- Co-authored-by: David Eiber * Update recovery audit report * Added new ERC1271 signature verification logic in Kernel v0.2.3 (#43) * Added 1271 wrapper * Update kernel version to 0.2.3 * use kernel name and version from constants in tests * added delegatecall support (#44) * session key validator fixed for batch scenario * test: fuzz testing for batched options include array * fix: warning removed, forge fmt (#46) * Documentation & minor gas optimisation during userOpExecution (#50) * Add storage slot documentation & run coverage * Gas improvment on disabled mode check during execution Between 1 to 22% gas saved during userOp execution * Missing funds check gas improvments * Adding a bit of comments * Add p256 validator (#48) * Dev (#47) * Added new ERC1271 signature verification logic in Kernel v0.2.3 (#43) * Added 1271 wrapper * Update kernel version to 0.2.3 * use kernel name and version from constants in tests * added delegatecall support (#44) * session key validator fixed for batch scenario * test: fuzz testing for batched options include array * fix: warning removed, forge fmt (#46) --------- Co-authored-by: David Eiber * Initial commit * Update P256Validator.t.sol * forge install: FreshCryptoLib * Refactor with helper functions * Add P256Validator, tests, deps * Remove py scripts used for initial testing * Update foundry.toml * update deps * add non-malleable signatures --------- Co-authored-by: taek * deterministic deploy (#51) * ⚡️ Optimise gas usage when enabling p256 validator, add a few comments (#52) * ⚡️ Optimise gas usage when enabling p256 validator, add a few comments - Reducing the number of indexed variable inside a log highly decrease his gas usage, in the p256 validator, we only matter about the kernel account as index (it's 375 gas per topic, so per indexed props, so reducing the index on both key reduce the enabling gas cost by 375 * 4 -> 1500 gas) - Add a few reflexion todo comment, do you rly need to send the previous key in the event? Since it's cost with a `sload`& also in the event itself * ⚡️ Remove the oldKeys for the event signature * ⚡️ Only compare to raw msg signing instead of eth signed message for p256 * Fix/audit recovery (#53) * added threshold check to make sure threshold is not zero * added userOp.sender on callDataAndNonceHash * added userOp.sender on callDataAndNonceHash * added check if guardian is msg.sender * fmt * ZeroDev-RW-2 : using live weights * ZeroDev-RW-4 and ZeroDev-RW-2 fix * fmt * rebase master --------- Co-authored-by: David Eiber Co-authored-by: Derek Chiang Co-authored-by: Quentin Nivelais * fix: removed duplicate function * feat: added delegateCall support in session key (#54) * feat: added delegateCall support in session key * fix: remove deps * feat: added wildcard target permission condition in session key --------- Co-authored-by: taek * fmt (#60) * Script/deploy recovery (#59) * added broadcast to git * script for recovery deployment * recovery plugin on arbitrum goerli and base goerli * deployed to base * Deploy/sepolia (#61) * deployed on arbitrum sepolia * deployed on optimism sepolia * deployed on base sepolia * Deploy/session key (#62) * optimism and arbitrum * optimism mainnet and polygon mainnet * deployed on avalanche * deployed on base * session key deploy completed * deployed on gnosischain (#63) * ⚡️ Migrte from require(string) to revert error on Factory & LiteEcdsa (#58) * feat: add stealth address plugin (#64) Add stealth address plugin to preserve privacy of smart acount owner. Two modes to validate signature - 0: signed by private key of stealth address - 1: signed by owner's private key and secret used to generate stealth address. * Feat/event weighted ecdsa (#65) * script for old factory * script for stake updated * events for add/removing guardian * weighted ecdsa deployed on mumbai * Cherrypick dev (#67) * Link to AA SDKs * script for old factory * Update deployment addresses for Kernel and KernelLite v2.3 in README (#66) * Add Kernel factory address --------- Co-authored-by: Derek Chiang Co-authored-by: David Eiber * Temp/script (#69) * moved to script folder * moved shell scripts * added broadcast * removed Caldera broadcast * Restructure - move plugin to separate repo (#70) * restructured to seprate plugins folder * removed via-ir based plugins, todo: remove all plugins to kernel-plugins * Restructure (#71) * restructured to seprate plugins folder * removed via-ir based plugins, todo: remove all plugins to kernel-plugins * fix: import path fix for kerneltestbase * Add WebAuthN validator (#68) * 🚧 Simple webauthn validator * 🚧 Add deploy script for WebAuthN validator * 🚧 Fix pre op estimation by removing early exit during webauthn msg format * ✅ Add webauthn validator unit test * 🚚 rename WebAuthnValidator -> WebAuthnFclValidator * ♻️ Lot of WebAuthN review - Stay in calldata for webauthn challenge formatting - Stay inside the WebAuthN validator contract for challenge preparation etc, only exit for p256 verification - Better SoC between validator / webauthn / p256 - Wrap the p256 verification logic inside a contract that can be easily replaced when RIP-7212 is deployed * ⚡️ Minor gas optimisation (switching to solady base64 lib) * ✅ Add more tests on sig validation, dummy sig bypass etc * ⚡️ Gas optimisation during webauthn msg check / format * 🐛 Post rebase fix * 🚚 Move webauthn helper and validator inside subfolder validator/webauthn * ⚡️ Switched to foundry cheatcode for p256 sig validation during test And fix deploy script * Feat/add validate (#73) * feat: implement validateSignature of WeightedECDSAValidator * fix: init totalWeight as 0 in validateSignature * Fix validSignature for WeightedECDSAValidator --------- Co-authored-by: adnpark Co-authored-by: Derek Chiang * updated forge-std * forge fmt * Feat/weighted ecdsa (#74) * updated dependencies * updates solady to latest * weighted ecdsa to valdiate the userOp for the last sig * removed toEthSignedMessage * test done * Feat/weighted ecdsa (#77) * weighted ecdsa to valdiate the userOp for the last sig * removed toEthSignedMessage * test done * allow non-userOpHash signed mode when paymaster != 0 * fixed Console.sol (#79) * audit fixes (#80) * audit fixes * fix: update prevSigner to signer on validateSignature and added invariant testing for this * Upload recovery v2 audit * Update audit report * changed test to use standard message hash (#81) * gas snapshot and ci * added snapshot flow * added ci profile to foundry.toml * added coverage workflow * removed ci profile * via-ir for snapshot * Fix dead link * ✨ Add the options to upgrade to the RIP-7212 p256 verifier (#82) * ✨ Add the options to upgrade to the RIP-7212 p256 verifier * 🐛 Handle empty response from the pre compiled p256 verifier * 🐛 Switch between pre-compiled and on chain p256 verifier via a signature flag * Modular permission (#84) * restructured to seprate plugins folder * added modular permission * fmt * synced dev * fix: shadowed variable * modular permission encoding checked * intersect supports validation data with aggregator * draft for modular permission * forge fmt * non-view for validCaller * fix: test for helper * changed validCaller to non-view * removed rawMessage, move this to policy...? * gas policy example for policy * execute policy for interval based execution limits * added natspec for modular permission validator * added flag to skip validation data * moved policy config to separate file * remapping to includ I4337 * temp * modular permission test without validCaller support * support requestor feature * now call it allowed requestor * forge fmt * example for eip712 * test fix to check if signature validation result is ok * fix: nonce fixes in ModularPermissionValidator * fix: use calldata for sig * fix: proof fetching in MerklePolicy * fix : use msg.sender instead of caller for signature verification on eip712 policy * chore: deploy signaturePolicy * fix: added validator in the storage mapping of SignaturePolicy to fix unauthenticated state change vuln * fix: remove p256-verifier lib * feat: added WebAuthnSigner for ModularPermissionValidator (#83) * feat: added Sudo policy for ModularPermissionValidator * fix: nonce for single tx dual enable and ECDSASigner sig --------- Co-authored-by: Sahil Vasava * Fix/execute batch (#85) * fixed execute batch with long return value * added testcase * bumped version to 2.4 * added validator setup * added broadcast for 2.4 on mumbai * Add webauthn audit * Update README.md (#86) * Link to AA SDKs * Update deployment addresses for Kernel and KernelLite v2.3 in README (#66) * Add Kernel factory address * Update README.md --------- Co-authored-by: Derek Chiang Co-authored-by: David Eiber * fix: weigthed ecdsa validator (#90) * fix: avoid infinite loop on renew * fix: set max address as first guardian when renew * fix: update code for dummy signature issue * ✨ Add webauthn authenticator id in the enable event (#89) * ✨ Add webauthn authenticator id in the enable event * 🚀 Add deterministic deployment of the webauthn fcl validator * Update README.md * Document Kernel v3 addresses * Upload chainlight audit report for Kernel v3 * Add v3 plugins audit * V3 (#93) * chore: forge init * forge install: forge-std v1.7.1 * temp * cleanup * temp * fmt * fmt * temp * small steps * initial test for permission manager * enable with selector * removed coverage folder * removed coverage folder * separated validation from validator * permission rule added * draft for bootloader * cleanup code to work with permission mode * nonce starts from 0 * nonce starts from 0 * renamed validation config/storage * push for example ecdsa * updated 7579 * removed module type lib * forge install: openzeppelin-contracts v5.0.2 * feat: port ecdsa, weighted ecdsa, webauthn validators * feat: add isModuleType to webauthn validator * push * works with via-ir, remove for next commit * removed oz * removed webauthn * module types * fallback and action separation * refactor * mock policy * additional data for check userop policy * updated interface * removed group * removed group type * extradata * todo : set root validator sig * policy/signer mock test * feat: removed validuntil/validfrom * fmt * 0xff dedicated to signer * to permissionConfig * fmt * to easier naming * permission data to policy data * pass flag for permission * KernelTestBase (#4) * temp * mock and sdk * format * pack bytes32 id oninstall * only static call for fallback * mock data * to kernel test base * kernel test base * prepare userOp functions for sdk * iteration * encodeExecute * fmt * fix: return valid success for tryexecute/delegatecall * added sudo validation and vId verification * moved check permission signature to permissionManager * action with hook testcase * fix: fallback2771 memory issue * fmt * test: added fallback without install * test: executor test cases * feat: added permission PassFlag * Fix/module base (#5) * temp * mock and sdk * format * pack bytes32 id oninstall * only static call for fallback * mock data * to kernel test base * kernel test base * prepare userOp functions for sdk * iteration * encodeExecute * fmt * fix: return valid success for tryexecute/delegatecall * added sudo validation and vId verification * moved check permission signature to permissionManager * action with hook testcase * fix: fallback2771 memory issue * fmt * test: added fallback without install * test: executor test cases * feat: added permission PassFlag * error type for initialize error * fixed interface * Update SignerBase.sol (#6) * fix: signer oninstall with permission id (#7) * changed solady remapping (#8) * fix: return false for rejected proposal (#9) * fix: max limit for invalidation size is 10 (#10) * fix: installValidations function to allow multiple validation install and explicit permission install interface (#11) * Fix/zerodev 005 (#12) * refactor: moved to validation manager * fix: kernel to have proper deinit scenario * Feat/optional hook uninstall (#14) * feat: made hook uninstall optional * fix: added fix for hookData encoding * feat: conditional nonce increase, current nonce only increases when same vId has already been enabled (#15) * fix: use msg.sender for isValidSignatureWithSender (#16) * clean up the permission data first when there is pre exsiting permission with same permissionId (#21) * Feat/excessively safe call (#23) * using module lib for removing module * using erc2771 call * rollback to action/fallback separation * Feat/selector call support (#28) * using module lib for removing module * using erc2771 call * rollback to action/fallback separation * minor changes * added support for call type fallback * upgradeTo (#29) * validUntil (#30) * doing abi.encodeWithSelector (#31) * Feat/install selector (#33) * use non _ functions for library * install fallback to work as install selector * removal of fallback of fallback * removed action, it's only fallback now * Script/deploy (#34) * deploy script * script for deployment * fix: signature offset for root (#37) * fix: change offset to length * added sdk for signature * factory : factory staker added (#38) * Refactor/cleanup (#39) * Hardhat for refactoring * chore: moved constants to Constants.sol * test: test for signatures * testcases for signature * Test/factory (#40) * test and script for factory * changed script to use create2 * Test/factory (#41) * test and script for factory * changed script to use create2 * script: added stake part * Refactor/cleanup (#42) * chore: unchecked * fmt * fix: changed order of enable sig validation and enable install * hook changed * compact sdk test cases * fuzz testing for installation * executor uninstall test * rc1 * added gitignore * scripts for deploy * added addresses * Refactor/cleanup (#44) * chore: unchecked * fmt * fix: changed order of enable sig validation and enable install * hook changed * compact sdk test cases * fuzz testing for installation * executor uninstall test * rc1 * added gitignore * scripts for deploy * added addresses * stake script * added amoy * approving and staking * staked/approved on nova and linea * script finalized * removed v2 --------- Co-authored-by: adnpark * removed staketofactory * removed ikernel * removed kernel lite ecdsa * removed legacy files --------- Co-authored-by: David Eiber Co-authored-by: Quentin Nivelais Co-authored-by: Derek Chiang Co-authored-by: Sahil Vasava Co-authored-by: jhw Co-authored-by: adnpark Co-authored-by: Aiden Park <97845814+adnpark@users.noreply.github.com> --- .gitignore | 26 +- .gitmodules | 12 +- README.md | 13 +- audits/chainlight_v3_0.pdf | Bin 0 -> 542942 bytes audits/kalos_v3_plugins.pdf | Bin 0 -> 1472886 bytes broadcast/Deploy.s.sol/1/run-1712893238.json | 107 + broadcast/Deploy.s.sol/1/run-latest.json | 107 + broadcast/Deploy.s.sol/10/run-1712897446.json | 113 + broadcast/Deploy.s.sol/10/run-latest.json | 113 + .../Deploy.s.sol/100/run-1712924751.json | 126 + .../Deploy.s.sol/100/run-1712924764.json | 126 + .../Deploy.s.sol/100/run-1712924828.json | 126 + .../Deploy.s.sol/100/run-1712925554.json | 126 + broadcast/Deploy.s.sol/100/run-latest.json | 126 + .../Deploy.s.sol/11155111/run-1710948578.json | 36 + .../Deploy.s.sol/11155111/run-1710948591.json | 51 + .../Deploy.s.sol/11155111/run-1712078165.json | 50 + .../Deploy.s.sol/11155111/run-1712078188.json | 50 + .../Deploy.s.sol/11155111/run-1712078215.json | 50 + .../Deploy.s.sol/11155111/run-1712078252.json | 50 + .../Deploy.s.sol/11155111/run-1712078612.json | 50 + .../Deploy.s.sol/11155111/run-1712595823.json | 180 + .../Deploy.s.sol/11155111/run-1712597270.json | 66 + .../Deploy.s.sol/11155111/run-1712840412.json | 81 + .../Deploy.s.sol/11155111/run-1712840540.json | 130 + .../Deploy.s.sol/11155111/run-1712840868.json | 130 + .../Deploy.s.sol/11155111/run-latest.json | 130 + .../Deploy.s.sol/11155420/run-1712853341.json | 59 + .../Deploy.s.sol/11155420/run-1712853370.json | 113 + .../Deploy.s.sol/11155420/run-latest.json | 113 + .../Deploy.s.sol/137/run-1712900481.json | 172 + broadcast/Deploy.s.sol/137/run-latest.json | 172 + .../168587773/run-1712925069.json | 82 + .../168587773/run-1712925099.json | 82 + .../168587773/run-1712925243.json | 82 + .../168587773/run-1712925385.json | 82 + .../168587773/run-1712925425.json | 82 + .../Deploy.s.sol/168587773/run-latest.json | 82 + .../Deploy.s.sol/204/run-1712900818.json | 158 + broadcast/Deploy.s.sol/204/run-latest.json | 158 + .../Deploy.s.sol/42161/run-1712897474.json | 111 + broadcast/Deploy.s.sol/42161/run-latest.json | 111 + .../Deploy.s.sol/421614/run-1712852878.json | 111 + broadcast/Deploy.s.sol/421614/run-latest.json | 111 + .../Deploy.s.sol/42170/run-1712904562.json | 152 + broadcast/Deploy.s.sol/42170/run-latest.json | 152 + .../Deploy.s.sol/42220/run-1712924410.json | 238 + broadcast/Deploy.s.sol/42220/run-latest.json | 238 + .../Deploy.s.sol/43113/run-1712852801.json | 59 + .../Deploy.s.sol/43113/run-1712852835.json | 107 + broadcast/Deploy.s.sol/43113/run-latest.json | 107 + .../Deploy.s.sol/43114/run-1712900579.json | 107 + broadcast/Deploy.s.sol/43114/run-latest.json | 107 + .../Deploy.s.sol/44787/run-1712924330.json | 238 + broadcast/Deploy.s.sol/44787/run-latest.json | 238 + broadcast/Deploy.s.sol/56/run-1712900012.json | 61 + broadcast/Deploy.s.sol/56/run-latest.json | 61 + .../Deploy.s.sol/59140/run-1712853413.json | 107 + broadcast/Deploy.s.sol/59140/run-latest.json | 107 + .../Deploy.s.sol/59144/run-1712904298.json | 82 + .../Deploy.s.sol/59144/run-1712904302.json | 82 + .../Deploy.s.sol/59144/run-1712904331.json | 146 + broadcast/Deploy.s.sol/59144/run-latest.json | 146 + .../Deploy.s.sol/80001/run-1712853455.json | 172 + broadcast/Deploy.s.sol/80001/run-latest.json | 172 + .../Deploy.s.sol/80002/run-1712896788.json | 82 + .../Deploy.s.sol/80002/run-1712896833.json | 85 + broadcast/Deploy.s.sol/80002/run-latest.json | 85 + broadcast/Deploy.s.sol/8453/run-latest.json | 62 + .../Deploy.s.sol/84532/run-1712853126.json | 59 + .../Deploy.s.sol/84532/run-1712853142.json | 59 + .../Deploy.s.sol/84532/run-1712853185.json | 59 + .../Deploy.s.sol/84532/run-1712853220.json | 113 + broadcast/Deploy.s.sol/84532/run-latest.json | 113 + .../11155111/run-1712847787.json | 49 + .../11155111/run-latest.json | 49 + .../42220/run-1712924455.json | 49 + .../DeployECDSA.s.sol/42220/run-latest.json | 49 + .../44787/run-1712924509.json | 49 + .../DeployECDSA.s.sol/44787/run-latest.json | 49 + .../80001/run-1695305026.json | 65 - .../80001/run-latest.json | 65 - foundry.toml | 17 +- gas/ecdsa/report-lite.txt | 61 - gas/ecdsa/report.txt | 72 - hardhat.config.ts | 97 +- lib/ExcessivelySafeCall | 1 + lib/I4337 | 1 - lib/solady | 2 +- package-lock.json | 15093 ---------------- package.json | 51 +- remappings.txt | 5 +- script/Deploy.s.sol | 65 + script/DeployDeterministic.s.sol | 40 - script/DeployECDSA.s.sol | 17 + script/DeployECDSAValidator.s.sol | 24 - script/DeployKernel.s.sol | 58 - script/DeployKernelInitial.s.sol | 41 - script/DeployKillSwitch.s.sol | 33 - script/DeployModularPermission.s.sol | 74 - script/DeployMulticall.s.sol | 22 - script/DeployRecovery.s.sol | 19 - script/DeploySessionKey.s.sol | 18 - script/DeployWebAuthnFclValidator.sol | 22 - script/DeployWeightedECDSA.s.sol | 31 - script/StakeToFactory.s.sol | 24 - .../deterministic/DeterministicDeploy.s.sol | 18 - script/deterministic/ECDSAValidator.s.sol | 14 - script/deterministic/Factory.s.sol | 14 - script/deterministic/Factory_old.s.sol | 24 - script/deterministic/Kernel2_2.s.sol | 18 - script/deterministic/Kernel2_3.s.sol | 19 - script/deterministic/SessionKey.s.sol | 14 - src/Kernel.sol | 736 +- src/abstract/Compatibility.sol | 26 - src/abstract/KernelStorage.sol | 130 - src/common/Constants.sol | 27 - src/common/Enums.sol | 15 - src/common/Structs.sol | 69 - src/common/Types.sol | 36 - src/core/ExecutorManager.sol | 54 + src/core/HookManager.sol | 53 + src/core/SelectorManager.sol | 64 + src/core/ValidationManager.sol | 585 + src/executor/KillSwitchAction.sol | 38 - src/executor/RecoveryAction.sol | 9 - src/executor/TokenActions.sol | 21 - src/factory/FactoryStaker.sol | 44 + src/factory/KernelFactory.sol | 70 +- src/interfaces/IAccount.sol | 39 + src/interfaces/IAccountExecute.sol | 17 + src/interfaces/IAggregator.sol | 43 + src/interfaces/IERC7579Account.sol | 109 + src/interfaces/IERC7579Modules.sol | 117 + src/interfaces/IEntryPoint.sol | 193 + src/interfaces/IEntryPointSimulations.sol | 61 + src/interfaces/IKernel.sol | 95 - src/interfaces/IKernelValidator.sol | 27 - src/interfaces/INonceManager.sol | 25 + src/interfaces/IPaymaster.sol | 57 + src/interfaces/IStakeManager.sol | 94 + src/interfaces/PackedUserOperation.sol | 28 + src/lite/KernelLiteECDSA.sol | 94 - src/mock/MockAction.sol | 19 + src/mock/MockExecutor.sol | 29 + src/mock/MockFallback.sol | 71 + src/mock/MockHook.sol | 40 + src/mock/MockPolicy.sol | 53 + src/mock/MockSigner.sol | 54 + src/mock/MockValidator.sol | 82 + src/mock/TestCallee.sol | 39 - src/mock/TestCounter.sol | 13 - src/mock/TestERC1155.sol | 20 - src/mock/TestERC20.sol | 22 - src/mock/TestERC721.sol | 30 - src/mock/TestExecutor.sol | 13 - src/mock/TestKernel.sol | 16 - src/mock/TestPaymaster.sol | 20 - src/mock/TestValidator.sol | 55 - src/sdk/ModuleStorageLib.sol | 2 + src/sdk/TestBase/ActionTestBase.sol | 2 + src/sdk/TestBase/ExecutorTestBase.sol | 2 + src/sdk/TestBase/FallbackTestBase.sol | 2 + src/sdk/TestBase/HookTestBase.sol | 2 + src/sdk/TestBase/KernelTestBase.sol | 877 + src/sdk/TestBase/PolicyTestBase.sol | 2 + src/sdk/TestBase/SignerTestBase.sol | 2 + src/sdk/TestBase/ValidatorTestBase.sol | 2 + src/sdk/TestBase/erc4337Util.sol | 16 + src/sdk/moduleBase/PolicyBase.sol | 38 + src/sdk/moduleBase/SignerBase.sol | 38 + src/types/Constants.sol | 77 + src/types/Structs.sol | 8 + src/types/Types.sol | 113 + src/utils/ERC4337Utils.sol | 71 - src/utils/ExecLib.sol | 261 + src/utils/KernelTestBase.sol | 503 - ...lHelper.sol => KernelValidationResult.sol} | 4 +- src/utils/ModuleLib.sol | 17 + src/utils/P256VerifierWrapper.sol | 45 - src/utils/ValidationTypeLib.sol | 154 + src/validator/ECDSATypedValidator.sol | 125 - src/validator/ECDSAValidator.sol | 91 +- src/validator/ERC165SessionKeyValidator.sol | 68 - src/validator/KillSwitchValidator.sol | 85 - src/validator/SessionKeyValidator.sol | 311 - src/validator/WeightedECDSAValidator.sol | 146 +- src/validator/modularPermission/IPolicy.sol | 23 - src/validator/modularPermission/ISigner.sol | 17 - .../ModularPermissionValidator.sol | 280 - .../modularPermission/PolicyConfig.sol | 67 - .../modularPermission/mock/MockPolicy.sol | 49 - .../modularPermission/mock/MockRequestor.sol | 11 - .../modularPermission/mock/MockSigner.sol | 42 - .../policies/EIP712Policy.sol | 131 - .../policies/ExecutePolicy.sol | 50 - .../modularPermission/policies/GasPolicy.sol | 58 - .../policies/MerklePolicy.sol | 180 - .../policies/SignaturePolicy.sol | 45 - .../modularPermission/policies/SudoPolicy.sol | 29 - .../modularPermission/signers/ECDSASigner.sol | 52 - .../signers/WebAuthnSigner.sol | 82 - .../webauthn/WebAuthnFclValidator.sol | 143 - .../webauthn/WebAuthnFclVerifier.sol | 152 - test/ECDSAValidator.t.sol | 118 + test/Kernel.t.sol | 5 + test/Permission.t.sol | 143 + test/foundry/KernelECDSA.t.sol | 99 - test/foundry/KernelHelper.t.sol | 66 - test/foundry/KernelLiteECDSA.t.sol | 110 - test/foundry/utils/Merkle.sol | 76 - test/foundry/validator/KernelECDSATyped.t.sol | 153 - .../validator/KillSwitchValidator.t.sol | 119 - .../validator/SessionKeyValidator.t.sol | 538 - .../validator/WebAuthnFclValidator.t.sol | 359 - .../validator/WeightedECDSAValidator.t.sol | 169 - .../modularPermission/ModularPermission.t.sol | 729 - yarn.lock | 4004 ++++ 218 files changed, 16449 insertions(+), 22351 deletions(-) create mode 100644 audits/chainlight_v3_0.pdf create mode 100644 audits/kalos_v3_plugins.pdf create mode 100644 broadcast/Deploy.s.sol/1/run-1712893238.json create mode 100644 broadcast/Deploy.s.sol/1/run-latest.json create mode 100644 broadcast/Deploy.s.sol/10/run-1712897446.json create mode 100644 broadcast/Deploy.s.sol/10/run-latest.json create mode 100644 broadcast/Deploy.s.sol/100/run-1712924751.json create mode 100644 broadcast/Deploy.s.sol/100/run-1712924764.json create mode 100644 broadcast/Deploy.s.sol/100/run-1712924828.json create mode 100644 broadcast/Deploy.s.sol/100/run-1712925554.json create mode 100644 broadcast/Deploy.s.sol/100/run-latest.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1710948578.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1710948591.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712078165.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712078188.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712078215.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712078252.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712078612.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712595823.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712597270.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712840412.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712840540.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-1712840868.json create mode 100644 broadcast/Deploy.s.sol/11155111/run-latest.json create mode 100644 broadcast/Deploy.s.sol/11155420/run-1712853341.json create mode 100644 broadcast/Deploy.s.sol/11155420/run-1712853370.json create mode 100644 broadcast/Deploy.s.sol/11155420/run-latest.json create mode 100644 broadcast/Deploy.s.sol/137/run-1712900481.json create mode 100644 broadcast/Deploy.s.sol/137/run-latest.json create mode 100644 broadcast/Deploy.s.sol/168587773/run-1712925069.json create mode 100644 broadcast/Deploy.s.sol/168587773/run-1712925099.json create mode 100644 broadcast/Deploy.s.sol/168587773/run-1712925243.json create mode 100644 broadcast/Deploy.s.sol/168587773/run-1712925385.json create mode 100644 broadcast/Deploy.s.sol/168587773/run-1712925425.json create mode 100644 broadcast/Deploy.s.sol/168587773/run-latest.json create mode 100644 broadcast/Deploy.s.sol/204/run-1712900818.json create mode 100644 broadcast/Deploy.s.sol/204/run-latest.json create mode 100644 broadcast/Deploy.s.sol/42161/run-1712897474.json create mode 100644 broadcast/Deploy.s.sol/42161/run-latest.json create mode 100644 broadcast/Deploy.s.sol/421614/run-1712852878.json create mode 100644 broadcast/Deploy.s.sol/421614/run-latest.json create mode 100644 broadcast/Deploy.s.sol/42170/run-1712904562.json create mode 100644 broadcast/Deploy.s.sol/42170/run-latest.json create mode 100644 broadcast/Deploy.s.sol/42220/run-1712924410.json create mode 100644 broadcast/Deploy.s.sol/42220/run-latest.json create mode 100644 broadcast/Deploy.s.sol/43113/run-1712852801.json create mode 100644 broadcast/Deploy.s.sol/43113/run-1712852835.json create mode 100644 broadcast/Deploy.s.sol/43113/run-latest.json create mode 100644 broadcast/Deploy.s.sol/43114/run-1712900579.json create mode 100644 broadcast/Deploy.s.sol/43114/run-latest.json create mode 100644 broadcast/Deploy.s.sol/44787/run-1712924330.json create mode 100644 broadcast/Deploy.s.sol/44787/run-latest.json create mode 100644 broadcast/Deploy.s.sol/56/run-1712900012.json create mode 100644 broadcast/Deploy.s.sol/56/run-latest.json create mode 100644 broadcast/Deploy.s.sol/59140/run-1712853413.json create mode 100644 broadcast/Deploy.s.sol/59140/run-latest.json create mode 100644 broadcast/Deploy.s.sol/59144/run-1712904298.json create mode 100644 broadcast/Deploy.s.sol/59144/run-1712904302.json create mode 100644 broadcast/Deploy.s.sol/59144/run-1712904331.json create mode 100644 broadcast/Deploy.s.sol/59144/run-latest.json create mode 100644 broadcast/Deploy.s.sol/80001/run-1712853455.json create mode 100644 broadcast/Deploy.s.sol/80001/run-latest.json create mode 100644 broadcast/Deploy.s.sol/80002/run-1712896788.json create mode 100644 broadcast/Deploy.s.sol/80002/run-1712896833.json create mode 100644 broadcast/Deploy.s.sol/80002/run-latest.json create mode 100644 broadcast/Deploy.s.sol/8453/run-latest.json create mode 100644 broadcast/Deploy.s.sol/84532/run-1712853126.json create mode 100644 broadcast/Deploy.s.sol/84532/run-1712853142.json create mode 100644 broadcast/Deploy.s.sol/84532/run-1712853185.json create mode 100644 broadcast/Deploy.s.sol/84532/run-1712853220.json create mode 100644 broadcast/Deploy.s.sol/84532/run-latest.json create mode 100644 broadcast/DeployECDSA.s.sol/11155111/run-1712847787.json create mode 100644 broadcast/DeployECDSA.s.sol/11155111/run-latest.json create mode 100644 broadcast/DeployECDSA.s.sol/42220/run-1712924455.json create mode 100644 broadcast/DeployECDSA.s.sol/42220/run-latest.json create mode 100644 broadcast/DeployECDSA.s.sol/44787/run-1712924509.json create mode 100644 broadcast/DeployECDSA.s.sol/44787/run-latest.json delete mode 100644 broadcast/DeployWeightedECDSA.s.sol/80001/run-1695305026.json delete mode 100644 broadcast/DeployWeightedECDSA.s.sol/80001/run-latest.json delete mode 100644 gas/ecdsa/report-lite.txt delete mode 100644 gas/ecdsa/report.txt create mode 160000 lib/ExcessivelySafeCall delete mode 160000 lib/I4337 delete mode 100644 package-lock.json create mode 100644 script/Deploy.s.sol delete mode 100644 script/DeployDeterministic.s.sol create mode 100644 script/DeployECDSA.s.sol delete mode 100644 script/DeployECDSAValidator.s.sol delete mode 100644 script/DeployKernel.s.sol delete mode 100644 script/DeployKernelInitial.s.sol delete mode 100644 script/DeployKillSwitch.s.sol delete mode 100644 script/DeployModularPermission.s.sol delete mode 100644 script/DeployMulticall.s.sol delete mode 100644 script/DeployRecovery.s.sol delete mode 100644 script/DeploySessionKey.s.sol delete mode 100644 script/DeployWebAuthnFclValidator.sol delete mode 100644 script/DeployWeightedECDSA.s.sol delete mode 100644 script/StakeToFactory.s.sol delete mode 100644 script/deterministic/DeterministicDeploy.s.sol delete mode 100644 script/deterministic/ECDSAValidator.s.sol delete mode 100644 script/deterministic/Factory.s.sol delete mode 100644 script/deterministic/Factory_old.s.sol delete mode 100644 script/deterministic/Kernel2_2.s.sol delete mode 100644 script/deterministic/Kernel2_3.s.sol delete mode 100644 script/deterministic/SessionKey.s.sol delete mode 100644 src/abstract/Compatibility.sol delete mode 100644 src/abstract/KernelStorage.sol delete mode 100644 src/common/Constants.sol delete mode 100644 src/common/Enums.sol delete mode 100644 src/common/Structs.sol delete mode 100644 src/common/Types.sol create mode 100644 src/core/ExecutorManager.sol create mode 100644 src/core/HookManager.sol create mode 100644 src/core/SelectorManager.sol create mode 100644 src/core/ValidationManager.sol delete mode 100644 src/executor/KillSwitchAction.sol delete mode 100644 src/executor/RecoveryAction.sol delete mode 100644 src/executor/TokenActions.sol create mode 100644 src/factory/FactoryStaker.sol create mode 100644 src/interfaces/IAccount.sol create mode 100644 src/interfaces/IAccountExecute.sol create mode 100644 src/interfaces/IAggregator.sol create mode 100644 src/interfaces/IERC7579Account.sol create mode 100644 src/interfaces/IERC7579Modules.sol create mode 100644 src/interfaces/IEntryPoint.sol create mode 100644 src/interfaces/IEntryPointSimulations.sol delete mode 100644 src/interfaces/IKernel.sol delete mode 100644 src/interfaces/IKernelValidator.sol create mode 100644 src/interfaces/INonceManager.sol create mode 100644 src/interfaces/IPaymaster.sol create mode 100644 src/interfaces/IStakeManager.sol create mode 100644 src/interfaces/PackedUserOperation.sol delete mode 100644 src/lite/KernelLiteECDSA.sol create mode 100644 src/mock/MockAction.sol create mode 100644 src/mock/MockExecutor.sol create mode 100644 src/mock/MockFallback.sol create mode 100644 src/mock/MockHook.sol create mode 100644 src/mock/MockPolicy.sol create mode 100644 src/mock/MockSigner.sol create mode 100644 src/mock/MockValidator.sol delete mode 100644 src/mock/TestCallee.sol delete mode 100644 src/mock/TestCounter.sol delete mode 100644 src/mock/TestERC1155.sol delete mode 100644 src/mock/TestERC20.sol delete mode 100644 src/mock/TestERC721.sol delete mode 100644 src/mock/TestExecutor.sol delete mode 100644 src/mock/TestKernel.sol delete mode 100644 src/mock/TestPaymaster.sol delete mode 100644 src/mock/TestValidator.sol create mode 100644 src/sdk/ModuleStorageLib.sol create mode 100644 src/sdk/TestBase/ActionTestBase.sol create mode 100644 src/sdk/TestBase/ExecutorTestBase.sol create mode 100644 src/sdk/TestBase/FallbackTestBase.sol create mode 100644 src/sdk/TestBase/HookTestBase.sol create mode 100644 src/sdk/TestBase/KernelTestBase.sol create mode 100644 src/sdk/TestBase/PolicyTestBase.sol create mode 100644 src/sdk/TestBase/SignerTestBase.sol create mode 100644 src/sdk/TestBase/ValidatorTestBase.sol create mode 100644 src/sdk/TestBase/erc4337Util.sol create mode 100644 src/sdk/moduleBase/PolicyBase.sol create mode 100644 src/sdk/moduleBase/SignerBase.sol create mode 100644 src/types/Constants.sol create mode 100644 src/types/Structs.sol create mode 100644 src/types/Types.sol delete mode 100644 src/utils/ERC4337Utils.sol create mode 100644 src/utils/ExecLib.sol delete mode 100644 src/utils/KernelTestBase.sol rename src/utils/{KernelHelper.sol => KernelValidationResult.sol} (93%) create mode 100644 src/utils/ModuleLib.sol delete mode 100644 src/utils/P256VerifierWrapper.sol create mode 100644 src/utils/ValidationTypeLib.sol delete mode 100644 src/validator/ECDSATypedValidator.sol delete mode 100644 src/validator/ERC165SessionKeyValidator.sol delete mode 100644 src/validator/KillSwitchValidator.sol delete mode 100644 src/validator/SessionKeyValidator.sol delete mode 100644 src/validator/modularPermission/IPolicy.sol delete mode 100644 src/validator/modularPermission/ISigner.sol delete mode 100644 src/validator/modularPermission/ModularPermissionValidator.sol delete mode 100644 src/validator/modularPermission/PolicyConfig.sol delete mode 100644 src/validator/modularPermission/mock/MockPolicy.sol delete mode 100644 src/validator/modularPermission/mock/MockRequestor.sol delete mode 100644 src/validator/modularPermission/mock/MockSigner.sol delete mode 100644 src/validator/modularPermission/policies/EIP712Policy.sol delete mode 100644 src/validator/modularPermission/policies/ExecutePolicy.sol delete mode 100644 src/validator/modularPermission/policies/GasPolicy.sol delete mode 100644 src/validator/modularPermission/policies/MerklePolicy.sol delete mode 100644 src/validator/modularPermission/policies/SignaturePolicy.sol delete mode 100644 src/validator/modularPermission/policies/SudoPolicy.sol delete mode 100644 src/validator/modularPermission/signers/ECDSASigner.sol delete mode 100644 src/validator/modularPermission/signers/WebAuthnSigner.sol delete mode 100644 src/validator/webauthn/WebAuthnFclValidator.sol delete mode 100644 src/validator/webauthn/WebAuthnFclVerifier.sol create mode 100644 test/ECDSAValidator.t.sol create mode 100644 test/Kernel.t.sol create mode 100644 test/Permission.t.sol delete mode 100644 test/foundry/KernelECDSA.t.sol delete mode 100644 test/foundry/KernelHelper.t.sol delete mode 100644 test/foundry/KernelLiteECDSA.t.sol delete mode 100644 test/foundry/utils/Merkle.sol delete mode 100644 test/foundry/validator/KernelECDSATyped.t.sol delete mode 100644 test/foundry/validator/KillSwitchValidator.t.sol delete mode 100644 test/foundry/validator/SessionKeyValidator.t.sol delete mode 100644 test/foundry/validator/WebAuthnFclValidator.t.sol delete mode 100644 test/foundry/validator/WeightedECDSAValidator.t.sol delete mode 100644 test/foundry/validator/modularPermission/ModularPermission.t.sol create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index cfe668b2..1ec91788 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ # Compiler files cache/ out/ -dist/ -types/ # Ignores development broadcast logs !/broadcast @@ -15,21 +13,17 @@ docs/ # Dotenv file .env -# coverage files +lcov.info coverage/ -node_modules -.env -coverage -coverage.json -typechain -typechain-types -# Hardhat files -cache -artifacts -artifacts-selected +# node +node_modules/ -cache_hardhat +# hardhat +artifacts/ +cache_hardhat/ +typechain-types/ -lcov.info -settings.json \ No newline at end of file +# zerodev orchestra +log/ +.envrc diff --git a/.gitmodules b/.gitmodules index b97d7759..323c6bdb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,9 @@ [submodule "lib/forge-std"] path = lib/forge-std url = https://github.com/foundry-rs/forge-std -[submodule "lib/I4337"] - path = lib/I4337 - url = https://github.com/leekt/I4337 -[submodule "lib/FreshCryptoLib"] - path = lib/FreshCryptoLib - url = https://github.com/rdubois-crypto/FreshCryptoLib -[submodule "lib/p256-verifier"] - path = lib/p256-verifier - url = https://github.com/daimo-eth/p256-verifier [submodule "lib/solady"] path = lib/solady url = https://github.com/vectorized/solady +[submodule "lib/ExcessivelySafeCall"] + path = lib/ExcessivelySafeCall + url = https://github.com/nomad-xyz/ExcessivelySafeCall diff --git a/README.md b/README.md index f2bb9b3e..1e90b362 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,6 @@ Kernel is supported by all major AA SDKs, including: - [ZeroDev](https://docs.zerodev.app/) - [Permissionless.js](https://docs.pimlico.io/permissionless/how-to/accounts/use-kernel-account) - [UserOp.js](https://docs.stackup.sh/docs/useropjs-presets#kernel) -- [Account Kit](https://github.com/alchemyplatform/aa-sdk/tree/main/packages/accounts/src/kernel-zerodev) ## Resources @@ -36,6 +35,18 @@ MIT ## Addresses +
+v3.0 + +| Name | Address | +| -------------------- | ------------------------------------------ | +| Meta Factory | 0xd703aaE79538628d27099B8c4f621bE4CCd142d5 | +| Factory | 0x6723b44Abeec4E71eBE3232BD5B455805baDD22f | +| Kernel | 0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27 | +| ECDSA Validator | 0x8104e3Ad430EA6d354d013A6789fDFc71E671c43 | + +
+
v2.4 diff --git a/audits/chainlight_v3_0.pdf b/audits/chainlight_v3_0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ff56c270d9dd01babd88e59410c0166519e7d762 GIT binary patch literal 542942 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⋑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§|CBC?) zm42Bd4FPST%MoB{3SjYQIj9@ZHpZ)L4^dP|SjW-%bmCYx=V0^Ex`lTWi@~ZzZ@u2f zsum6dFT{S#pS7$cXi5j`SJY=0 zR-QCF4C(kZN)HsyyllyQSyZC3KZ4e<5VIaL>?;`drb<{Px1z=F-aRf(IZ%mtAla+5 zFp_O^GYK29g}Gd`YXonQ4r>#)*NnHxtb~D)(eufzkhwT1#%*J|7-hM>mQ`O&uOd-o zN{r?g8{Aw@en!S+SZKJ1hG0txpU%=mDr4NYy>aE$kuoCq_JrNf1=UDZCz37pKSjS3 z_FHg#o8Z)_WJGyLIhhW}qH5fOvq457H~Z55>!%$vU&^Y-o9JMsyYwe?p?N}cPa z7e17-F&~bP|)JIk;(wr`q z@T~|;iJtfk^?OYhewiw%T(y@^s$lhLJJ<)r~TsBvWJG8<@6Z=s>JyTX6FRwk3874CI?s?F3M;9LM zyyM&hgH*=Myf7_NYA9DR8#~n+@CKqb3ei@#xwY-ea=oAK$@aG2wVYy7B4*%vWett} z1&n~raJxED`_m5)u-7Gq)FJ(Qz3El+ZsD2o6N*+vF%lG7^Ol;9uikt|)1Jo4kBxVW zs*B8o+X>`7HZSASQrO#QXQ$J~ehz&k3IUM!j!9m3jLn@KV9^PV0{MQ_}5IJ(AAG z^LZ_-2hNKlDjcm(YVRp@<#d#!C?h2mW`buhtMa|5RvucDs)@SYLv_%MLb^y3*oL3$ zgZN4d+Ld_ZLp`yU_&_plo9%cFIRu{@6Wut;Vm!^=PQg!_BkN5h+1kHqZ6=@luDEAe zO;NB%xBw!gQy&4<->rFTty3?9AOGYw3o9nTz4^5p=OC5F-ejQGpnlGZsaT3&Y3CM3 zd#K8xXKh7hK|$v6!u@>a{UMt$sZ1Ekp~si4K{>~Lww-etQT~OYI451r;;AQL^`iu9 z`Ga>7x72`2@K%7pbLgu=H0g8oWV{w)nOCDro@Z%DK}*;K5H=tOOi2K2+Fmr-$P$$* z9ugOM+r%+~A*wYsTb#1;yQfKsd{2?tNs5gVm6hX-H437!acflU^4OzVtmHo2+}t!b z(9S=Im*0#+ECGrp3r&?%w5QaxSXMSi6m-J9{oYQ?q^&Kb!%;|uYll?y>Ll%d4=m=g zKk{-C=*BI0a$bn&ikCfUr{yX$xZHefkZDsDtx|$e7f&14H!DEG)qF52@Zl*2olvbt zYCn!7MTt_$ag0nEwX%K0aD`Uy$0r&yN^I|H7nVQTHymi|GHa-4(8f*0VV6~e&hOiE zG@(vis>DzBBH?^eoYAr}eN~7x5&R5*_DZ2gx)Fqa5&++9=vdi9PoA;X9O}vMgD+%g z{~+|WfE=;M=d}M|JzcD=7Cw{S<9+Q23eu(x6wZ24Icm}_qDVDt_CYWfxiucfuHiG! z>{cq;vjpfHpjow6=H3~yP8xA{+VY5jyDIPc`MW|InrG7^z>*0phf`1TMSE-}b@k6( zH(BS(54PEDJj^V15#!rd2mx8UH4i}akIaDzbBE4NHFT*R&v(?BPFi}Q9W>~~$>Op5 z3s5oXf-S{VZ=7riDZ4=m2aM*E=ac@B!voS!&u@L$0#*;0ZwpDY%b1#K`fjf#-40lt z5`y)<(&UZnt;(IcVd+*(tQQ1(}k0J1Lk2OJ5_ZL3~S@ZJBUQ%6f5%Pb=!`znaxhx-Xec!f*xSOi`Xq75qzo7C<{Sv=C zhe@(tXE_a0vOw;;qD(2ATKHX$z%WPTIX{!BSfDJaoG>@q#YBM8 zVUIyPiAyoa^r^DT%u<2IRP-hLX;iuCa@n+C8Z;I(gs44cgUq2L4qbs*JnlAvK~Sl@ zX5|&YA*hpIto^_{+@|{b)?@)0pXbQ79T8ELgQ$jOL>#!Bmq*8aw6!~YczN%gfT(C9$)b}`@1N0e zRM;Lnb!kx2wtcxCY`I%!yjHe@=R`%%IFh?^Zuh=shriaeh7fE@^_fqriT1?8Xw-_V zW5i)h&>5w0@?6Ah+Q`b%t9AWi#9D)A>Rt(%E173OrJ`zXQTn9TweDk&^rsN(2Q!OR ztYw>)6ijb5#*6z2^TYFGbHtW>HA2*9PoMD*OKq+atvM_D_s7M2)3+r5 zY;T1}w<1l-EQR9l5QoD(&-S7cge~PRG)Z@+(+Oljv$vCbp zlc2rbQ3ZU5AvCF({);nf5bH0zqW?a${%dSW@)5T5JH7J%6kK9wV_*i$XZ`?^{+Ga| zpG1|vik5T^c1Y`HO6mZyrL|$( zZNS(&uH_W(`pozvVrApDy`>4kK_00`cFnjnjgC{Cc5hQrGf`5)nklnf{EZenR0!!% zlbl&YZ*r3L(78=E{pq5NOx`&Cl2(jYIRDp}8m)4U4G?HRN~iz0WG~2-!7^bg z$MVhQ0*E>tL-$l%i!H0!O#A!oGm_m&rKMckQJRe? zbk`@`Tt2elkjvstUXWq|$k;2oJ6q0>nVTBgg)PQ%)~hOexPXe9Sw)S5q1B%i$!BSAsA62+^A{Xs~tb9^Ic_P_<<<(>eUwg#q9iRA>qFx za{ap@`QJlIKY0>Ccj)*d^!#=(af#gv|K zPN4O}w^D7mYyzP^pzjeIzWf(_O=T`qI#&}kZxem%DaVwNR)6%_>j?J;*N3+cr}q)3 zx`fcJu=A)G@7*=&L2sQ}+z3b*A*O2`Qk>@2Yjp}Cdlmp19Wj~Ic8qao^2z{zF(KAh z0K|um7AO)Y`<0QN(Sz(m2u>J*1Nu>MlSB?VD`;_aFIIvu-^q*@myp8Ky0~enX-mxM zZ=umqpw`-g)Hv+>2TxA{4rpGgFN98CafoUGa3M_4d|!~od7`8P@CiPgk4LWHC!UQb+XUhb@gE zV~yedbVndS8K1bOz0#Tt8a)ezcfLnmC~{?YdGKqT|MYs<+AqcLc#u8$sjhy!E*6|! zfIvCwSI`3V=k5IHGp8pXeX>W@UoK2rn7m)}_7Z)$A*?8nHmsi~zN~EVVH?`vDRQfu zPX&Z<%o7nt19I1a`iYw2PXfBS0F6ZE#0o~Iz{0QZ-HIXrpF)C=7G(~>49uD2?lnwf z@Of`PknmcI^4@I;@jJd|ijy2x8?86{0%N;#U37-Qr?a3@u}QX-02y^hw_Uk*qjctQ zLZzPL_$r_PPdF}1RN;M%$Cs}phW#4jThOTE2=kY^`?~6cT3t)FY0_^OPFpEQuhoHE z-mCVI`CHJlThJGy2zA@g8(Yv{wxI9qA!FV8zvl?ac;f;| zoj!DeZHF;@LON}$8K0lobwD@lB_b7%ClpqREa&CcQ|0#bBr0PaNyR=|5FS*F$1H7t z`CR$~RMoaEvfiFBv;n>dcGZ>`vQVHNF7p|QKU82_C~hZ{x89xr^mt;Mnnso%N{XJ$ z_>TLmId}DxV`;HHnHS&LbHL?yj{Tjh(R%klJ;VSeca#QPP3{m8m?HPQ1{4QuxdebwQ#fpiTB!~lqQ@j*iGC13lO*-mo#9oS5xtixvRI)70ii<9tUh>8t-+bKA; zjT&Q+*$st425S(PtN6^yEJ7^08{R3~@=X#22|W!1Lo^%yna>46(Tq(@*{+45$DSCk z%PT3=ma7d^oBu=x$1$K5)!yI`-RGeFrKE4pF8x15zEvimI|j# z;pPu+!I-aIles|ly0YY;Rl;rhej8(ba)4BIZm*P!3n6{3R!TwNZ~@KfLa-DGj^qHFx^-<<2*!J8d|bFNJn#w#`lV%=(@SoECOg zs(ow4sdL**D4aTFgayTOd2|d>@iud5aTxM~_t~q`L=+qs`--J*O2OsT(euX9?-oSnTv zdmnp2eDXe88KthcNiyxJ@W-mN7-^!<0)do`RQXz+F-XEP=@QLXeEH6d*Q8jwJIH83 z9#oCmaDW?lEWE`!48G~JEN$ZUOO_&Mq$FIpWW71uo6hxkH2P^FrL1m zdi|d82zOQ$l9HNE9pOpET-9+eY<{_+@{zbikncqe5cma6nr~ucdd1u#Q0{3UJJ2~H z0H>JeHS@Kh8A`5v&m4V?>}O%osO;FFJwA`j?53)!rq%Z2HKA_CPfqrZj-PZ%LPgE* zFXB_qxrp<>4xUpI)(`<>w?lDq$>@cP#*RohU;^O}COX;XD=U z+9_pNH9tkt7^kThv>sxT+y@p`&DrjUP!0}Z+B$~?k*>9(B?^^VPM{^@V*C^GE`D5_ zJt_LJ{Q<~&h_W>yglNZfAKmqhy@hLXHHWq3+g+#QS;aWT>JC$s!mqPy4Vw24l}-Ahi}FjPMkRw@@BsVePNhNjv~6Eifd7D0V6PEsmWD);UyWKbDIs$D`E5t1g_ ztx)J8N$>G(c>VS$r$+uv`UI_?^7JFG@XhpCLuZEq&8WLnDP;^&=i8{enR+*gqY*8$ zC@X`Na!5_1A&`GOL7&U^IUnYo;sEy*mNi~%uVH$y|I2C(iWu6P9ml~Exd)L?P1WZG zgx1`f$8|go=V%cQvgY=&*4rpF3Ys7K`sYkWwgnk319hx}55jo9*-xI|xE*IEy_J#S z6T&dnf%dETO1jXSD#n=%QC1o|gz;)d(vcUvf`bxjPIU6iR1|KI{>?LTyvx1M%p)tj z{Ok@j1qBnvwHbl4RwINwl@1;ew-rz@y&|``xr!w!G(HoP9@WW9YMJuY%$sQY8R8E& zU%}s^JKHletEXv%Xc?yG=e;3Pg*Xk(8#Z;(mBB3c<#WUgv_(t={hL1bJIVS%(nlrF zK7eH-x^~g~AmnNpFm~Ac8PR#kIBmCskA#S03PkFo)V*LJ_Fx)|UNOFE=%T%wRl+H$ zaZ=9nnCB@uW(V>Spz^Pnnkd@_qgEL-Xbd`4e*$N*d$e@Tt$(Vdzd_6pEOOQDpl)E- ztmlkV8MNh9F^`CTRfNr=9@4uO)4R@+^eK02Ev8>>mZ+IuJ7@1QAWaBoeUL@uLto<( z>$|Z7^pSL;eO`@hAfCj|bz#N2vrL9!!HQbxk`9&<0)r|{L3$x-ymEnBO^4P*ro4?L z%p8NEGu64=Y&%^mJR|z3gayc`dWbZ@AS|J>j9p?@y~}(c-Vi#cLG6Sm3KjL>2n5PV zN#`2>x>n@C)%>L7U=!rndjtDsK}gpYRy|y~(n7BKvuf_jX}|i=?HvEpd4Acx^!dwc z_S+k)>9NU+y{oOH`1pf%8NxpDm2XjngDNM%Gq3RriU>jRnxUerZcN3t*a_kgf@+0< ziz4?zS1sg*kWJ>>oP}E}BHxxkz0;Y0u{8w&e__=5e>sj)j~vHeNyGl9P9q0c&xHf{ zGy3p<$!Yva*z)Vv7x)V|%fBD~FL=X#_R^ms68}?Q{9ihZU^$Y%a~Od?$e#WS@+21a zKWWWtM-7Mjkf47#el_dMpQzj^8AG+BgIX1q7hFQEQ` zC+rM!8*>|Xn_vsmz?8Uf?|Q6dZ`k;R#2`U!ov2YgC$u|YpE|4ea_`M8exO>3$bLIy zJNn&a+?Vd~0gJ}|3|(EBkb=LMMqqBOKf3nUf%L~{_+k7L^U!}9KmWCN_jBz29x(Xx z75~Y*1O5_p`!DZ~0~|8^_W^?}EG+E59vbYcA=tc{!r?vi+?Ikj&=f=p3X8IM9^Zyk zNiIZL{YwkeW<4BaCLfT~Pot8LHcLt|P1#I8;ASOJy+Lx9K)X@=xF(|Z+m5)Bj^ zAtFaj$GrwNj|X@FZa{}sNd0KdGl8q?cLC#?i3ah#fNQ-EgUh|8bSc(z>D69)tX>U! zpK$7Dx_qH*o_IM151Jm1t;Z!ZUe`jb70#_6j|qQ;Aouk=9I9;~p3hPQbOXdMFg>>& z6*vV1?mT?G0TvJ*Vd!M!dx3G}OY+aJzF-Uvk z1_cU1)@M_`dk**ch!hv0ye;%V+zZB$oa8i9p`cu!s(9->jHjTS3=ZbK=QUdBR}UjY z&$@4-7$+(BQ|*D!%VYZFMCC%ak$xCG0Z1<8WK#HPp^(nYUQ&V5Aw%zR80U|^Q3i^+ zF|oiQMh0;hw!u)Y_>Iasqesje?`mK1N+`)tR6ejg*hhZ=wU6M6$M3GKjY>_>9BlAE zYfhHLmlwZ1amovCSt@KO^J#l25KX;qE()LbVUUB{d?hR^5c3ukk=iswO`ylcX$mM;OrrdVEWp|@@ z<95_mrw!uY)`p}YP)Gq0T5qtal_W*6vtxEcaYJSdnL4-De7AaD;wDI(Y?Pd#C8UJM zFzU?l(OBM=ZLw|C=6D;A$y2k9%3XZ-OD`tP%Z!uVER5yGb<|#kb|fB-J}kp4TaVp> zM`B`{ea)0|!zAI3Uo~SG7_>o7OpoiH#T=~A>#&h1@4sF!m|097t3W*wdU=jygjM7A zjiKmi{cFeVLU@gF7sjX(C*ryNtQ0}}ai``zEq0Cc=(GYk>L(}f0_HChT5c|c-->_C zYY0lw*dtCa--=k38AmHIF}W)*E8>p|E5%<&vdo9asbza`lfMu~$G(vZVYHJpaXCB- zoyi%YBoHwR8)|Ln2B*6_WR2=ejM=6J%J7R_?oErpP92ifTRyiBDKtwjdbh_|BTLLo zNuO%?X+}^^jF|ia2~T3kwWYDDOPTY&v#{_cYf)$Si@zNoA?y7cP9JRf4)iso&Fimb zGFe)e0!fe##H zHmuj+t*|anLuiWIjA++S1P0XHI8BguC zoh*phx7j(xaPMZGrleb_9jQ{{7egd^jM0_DW0}bei4qRHkjhdhQM9Wjw^r4#wVmBc zV&$BNarzn)y>pzC=X^C@hifvS{PCHdPL^Lr4hBKbI@f1;kwRC*{OGA@WRdouxFY@o z-1MuAk^l+#61TT~jqD~9n8W4KsvIN!*Kz&2^y)9mUU_y9UmQwFvNz98NANPcA0JVy z60*Ke)#uOm>^|LfD8z8fvnH5=GDz7{x3~{-AyQC$)z4(R0 zalMaV*NjPU!_`L8H?u=X`NdwX*i?#4S$=~%A4^ViI`Z-L);YlYU^Ce`p^9Hqfa%t zXJ2n&lfCf?af_&qH!LEhoQ%B>w|6#2;@wZtjhW+NdevNKyyhH>)T=5@dJAIVxnh({GVL5k5^~|vWZ<>I&N}JqgVJ!bnd)2iSUt6 zz)Ila^RKUClFIyRxLim)B`i5*+n*py>>U#JM?^PHKd%_&?RZz40kmHp<@ANR5B)@T z(69=N78V<{rLN8`3d}1dJ(?pu;EW2z(;=cif$A@OmZ|m5(NEYjOxhVz{ZzWA`Hid< z50&(-HO4L)xzsZb`ftqP8x zLDea(eQ$Ahe%faA;fOozI}z)5%EsKKuuBoxx9`6*%)GZ2EP8dP+SKiH>VDrq2~m6B zRVZ?>7PBq{yx2auaBu5n+BdZfTw&U3xfF_n{fj*s2>44n&c8Ql{|1NtvG4x}HL~~V7W=Kt|1#Mh=iV%nG-Ce$pRJ+WC4NQCa}`tkHjlZaPk)T*N@DjUlXr>?)d(^ z2mB>z&gNfamjQo)eE$~zWBOC>kM^jPxi1qs;G3(5NO(g4 z#qq*>cugl5GkICTN!%2$W9V({RwB#Nnt(MN_`KdZ*}n8H}yD z=z2PMOTqhs_F(e8W1U25UPkuVky?#|hW z|K8pEiFp48=KUN3f1c{Uz~KLK_rOB4OyKqC@5TrVEAyXH5ckzl?6D_s9u87wW(V8-p(-dy zCiH4_CWl~m;gfcCkR_lAie#9N-hCEtB10PR@oB5JAI^0tAzF$k#GWI7F?Ov%8$b#m zg8M*CU6#J@?kY`5@_-OI$rXGWf_bslf1eLo&PmjD&Af#F27>%D!b!=wkcap=t5@53 zYh*?OH`1xKc@u~bKN1f4lhT^%=bTLm$Rkd`c=y^ zOYOKWhJa5N%wBAOovGfII(02n^qxa84){nFJ&@q?dkww@Xc}~1uihBL3{?Qcb8ffK ztuod7VngX+47=+>7Yw=>opQsfpok=#hjD9kkih40$BjX%>nqcXuPvXRZ5IYHASrWs zonO5$iDhl7jDT~k>s-#XY1QWI7Q!G241^cXp^B&NhVWL%aqIF#_4+7l_*ovpEacPE zR_|5?jzASX-qsJ%Vm&0VU+gf{FOa!4^aLGVyFKTgM)hKYRs7lmhb0)-EUz?1Td|%U zs0$JJ5*pgK%@+edg1V<2i2VUSmnr}$?&!npp=zU6V@3oihdk=0-|d)BA-?!kuvI>S zccU6YD=Iwt!Cvks)OYw0Mo2wQ>Gz>V6{I!EAOtf#pcjO*;E-bDGCye63$5N#5U6ul z^Q8SqtCpVRiSj~?vjicI1^$$!RG>e_>sK6t%sF%60)Z?ZGvSR}Fxbw@{KhyL6q%@rpN+)g3e$QVOCYrUE=A4U?d$ zHUzuqhfm$NHZJ$kZK{MUe8L{l1`38UWmZKcWAg4z>G(!43F zw3*K9LS0PD7VFb2*H34WdfONeZPr&$(p@iz_CJhl_MTjV3PW#Iu+>wp4r0EqHPnU= zXgV@#u6L&gquwOG7&W~4NOp+wfRY&9k&tZSYd{tGv`zTbFY$$f7&YC4zREGzdBQ$V zfahS#2Iv0%rx@5Vf!Ud%gwnI@g5HQYS_Byx-#F5`1hm7goQQfKhoj|r*WfWi!s~-q z`Bw*DL?siZ?mYy!3Lr=^VCt$j3>Dsturd!7gDB@L3aD|VQq`pl^X?(}^3T4!027wG zXN;-J0pG}3>-6cqW>lbL{H8}>v6^xBfOdDp8XH}am!&VXQOlj{E%mCk_)mJTq0%U|NMcASE>J^=BMfAJG zL0oH@a6Q-(upo0Nf?aTd-g~alCugD?>JEhr*0&kj4%{s9bXtwigAeQ19S~>sEL;bB zYyFa+c^HXz1B$vN>j7XYFJl&-JXU-v#tuWDD zm~DLuQ~o$VvEfDKOLKzyx7_?2?ry5vGO&G%d!@7b!?TL}Gx}4l-J-lK9sTS#%d5jR zYYg}fqOHkfNVvq7YPKfJjcn>k*AH0H>w;?t6~}ZSK|E_2HUhGe%2Zx6dod8W8OO=~ z2+Jjjyo6oH!En@kxU2CmTb0^E3z~UgzQmHnXrm>92|*Y>$aU8@JS@S-ryQ(iFBwpD zZ43vKYg~}P-Zw`*yf4jnX44Njhe4^BfyJ!&0|gtxFS=h5)(52JMUyK~arEkXOh{qP zrJwEFIuQ86_PKvqp10-40rCTL9XDS0u{5=R$2euf@i=FsnPFe0f0()-stPY*edb)T z)OFZG}XA&5j`8f!~iv{+m{YcXk9MR)9cDH<9w96unF`T-<^GIj*lJQun<72D zeY&UbOvgsEfxWxyWyI;V^sH~^8ezhclERo>3%1Tolbf6vbv`!iv&fW zMoFKnzbS8c!$4ZSU@%@YQXHtcf zhq67yxth6@csYf}!PP_J(7@LGW3N$FLFD?0B8xxS_DCb}^COD$KE_&biN znj75f{&qBM^VB={=Yh>$v3`BcLzyjtH!HIx5Zg!tEiXK9vv)MEwrRz!dzVN`QKp|? zn~$7BId08{HSr6WH8-1Au;+BBvh%OpPaX0E2PIBVah}16k2BYly@e+YBzX_N@*QcV zM0{(P=>3n+H&D|ltt}9GG@1B+vH1f5e~G;N_wMhn9Z8x0A3Ksi6(AXaaT|!SQ;U?EiEme|-MoD6)aT>N#M6 z60iczKLl>TqA46q%s(V!9yylmKb2BQ*jSkuSXtQES^lM2!@|JE0b~P9)5-t#}TR)An-7#1Lq zRr@deOK=r`U|N6YJFv3+87>?f3M((ViS&>(&sVG{=!wA+q)cL1T7s+vLI zc3Z73OBBOiTaTFW3%wUFXOzN{=}`CvNHxpt6P2uAYd;l*Z0g{k#Q6lWjhIWn&VK!hA>|$2NMrD2AMJA`x z<-VUB6o8WE2JupH&+OaN&b0)V$v~}djVy^W@D|s{yygNy_C7Hv{@|iLfW$Z zPN-`p*x0TlgC*^5N|@m{nRxq^^Os1pW9jsNvF5P-0^|KU^ZuAWj~vebFya1thx4!G zO@5AvUmQ+nJ0oL6u$~imR3S3`@dH*A0)daMj7k2mfkl>n{+Gn+A2t^7VGRg;*!1J) zUpDZc;Cdd}K+NDr|E(McCwOfBW@F|A`{aMNfpN~?Z7g6Squ<&E0)apDu>N!{5D2~& z+yTGV2LyqS^}y@epKM@;CFbACF|o3-{|GYwwHylz6VneemtSpQ9VV~>)^9ej9MumD z_t$bvteoI==8=v02V=}{ytU}Ju4d-NROavb25w9oHHqOU3@Dlx~UCtlz8-MBp zATtwq4gTH6{QEdy0)h`uet#c8X5f$WpWo_x{N8}f;MMt2IWTqBBOB)r&Y?fo#{yQ+ zdSqk%vGe$?91GiH8+gP#DhFbIYy*EoJt_xQnR{g80Dp)5-Y(~(`37WVW`6W+tSmn= zGyZ(ftY9s)M>Zh%JMi~%AkN1&_DAy#$jb3(&H%v!`uDX22-abHY-4%c_dwRi{Q~?U zWB1$rfmeh_;}ppD_@03r;P3X|ujK?j>K70b`=j>(`k}`5+qGbBwMXrOfRE=92n1$r z`~6zB$737>-pD*E$I0^OU4kXz9^057_cI#{$D{jW1JBmq+h7BM5slyO54KCvy z-=p!u#_{`F45q;YFFL>1#}1yrk8CWD-z7Wi<9Epp=DvG$E!*Su<^OBz&Q+jGk~0kZ zeHHDD-L;%L3ydp)EWzjs#u&kXP(!P&xq3bM3k_ZIo-&g>xkN_B@-SInhQrUCB|Q_KJYT*0r^oxg$D>ou=m57obY}6f9>3S}dA@RIXxb^SUax0$D3+Wu zLO*3jbB<5$)^XM~{7f1M-M*&2 z)N6T?V_rt#q~FIMXpZwWp1;-n{`P6bGC;?8$}&gWbMbigdxUqNrkFBJT3}?3%Flh; zLj>3}^gA8gps9Y_v{@~fVK?`2o{z!1PoeLr7hW%>)HrjF!F$?1`fXD$tkaz`=cx{E z1=-f`|K+%E*TbjZZLINmzAs_7>1z;8h&sM~KVqZ5p2s=$ukkQZzCCgW-;eX0>qCL5 zw@~G|WxVHWy}tUj-}m!9*TR$nWPJDA{KM>ApEfST?8l@TJihU8rhWguU>{>2>+g#v zzgV!U-tRfIy^b-5w%EYh{6%fPJ*Pfj-$v%V{f+Rvmn_FA+kMLkn{zB+C~eR1+WYO# zbJOo#8t`GW4-^ayi0mOZULS=S_&}#ck|BXg@Pd%f} zUj@V1oZ=odRt+h_WD+AMmG$E-`6<#pcZ?w99#r)<*31I`?z=WILT=lS+5U+wXA zmr5?JB*bLi<5^mK?x5U|_YaHuc7_$QZ6 z_vSFmq%$Y1-(J(^^6eRUzbX0(t=PpG@3T+;x zZ-trT^$uT=&XM;J#>o3m<3f-dz(v*qaY|d_3%(7;tu0vi>$5$}YZAOOZ!sC)KFSAg zFaOW=fh_0UlK38dDOwR5j<;1FTEckFA+VhDxY0)>Q*aBAbYvI|FLu~cJ=w>HDeFFdvh)O)q8n9%Hv0Isn1b6Lc}Y!6c;DDLPZzXKxzLCzcsY#sJ)H`sqYfjvcWqZZO+>vG8!Tm|VWPL~I zhwZz!8%&xdAKu;h0rSjv)>-KCddGg=-^Eo{SSV|L3B1gGNWjT{fwXNCpvkv;d>4f@ z(F>wX>9?;Sc*Z;9|L)r>`1sDb3avn!;Yp@^_`qezKDOGx`*y|-TOqWpSs-WLnVr}T z{Rr96e*IOqkZUCfJ`abkZ*Rt#^y!DK{xVzWB7^7C~>77PEz<`<2RJf-$yPaa&C zxi_fFjIY{9@(Q#SFQyg3_lL;jwkJoCxeBI-{B^J$fj;(jF(L)#E zw|S=zI-vb1pK)hI{Np1omYjF`Apf#odSS{sn!ERC17v1iCo@#@z?`OD*kamJIc7uvfFp{a0p_>^qV zw^#KRRJ1&FgRL{=dwK4CDI6pT>SSYf+azY30+Vk~!cno2PGID`Gjeu< z>H8nn*lXPB_~IwqJG6(br;Yvy4}Ge;N$mI)GSDJRPLRTsb>}i<=eg~T?GR1Tp(g_{ z-x@A-mP*{VS7L#uBM<)_&3ljz5?w*MRF+&<>@dX=v71h5ExDJljL;sTb4Fxm`dtEb zlcr*oX_E#zWj2UAcEl+R5&pZ1OI<|v><0yoJfJFKbK&s#Q5W}Z(&dt}IQQWpiugkE zbK=uMJhBgwlgKq39$LwqiC=;H5;qVbi2ZVros<8T>oR#42ZjGcnB$*Qp^C)lQ!Y7trHg3gT+7GpPuo#`0WD402{DT82(l~>HLvgG z`Ud+FiRrymPcn7r<=8@(1JX73!5L~liRieuv!BC5n%Wj$2*Q&bO>K(0vX;mV{bbY4 zejlkzX#*&xjisHoU`7jpnz~k7a_%^9$;DaO%H?}{A#0`=vSwI#XaEcEw~(Z{4`xoj ztsTpXkQzR}Wy^=3fe)D%$dh@2X&o>4q$tIVN$OHB9;jxAkkx384w zDT{qe%FgvMJhQ%K#HF9ixwIvR-W)8?^gE`FM1aM{Tq)aA&u9x)uT6k|%&{IxoAi_U zHtiDMex_~9*_T$C@#4e!Hnk|)XyEy+JjO|9E#b9i{QzqT9-(cY*n>7v|IDlUJ#A;? zE`&RBh|0@dl`1)7K%{+Ql}iJJhn}CrvZU32rp@Zxs@leEo#Qc!vlfMDZ3~91VD#p$3KeC| zEBG|$RjNPbIPKQ8FgvGCVd_mkieOrgT7JbLpo!1&?x9F0{gT(`Tg4vfcTU_wKV>WF zmwE{OQYXhdr_J(h>LB%d$M%-eG5t{eQa7tDc(Jx^;@+|&WKWN^FqJ2M;9F7Q(Qg$r zg;pGzNf#l$+^dV=tCoj^x3Wnz1=#R(^ z?)j9(l0V9S@*+c1Nd%#({G5y@Sf2BBY}p&zyWfgV%za4v>b!|pD9=+MHNRE9)$tT4 zryoE&ZIYAImb@i~O5(&y025QvPv%I*JIj+`>YO=HI_Jw5%08~tlUR#_@i8v|Ci+~R zYp@npN$hr-C+ET8%08AOI`<1$nfTw5Rud=G=AviK$xU{NI8C#kXI&=${cxIQKe}h$ zk7YnleqoSD2QaWA$Cpu^Z!tn>KzXN)!7=%dunRvE#=$oz;GT!jG#EV3 zikCfkNdEo2mrkhs2hI*Z_gxorr2coko>P92P7}KDE5d)?a0!o#C%0c}eH|O?XYQAY zl>JHt3m-^U%YH#O9k2R)mEvX1bYAvLjEBd?yVI|Eo7fLo=ic}(nO7{ja}>Yw7GGrv zcryILCkb67SA?bloo!1DR}fp4`rL=0diEj6oHj9xtWRlV=dItP9yWAQGa8wrj3xZ1 zzBaZ6h&y)>R1mw)yI?otF@6RORyq6JFA)}8kEJr>c@%u&q1u=ia}H&nllE2|*$Lj5 zIorldESe>s+&pcmA=d`Ym}^-NlccR!^LqMjp0A9j84p!mTRUQ-%ck6w-5wnvWvA;y zzIl&CsN$ci)Q`;|G!fYe0gYZTTJE$o%kEd&;gk_>W&9b)e`K8#FW=J(*_)7S&coX_ z?U%R0P$hLm)X`BMVghFlx%=50J(DwUjuOpXKN-~5GonAH?4-3KJE`PgGF}mhOq7KZ z9V$yE_QBR1C5baP{Gu)^G?2O)+DkCbJ(AxU9+%&l@mdSTjCjo4H*I+nOIv+EVYSHn z^-xym49<>RlTefOxvJT3>!>hz@ikd#(fiAt4qcS2v@JE&=D5)n>#>(1uT*q}H&h4A zw|68DbzbSu(fh3N*veq<*qE+wd=1u6?(YYLGIhWTbG9vczKC4^ch%fZ{#!M&lcru+ z2<;&^@#Ce=v1!G4`5t$MByBMs%_@N7s5@py#oGhI!_EjnaVAIs3Ut z>F4@}R-A}=XG9U>lcU!jV_~+lQRL9 ziVVA{uN4%!xibcwc9Y0hbgfqoDn!N_xuKLx~aqUyif93wYjYGjHuPn zkKG>LP%fVR-o!Q3;dXCK>YSyTuJD>XsI;AVdzMT0?A_uAWX(iQ+W=0J2A*sU4a6MU z);OZ9xymq2nL}KBj;C%m^YVUYy^sQJ+Iy~9{9}$MTvqv_jBoZ+b`swOR2sZ}mE%l) zaf>2zMEG)UD}7_q-uutNZDrj=*Ge4>9>Fu{K9FzHg;^K>4L9HHx3P&;_CEQPRX1}W zAu`20T;K2-4>or}c6MTryyWOw@N@1e?Hj$iGf%T-*wVa5poj7wiIDSsOLiH&wzno& zWLw7Q>?ckVUSp8AUvh9oPE^ojJQaUwOCGJPFP?4s}Jov{}9Q7=5YKH@45NzAWprko|O8L{q`*ea9HwpJvpCu(DX}RE~<^jiupSSZqH*qpg8xoG~sL$ zbI9I2P?){-{RlHW;=3?0gVQWXdfqLoD_@CCbbU8x3F^z4OHWK2XFTJ1h${WKDeZUV z&Zr%ZEh>E|ve>g_vAv1J*p3Icao$T}vUi42lQr{6vSy_>;b;0N_gB0-XTB88~jJQmp74;TcVZW@IE1oj~;e`hNvSgm`DHc6>L)~%gA-65OOVx%C)|2xc zuk{ehXCkk75ZT*$_G9jC)o4$;sCSOcS-5WaJm;38kgQ@pfNU@u!sGg+|c-D858)b^}nsC5evs&rsMpaqa@A^Bhe%l(XOShc) zO&%2O7C9tcIq^#*jo#;$<$kPs>`51?dEIaS2L|xp7@z21;;ZYqk1ADF8%;%-d`CQk;NDPBjc^V!JOx| z0#dV$W07w`uj$A1p7I6y7yD|ZazcHTQEA|14D?Y5OrRXRobfWPaqHYYWDsEp;r~JZduMmCO_xa5b_IFk$HI9j}bH0=9Dw;mh_5E>UVCg5V zVB7_1UwJoFTVhJuDE_e)aNU%N>%VZOuGN+}gf=e#j`8G1P2D5SD1Lx8R^0rSD49Gd zrD)1s*-eQbt-l_aF%gP87^9c!5_i^?chvw@`A-HQb>yz}Awpv8W0~WV&f;$qhx4LS z^#027o&Ke^;M9P~{I7?$#Aj%{5+pDwNzA1==3r9P_SsXC_bbE3y{0%CyI2rR6^(Jc*zGT9qo4oE>d4@xIq0 zwI}ZyEbf~!Oj~3u=Qro3Eio2eXljzA1tm{fTi)H5?h}13Ae{P{l|D2vie=IK5tI4- zx4-`Vzy9{yPk;XNFaPoPfBfzL{y_Pczx?{^?>_@kDE^=S^3yN>_TT^c>(2!E&+8AD c|L6C={`UKizgspIKj^1F{pnx+{a=6jU#2&+W&i*H literal 0 HcmV?d00001 diff --git a/audits/kalos_v3_plugins.pdf b/audits/kalos_v3_plugins.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4f053f2b92d5a4a5057a873b03f10a72691a77b7 GIT binary patch literal 1472886 zcmeFa2Ut|inl;*hfMg{{0m(V%ARrAkNNAv&43a}j&Pf3!H94w)&wcL9h|g})rn{?ZRn>aeyWWyTQ&EXWfL9ooWqfyg8CQUT zpTWu89#>kLPsh&vu@wWmp{o2t4Q*ov11nc2MJrDRRV!CVtH%s*AqFKg3wI}19|i$l zeg=6DOFMT4Eh}dyS9c?Ju)4Al2L~>nrmK^shlQ0Z1G_fD&WsOuDFz1tK@kRJCnp== zxfPu(+K?rLS`fa{$e5Z9{G@rX2( z9wATKB_BpeNJVQj@x%6MTRuw9$S?$6D6AIwF*B}U3v+8@X@`|}F>uR@{U+hc5=(ei zwG%ZnX7T31hM)Iw0^g<_b0{ZunEJF^e||6&MMtUq{-W`6bgsXz1Ovy*M_ALJ|X5eZO1NXT{eVqOD0Wsoy&M zfTJ#X=<7H9^1TJQGdxzl`xQ?xi8gQf5wuzjiay0UkIkmo|0rPWW(&@LP>qvW&#(I| zgzcromGRz7{pfqu)O%xH=4we3!Z>61LIzb^uSerAUG|r85&pBwb$pzy82I!w%&?E=Cg{J4A%tn6%T-5CV=g~f6C?mInpa@BS=v#??? zRUKxn`}(9b#0eb7xTENm>yo7mXc zI5;8R=N&{5OUGBES9G2G>5qNQaQRt2B^YRTLFl*9Fm9v$>;%yR?-LX4 z*9Yh?A86W}V4&Z?z{I?91GqZ?_&w;xZA@ZD0eLJEs2TQM z7gE8X`0SfZ3YG84v_=n@h0I-pad62gD5*aO3&_Eb}Gz)nA zqhbHhuG>Jn&~MzpxPg7$E;Mv6;KI0l1Cvnzi&!3tZRSF9S1{-%sX}~q<$D|^A*};4 zbJtN^a%SOWmc#3&{c73&yM_h-r&{*6hW**DSr9%38ZdYmw?X$nUwT zS6~1$r%qaGd2X0^$Ii;SVVIAR>ZXj^WAEJe@I`7_{VA;t=p-E9;&2`TQ*n(IG`O_` zmJ%!OfvR&2VVa$3W02|WH-@jSK6j(7g$)ZLF~ zL&`^}Y$dnIBzSm)PLy%l#L8B2K{T%X)QNT*_=^NbOx>2P?sfwFW)n-^=&c+D;fekmpOAS&^JGpNG6zIOZxjkkYuQX)KA z)`m7t<52)tK?srU{)ws^b*&Fs%3i`s0N-*?*xMd!vRW!#5)}#N?*UvrwZ>Yju$F`s zAF5Yr(y56CQ;r^y+q|rv4g(sj)xO#l`l|Dx5xB{`roIMsEVg!%;KfSMHwN8$iG6#y z^OMmS9p?t8D;>Dz((7x|m}Fbi6b3fW+}~Brf^6o(oMo*=-1+BsGaN@1N)3inBrD?# z?cU;#S0B~Rn7+D9zr;OW@G{ASH(B%gzwHnqM3v3kzra6|B4Z0m9msjh_R3Woj>OeL zeNlyzLcuO+Av`QRAZ0MA79|u+3i^Hh*YrWH`OuKxw}#KCRY6roG#y;aTdHo79k{{? z673~Xi6;Ha-_bkTB*o6^O4sWO@A?-{_YaHTIc=rpEj==P1uMyFS?p}`d|lu#HX=Lj zN~~r8qe&|^IwM;*_|fW7ZVHhe6T&i=lfl$jF}*c^5qt^Bi*I@3t>p*DL>N@nR~J@Y zJ;+!4lwnwj$Uf)^arF2WH&7r2USD^_lEE}ND162`MQLJ!L4Z8cZ{XSE$~nZ2C_6E{ zw>QXs7CLtH+MHpoCy8vaj6DarA^L0mGEgx9#UR=9 z_;Zl#px@U&-3MqcgR+!)88D;>_ntFo-;PZGC1)^X3C*N&X&A@g!b#&N=y{kaOy6_k zrs;*-e5~mqs%X@ME~VSUp40xj>K)31h1g*C*v}|4SS{AW&M3EP*~Qv6@4_yM48~R; zX18@Nx)O2p!o%3ea({XMW#i|#4`6fxMh(#~OIY>OvP^tXyD+H9Q0A3HG^fKmJDE>Q z{5ImWiN?br(zm8LQ&Y;MOGVaUF?c^grzJl@A^v1!NvfrYqLM7f7;>2aoG$pGQ`GEQ zZGNId^b=^!BM_I04wH)PSbd)ttA~|@tM=EbPe^|=x|Vx0vyKxHSR)8H&` z_%19Ca#v73v&C=PQkpTJ9n|}ZHsJ7w$S6J!q%@Zb9%UTMmV@MaIS)V<^!xhf`hcU2 z{1K>6CWL`XoNPM-<3Pv$nd!84e@(a}QcQd?;K2#XPAeIrPc>1LO;hzL_=?6U?_)){ z$eJdI2%qn3FxV|asYX+u=HQ^vvo^ zo+y5BMe*v{HdSp#N?XY0a~Zy8)C=nA-!{@WAAm@(wcc1;JIyPXthItIKHM%;7oLoR zg302|z@(aJV6xo&t#gCCWyYxZ3`1I6m&n8_1qT*Stxz0ZW*p)abC*D_#*r2lvKEDN zZ7aR$*JTK;ag8x)9&5H1D=|h_3JG&R7o#W5E0HL;R(73&xQ+=HSEY6c*`SQ61vZDy zsBQFTx2|oc+tp)oF*5o3ZEN4TVkGlNnZH&Hw`wt0_DKl8EMqfq^J>hq>*nkLz}+_S z8{z*X!fnfU+uq{*n0dKF9WJmvvK+G-%YPZbrQ*J>WmJSrX2SF|Jm3rJnm3&@X#Wbo zeH3)D81N+N6Ya%JE!L0WH+Q8T41r99VmPN`r603(C+8=}OwlLZproWVZy3buIA6T` zPLC%p&d2WNvU0J=42LV9g)02qhFe$YtXA0gwxP;cg-G*BT}?z@d@M5|=u~8~O2uu147uboP+l95>gj8Vl3SXm#UC!r4p z3Tnt}8ycwju*Z;Eo4d4?e^EZDEqLL`=V5IW)WAe*F;-Kkr2WLW_cfSEn?~*+>hc-) zG_FOUTVglZX-9G+b9sxPAiZd;=)KDjfwlLut_?+mjMQy8@%h{v(=^PnOey9N+1i$p z?u7NicW&(M+WzC;A`Lv+ zpGh-{MeubzK+z@n_wn+}2AAJ*OF*)^X{uEX2TPOO3wI<~7<+m0F~+#B`-_?3qUd3i z=-H~$C^Emr0zpPOBwlJFau`te%3N56!qP=av{J*7EAgQI*%yCRPe)#{F6%-*A$*&R zXCj|$)ciON>YK$YhQ6cJh-XNz#Fi01K_s8dg{^|rEnhXj=uHhyWR!Ksr77~#2>97w zPcwV?#!l5&cGlW$4M&8=~xs(NI^7Zn}gv*|19_R_ge7tq%R>B%y+QF!t#Mg#F`<)E7+A#)E0~H3Y_m8;BUz5I&QMS6M#(_B; zb-)d0^1W3CDy{#+bGSm?Lk5;gC!@Y$z0|jNue;t~e^nKM2Q9F}tyIjl#oN|t zF82*T4(G7x9q- z5=FK-4Kxl5uOkc};=4H9>V%?GiRjwK|L(ANq`uT2NhUne~Ccw`yd%k(fZ>JeyJJQ9Lj#lz_8D z7~IT*OWkU9!IW`SS{FVuePt-}RrIXqLy$ViWTnyin(?qEAlHkvV03e$Q5L}N5SoG< z$OcFS)^8a9lT#Lb6l}Y730|x%>aww;@}UiC0~o+rA!VZ!qi8}i>xeMT@GW~hg#GiV zt1mI6zKJGj#rBd<15eEI?WC+)Or)Z>yd~t2ojnS-t#0ZxE?? za6)~{;b~_~h3_X}=f-8JwOE7GqR}(^{uRHsJ+HLtYrLKkf#(aCe}XW%@xHgNgfhks zy-{)ba%}Sz&KK3K?-HPuOf zI5pN%3np$B9~lQNyzUoZ&NxYe8e!XBYfRd?(d*7d`7cjE*5!7y#zXny$eVq`+A)}3 zDZVBzmi?S+OqyCpOweSA-k`QM-6pr1U+I+O=1jiwWqS@|qG-zXfuc1dTv8MD58XXS zzDKHn^(HJ_r$if95U-&hIA(5c<-Eb^>qA)?@Eg_C9PbRQs`VXf?9+3Psjsh@52!;# z=ty;$Ca&YW``5|@F_M53|C$bS*m2mROS0$0wf~m;|ATTr=VWx$Wyrke)M!mY?|Ybz z4N5r8^E$-2_i)_N!*J^}50g#u5C}uO!mO&Q?m#v*CB@}?p?(wPY_6NlmXyvcMVQ$^ zKyZg+@UDIn1{>AQds!P5M#g&HqO+>~eJPtdFCDGT2|u0bj_6i|b(BCiQhtKs*QPrq ztJY&ay@Jn<&9!?T*SO)^gDvC%iz!=U!4wS9l=`@t zT01Yhd{0Of0yd8}AV)qN8)pUpIcA|SMvckCKnwu$7c)?WsLI_Q1(SyUT5Ye1!|&_= z+6O!=WZe8MM|n^VJKDe!EC_3=E~7M_wPQEZ!>k%>m*sG z&?<6BV=Q5gF;ItW5%{)|;fseqjn+SW8qHHfW5-jrV6Ys7-*!@=OQ0m2vnlfv#MIZR zn{4MN>G#B<1+qdzgxA3kF@-qCcB{M*o9|s-i89(bSL5DSSC=a}zkGiA{4@8EUSfut zPPvg1CyXv7e79pc7h=2vtUu+3bn;*c*z4dT=8X2HL85jdXUwjz{O>1hg6+4*l9g?9 z*tGa{t$E|K7wyl{#i4=woz7gfM>Q2V2Ky{lO-$I#HX^#PLz%i4PG@u+qz+4O%BeRt z42umQMkyAl+pdLS@R+JEqm(R?P5t1Hqf^rIUL_wM#wgf?ki~<^`Z+$Rf8KHL=H%=J z7RD4nvgH72vgZWhfk|OE+4F>P<3mWP*@3J9V(SO(gh+8R&$4-8>FqW$Xk=oIW|}J8 zG7!>6C1SBBrku&D{&YrU%X!NHJ7k5}o*1=0dvy1P12(O7KA;K)ftKu2+6a?J-W;0J zO!Q6e`52QzjY60I$u0Ch#2Ej3zt+0e0GT{A6^W;XmLBl6uy|#7}r;Q6y`j?Io4vbvxDfH)ivHgdJxn6|mi5^8F|bqaV#H{n3hFHDfu+ zq%ma>Oj?uW9vqPaYf%R>oFS4gqa`>>`MN?RsgKnbkb0HO>4^|9S+DyaA}~}3z=GBr z;F|~NQKMiG7LrqsXT34mB82Ky3*Q~2k!zSHL%d+FDf)HrJmR!Ge59%si2h!wpiYpDDQUDN@kbFJ-~HB*($f5Iy7$}?H4dHz@wi8lO<#eJlE1D5b&J#Cl+jaP>^qoS z*VV8}S$&n$o@y>0ix&T;lF95mS;|>;=3cimXnMyVj5wO2enLEtPp&=TtNT)_y3tyK zH7=otc`a3CvlKS*L>bH}kWa&qgPa(1=V~?3jLUTx!ZXhiNP3-9KFGq}W!#E;>pk<) zjc8SJamw;J@WFF_B|Z_|*~ngKHv+;VT!Ax-{j#iHuUC85$g_Gy6$RHmCX3C|MAT{* z-d`*(-E)-~dK)+DCFb#o;%?WOj0o&5ts_}yACt=ZLL|xjID5H4Z9eQ<4_Fc!Tm|sj zD&b#gw?C`{sX)e!BM=H^$BY5>{Y7T5GI`C8-5@aMw5M4^c>=1LK zPzoYlHlXgaB^z8hGn2-=Hg1PV)k=CjCmf|U3Z!pv?~?;`=ca8AGT}EN|G(9%axR2s zx)m?!e}Y1y}(eAnK z&a2N)E>mA9j+}f7OEsG~RZFzDf`Daitp>{M4gtc*+^5?n)erXWVz0}2lP%m-3f|19 z$Pu@ZSYhc`oAIz3ro5Qi?WA~|jcj|zStL^$mnUP3)yN4;T9}zuPq*tHRTz)g{|MwI zw=nf8-!x3H-I~j`W~;Y9A>ivsk;JT+J!R8oU&AmM?f6jow!e|Av^yj1Z8vYw(u`xJ zi*GwSwz%0;ZLKNs%$75ai~!cvqc>$wZ+W*P_U2}v?1Kc3GHUyTss*f>6X&OnQMg|1GbBR#0lKMWN9S$xYNMcjvT+ z*-|ObU9y(xeHfM)x9VhTsh(ES>GpiYWK@9qeU*dnKTzzd-g?ij6am6jGg700mz4&O zGg@HpjgX>ugNZoNgfk-4?uyhsqjAL^=-4%a4X#bA4>DD9yFw%e9emyECVybT)6Ylg z)SFikX%pW>sv`ZYmZ3z)B7Le-A37_C?1jJx-UE}|3*Qg=#<+AB`OV@gMCzlSD zE?jwfx(M~I5n_XUQ%}F?)x?JS3Xxl7!s1;A1986*p496$@pTx}&dfYdgIaxETXkXk zG}aQPH^p0F4Hg( zRFx%Ke8IO7*}SZ4^eBC3qRglP9)vbDrtH8Ibh$N(ix8X_FSHk8BHV>@!=gk|DjEO@ z{DV8d*nn*L-(PFWp136t+2kqP46K$3xzy#9o7gOwF`Ucl+MdX}+EHY45(qy#M<8`6 z1Vq}OYo4O>KR2;I=Ba(BNnZ+&YRU*(wtXmi8#Op~VEIV&nUQD3iqv-lt?_{Yq4v#n zdU<2oq-_L`sbi@0cyV3$uA{$U;Z|Jj+sMZyZ4N?pf&txJ;qNB*J#ZHF^Q^6z6M97C zng#lpQ&m2Atn)}xDLvkjVUPBRhK1@&%c72YeN#7EJ`y&dI}LAtoEY3qtQ#ndhviB%jIs_hhS zIVRxjNj>(3Lh8!6xfQD>At=PGM$k#Ym^+NXRhNLF8*<88>Ydw_VnQ_@6Ozqt#7j30 z+I)AnrC?>nus9V67J#AKXr|2$Ra4gY+H+AN>FiVSRnFO$J-hV#mXhjaZ7so^KIsc$ z4#a|#k9WvoWNN{h-?1)E&|Y<am)tPUFNrexlSZUvxy% z$(u+un+v80&W1v-JUDOIofMTQ{!$i4~FiDtiNnn!Nwm=V~^_%XenOgahv zns%3-$Xo56cd3sj_B`lT;rz5%x%b;|a4Ec`kSBZg4>V6n8(p_kei|uC>GLITQp1_7SKu{z^E=q&_^NT`2e8^2DsrZdIRT; zMAFwBfjcTfs+w7zf2KHc>;4VZYFB5O zU8(LTGKe>`jxWBIf@zc%1-XW)BI{NFF|fRNBATpE^-0-Up^C>^p{`@NKC@k(pcHZE zTB5f8$N5k5+~lJ#JjFq{GY8YpD_WGr1^8Y(E<8^Zlapyx^QBF+&A_e{FevGBi+$DG z$663WHgUeO*ZjhiH0%3o5g*Sz=*Sga;e{*FX99D zidZ0QP7_QA~SVrM%zuN#9f@ZkFx;1l^F-H?iT~gUI|6 z)v-2x;eQu&0G{1q)Mx9acr9k`0cT9%v{4K@`(FF?j5Ig@WwYos*~uw86RfA~3-(&v zwM|7}D14vi@3UI7O-%VPr?MD>4N|MF6od`E(i+V- z&isn0*5Y5iTuYI-CWdaJi)Gsoo?C#p6^93A$j<`c|F>uree@(RHy^}nXD2zDX#g^i z934Y~)RP*|^K#Jx?*ai8>F;^+FXsu5tgsL5U39$z(2m`RVZVpueO!w87&0AKHQ!HR zS6l@bQV*$zTA*J%_aFG~4Qmu{8;<7e0K7lMU(vSw^B!`M=)kxj)>`Dtt>`D?6}qTpUJ3#sD1AVTrd5NdY{8DmpL#odWc z)r6SHQb6*}J|v2EsA;w++`d_8x?6LyGM=Ql^k%DC`WqDH`7ISrPU^6dw2m`QF+DZ||^`JVCex$*Su z=NJ(iA{Sn0jkE|+sy?u2Y{W>=c|?zL^BsVK-bg@hB;~Vt?z<}qAgiwTilo2I z0bKSh%$$Ujpugvmp!{737{o)zzAKl7f#MTRvi?1B{?=iCN!dstYYVrhCG+<@Q{rE- z#x1cI*F;kv8@^RFWPh~~%l76@-gI%-o#caQ6<$vx`zl^Mw1h&y$mI^r+WaDOw_d`9 zGFf9jrpk{|_%n^lgkgYvF5XQTfMtx>`Qz3OoAMwQ>?0=-j%;S4xMHZrH6pc7%f>t(>i4&~z_i86MBiqIj-O72 z@hzL8o9vdq5W{^`iM*=lfT)l0J4?%#j z*MahiYjCqMW#v9|xqfVM4vb@Ynn%XeIhwkmaM19m}=9^|^E0ZQ%5r&m$0 z?cn&}2yn05n@V^ozcLWPKzc3dT^CX4t=_L1 zWwcY(-LOe8ylpt1&9PgxZ=uy@h0bXwrayZI4S4cIPxpT159Rj_GVCx#n20nfB_x*sf!wASgH5o3QY72 zmuF=Q_n{FepP8i-T!+wyV(nSSppf9@$#^#)TT()WB;2;_MjG?$L{ecAWj;4K2n zs>8PzIXjzq-VY?ygNU4bzno^?+Rh*ZI9KHfKguJp;%@BAjJ4F=YcO zOir!y8wf0_X1@9f!rk)tL}_P2Ha?V`ol{ygYplGPI6ti#nc7klygk1fH7OxJeqL}M z5aCes6GY@MTS@#uYgHSsKRyBHgsybhAF`_Y-PMj_&?+#4lolV(nqRW8Q_myQS+sw=9 z7teKKmj7S!!ar)-$b*33{aHRoUe;eZ*GUY-h}m|aCkvWB{sup%$w8=Xb|^oLKhjnp zk$aC6?c&&w{-8YP3u?yZ`|3|n=Tv1jwDjW(@pI`jBzqabKTfs(jo)LISGSuGW|}q} zZ+@SA{!}>f+vef)cbMd(*}@CQmGae}cZ-?^*i2yY)a=gMe-3}R&3O$UF(^C;&zgCRp&p~>k8pZLUanS>vr<=7tHsR9xMTm3m){Xm^Z@y7O1 z90=I%3~fxSN|Tm>m)L#V465*bE|IpqTxRMGky!G@9bPRq{*Dn&THSlxM-SKYTsu#h zH*(81BOF|Nz-x9I_&HyA^fo*J?Fw>QFbZ~~WBl732Eq%7Dj38rtZmmef(B+`|10(T z>lFCgXY^6+S-l0*hn0qMM^dzyutASHdcuks#o4k0J^6{R3Fw`EXozmpSmQLd}&uTH~$gEBoq}$4}6U z$e_m9Wh0NF@}tT}0|UO*u4>SP4SgJz;Z4|QCZZs`6b(=J*%wIO3LG&CCk6~OozKt< z+`b>v_ZG@ZxFmEEy&AsW&IFU{3XJ?C5BlHrz52E9IInUGl!b|_|3(l}{u9*x1oIf` z!DHp$tSQEAd9+z;cR{lJt-2t;crHbpfRycPyh%jyyqy6-W%DEpa6jU}5lU-eVe zpHrL@$#h2T_b?~IiiMOAgGuSHXLj=vssL3f4=8exsZF1Dy@3?9W~0Tm6U)IG)3qe? z?SM2*Slxb4#hh+a>p`vjEQOguva}2u<5~SEwYJE+paT+tstMP2UiCKmQP7kd3UPyZ z8aJgUbT-NwsC;=R|M-f>EMI|FL_(KSP*=oI`!H4hcHLO+?VL3%46+ZO?Cbvs_JJ+6gf(;UYSYON9RF^uE3kq6-EIZS z2(CH#LbTIV8f0h19rzPOKF@xoK{{dR`G7{%O)!&IgDXVQ+G0it(OP}+6k!Ewm_8N% z+`IOk1k2)cHv%m38c#92JUU;g3N5zA$SUHzgXF5zdwKE5^J>7@s%m0gI1>XwT{ygU zlM#az@{+wgm4D~D^m5B<-ws00&0YQ3Oyn2dzT@(>M^8i4C+P#b9t{`wZmu&w zAw$gExANLhe#f&AGiyrD@?1%Vb!@R)WJ$2d`fAWk?DC{ukcuUFJw8TNV0c^4fvb|` zW%{_AHs|1$RzbX@;n)0o-a)WPatT0O=VG0kFV!NP>c0uj%4C+#=*g;zv!8-Dv008y&3yZxHUn zm^6o9v1Cj5sQi`sJctVj6Om8b4=pj9noXi04D^L6+l8U7=XrZALk2I43i~m=W+-Ph zp7A=~GBR1A^u6jyolesqy^^{a+%1ygLCF_&Y_w6a()?ZRBaU=~hN31mSun&Rg*j6j zzN?Uul+rqb`+R2?wmn0gn(@xBbrgG!HhU*Lls|{VLoT&A@81TmrZNOa+O7;u2;0k%M7HgWkB@S_N|Av$7*%9?|XS# zZ)zEG(MiL9kdDd;w0Yo6JgQ#f+XePlgsU0atNw3v>f zyg?p*3SkUDOOZs%+1cLG8q*rVq-M{l7Wub$_5bvrks|>O08M1U`~LF6RDIpi6%FEc zpUu*nGZe=-V2#Y>tj$)D9`}@J#p`H#5zYr+>|Xf9wvk8)yR(_^`~7uF(7~MAvEvYH{c7-aT^1i^3l2u<&vkL1Aah&)_9pPIVukDq{6DM8_*phFS-B6K~)OKdgy ze*Pmu*<|N@j@H}6#gvXia_CBO;wU;Xg^5#LJR2+F&J)ged>h{7i&8{5TZ#huB2+KR z4RPW>MZx@jf@tT<957!Yhdx!w1!-(f)$1_PM}P0;ZGO@A_MrCSsY4;=3zLcE=Xa!E z&biTl+Y~Q-1|JcYkLJ=)au(RsI40RgE9czQOSR!PeieHt(Dxl7s~W-bZAeYG_PKB{ zMRodVn&hB%w^+Tu$a|a_l68QaZdy;|C#4Hel~Co1M3sEdfFr1(F}?A5UOS!RZVw1} z?oTuWiYB-XlZTXA3?L(F}Ra-rUo1X;eIe&<3m;9i;aC`I~ z--|khAF{T2sjJ27pJGLton05~ndlfCDpxz+ed%D`UavC{on_rE-|Dbi&5au

zADO@Sby9-_e_jTZlfLIn>iTFVq~?FBt_pR%ye(7 zC!D|Po!LIu9lH@s;i_R~oRYTG>i}w;V%E!rCPXa>TyZW;hYO>y$e*c4v%DzyQQK|r zdwN#PXqWGhx5h3q+OHJbx&O^w!l!ga^jvqv!#6gvtY&MlE*2M))`@F))5v2Z*W)Rp z&$@NrkWgER{zf1I_hrPy*qL$sxGE8@L4Jjc8VjGjO6NzwcKt^s)j#<9Sx5^K;{H(B zvq;kMS5rsFPt@*f$FZQ&t1N?(?+0CsLmg&t`dB=z$Ag7vF_|yXj2AKki6<4C*012t zsBVX1M%xl-clhFd9^Zqn$o~ZK*leDZhcCab5VOEBXYvCZt(|$vw`EjS1_d^h&Cd zR`$o`SADhm`+G4vP874-MdqV>sLvMnI(3BTJEw)7t{A4(vqE0~1TBgL4-HNvsud;s z$dGq+KZjSicGf5KsvADjOfXDvwG#rH&-tY>r@S8n;(d8ARZbupP#VEc4hXEg=wst< zst++pp{WMCph40k?KgOGIY>EnVe5pbQ5VAef{ho#`Ko8}}1sl_6)xnSEX74>0m zrtPS=hZ3sBx)7JoLgu-L3@=;bEM`6d>1JPOFSoqN<~yxEGh`f^lF|=*>#HlDbD^Pp zU>rUv(g#;GV`*|0x!qGa9nxbOcrjr*I=1qpI8{+dkC0JtY(N$>^Q^g0(;4LMx{gpFe z?d`$ix|65GNPm}>a&nPh^)^#m8EEe&RQg;AT4bI$;*gPUtLN50^9@e6xduP3tppoJ zpesi0`Jtum2|J+=J4ecVJ<8dU7rz?x5X>abl@H2B1MJM3dSr!|P4oygESP1Q1TKa0n|K^ze6KuwZTSG7N2 z6aL)2^^>JDzrnEUvRTBMxl4$anunxK$7l7=U;Rt(@GPwOpp;LjF!td=Ot6s9+kDqTCW7a~ zg>?3<=dq5r@yWT!(ka{YbTDF3&SMLzjO)<~5E*ql$uoHHo2fhd$6mtwr=@9O+(QEz zz;;?fB-A$PfX1f)Hp#^sU_xwlXNZ??gQXrE^{_nE?e^>|qyWT5B zdy-eo6ulnDY_I=v2_zx1^_J?wxAfLT?b)q4_W8R!!G6aEnyrp#fB(hZE z3*H46^pNgDJWZD^(XbFcQHKoTUCWd^ADUj88jnTlNjcRK<>q2#3-l0;vHnN@hz=N? zpa4v#TWce3o#edq3IBSS4zo-gl@0wDSJ3E{;fGCwdQftP`4 zMa|^|KBy}$Zy-lKC)p56$`i806{7GStT|P1j6nC2gvbm&H%Gbs(4umtw1diU zB7VijnW)3bQ$lZ9dPy7oa=9O@H#WD8>fWt>i>xxQMrRMhAnRGQ7ZV$!NLA=epHxYG z+2d%S(mNJ|W|~pGVL3kE@4TMx+L?Z2&xuLaIpArc!4%*@gb~Q;U};pv;ftwy?Z!TW%eo z;1j_zEPJYj?1ov%%(QSQ(J-o3(q{CxIoC1qZsj@zYQkS5&s(;y<~yHTC6_l|*>fT;4rMADr zkd*DjIqzJQ?(#)1H8kI~)TtGZEQZJfL28%n{9ERTpQqZcQqfU&kuP5+7I==*M> zIbE+8UR5VtB#BcMc1_?P70z$;4g0uAh9=qWoNme9xiDzUUuZElT z^K9AA4Uzl)b{xKctI)pPc>DGsbcRG%pn0vM+~(qLO5(w^+E|w1py#d|K3yZ4a(%0i z-bI*Ie#e;%G35jwT93+-M+KR^!F+S!t6)MTA*f8y)zy9-`J94>%t?@Ai4AtV^7@lw z_}D~k^MaPbIdQd39fCiVy_`c`%PX;QN8xsG4J`2YL3^cac=4h$qy)OLO+5yi85*=}r zKghD`O-K(`Nu03f94T_8{2RO6l?k{^9D6rXc*SbSW_q_}$tFD_bPQ+vYohi!6;^kR z)!qfWJMc1!HkM??xtc`;Sq!i0Hx`M#_&%V-4 zPp$)xw~t3QPkv44b7Kx;iB?j#V=pso97!+)==%TpJP#FdAn8wmB2BWsuCCMuWl^)| zx)5RuYs+_uQ{Tr`F<`%C9cag1fB|Sg=r4cWGRQ8Rq}70@`V3&gT%-TWnfj-J4ehT> z!GF`w=%dQD_O_RF8@0}N>mtI3@GOF0z%d9c#X{+36dY1avg~;o^0X>L!1;GntgR#+ zKXB{D9h8b!u=Pg#`$=e@c({tY^I;ggVzFwRaEWW7D`*IK+WF!wLo=U1ySt7_a5K|Q zP2G%&dW*qigNFKk)dwB{rr9IjX+2eoOnTe)4AmG^CMY9uVhuL5*L{0}Y91zcE&|GS zhhiSt^7K)8X%WfM&!^%6APAYj*tQjX@njATy!yv9dmETmBV)R4b3`QxP;IPls6Ht_WDq4#pksW({J zMXC!fY_uoV@d%pZG>i+Hilj*j?XpzM>~D7};Y8?>UzOTwrk~cv4{MXD6HYhp#h^?1 zSU$chL~oY5?fwqkz9}J0AlzcdKt2k7^_F|&1U!?cR~D1&^os4N?}mpdrG07!9P*)C z-IEXZ9`5+eSXk%&Ra7g=HxnIT`2?v8PZ zU!v!7D^E2jzsh5-CRP(n>=XtHCv}`7-r7gkUr_5_uJ30vNgr1W>?Z1W&BQ2ZUL>2N6l@5Pj_3-D{z|B19f6-fBcd`R}C|VZ*Xh%R!Sc@{L z#vEx5vICBaxHk6`HegcaBnk(H0x~xD-&2qODPMa5#{4Bh`v+zzD^OY${f|o^uBI`6 z5u2RZ@_bZ-_IU#DXG5)A&e-0~ituQ%a@1bbFrl|-fKFs&mBVM9^;e-d^wEw$bTxi; z&)$6yOXO3O@b~v;T{esMv+p8#l`?Z@`_7!5$w-%owET3fvaSTig(C%uyknd#P4p=P zOMi&WV18({t$_ao-S0<1jWvkB-+iY&RO3W|c*57hM=XW@#4Zop_6jjpQ*p!l>HGNd z?6O7fbG%-HK(sTH#w+`R)$Y; z)=0{9t@`(b3mS@td|kTk2sLW5P-%x_w`2MOu7Uk8K;5q3yvmrsb)kZR)U=4ocyaT{ z3A>q{CLB3^opmw)Yqjy8@ZwP;tEqmYH&W>sh@ZMGTyewRAR+8%M(0t2vb=#pdclbj zj7uT4NFUn)J*MYPrSFZ;| zM|(6`Um5i@{PS9j4Kn>Cm*#70xbSe;xgcBSQ^`3+5Sz>U?+A#aG~04TDzo3W@(F|KLNRiXsrp%# zo;>!QjYf$t<-A5MRYC$gkU@A(lu+Ot;0VBDL8m$f={bk-xmSg3v7!LC?xUGHjCH8#+tMDoFwrO)A4Hju= z?HLdhvzebx^-f&DLRB;~xM4OfDLp?qFE1WSC(9qtk=}uJnlrDf>C4Q0TJsexUTwv0 zPYLZ;s*izalF>Mm(t50-e3V*O2DLjW@Xxj1c8u}&pudR}O0NVw&T+bQ4;2e@M(>o< zpsB|+zum(bWFgg+nEiW<@UTe0UM|bCR?ON_=sp%z9FSVlhB_%eETk;0vzdq>X>2cM z+crjp1+HR!-N6m`yqk0{D2Jz-$mwQ}J(Za&D_e^TW_tB5?0{h{cy?5ifLml@D2bvdISu%Vr|f|Iohu!5tUz4$dWqf;`H z3JESYs~PI?cI{`)x&a?6m>OALCiq>;%x&AXf6s7#v0UMrBu(HzC(^e6)P{hCWJj~j z!}{f^RujMkc%SA7VNM*i!S%sKFGB!{GtoKgX3_tk3TaGXsKF&)SjB072y%-2kvc&6 zbaK}A;)T-fx<07)_CJ`_y@^yMX(QWuLUQ5a)6Q{O zB3gWWn`|JQFG7~H?`~^G?5$A7winXzF&(v@3Q-)q_RVL~1`QuR)@?77zc&0%IOO*l zyInMUzW~A_9|G=PzVNJ&J{0Tx_E|TeHt?HBgKBAipmnvLgm>YZw%pqy80 zOp?i86sD54S^VXmz|p|9VXgYkbtz13PvcI$!}FZKRv)J1J+O=mEK#>5v2)}fjY{`I zeHUwgF}>HI1e1Z#>Z&;{%Sfrj4oo=eVx$wEw(uV(yzSj6jw-}<0JK0&Jq>3UYT^I^ zW8TcA$i8s9B+fhe&G4EZJY&MO0^4Vi92jBJZbloqE8jIVF{w3pg|0ZdOnEr{n%^-2 z2N#%zxK_vvWq#x9xV*dH+^BC_Fu8UJ-M3EUEDD;tCCDw8HZOH6FGF*2hp1?xdo)$&P^( z*xgi7@%VqZd+%^K`)+M`5F`Xi5G{z_TM)fP^xnJZ3{j%@A%aBjWYp+g^cKB$Mkjjj zL}yIC%YE->@8{mnyT50D``GV3-uL^%VahevFmwHW>s;qL&$TGn}f;5U)`1h2PBy4b{dq%b1tpLSY;?H`a-A`K4HWzyEM-^7> zajt}C=D|-wldD%!{P4*44A{TraVTe!*1fd`ZVQleBlL9eXu(!zbbUTPa#P_OwLlwG(5 zRT1{gZQQ=y8=l-&Q2lYTl@LVwYSLJgoutWjp9*JHz=JAz&xH{zNpNbq@BL__EV)22 zVV7^tgWKg?3EK*@=3&?109>DV<;W#;?~+BRqsGgQw~#MuUXr}y-D`4`S*n7--3jS1Pv<~XxH%{JKX>BoGhBB8tf7IVHVG*GE?-JE{ByH zEcfL3sv^kjza^L9c_e9?`emnEe@`H=zqDN!IVL_U&$OE2<=k}$BJX(Y6}bg1 zzeq)5f2-xjEO1iduZ3OW?)iOE`gR$SO#7;1Fp!)83fnD&@O~usB&BQtr5VtY^DAy$NGOEv4Y}vk)tdF zaw%$Xjdd%KrK$~2N*6Pzt_jF;x1gz?VtuaDzb=|YO)d_dN~L3Qm123X&(N$##l z_BicZu{^S*27iKZ{2c1>Q2+&*>wIG?NBM`gOYUK71Ydo9@P30Qrkru>Lx)bUX#JEJ z!3dq%uaT;XHin+g%~BhP@kRTTFhN8QR8q5hN+QAOqDyCI`N`9_ops;wzgs?^vhi4>-$CYB->aylyr_voBP83ItR` zW8v6Z3dd=A`Muwa8S}1^{g|=>+W9pTFn6a5i9BY0Y@HOB$o24CX7pfFDEhJC4=H(k zaM;L=Pf1r(f`$p>yKQ~<5>&7c|5ZBR^rP;?H#Vnd1MJGs&rCB{hCrP z2y@)ZR9ihW)BQ`I?uDV`#IbY6kxlcyrmIr|z&dip&FN2}D*&FLf0G~nJ!1ajHUK11 z3INpi&?+aJ>n~-FzwH`-Y@!Sdf3IHsm)Sv#>b3F1&tHp36eY~j9Q3t!<9U{MaT5te zrDWDxxZqbbJjgpzA|HFzU2W@4c?t4(e(98UrI2+!S*YsyWVg+Qk61Zu0f~G2BJDw4 zV89S+6;p)wHNWqhl2ml5DpfldFJOOI`w3BHk_d|Z*|%y^BRI=7Uk_qJdE&KNBL2-l zc17>K$6olVyM%|_mirBOeBg6F3**U`@)#TBnx9iX&qfvz2cCQ2{1mOa&ZrR^ zplcLBf@F$v+Gfk~ou^*G^C7qfbk7rNG_6G%38{T~OG(c$gLl_`7}21TyZaDgL)bjU zt-zrxfiP8b+*9EqKJ+V%&*Z}u*%P+4q=T?@O%t03F`lt^ zfOu^1f6<`h->53ozvJ}&Pr8jM!B}AG$5)an&@sMXo8bCH@BEbrav_JK>s!TaqcU1^ zaeL~+XWZ23vb)9JY^cR@E=7vvQeg+XJ@a_8)u{rKk$te0XM?=p8EoJ9VS`-)o{Fz@ z@ky~MxLwxu6wPJFe90y6>|I4d`5Q+FrA(2k#wece@^WGmMwU485O5j{nnNYsOk=dy zC-BTRGhJv{hVoZ-U{{(=@05=uK+hcbrxMb?S@WlaB-Ft8?1BNV_z_Qeb{-*9-z-tp zhNea9gLLaNTc#C_^%<}0NrD2*7?Ecm3|_*1P_29pFi^nlZ&CqS(Cz8H$v6RkQJ<52-`A1WYUqy=%|Bd20A$HP&48&u?|Gh=|N2ru z^!DfNZfo@#s94;W&lh+wdm~$x-u$9+u$B|M%5%L~VV-$Ee`ZxQE*!#{MlN9lFW`CdeXBHN;6*)*Zi4tko6e@8H+2k7hVp0Z!7 z)8A}n*xUy1?h6HCS9!ivH=j(McaP7|*VWdZOFv>ZO5adF^w!F+>x5?ai!|cmljnSp zwDc|QImzzhW^J5(o}XWv0f>(ZqoSZ*bF^0iqlFn7_Gt(jA+#up#-DK_` zv}8i&*6YAD>Rk3oQ`4dNW@wIskQ(_-(GT3@*Bm zmT6^_{GfZw?{Kv+EK;(@!LJg`csQKf)0#$d{8PrMPysIjU7%O+juA_0RX89U1ufpH z!gkqKxd{4;WI^{C0ku$8@Xfa!yB|22$Vh6I`8%*?2oL z!sILEgSF#QO`9*JFRCgy0oSwgm_E?r_;5rqfh?ZJN`e9aAOS}I%6a^a`}pf`BtX-5 zzw5k!sQ@PESgxvn=f$CaaE1qpQy-gGU}%@@*=BTs9VQbg)FV#1R71Te_$2K5)ivuz zQ|K-0K3i67L~b+QB?g6+a-vSOp3NkYf2Ax?jdkU8SxzY41h>67Q}zAWxb2PUIb)pH zh2iS4NuIx1Ru;5YD_Ywy6j)Ja<7{C+iZR6t78*2sg=spRF@Bh5Tiz~nxmpY{{mIZ7 zNt~`Q%e_dV^jJ4~OMhvJ{jl%}`B1@c(7Y~7Mpv%CeVucR+hYhbarGa_#nJxlhbVV% z*({qrrr#i!C(x==JIyHw;Sl38ri0QV!Wxyj0`SvTvO*pKYilFUVCL z^NKeMR<#HllSUn4p~1swhXp9)WQbQvypAI_x)%drV6lR$P(*_*5|W|1Ml3}43;-ZK z;p%1~%HmR!N4>u`{$Nd!@+^`it&k=xfCscCX@LH~dD4GLfB&;-^8fg8^h6oRDTTuh zS=1N!l%mp)*O88vY)}MPQon}r7`e`$Cp8gr}a?(G{K=6s>r_TonjlKcF z%6bnoOA`<3&7wKA;Pz6biE{1m54aWkk=m2ZY&{RHoNZ{-Uod?~iOg{zZV5dv0Y}c2 znb9k{22ns5+cGQT!2_@#D_dV)XpG)&DJMG*<&3rh5gb z?+6d<^2qnQMMYBWI+nd=9n=&e@TrcJ04o%?^{20&%GK8B)i zZ=bkpFn6=Mgkm~)7R%KKuZ3uqA2)rcT}Avljwq~Gf$vEK`RIi9NWdAlkmpD{wNKM{ zD>#Gfti5b07bWL@^&iZdzHu_hpZdXLR$nt}97{^P93)a|{m9#i|AnrUt#vBLW7&uB z4;uRgC9@*hMJ%zeSOiJ(^^L#5^2`xupXj-(nlbCXs4w&xo78PNnN0!pRQp37=EO_Z zyesc^^bKf#qK+#mChkH6B=r$2qHVy?Yui;^dW<>w{mpp)!qmfKoHeOALGJf55$!fX zq{NoX2>kZfd7REB!om0`3$p78(UB9QdtLASjdNJ$1x{8Qy)-Cc?Zf2q8KyUr0_nty zz3i;AIENXS@S-oQ2a|m_P=$#!N=zFjdvfsCIxX)&o_k zswl8Oj|IftAYFMF?5S)k3*OfZVk4j#6a6=KQYZs`E`^hv43r)d0}I$*9_jgd{8huEYCD58$83_ucgYZK{eW;l#ah z?*DkT43uFvusNQwC(Ks0+y8YmVc7TH7oOvn%$68Dx1?9IfeX9q6@kf*AZnTFNnrd)?2=o;V>kkVHNj#w? z*{UB;f1VK@dK0Xe8LjUUFpV3vZ%-|oIQ2j1()C<6a!hN}u#-vN`7 ze8Q=;sPxPosy?Et>0#-~=ZQ1sRt@T1_9A)Or_Pk8MVsH*h6Otk8lHIKa&_6)1Z(2Wq`l7;heC^NBPs+i^T zE)`PbuM&+%oN3y-Hl{+^3V@_l}TYK!X(Dxhk z7G`Ho3YEkVVVq4|W%weiqoXsAG(HdrX)iy7dlZhOEDkpJ&P(kmPGmLK3toL~!f#SY z62vK#BEn@&wn|^L{5eSnr-BL<9yOgjapW(lcoDKnH(hFJGQw1TZb4fp{EgFci)u%_ zNa1~mI+NULd=rj1=hf@cAU&p{j=P<7`}6$y?$^)X`?diC1%-5YxIM;|s9Y@IJIV96 zJ*NdX9ePZ7-(}zmEngS(;i40yI;edT`&7!A<#yf*F1**d@m~)0p7nC{PL>QP~@0>##JGrNt;}E$@LR9=DVS-zZn8ZQ|*8y zuMBj>$eRb>EP4^ixF%2+N7KkPV*M81p=BfR?DF;VOcm_^)}@gq5?EW>-`%`ljX z;xa4X0SVg-1)+#?J(Ur~&f@yI8Y1Jj%aAc%sp0U4jS`tu5{$}%WNZbT{Fwk(RlhPA zcpfPy19b1KM7lqjUj}S5Sq=(v$jJr#ULYSpmoP~S>=9}x#K3q4wT!=K-Tu$Ho#6Kj z2#UP;)|f=*#=j28N?LQ{JLmM`zdLEZtd4PfU^NId{VtOtO9jU|E;%5<^-!&0e_3^r5p(WUXXGw{)&=WWIS|exTjFbjre(tW+7$$>`a$IU? zQ-7%ETq%%#k<5)Qt}&d@JF*K)KcRupl#lL`aZHxQNo`fBAo-QUGjQ6!r^(RpxmpNs zW@YB|H4W{I1#(+40hJ$h=syq+e_QS>pl6=As?5(gS|#arL`$PdX$*s98;~k4_O!9qhY}4721pA}{BJ_0D~_kKxJXKV2y62o zZO~Drzp;*gJ(v^nNi&b|Nv){TsQOOc0`FrAfUR*admGwHTtI)x!|#(K6(gg;q}CD) z7cuL!Mo@A3u@@nkM)qnjvK4$PKfdL^A@jiwW%jEa!qY~as*THrx~nlsJHfc>Z@aT*5T?}Cdknr|38Qh>WG^Bg+$@X1bp3oY1oq~D2tC%b$CUHv z%8hqnLh6g%z;85Nwl$$2NY-Q0Ke@el;J>G%mHw={G40uUd&|O?H<6>7q$6Kk^eVjf zW@pF-*F(G~5~k^9SM!=;Zin};RNK+eRZghs(V5HHe!WzePkZ#;X|rkadY>@0W%$R+ z;il6-?A3&%q+KzD-*8UosT?ZLi2}Szh~bC%${u0=jMejADT)+3gp2IjszvTV&1}qq zClUr~DLOSwz2VoamCXx$>cewiO9_wFJJpj=IX6!7%iiJwZn>|IXeIkD3)Sl{iWg*r zW~;2!B6{OX&FxB;QY8%{fyFJMFwZT+^6`&O5&xo41)N+U7CKo5upbblRmU;0Gh_U~ zA?*Rc<0PMT-<7=Na>*XW6y=J`7zgOk8(>`maXkrBEITvQ4={bnf^-=;LpVhNO{|I$ z1_MA-4dH#w$#J;nGSI+)1QH|w*fK2=x%4$jC3v{%^BlhKj{=7={~>;lHMT+ns?rWz z8RHUw5OPAz30UiZm(%~gNSBKoposQWF#{b%F~2R(F3*8u8)&7O>R3~h2R zkVLU^+PWpAsX*`^yl+`5ei`Y8R`|D%wP#X{PSu!Y(|uZR)FmybK+9fgk7$#MXYCK3 zW*|{Lh*(!wHISo2jSxZ=larXCrzQo{XGQ~j&%bt`0d~3!+)-i>1EYEE*YeLZTXQ91 zS&NDeR8&7t6bBP|OJ>t0Y;uDsLQ4+XiY*co!3lb=oYA|$IakDD_@spsd)a=X?}sJLZgEnfA&3=~PZ=KBcTYaCh@ z?a=p>3>b}OqO+7Pli^IwWMmcL==0~3bNt_8QO@cP2#$mG_vl0OMp^Nf%wrp-8*-7=K{8=xr_ahuf~~ad!oMsrO&WaYWy?P95ny zFt4kOn49#(iYj>Nqm8RLF}1IMRd7J!S>Z*FX7lX3d)2nF%J9xZLIBqPAbs`hCanzo zJ~&^Bh}^G~^{DISd=K|^4ji$595l zsWoCSte^%qxG5J2=YpxfUfg@fyCV+>OOJ5Ps>$N7aXTY6xPg2nC?@EOD)T~s_}3gEb^ZgZeG;t#Yi|4$al z|2H0I5jNgwmSRe-3rPqOw&1(S(4qvzMx3n>b<6ZjrI@w0`w8tNe>t?mlJd^*geq*+ z;?2n-x3AyN#1n15-!p)aUGV(TyTk6DZ7gJfLmwiwk;TGPu74@@eu<-X$cD%NoL-;# z7B33tF_y5Vsh|R(03TIiW}}?agQE~}rhb^|y80V2;mzuAS1!&W**jrdr8|Uv5K4yp z*G?mx9X$n`Z8E$dXgyk@k7GEsW=sVev+FWW=X5sPr^l)Zkn)|qh!8g?KnX`Zp$3L3 zRK%rsN`Y?&aE-`YH42pqVh5McKDP8#epGnwZ5O}#*{e=ufa@G~(3$Kzxs_u1N0PX`HYU$U1p;7ZKv5Ph>cqQm=|!w@f4m=hv(KDmEUs#9V!O zPvj+55kbwa+5m1He4Y0ttLQ(%&_ww2L^{Kb7J}sg@@Z77{mgcpg|j0ci+HNX{mnns0_o{|#W=>qC=iK^cvxE=D0DH6=NlK73U(fy1(BFEopfi*CtzW5N?1d1$EuK(r^svs%odSET zjGU^C4Jv3gCIsz1@~Dn7Vc(Nj5AV?-77Ysx%HOXzq^^54A8<|osqXtX;qc$^&)Hgu-!X6^Z-AqWr0Lq4}R)8DYB^%I8 zg^k^xRvy_O@WuU6RHO%}I1r$#weWimEM)fk6j^^1#UIcShK(jA?dk&{8_2o=46RWI z_@`m8@5Q{toC-szaW0fm!9XmO@8ySr8&pPdrCyOUnTIfbYqaY}LH|Sdk-!XXL=BH8LXo<)124E9Rek=Tq&*vf_srUXA`-peGM8&B1%zIW+_+62 zfWo@s^IZXTRo_-w`Y2X8kv29~bpIxX>(drAEM?-0J#+9Q65M@8m+?~RK837_DEja9 znGNyuCC|s7v*#R|UNM54$#&Fj8@X#P^lo(gvy!=p&WYC0x1PQ9(|aVz-% zU+KB?2-Y0EP0JHIoAv~eC+?gIjuOSSd3>ldA*FJ5PQc9LcO3x`s<_(Ya_CQK zyU|`fGTE%>H(P{vHW0<*r_p2CEhfuA(TZU*Ri;lnnf?ru`B6|2K@1L21a z6%FFw;U96#-(wnOBw1_#1EO0be3ivQ{th&~htmJUHJWpe3;`kfs-F{3 zqxdHm^bkFeL$>NFgBgI9Ae=JyTsB@D3gDxp&rEHl2bSMGlU;vbOH-dg2J+hRe|bBG z$ACLkf&)7nD8K<7GNHhDCLm-Yk10@N=SDR|oIUm-${)O&gfuQUED=KJes_22oNoaloTBsD1;u96zw)QAtQ z84B5Aav|fyT)Q$+56BPL@#$ukBaeQ*6)+<0{zxh@uEzdmLma8C;FC%|Nitns*E>vW z?AJr|WC3`2M$|pl_+CWVRx}g#-$aGcX2yRFVcNQ|VdAd+)Yzb_MKRUyFF@e%gql6t`&2uLit1wsw)+lk+qP(QniX0ADJP^X;ybalpSf; z-MhJnDvA&eqNjA z^>e@rSw_(Y2KC*D__$MJ_av?A7_DZB!#}+wJaA(_9JF>mG5E=G?Rwlscs}z8XwG(~ zrfOqiNS3^yKa~ztdbe1dJMI=4!xC#bpBZ|P2p3y7gTb#C_v>JvT%|Dq3kG10p#0mH ziTqzlG!lV$gS`1Kri*_kG(x$*LeROY#(=2w@V=wX--oJyxQ&zz;0bPQiD6mb%TH63d=_ zh2yU5&B*OE6lJA-UVoZiVr&Q(nJQ84djbAHNVGtLa--rH|MrrPpK)XOs}~s2JZ05W zM1fo|&U*O|AL2jzkpIKyb3kc+P!N5A>YSShv!ZW^b^DH%nR(WXkiI{B8#hLRm`Rc4 zl_28gked99NRE8XYa_pA@2$J|){I0|`kp-I_gfg*>Bf4Qc=8XcHqdWjHM`M*SFOU{ z9A1oLjs}XoU2>R--4qTuj_iydvIh%^Whg~`^esy3Kcx&g9!h1IWO{|Zy)B5{)#Jh) zp)1F8)%1&ey%L!(F>+QQJYt=F?fR=3M~fH#>BPsoE|hIXf(dH7Gi;cJpJO4io?cJn zs$lvAj3iM!y(<1fl;9ep&nDO|H;c8W2~=>&1zn|-6A;Y4bfwMY`JA^N&T&@Amz`1l zK;LHPVJk0L=LGGlINb6y-zvkJ0h{%{bIcH)vhx4V96)vRk67@hJ@+rW<9`CX0icf^ z1E_aDRt7Q_6wzWfSRAo<$SVOT5M35lV?7QOSB$T-xSyJMjm7TCu9z5fOvSq6Xj0Vzt#y8mmJ*WBLjmY-7NEBX&txW(gAnXSoOA%biQ-*`cr@=S+Iz+j^16*w?62 z@u@*QU*YSFyFvx6S@>6`2diS_k$S~bd?fS&bf@1x6ytLt6%W%Ab6ZIsVszrp-JnX% zcCh{gO)2c+#-uS`_y_|-yNk_hviH_DW7w$FzH6y+#57qOEk2&i=y+Rm`gHOg`L{xl z)pUz<6|;MrpoYf}p2z*Vi_+^omx@@F#Z6d`5M(;~Vq4(3igGH77bx(e^v2`YE!IIw z`_~p>5Ijb0-*_r8G&cp}#9S!Cp;hujr&K#%bDlARU5e|lUs28yq81VJ$k?%>d%Gjw zNG$(1i1_R?+$PVkonq2?Ch6>F-^iA116#nkww$=b#rSIn{5GN+Vpgpx8)uJd{DsJ% zY21%fiO15Z6|Ka8*9ePy^34u0f5dKk>Zq5t8*c+sW?~!k$J>BsF+zkI7RSSdc?hAT zJNgC&MYe)S32Sof-7JIwwMZcQHh;#RCEMMpym#+#W)=3A0_++`z{o%gb@mbSoRj+v z@`j>(#iK7upG|Bz-Q&4C2IndLAhosl4QjE3(_?0qS`BHxcB3k(>Og=X?NHlXQsXE{ zs{)dbLi&9(NiXa>t`Tl@!yF~WzY#O|}>^~=S|93*B|HQeFN3m$|K>K4da?l3=i2U=5%fb6I(%+96_zQZKzn}fo z5bJ{SeV3szzYm~7=AJVSs$)VWI*Du}BzZI3>~q9HA%8a z-0SVzB1cA#_h(ID>^JknUSvpI@9J~LH52mk!G?^ZaJh#vVGhGf^!mq2Yx0xc1bDk6 z4}U&92ry)F%eK~~ZrA2{g$T#(U(T?KISH{ZR18Vm; z;`1|f>;cM4Y{pfai$o&5MlSu6da>08EYmi75{{=8z&WFSjM>?K>E}S1i0gUOv!p7ZYA;8GNO7ol}G-^Z;+Y`nUeAhTH(OT zK>i~yS8rE(ryEtOc$U-%zbmOub2&ZhbSn+S>N-NFxUb}VfZ?^0kKlU&E_Aqcm~KLC zj+qo^^mc35R99l;(MuY8+qZt_G_OzvaF%u~R0yEZ-=INd1Uuw>r>xNCq2$0slxLMY zq8c{mp4b5mV6PA1{c^}#AQ^4!J2=I2Vw$hnbDEQpGPm%e!RBU_jBK`L@g1T`dXeS? zNsv2<3{Z6LP0lY+X;ztT?ED6SRp2VDN28i}H^nu>s%uJCNv_U}5M9?7?=PfVeuExi z*DZN4Cm#bZff8A432j7vb2LA>L_nc<7*;6Uq>ih;pc9f@Qa0P1yU%>^g$r06- z;fAA;=Wijc`H0DCkya@4 z6R?#nYMZWT{RSlvFr1;o=_5oi(0?lQk%a;IyY}w$9)zy1iN6PUQ39?R{$?>ZQ*I?r zUy3S^Z+I+yLRIEB=;7HR(K%5YDTopD8`NXNYcPB1-hz)u5=zP64q4_Z?yD^*c_B6wwiaN`81*TH)w>dKe?f+Q9>dhaVR;Hlp%;f3uwD(x>FM& ztYET~mK+RpOfL5;N9;?T{BbG?~`K$l81f&`OG<+*aZRKn4L_USZ^9m#c%fItWdXTN%LS~Z$}MF@O9D)^BW z#%G@I80V{CI9V`kFl&qdqvNzpenKVqV>O(>Y6|#6-!R6WXf*fwBuMK{JAJTRUk@C^ z|8$^bSxuN^Vj7_xaK??ft@{z%h;B#M;^E8_?nnNY+)t|bMlND~xemGc+$2?CM{%b% zba$uH&bMt-bMJ1~r{=^d9UJmC8Ey}!4|ipKGgO>Kz-(0MueGR(UqO~=lWaFhO+Wkw zA#sm=Ie!X6P@StN^6)3{Hu$$7DQ*j8|A?^ci$!?UZpduN+;zi?vTrpD(wpocjN(oO zk7HPp=R;UUz^uKSgZ2wJ8w$VXZ}WbYY}GeAeT-t;P)Te;tYe*Zp=i)-TqY$^(C9 zicg6dW*>F6z3T~4F`T4p8=`03m;hpNvsf{U_)2PE+J{0BvH~fp7o6VA3$c(7o7$NT zUS(K1Z#E<|6tQ1veiJ6Gp?g#y3Bk~`)a_EWzU13w$|l3tBqBI5fqHWg?&Y@&S2>p7 zStmNBX4Z}bjXF=*j=(XX-uziPcfdp}{}AS$^AMjwMkXi3)7k?MJIDdhb|swtxbpzE zIRl6{HGr#vxnmFSHc4MaFR#6}rGuu?hvwZ$F8O0?lq$>ZJp|YFJENN})=d`tDsQHu zh=f7kxTPzJ^N1IcZ_q1_?GmSza3jdTr=`ob+;nW~wUV%<%f8G(p=yy$ zNe%p5Z;`@?8r6G{7WFUa?Uz+0c}*U?cjylUhjZ;5i@45hj`a;-0keuMaOs3=1nh?3 zRh#Y;m?8{-7To}JW57yn-FuLQ00A%M@`_SXy@T3cul@#I_GSN~`3*`_x+Z4s8ElMJ zQDp3Q5JMlw`$;Yf*u&e-vVinJ5+{f7uU6du40CYL6ad*x);$%F4fq1+b2mdkKKQQv zgRhc9KdPc0LPBRWy!xg*zPx=H;D?^WL&8*{Hq{$UHT6;ARfvSP>yh;hOZQ#bvs6V)^@F9c6(#JC|ecw}3i##9h9UxqJhBfk|A+oxLIKVaXt zS|~`PC@EGNVsJ8*FiatyrE{$B}eH8T8G(wD*veM-pnuJ46Cee^P zwHuI{*?IPUQ*`RxF^pY-ga%_`XQM>;2dhXHnL^zys{O@vkHx=HOSazl>liV7v3??J#W;{<=|K_kkGgC0V`kO*l55*r4! zL&jHCBnzC5Y^Yi<=>$`oM5y$~bd8l{nOW7HE38~=nHnCg znk*nKPil^py`QQ65tC2aGsyJR%)OU>KW}Don|ol-8;Qc4G@OZJw&ZJpP1#<9{->i; zG=ydJLglf%#lG2xnFw$NR5&fwbhSX9dcDB*}yB#IkxK@`%1J`eXfWA#%&O+C~ zord$!Ch`|rMRbtcTVMU#0BF{SWh$!l{ew3oejZ58YVh6SX0jl$P2Is_0iy%jqGT2| z1>3Pc#^`a!6xCJ12Nl06zKXd(!a7AF=xr|2#=s5O(18V zAV8wKu(aVtIKJnp^aR%hoJqN_#)B__8kWv6_-FVQ@Z#n@&hb9 zPQShREz_@p8MCiPii@Q06!ComPx(cDilIEV+r-#zEdyNiPC_+1L-DCsRz~%S#zH9v z9t+~v)KG1wSN=mf#d2>qt9fA5Kq*;>wF2P?rleQaIK@??pb;93`SY0u)y-7cJCfJ= zSec@th`ne-2?=3Wrype)mtXdNd0SMbnAoB!!AwMQlpC)izb!H7I6up~9pLM|V;b1b zN{y*VVRVyS;;c^AJMQX8uwj}QF{mv24Z?lvnI0Hm+1E_2qy8JTU)`l5#S>jSkr5vY z@z};Jx>C+3YJPV`{2O$_)zfrb)q%FTjqE4}pc~ocN*Ul#5tWcRr6VCAOD0~hD|I@< z+o(O(Bfowq+oA$J-Q|>ewNI{sxD}!XFJb`UnR};&lpFP(l``bCX4*sq0_l#a&y8G{ho>NO)tv~yNz+$k zz0IV@k|OJt>BmWsKxv>McIhH*IszCcc3eidDCH!#2^_pvo;*+pxj%XYKxbQ@euDzK zI8l!1MPO0xPND$L^JVFo^e-bm)rUL<2tjF)@D_eIgTT8~HH5E7J=ys4Kw}iU;BJlr z;e4F)A}YB^MDRlr#BABs^k>YkQt&EkhsI=tXYH2ME6xNho(o{etC!z6=(d@z#=bDW z=uu7qitx*7(`^l#_P~Qy;O$DTVWGGFKqG0r({D1YoAwOJw-Em$6d9~>jY|7c^z#C= z&xEE2{9ay%Lsx;H8tCO(V2A}YN2oW4J(JC}7kqEC)J;Jlhr z#}NH_#mJhWW*YZIV$NU|0?pdxWGcJm*E!qW1-LL8ci?0Ij9@-oUUDnJNz%nD>3DzH`E<{_ffrKA|#%vxC3ygntn(eq1;a#mPS69eMn% z`I)Y3eH8g+@RbJ5RdW92k9S?DvMtYC(1-}=rS6;x6_cQY39uKy25Ca>x+;DZd7Q7e zBFwM&8}x;IMH9Us!0nFcWbC$KrR+3YD2M3nZ_VMMahis7f0CvoZ5=&egKjACn7Gfp{l%V$lguckO()JmT^9iQr=P_j$B zT|}NrET(LdcE6zH8`t(BOGMx%n@%ev9$WkNC$&^@0AtJhaXxZK{{}HL;|QTGf=UQF07-`RT3HhDcf z@r_v9tgTl;904ChoO^P|(Pe`1`8!0lh_PJVlx2us>xtX(aB;flSkH=bO>lmmo)*05 zr${aQ)qRf_?{I3$g?}~9S`89UWYhr)prV1as)B-4x`!GQ5 zxYDI5%tv`*ufSb9U&Z6SPe1JD2RQ&Rs~OMzmnHkxAp-=!wW~l;RY(4->o@2q)(~!a zJaG1-8s3_l1b@B2#ykSYk~+^jmp(H^Oxd_|wklMu6$1!T8~~U)wd*!Z61Bm}2t($U zBjA${7uY8zdCYvl_Zw7Ngy3o}Z2UNMbU}1_9oVC8-yb^wIZW?w{>V=oxAvuYWNa!+ z7;k)Idz9z4I5&L~cQ*d61pkN5GKus)gt5ugbPI)RR$D7Uxcb1+ovdpb?Io~vIHO2= zW7>^9?8H`f#gs87_ALJ~m#it1M&si?&5W=0UamcVpE1>|?#kY1;C28k?nMWDSecNZ z28fM^)TEWWjF4T3P7Za6g}W{Ofzt6*hoIyd0!2AJ=*Gf94n=M^<}d^?nYHP@fWI%b zQj-`_sx*~hA2jD?7K^yaIhVPVV1@-8deGqSjvUX8UjbRcQK3JAxMvs>r#o?yZUL{7 z5vO1iZ(Y(2BO^u;gufkmJapPwiax55EE4S4+BNp8)#&+4lfc0InMGqUrd)^0S36Vf z)ID=Aybl(na?H1An}{JniLdya_?Q)yUQW7QSvvE}_8jBMVQPIBCwa5D)xKaE%f;bU>wzgwn5*WPp8JIP!+~RkXh|r_BVfeOU zT^h)2KyVQu8?uw!#{com2(nC@VgJy&(EW3Id(O%(Yap`%T~)Ndgl+AobK~D2)h#>?hbqp92_0i6idqswBzaympRntCd1lcuUyP}BLs$APIJVIu5AeWPaB zJzHVlk#o*V)4QhAGGw2wa@f6icE907x^8fTrk1MuO|G094sJYEUCGY=NgCs)ni;wf z*VkcvCR3&jk-ZbfI!J2{yNuzNft0DfFuRg)chQO$la>9f7*(t^T&csEOxHrc)_Op-SHMZ-ks zVOjp9EjPW!nz>QO%Yc+Aw4xOfuXvM!fV13ebE1j7((P+cZ8BPliGoXfBHarir`F=e z&tcKKs1C&GL98s=Nt5N<5}dhdw68`tF~%`8zEZl+6cuQahD&M&8T*4JXEKjWDl%@1USO0^Hb-hUE5A|Fj+H=W1 ze4H#TRtY-A6k<&R%AIdxBEj8qdUCN7_}1Z&8t2W07sH~0XhWt_9v>c&P@DHOS+%V) z)%oFkLBG|9;f5uCEhh-$rvIME9;`C$xD^tA{tm~wEVSt9W)8WNX|Hv@O4)(KWzHZTq1-v0k2SRoq|ebZ*0?9iLV#pl%gs8B|JeW( zbDIF(8;%Fy4?%#H`gpxw`|iVliUD3Tam4%Ta9G8K)=T1nIv5+vOc3B`pRmKj%OjY` zf->k3VG~IU2gQ8+_#Y+dVJZ?Jt`LTqT&QVXoU+w_sp5cADVH)1sGx;I?7&W<#eei= z{zKIXv>^5aCi&efRsO7V$`an(=N$9*xdo&zR|SgPnVdXzuzmJ2+#wo1dS*H&0ks!_ zWPzgyAXy12a~ApRtMMj;^)|RN*i^x#v285zR{>g!yFg@r1%s0m=b>B<`sg&-%f>?q zLHD4oI<)fqAuYkiFQdVx4(=Zfw{uej-z==EU1>hys=CWMRGQqm;0bER(I)tnhvi5$ zg$fk>&{D9tfwl@i1V|rFvCJ1UU8{8$Sb1;&-ThFMuoN_+*>F&@5R+A;Pg~G(h=*#; z<9x{KTNkUAt(%HJUp(1$&e92}928l$NaOw-Dfgx4u8MmQMG;G?I;y!0rNBT(N^Sr^ zzbFNX`Yt>9`Z!nkjxWdk3pLE-I=WIr0Nt+7f+~S23baj+YEn- z;OEFW%|<^;A5O207Eup2^W;5=$n~6`P0tWnQzGMNIRe}Hewt4HvQFN;luBP0=j;mK zxigVgLdWhsgIvk8%Jh|o-I0^S(wbjIxs0Ru&;STcD;cxCM~37y5A!w}Ca$#i_?>F7 zDJ(dw$A=p644|*qy4lGZ)NroIAUPiC7lFf&DPpuNKw~O|r8Pz9BP$fCD9lo29FW(a zHxqD2PsTVtvQ(9RtYT=vO#&b?7A*QnR;iQC#3|Hsnmf+%=`K&%7oj%sLI^RX-=I&m zGIr&|!ud>tXk|{jSoBkNQkT|KG#NKBh_5?&oefMbGU$`wyiQ^c!Dr|V)5#E9eK!fN zEWN}Z;G41YsGIb2Cs=n=X01*+qe|R#>oIs&ng8;}SNY7(hQ2+f*@r(?#(KArg?CrZ8hAQU>2!Ehs9gJc#moJx|dm8^X7&2y;y*SvI@v>hKC8d@&dy&fYL}}HS5-A3UpD`#04PWYqlOJ6^I!b3D+_mAGq@{tFG?n&vHx;0DOmD@~-YvW%z#M!sto z#SuGTAa$Lt0}V~bqIUG^kuB*CHzF-GZn6?O#c|z-l7VD5WsSfmDo^tT^VsCqRk<5j zcdys}oJ#$hE1)O`sm4%u>y%y!Y8~(EU@(wfYpWdpg{EuTeOf6=&DBmx#msQG4-xh5 za=)w#zTz%8U}=vISZGZ6@uH)pSi*&-V~QZSK49|oaV4-r|KV#$2D8QyknhcAd$-ey zJ8|wGOWfMOA$S$AQfW0Z9()cgB<%M5$F@~%7Bm??kthBM>nc2FXEbYyqI&rPD^;y# z9f6^0GdsUy^vdQ>-yRnhw^l_dWtv|TCEggW#4}-k=68Xd_q6mruk@&Dtv-1OU(uIGlKBl0(9Q+z`=BRzjyxuj zx=i*EU(Y^njH!*ICA zd2_vu0ry#drc_zt0!F4#$(!b07Qr@EMIhIsFIIu2pO`pan9gKzr1JJ+c?ppNd7FXz zH)`(+l#%!sUB3&1aUwj$enPP{^7UdRXE{tgD_5&I_;BVx>@=t^XZQ=FM+wIpXGiPh z=jmRW-jF;luXW`l1OLp%-1Ib5e-DA6OV%K_xz706mhS(?=z_QZ*0`TX7- zKVHz{hL}!^M(O;dLV2X9*hYp~cdfaQ&5p)kudhUyILj`g3#q4Er79=#8Gb5ch4P$1 zTVGhcdo{~+7xJ#4{hWP3m}fGNStGjsTbAxY!Z1qH;Ov1jt7x0TLTt8WqpA?ABmAI2Kk8n1M&s{sm$>~h)d8Id+AUnf&6Y&q> z%1~#dK^oyFj48^wnU}bFI0^N^NHMi;{yF>aw3ye}FP9>Q3dHK=hSVq+h;3+N`|?;v zeZ3+As2Fq7v>u7_z|T0$x*8X(s^`baM4t+k3YV-ii1EJ`)SLaJi6ml^XTa1_oOI9O zX*Sk+T=oza${M=~RS_VjBMP-++q72a!I$bRB7{q`>U+I-f4#kQcO+|;Q%?3p!3FI( z{gA{0(v6i{ij&(nFJHw-t%(dl!=Bl+shJ_7+_FtR&AmfFJc0^i$f1AlpVIJFAWNp@ z!_P2H$=xOOMnriQg#t!M^sF%`X1N(lDBY^TyPV8Vj*C|9nS9$H5atGFgVmx=m~HQJ z!}f0KdM-c0f7sbT6!{AS(a@6l(X*$TZ2o+lKL2jGs#)Z4TU|}Es13_+cA3vwA%E~o z1ev^;kB&k)bI_p&?VPlSZ^UP|t?(`Ny@0i04yV z>!pJ*9Gc}+waXUG>Rg1aKe45ftTcbsn@f8VIhim`@j4QOl^vk;|Btf8oQ^1YkA?1M zaJ~Hlq4D=Q<&TmB7CG{JJMF67C?Ci)`C<5WGRW3$lw04MZ*_+HJ{^?D6NJc85akp% zA(-$~v2wA}K_xtnz`dXdhzMWLBrWj7r+llh$XrRgQ7(`=EXm@R?Y*`B-Y8HoDiXAZ zo{tqh)fA5Lx5MWi`WgmkL~}o3!vOOEI6@Ing#tt&B7I9hEsACfR|NcfQrQ}Sg9r<* zh{eKpFvTjBk5R(Pt0W1K_2DwOSz5CCUiZyxv^9p<*zXx4<4J!Ge^0TpOzSc|AHKb~ z+3i|?^LyuehSVsBNL969YkJ_Y?#=G{#i~cbSK)G~`0FKIXm#;Y+;2PBhE_ApDXIi8 zF^zJr4MlC}wA@`4#hC7RvISy~0$HN?J1P}(CZQWmJX9K!W4(iEEd~GjO7nMAHv%kBPQ7Dfr|HvcL zQIkkRxV|pb#vb}^(e_6;Hg;kvAV%2&nZ)QBt%p9(GsE!z~fO@`sRIi&lV^lA0m8qU6 zxO-4TK%C}k0W7b`SrZq*>-(kjP<6A=#fzWH8(DG?G4{}Fj)cnl7R>xZb-(vv-&;Y0 z^6GSW0VC$yiuNCB`~ABHyx)k&i75JV#_Ih3%nX~nJ?fN}$DHueEwOE2sMkuw=YnEQ zCfb%%qw24Q7X`xt_EzeHeG9(tK6hT|hOMRMralV(GGLG#r#Mq}A{vp4v(qzah1sZ~ zrc<4JD&WU)qNX)zVA;y-jn?;MQ?KsIx8G1Lg3gT1#z6mpM#QK$M_+i+-j3~*txi%! zHz4@62QiJUZND1wwi(EitHwv9F7WPOMlu<%K6RkbI6kjmPtP8#Bt5R|T|DILe^XqU z@d&NjD#3I#`|7LW2`2iXGpQ?Oi8Bx+v=)17WHGdiT zw`Z2N(Ui^_X8NLb8}W}JDaCgDbJaD2pp0ej+}mEDlx`^gO$W5Q)NFFZ)IH`JU^Q(&is)qlh}1n z5Q)vgG!?Z>Wx3a)GV$P*-TcYE)?a8g3&s`u4#i`E9}pX?Lq|nyJv3I(k&K5ICb5VO z$<_!GLT8#4!{N;3nQHnfhFWZ!_SRyfpl53lzg|G938K1-l@AQxxKURAL&e_ zyf77GBaM0^+3^Ry_v#w&PT{3ve^uv$oX=8cVSm7N=|0p1XL-^oMs_o?);SoWR{JXD zN*Ti24_-A~^}Dd8_AbcqV(h}%?ejBxh_nl_zBREh%s~h-UyEvjU2@|!|LKzWThNA% zeXU8Tnj5@iL$qGEq|Wv4qPG7KEB>3{?cX0OSO!eNf`m%S1%uguCm3Mfp<7G?>+0Ve zs=sYo_Y0*AFo_zAs1A_O0WQS?z(xhkt$SLRala8qi2~5;^5(3thgd-*_d{UOzvb~Q z06^++Y(r-|tYH0kepVT6bJP@5uH^Lb%u{>y=_By7up$igup+F|zn4_J`K0F@*|M*+*`1OQE#R6wA4^Vy~$05@1I@Deas@UB#FK?i+V7@NJd ztEuM*`UDqkH2lYT1~F%jxgG-z*eazW{wWj^PxxN2RJA)g-DGkz`lF%PX$vny9+oV1 zU)$HU%U&{1mMOKFC8iEKU1@Jf|6U85F@s-ge5|Yx^?DQdR(M0H`JnQxV$qS4WW?=0Bboh7|S{mP%DL4~osK{?8+dL0%p7L4M z<(SQwga0x>%6JfebT9lNs->)`E4uJQ4V(#P^X1{~^`V+YxVhCwdKM<6W7{T_ScRu9 z#m;>6w0`G7c}curJpWXUI0Z;IJBq3&v5UY&s6|C;0c(pT&@TIp5^<08qSgm_0*XJg z{@Yn!NHoHb;j*%9vX67}$39HQCjRLrxlE`ZOW~>7uX>9lE1LEY$sQQTh5NjRaul5R zCg-fa)!IeuSk4`I3Vr~kqj8g+kwn#Ri`3`MP`wTn=P@=)ZkU-ErcvV(pl^$lKcW6y zA<0zJtT!-dd*9}$QKp5u+;dH55ax9We#L@ zT<_<%O4dy0*!>8l6j1MmY>7X+8vDxBP#0c^S^E9f{(MwGzk23y)&U%vp#K`}Omiky zF?q@C3v!(P#H@>>jA<-(OW%Dnq4QcVX%FOiks=g!{cYVw@OK!mnFUpOCvi&Im6zJA z(*n5FBVM5Nl(oc*jko}hy6i+;4!<53}R`7h8Bhx399%68mim*HZbhzW~~*3Zm@Ag1#7-`feIb4 zN|La0YZ4bG$a_&hS&2RYsuy7(*Sepe@VJN_C3k5Ymy@3jf3#<3VK&=FPe<$LcjFN9n0_XCB2tgO z`=sjLC-5o1NJH|72ku2=84N^?|Ffj?UfzqN_!xk!5CD9J5J{x)eY$opDSjFT$NP6z z4zDcCE*nEApAQ=k?LmlS!T%H;-HVCn+!gWoqo=5Ve3Md(RjQCVd^-aX$Co|n2BelO z_R%2q`9hMv^G!TeJQW^8#$~vReFQ`}14uaSji)V2I;M!jLlp72K)kB!)l9(RCsmkF z2aF_CT@?g9q~!x#>i01L@Rx_B1Zmu(T}aX0fr(FmB^~vTQ1Z8X0)R?MVzCsA{^M_? zZkHPz3FY|5?{U9$J|Icf1b9=PY#4gL>Bx-N* zl;s=ot1Q=?miaw))WWj|i2++?({=e@Vj^_#VmCre-ywG@t+zI$pSL6o&6X5;%4!rN zFU9Mp>M5L5Cpn!M4d^Z6p~jSR!{S&cw?9KGb*Kl9{oJXd#4rQ#PTV z+;myReQxZ87Vn*pg1DOCwW)P`kw^|cIWylQ_h;jv=xHeo_NXyjk`E0GckLBWo2%qI zB@*&(&2s}=7sjmX&akzt=HWGAlJ!gbj8T!xmVDr;VK zHdz?YMckkRNJjzQMWi0CAc8yW(e+G;moUqQu#(o6yF3Nee#=RC*QimqP;*e!BE7fw zbeP#?IH0Xj+^ex{JL4;|iOrjLh5y_ikrrrN>52k)xT zr_)SpG^=n;TM&KF8anBvBMNtIV<}+xdp!j}1@8f&9SBOarT~BB@`&j8X$fQeavPhd zhVqmA$TgSj%?%+e9kR zm2TR$MMk3}S2qJr^Vc2~@^OABf^t%BZ#$2P1Bn_<<@%I`s$XMl=?$b@jX!gF2;B7v zmy`&HS_yK>ar^^L2{x9*C=gzBlf?~QFSr-^iSth50(j*;A_~aE%tw6j*+zWMkvAp_ zr-703C8>D)KbconU-?sn$bJwS6Dj=qoXv#fh-pP{>%iYW%4n#0NPv0?#rC0uTD_{LYl zmDRKb8gX)+4Xab4O^`0D~_OF#2jkJQt?UQ?dO`@LYkH=y{` zkqEf5R*R;(NgqmUms`@<3CKEe|D%8KpZ$dY<@ayx#sJMF35_hQx!@5Wb{FEFW%I8q zKiUbD3?On~068KlA2zS#Ka8Hwi8LpbF-L(~8w>C)+s2391MzVFUap_sOyKcpZhr#0 z139IlQ?<}uOUdb+QZ73zgr(gleptseT}fwY5_3;ZiMs}{I+GGdx=ZqPOatA4oQ|nl zW#FLeRmU(X0HK4Sx=xM9!Z(7NYSIsY;oZ}CM!>+BJ@VX*sy$^CKnDS+1Gdo<7{!Ia zfdE8-?R_I9L>Ut}8+l8hogrz5{`+qR7!H8`%eI^Z=F;9H(gD`N{ovZVw7;`o#CqU1Encx@98rX`$k4L_Y-w}*W}3XJT99+94dikr2rRCNgBLbQbKrZFC7%i#w?8o z{h&VL8L@8*J}x)f1J7 z)NftGaT!lGK|2=-sCNE|^FKi6+Md-D24-O0a&vLmeS>i$Rdu3LEWIvLkKy6?u5g_d z+COn9*Y;4V$ed6TQ+qyCZdra;R|I-j%4P=<(4TFvIO>@^}9T@ zgv!dfjVaOf1zM!Yf6Hx|Y;ee(FA}6oN^1IdAj==E<0n=2m6{z~ zV!Bn{;&~FA-gwk;i%%u$-r%h9!ABRElIj1aa}AM5;~mXKFQM~j+C|I zO<@`K@O)A-KYlsgr)J7)cc&4b^2k<*xX5W;^6{A^OJEy? z`9ww>f1!aU=daDlT|{{2CEID&;EQaH=sBulKi=u`#-_+g(h>&xN|@PG2$<)q&5ZSe zu$&N6V1}2^>)t}USuriuSnq*uQO0M004C$+Ljk-XFEDtW)D$$$F&|8FEK+W(;=~8+ z)qhiKsw`Ta6D6o*Rd^->vtIovnIFJ645)=<3n;`=Hnmv)WCwL+#trO*iRYpeBvkG; zww5$Z*Gg}wKH?8MXXCp+x%*VXpmF6;yiiM~K>OB{7PaM%|H+ofH1Tb~YaFPfiMNAR z9p)hL`)(kH5?SdjD?SkJvGR>IO@Fu}brS~26c$RVuU-qPtLSq>-^6i6(vU9{1)l@7 z63J@b2OTcLNop3@U{0k*TS{~VrtaY&7a|XgVD$;?wfpz@-?|>@+0|&chzaCZIw{OHx!w~!sS40MWfKt}&>+5(I=0J7(5 zI6KR2B+dC#{HJzQE6s6X0#9OO3Mvt4vh+D^I7Nr*L2<`}GEG+QZv|LsO7}&8vsyX1 zc-_Nr4VA$>S3pRRn8X~7c+iEqC=5Zg5l8aJxPsr=iSP7ts4!nJ)ittO@g>_vqgVhd z0nmU3V2nTm`d~7B${mU(3|F3P0$?`zqiR&hnjRF}P1H;bjygabKZw!DL5r&pkHxr=GlFU)?o@`WDaWFu5wXEjiYcB5A3c=8EKn=c?H3G^L_mlQ%)I241Wn6tn!18d<%wX`wUr_w&nd2s=(B&A_e(AJXdnT&k5r{bvKd;XRFq;Rx0Gg z?X3A6!BfX%I*)&xm$5SYPS;6RQt>83EcB`Cc(91^(0Y8B8{vEOi7Ynaxu4Wa)>9}$ zLKH7BLQe?7KqNe`zP_}4bXH;8cXtVGH#pq%F3?IZ>GcKEtA;YF5BaH*7;b0<$F*y^8q4<#Bd>cAdrRDU6akoypPf@f7i4giYokm|}n! zt6ZDN!w76&Z6|79of`DQJ z6ZKr3o1VJ{$s-FeFs2Dj}{r}8M=Q=V19dp6)#j+d%Kw)D{q@;gNk^6|Y3iBe@5r zFRE{Es*M+YR+F&f%~$Rex#gf=Q_O2P9B(L~wHRU&9)3q}4>Dr+;+*Ob?50HIx1?s3 zmO_iW7~)-j(4Pj>OaGBX5c3*wW#Z=~pT!kG=xqiy+(xNK^RHS}W^;AJ%s4fLbOmW= zZ$Q1h)tEva*K;E$N)Tk{hOHb`XRqgiL>%W~0|2Se-fhZ+8p3wQ*qSID@HBos*jorF zcbuJ@WQ^!`02f0#u98-l%a47_A8c8=@oq{;`=cLfBfrSNidpQ;@D4kPn{C!bJ~NZK z?Vjg!R}Zz7lbf<19~#NFPrk9PYY*yYqoj-_Xo6%y{dplr;p@I;we}6wN(n(Dd2Y7^ z8m7MMSs!G{OfS37exINxVbFZ?7qbUBxVNMV^Pmdjjzu$*AeMVW>qAy}BOH`bow{VD zzo>Si(<9x~y zf_zVU#YR7Q{+@X|fDxxP+wkizG;$?-DfssKQrwZe>u)^}9(nFTm$$w9GWAT}jm`{5 z*I#G_{T@XzHR+)Ja&cCe7n_#u6o^ZXJ%|f(rtVh6A}`)ozPLA+dYGJ6z1uX^JS<9Z z+9txgyKl8R>Mt>Q!~mDui8)QU(xH-Bvnk&bk)A!Hqj@>R69_sc6O~n<_ES{5{1{@w znY0nr%8tXKxrauu1W*@eOB61JY(kQ$4&U&N-Wsjp^nbPak`T|^j0JU_qrv~VYHO1~ ziT^hJy~C8p*QgdGcW7%YPR~(C&itN+f!*p=Jb_He zHOeJXcz2uZ-L9_$Z*p$AF>Fp3sjE*Vzn`EJA)Z1a!T`uD@4HG}_d>Oz_X|qlPe6$Z zy=o5THd>5Gh6qpFpTA08e0@TbVBc>1ZZnp=y)df;U#0bxcOo8Nl}fFu;PSjbSll4< z9nL^c(!R!dZc0B{{?X+#;CR{p66erWSTsj~+3p#XYT!^PV`h+UmA*%)u1n=xS?P0} zztHA#z)7q|(58XaD3u5mHw@)&R+^$_-hT|*SbZr7UD^dM+H zacrid=&>M`!Y^X`yIpA@C4m{DYP=h}pJdP}sx z0_MLi0}O7z5g|fv)0a5~q>(%Jp+xT7zI=8#1GhVWtWEzyOL;x1mJwbn8@G^qE|KyQ z_=;R$`C)lsH$}=F=#y*=yLy^(-M&nGZ=5vxZ7q`R(T;GLeOeIuYC8SO*TK zU0qGZ$FBVJS%TXYP>CEQQPRXraZ$gP{AkbjSaaW*WWQNPJ@S6YTX39~LN17}icDLL zrU1e;u&)({H=C0~+{yN?M5c^Y7cFFdYJqD8hfb!KjjsU?y+@EAHN9fd zH(UDDkJsBuXdYozdH%#R+T%{6gBrL_;OZu1$$Ds(J26!k9B-^wS8Jor!>vfsnO+E9 z&$Stv%Dj6piW$Y|$b&4Ro$J+W(AvFx$f)^P6!c3iJnQ+9sOYd&z&J;apr-2E*%&iz zm~f!I2#rdaZKe>i{H1RF405BnF2$6e91}FDSKtl-Cm!YoO&{Tj5b;&OLfMQp;Os9b zQqq9<9!)*tQV7UJ1k;AF98=eV*J~^4HWTDo@cqmDit1mTU`%TZ)>jW}zW2%N`Qmvz z`sSI@E%$>Zg0uu#3_!Bh>+Domm$8;X&ZrfpO9}rYZe-qZ3?B3IJ)T|cc`7!VD2J8( zB@8F%uAgXwGkP}koz|tj)6(yLzR+-Y-FiSUCEu2aI%SU47NotrB$lmf-UUNEStKP!Bj(39f=_hq@DKWODu#fy4ky^1MLRck=JwsfXiH4cs_{hW{z-b|?Wh5L3 zKSHKk$|j(nSJKsgZK}1XUZk26)xFKEB<{f0@29&ddo?9wzozGqH|xy#MQpuQH$<}` zYSg0MW&wlseDvLTL;%QM`0aiMB=veKDf!QkSTFRVC?>=@+QX(igSU4sm0iMTr2TWP zLN8et#BTqQ=eNw)>}oj43FKs+xLmNWis#Ev4+2tIydDQ9ujnT_(uw{jvrQSVJFYWR z%lSl{%ddY%Yz7~(8QL8bz@zI@<7$O`SmkL~-xIVkDWHe|Y4U$uxc;{7Dr-(k;?XB& z0WCw@qc%weKii(6oAQ&bb%r8TW4WKkYTFxXXAbKZWC{F#p|SmbPo;W< zwUqSr_LqYy&9mXIaZt;3Jn!!rRzOd$b?Pv3E&B!wCLI6L${iEF9D!$?T5^mawY9C* zeUuZiI){L*a2V-gEu8Mnv}AF7liP7~0lQvp6`^jy`rnS~R6oC-AlUHuw@9ga?usK0c1!6ZTW(Ok<)xh!7 zkD=Ue_L95fcb||nY~kfVljVu_b;(OH^3$kqOLENpp)7W;voD#J8Zbu_VFs>`Zf-t0iRXfnB$k{9n}BS@c| zXGL5Q=eGWLF#A;bQ;YFa2~*FEg8O$wRie+VqSC&u<{O{Ku8>4c0<7|0*Vyyu#6L61 zsR`-1Z=e#&pjM*Q^NP1ZLziXM#;@C$ZP(xAr1u2JnVH{y)W#fXwL-oAiL7KB zSr$gbXVId~hechRV`M);lcH<()ACEV7OH~p8+_mceqURB9^F8xaO}r7CDNMOnk!AE z(T91E0)x(P2X3aASE29Ll&UGCPrq?fXj+Pqd6Z=mo&X+u=H8Nrb2~x=&1XD);vqW2noRi&e8D9h+i5b`(>82A(#-{y#?Cs{ zqxW%42UXWq&ndv0%;`cca205?K1@PE0-m91{e0HQn^qFIt6(D|M`&UhU zzIJ25D@JdBPlrr%K}w3eGml0>pOMPUsJN&4bm|Z;v3UH2=8$B_JcQHx-EQM8Z{19h zfAouo7n5aPuX7!~d3V&dh{@Biimx}TXi2wBF|qAY2_qwi5Sgz4@&KbQjbf`4aunqF z_L;0VAQKlj%STzo@rjdqxZSc!j(Rlm8wO+-WYfIPqNG~`6!eOn&9#}67sKS#;l&a$ zGAdMr#RZ!~zcl_EJhKq}pUJvHuo4uFnU!@q2LS3PNgm0;+2&F}bTEqTgOGA4xU7mT zSdy$G`*}0*f0aBB^IU;;D>WYZ-@D@CKr`u{CEHvu254@i*E5quU$c!6R2QGg5n<>p zO^2AaMZ~QnKC&{by2_xS_G8RED8g#CNAKlZ;LfB@ZqVqm=JdQwvA&J{ z{9$7Au~%f|V4Ck&2HI9`Cv#<**vyz+X9@fMWiO1|_foe|_c;Wh z7@BXcPmsW!n^O1w+GRNTMDPz^zWX-kQUJtF4HpJNS{xi%rpT{8BMYcYr@e`7c^AeE zQegG58&6DA%#E1wVOXv+zlWvQ|J6ocDR{qS8qi36CMaV>Ay`9G>nSjsHX6$;e&OIkeh1 zTkDdzOy$}$RaPLx+_${a>p)mvBkJ+a^?iT4SQ%w{IszZY%KwI}7^q8GiT*9asnaO~ zzxeWrJ{mv&;sHYMISgFw=xBOsj8FK^Rt&97;If)sdTfI5+3og@{#519XOG)^VO<1Y zy30U=Vm?~V3k-rq0;3!)_hS>2{*#-H?jWO9^W65`RbyPD+KDgr`=QaFFCKrvN2*D( z&E|N2CP96VNGhQk)l{$_*<$|AM%&)zP~uHtWlHReu3em)MA9rkqK{R%W7PbxL(_WK5ynv)LFT2(iBkQ8E$(D)1=4rpHw)Y)&QSc=Dpi!nA1;>`_{~$XH$H zMr&>H9#3#EPf^F1CSfyx`h@s0?3}2jHZ3{ij75~tO#X^@{b6`yx%wl*Wi)}l{`8GR zaK{&=wYPOCMfI9iFPQwnSyP_Cz`t`&j(odKnM{1J6G*t|@r?1LPZlh{BNk7!($rwp zERrOXHkhNrSjMN6ha%{^;xD@j4D?Zzg{6%ju5VMLQ3Psu+9*li>7jFlrCDC~u!3S4 zt!^CzD?vVe&~zPvYbY$#-YP_1H|p8CrGpP%*w-Qjn_|hto(&qVEw$pyN`z?O@dD6} z(o=KAPOF=Jld8_!C>G;ys#|KNZ)DH!wy@k))5(_N0SHr+Od>uMs4UaqPns5-(5&fv z53gXF_9z}%u%b-SN{yQTqxbQtR3};XL3DD;M6w3-;Xk*gpBpWWI?yJPlaqO2HD=Fo zR3^)mN|XJ17Q_SooC};-+N6oM`$+T>3>BHTUq=nKMmCaYt{%xgYGcaGbGM-NX0quV zs{v+wnXL0=o-R*j9qJK=Emsqx)5f#3Q zcm!thc-vARRz?>4o2XH8h+D^#;BhS-VsI9)*;t>l9r{OHl!&Mp+&vO-g;7=*qE}t& z?rKvD(K`yqJ1Az>l7ddJ-u;fMFS-Sbu z#T&vLS;+KXWfJg*QhspXXS=^7KTzdP(qwA3Xo@ep-OzkD*_HoFK;m-V<652c07Bcr z0mj6r-m`Ov&vOLV`CLLUT1A{K6~spQgBo2JlM>xjnEqdIxd7t!F zKb87VA7=Qv&?#$zy4nMj!p&L^#KS5V_eot`YODk6M-9^kMJaa1bLpmU7?7(nqOS7G z7H`U>M5g z9l5Gut^afo-^+WY4poVK z&fqA_ljRD(F6X#`AUQc+GGLy?e4m(gE;_!(nOFSHKgB90jW&OMUgBYSNBTyqBGX9& zrb&7xH=>=}R-|*KWXE7d+}6YMmUb)9aQ&Phtff5rB~C9}+}d*3P0Xue6{nI#CEo6F z*@K%gX82U=1Vn_c#le6GA8;=#rU;r#T@oj$ILGdcJ=cqBS}(t=?Is;VcEU=vK4sH(;|ujhxd+^1BPo?@n!iaC`d{HX>Sldz^cRPhC1IgvNOD~z@ z)EY=qH{T&8eD-g?W>}sf0I=vFBf<%9$t8~M?7kuU|0%)wpDon?xJECHs}H`}!`VTj z_YOW?tgJ4=(30NINOY&57E9SG{uy2y2W$|=@QQyj%Bh>rq1eOXw+*mym-GqM{HEdW4PsIMA>BT;$vNW ztZ0>>Sd;z~mQ%(P*{vPC*Yrlw#pg-26C*>LzC!g%ZMW}q@XqtdGRnJiXQ5jMLZ*J7 zTFSd$K;#l&_`FiyD^7q_m76s&Gw|b4JDy6k&GYQA{pr~cKs>7eBAkjz*lO%AUZGdJ zxt|1lszY5z%{x8Q-3_^xUQT3W2%{)Hf?g`~|cG zN)=W@t5krlvv}3&SxMXU!A#L2<&{9Oykj(0|2Z=EMNQMA?O3QNby(x%&R9!wo*}<) zmUX9h1v>8I3&>lc5G%y71iGJ+BhV;AQDZ%`TBJg+G_Rjdn9&zx>t+M0S56MccZomp zz)DsHdY2^_y2g5RK|dfcrblfM20I-!%N=0-K~@4$F0C}doU32}g68Ax%61+p6D3@FHK_>S>Ba?2ca>OIpO0g*dH01eg`$2c*|+IU7vH7)dSX1S8XS!I zfB+Mu^7M05i#VyZwPijKu`u26_}jy-QjQbxq-&{7aSB; zo@@XiI!u?07A2gcp<;J$AHey$^Yvd)I=;F?w=-3XtpUZ?DOT|g*-9}KrjoU6i^f^& zedrbZ$mzrrybl+Z1BKo(<3tH! zB9h31?Hy9CVY<%Xv9)cq7tO?+LaujRHeuQmD(ptXNfog%m~?@JPg2W)YhuAxR5F66 z!}SawDqY>{HWVS<==Ov7Kn<4b9Y&M(jJ0~M&>?>Ij(W*x+sK^CC#DV7WTtJx?r2mu zlh!4QAJyvMG{zeOhu2k@x7J%wb&1FpiKsm&ZA@X_?vTk!f!fZ*?hNg1`LK>t&~+A0 z{NtY=&_$S+^4Pm1NUMGF;<_V51+_(N1aIvK9;u;e$82`-SN^2=vm7eN)IGre}tz_AH(18os1PCKl~ zo)6k(9NKuQ1S&j~O6yXZ;6Jn8?wZKVUq?19AXgJ5@)0+#Yfu|jqboJWx}-##e$

    b#`}H4Z#;?c))&={v13c$je`^JN(fG93`d)q68EeaV-oHCrGKrc zWhNANy)qT{zoA@u+9h}DtiMOq2z_HTosg`WbfMj4hANllfT8|I9RG zH86qzMi0A2BAv#c(2=t_B-TxH{G>Ayd*y=l%z1w|%Ra9dR9qzrZKjjE5gEhk4|K`(U!69ClXk+4Ey-T;T=x5=xf|) zE~suLQq=c&ueCjY`8E9D5E2#TNod;J&V#nx zNMEO=Ci`y4v+DGcYR=a0*4@I(`k+Qu&KasXUflW9Ou_WZLGA>X{RC-$mj^$~dV0g# zT4(F)Jwnchz1djQeqkxUk#|c_(!dFJAWfm->%>Km#`TBLX zNd@G<99A_v4b*lppE4yp!CJgt8{}foDHAiCYZxz)Q%ZND_6$^()7t{4{zeV7_d|XO0%GpO%Y!LLD<|7H6U-vHLV6Q-Ec=NBZssODt5)jr2>{v`uO{5&48!x*9|=g$6udq8i;enxKk zM=JhHZQqQ_9w(kPY5Rs}()~XLRfex^>vIBe_X!`>eTg7hpk zl}$SEkLmf@@<>D~VAaJqcnaB@`^;b9jH53Yv$9gv0sNJBQp`=uT5C3CBvwxB>^|>a z5&nKnoKbX@c{*LXV2=W7LHC5~IgQsRIGT~t%Ydr;>x$MG*wlO2BMlzoBY|Oe<~tsS zNaUpudL}8%9!(hcBlvob+bhTZ?X%>jnt0+pJzNRy1T&dM@A2--A(A5o4DSAs^Z?Iy z>>esm97B^=9T%816Vt*(TMgk*(edYa%t<%or^5`a-46(w3g;$U!n+rhQeXSZ7jP{3 zeI06QlUp-Fp%bHcZbs7Zm7~SA zqifGZJ8TV zfD{*@Ztti;YyWp7MO8h=DhexIEBPO^y>(Pn|GxhZf*>soLx)I6cZ*7Q4KS26%t&{M zf`GKN4Basd-6^f$&?PP10s_+KxA~lN?mhS3bN~2#zw7(QUVDqK1+wp+;?H*W<|n~Z8pX(Yl&)K9KNj!EXXBu%c_ zH9PB!XMHap<4ak*G|bVL9jnkDg2D0#T&hF9l_$;aF# zsBw(f|An%PF2)OD4%mLClJnr~#)?wQWqq!}Sjuc^p69j|PqOJ(hxNIXqvI32RCh9g zJlMwJ-Hm;+eeH@p=Emsh}537sD)8{Z$tuyo&I$CZ5t> zueRRO^p;}62#ZM;A&n1w`jzNc48rdY7cz)hV%G{ys(>B4OHtOems7^^I#a`-SuvD< z@fiOOu-Y70`Mk}9P|d$a=CiO6q~QEu9qJ-L`x;BT?v}t;`+^57g{#QE0}oenq%&Y-Y8}8%8No zSkUldXdb9Xb5JDQ!!a&wAENh{KPgt19GpG>?pSGIUx-a(=y?P4)K-R-j)0n?x!O#} zPHqolye&7ZBf^MW^~A9;EjtRPq__%U#GkD6-ABkbvzRYTg=h-uUkqhUE|AWix%_As z-_cd@RU}I;49W#aM?iO$AsYG)pQQ)1skS>Ih3?+m6SfK~9(19YrbCXc ziHqjgnruI$N)#=o+P{?nX^{hKFwpV+pVJ$1ul|13W%Vh!73zg8yJro9%#juo%mBgTe1Ks#^#u%il z*E7*G!PMJCp8+bv20AknYT+bbp{74dF#IQa^hw456X-q#PzEUYjS^KzSD#_z`6lU! zN)P>+7D(_#%WNvyACaFk#aa~BMr3{^W!n-v7=V>3n|B)J1;~8P{tgTDvKO{1qdS^94+)#xIB95fPGxzd_!aRw)I`4 zMJ#&Pt-S3~-NsQXo!)Oq{CI)$cEFIlzZv4FV_IRMp`X#0P0%E(@Mvz8^e&v=>h=eg zETrF1BFa%?*EbVqdoeq$i=jW=*x-(GTIkTOHn4L^hw5!|>~Wi8xK8nCw1HGEd%J$@ ztlo#I)d_0Ar}VD|$3I`||JQd-IK*D4o;B((?8LjADTH^dQr41oPvG>auuc-aJ^GQl zYmr%be6{l9;71j;Ig4$>>&Vq_!G!7l3p0xPNI>Nh|h)9YP^UiKVl%4)E+iOOq2#)E&0 zZ8p~>E|m|6>rTff<+>w-e-#S@+_opY%%U#5zfw~%E<)uV{xk`gDtx$Fvl1Vo>`}0_OL4hKvawD;{Uqv{)VmUrUuJ64m#oC#lfMl z*?yQwFsblcQ~c%7Kt{3}58&_T;5k%v zb2Yk?p3TazOo6sP2E=GLwg%=O^ca$}-4I!az6Bu0O1j)a>E^Rv{~WRlzi; zgR5rzMuiaF)r{GusU|Zw6C!@kZy<&=K!*Aawu<2X8OeO@mVwxIh(3w9Om~QbL>1;^ zSnp{kNe%hXj6;!6j0t{IsmC>KLUeBPA_?g8kkNEYhCBOZ81(9Eg}|c{2jo{bO}D3Z z8uEPRZ^WQggH-zB2aONpg`EnZQ4W6PKCW83USNr(%qKB7TtXxq4~-j}q+_f!YF-Uc zmtYmLDy9gVq1w}+ZpMPW0f9${d)+hY(q&R}Fxv8v%#Qvhv#^emrp|^*ZtI3t`4nn0 z1PlH;=$M!0f_6u@{_r!BJJC(g%}VyCW{Rr&bhnlG?YBc05ACx(dFAcD&oXsFZN<qlq;I#_YIUsl3?9290qpm`XO;cP30K z$k(#$%`b|>*^G3DxbN6G!rSMN#&9VEk_X+xe=7PV4H>LPrxYBWe95bDg9zhl*`Zlf z6T^#F=vFB@9v z{dOXbhmYlhhaBKK2hW;QT_DvE<^m zR?%^Ca`!DlmWjG%Ugh|>)CadaH19b6%xshHH(1#;?fN%17j#a}c~DHR4K}Z>}A`fr1gk2iFWOq(Y%v?wHVqN z6MzXaE%P6R6PU=j-EatgPz0fD@|#(oV1FIZfPMN9su%&dWW?uzhI3nY)F?LPVME3gw{Mbh*+k-(z@jO#M8J1g?dPtfze5C#DX zy0MSQJtC4_@Y*e@9%0jU&2LlOmW0~LO&@5|;_950ux4n(itQXnuB>TyGq50ZS8VtF zi7kCdh*_?~+Vv#5^S+M$;aE`U8{>=g9=~`zu1B<|Mr5TZ)j|b-gddF}d1T@A-uKJh zy;qav{dP6U*rmFWBbjsU#f?Htt9>rpC3Rt z*ilONk@hbG_H;OU4wzNZe$iCpkvO^ZcV-`%DSA;mLd5)1*=A9&S7-!nDV2@%qarLo z#93cpxIWJNIWS=@y74I6WZJelAC+%TWlgO>6W=N@C5domu^tn#a{Z)ewPX4=&6^?e z^kspm0CEAtgM>7Ac^{B@Bgcpqy^TG^GR7xU!8Jb?gh*LfBVF{v2wtM({A00Fg%$wp zOCZ{WyMn_=x}-R7YYdIhj~y+O2(cE|c`s@^!O${K#a(jKG{) z?TZalO-xP}eU(mF?US&^Zr@3GVRNx+$joa3lSFuLz}sH~_N3 zXRF7?Q$V^La5m_|kn`<7|PQzl&x7s=+xhUJ;-~fC3jW7?f_3UwDbZ zO01(;ZELpL9E-%C+gJoYTA6Y7eO-?1bGu4O@nur?P*8?8*s_r*-ooiw|7pEyE@vfW zwZNCD(USX%`|UZySFobvHF1<%3B7K;rrg5B-FP*&5+&|}lSN`=#ffBtX@tz_+=H0~ z9c6LWd%yDk)=PTujy25pwac+MnC_AAl*3!@FG|03>LD6z264peWZ0IEo$`iu zurAC$uU2J-ioEPJBD3qP+%WB{gJVZNRxbiLSK&|O=Du7#hOM`%?nP0*s!|$Mbn0)p zecBJ(QkbYUHsQFm`*^Um6w@GeHLD1N>>Vq1EXV~G@n7q`D%!{SZt5w-7D0*Z=MyP}oQ&42MS zH>e9Q{0xO&IM~n0xV9c`97YJ%LTZz*3*Uc{sUJ3}J5hnGNw)U|8hIBQLA8llq4TYg zD>rgSgE&*`4Q85RZ) zsVK3_afTa502sZ08|dlwP*4ZB zUrYK>e$ArzR?NVtuF!$x@b}+0DSO|nmgmw-p=>)Jv}39iyG!mors1_5%BT~?&ECm+ ziuOckOjYHhkR0+CkwCDdDnZ9oz^k}?tzD>hW$1nBOaCcX zMroj&kxW=MB2a)no;;fTy72_4=>0wdGE2$GdxQ%dcmzGPxXc0BLrumk41J(}&AOkI zWB}ePhMGF)F;tX~A>n1*OO$CGg!{de%Ehn9USM{IR8h6H-H|_x&6?MJZzv=xFfVGJ z9Ltqgb^Ny0`90l&sFK*+u3%gb`4&^@4j0E)OQLEd3q+~g$G&!!@%U8z!{jq+#TSF3 zxZ`p9N7IN<I#qDnKi0R)Kw$SyP)?NP!W5R#a+FeQA38UzAa|oAXtwCQ z79+5N*;#L|eBGDI1;L>YDXl!@$$QembDTYxX9yLXe_2Ew#+=<-5iokJO!IhqP*F>P zvv;pTD3OZjyF zL)cT3q1}vcekMR0WmW^&nd=iFS`@4VnnYS*g;-G!qtK6aSwDE+x4m~r#<&+Ot(Rnu zPJbD-6B0qj49aGR-Ap{B9di5TU$k@9vS8`R(FSv{7io_h?uyLSJ?PP8GN+1l@1lP< zMU&2jBHR~StfEE4u1(h{4!UvWj@KupFj1PCtRkg7GMyb# zofxz8IZoM{Wr=;fe)lx?bHu|j234>JznpF&b|tK@q=r1-^sQJm8)+zT)gAqceB+6d zasaJ{$8_j_y4{eDwO`hIJrS}Qi>Tg;;E|jvslbg#z458-`Xj@TfqLZdhGA1#&l)XI z-JSEI2(kfhk-&3Q9*u*yNK2Y~aHUq@JYhUTxSAxhV3jIumA(*IIF}aewFnMgZE2M@ zWyRp(>Ou-DDliCpN;rQsQhKHW(>|bjTR&V=!w<$J-ZL91_i_IvkXwNP9{r&#`G}>1(*|!h&Wa#1Iyr4fTQlWp z=wK7$1Q%)3|MJ4VCezlPpBwUIo1M&B&wA$%f3O1`f_PQ>TQE`__A;!nFy4_bZ)b79 zCkF%;31p5=$V3O1^@Y2rb0)%OUAg=D%u93+jK)!{<7spemTu}SSw-~1p7m`b#i!06 zt4zxv7hzQ04QS2L0pSZLuBP~Nw7OmANYIXL#O04Bf%pS+_MIiB_K6PpAOW83g~(G` zyo+5`QE*lJwN!Q=X3RrWf74e@`S0NBlKhgp-o2aOC_u++*fof#F))8XkL=~QeIObfK z{Q)I@yj?-%N#1)A@)MbP(%Sujf8BAbw`IFV*Ik*o{|c#UIv1? zTP4B%bZeI2Hc*6)rhe|>Pr;1>SS4J>Kdp0MhdOQBkZJ4uRh4p!>$N`AQkHU6C36;v0&zSWK*OE=K^RBBHUDIcmRGAT zBI6)$fiakXlSz7%$i-JF&e`24)gWO>%{sXTDqfu6i=V)6D~(drWA7gR37N@kNrvHziR?x}5A39i=>x@52(u`392e7y-occVh z-l60?bxu>d%N$^AOpr2mloLcD2_MQ!NVNSF99aVt>cK$C^Pi;3`{yM53|y7z@%>Mw ztxbTihx(3XN1dycRGb}=X!IQJncLZa zV*yMXVOcrDPr_o-K&KMqP5LSqz_H;^glM~&DEH_cFAPx+O7gA&t@;ps4#QL$c=hfK zF5k5YFoM>G0-)|R&{H~U9IA50)0HXLQdS^_XJ%$~20FRhl~oVCO2p@SyF37iM#CFo zFV+&buc5jtYHQ=iW?U_fJ@@%Kx3vv3oU!jV^yvt%>{?wWT0T%s7C8~s=3F7_ub>lD znPg#`+Z0uxLN_urh^r|7^tU0JmW!Hb4a(9^px1Jke}*-X2R=v z@V}8}|8#G>oJ{cX>OT}1t<%X5qyh_c>7-P7Nie19$0i!cKpA6m#toWwWeMLD+gdrv zNw10Ba((K&fH6z@lGMB(6{~PqfpUY3ZKV36>-^~bm5pcKl1@3Artbe@q#L!Z-fV;~ z4x&i=dullthMNmDTo&o#OL1;^)`hg?ZU1j)*yvBlKIg+xaP{l{PVkzF)?7k7xR7l?#{oU^MUR!nPcw``jO^y-qW6LtposO24o& zZ3H7fXJkp1(#37*Wkw|Ff^C*bwu$o0lQ8Q@+-c6fmaCld5-k~DRI1(ePEvz^Vjr?T z%`SA6NXc|BG*@=;rdHNk31)|Of5;l~&;@dERs1n|KnV%N*9YSvd+I1|Gl1&Ko}_}!jde~NJk)0PAjo8iAl~1vbj%!(dNg6Yu|(o@B215 zcVU-ZN2UPYnEo$#>;4FQ@x^opY@LvfEC5X|hR*A)qooMvz`}IT>ie^Kzf&uC`O|_u598?;F!aW0AB)@2>0N=grD)a^ z8iun=*i*1B>Df-DU0--l(T+!jY=xufeW*f0bhuXAN&D_FVh)TUqk_T+f)SE{K50J# zcn0FJ9Hu8$49WuVH=)#dLtpQO*YJW5Mk}nAK&)|&BPWQgo?4^|n60Q)JI0}rbG@8N zRTRfY+8dkK5dYRMrS)_fOBrY~ggG!$yIxK&7;p%jk*~JAZ32qt<>^)e!Ct0@;I-d~ z8oN{jB6hlZRDwov^b8lm$CXXz1;7U=ODGv48m@b*JX2kiZv0unEoAfv<=%}PejGCU z-b8pRV>%%zUg=b({uFf=N7tR5DqcZqe&lAtVnOKJ^&moC)oQZG>YyNwIw8tv)dpX46M^>+OK_wklk?ya5vO)*gi*^(t7R^*Wne4>qk~|(DbU`s^_aja% zoiI*0%wWk#6?TlA@c?yq>sQ_kogum4U74_U-tOhcPIX6E=^iz`O589P_cL5K{;QeD ziB-6gH4zQ@Yqv)^8;H>8#p&p)d5vSXkkzJMQL)-~mczzD_kB%>>B|?*4Z2B`UIV%P zhD0Tm>2<#-Q8=&KH2DqkEAhFeq_~fn@2HXn1eWKbF-RFQ6@1I0;Zo6H9NAS~_^tYH zXLkptKp6!a^LD&529nY z7BU<~MUt}-xaTveso+z8BoN$Q(VEv&h}<`1GBpf@MISTtmjV~j;^`)HvH zFW!sfe+2)Q!fsc8Sl38`8G!@z%&-tEfiR^OVof`y=&UDtPh593<@7dN)dg6bq26i= z^qQI$hCU1Cez*Wp{NJvR=!}86xvkrp4D)qV>3a&% z=2Z66)vH7ssjM2FY%Eui%OKw-^3^wX&&zkOUBs1^)>E%lH{Ojj00P&nSjlXa-ZH1b zul+cv-|a0pz&tel?*pFy3bG<3kvO%|<(?qS7dA`D>>c+{rP$FlJ*Y&J4IRrnLXuMP@oT8C!QRNYU zu|r8FT517o)#u}3o1gDZSO~PS3b8WBMA(2wtq>K^=Vs*)-CDp#Agm}&Up4ZLM{9Cvy4AVI+M}^4#O&qeHt$f&*25D@$Z!VUJ!NcAh zeb67URFN%_mPC&IST|Y7q9y6ruI155Y_%5;)Es|*D>*~{Nwe(lp~E{x+2LmCmp`XY z3FQmIv?K)%gqH!4nrzG(ORxbU&i z)gnE$_s?66Z;>bmMwZ)*Y4`r)jQeFQbCo{3g55~7;Z16s{n+v#&To?eM2=p)Z5(WY zRWNFsW4~^5-wFJ0$fu-Rb6iuxvSFVtKXkLcv#Jo_O6fde%YSpx*!SfW1FN|>7(t(U zDzUR>KZ0!6&^<0d;-OfyCPuFGGscJvqTdDa>v6%g9eyC_R8&-U7F2+xssE|q_=mmX z|FVyZv7Nu8s)TvpV+RJ&k(l>XUI03HAL`?3=PF@ct|1-2X)P z*FDiKMCjfhWBgvEOAiX8rv9alLK~$3RxZv8{@Sa5c*_ND8n1ZS>lPmNaxB!@WVWaL zg(rb{!}m_X9H~9sV6PTY z1@h|EO3WX74bI4mpj+GV3FBB_I;9G=z|>x?%Ol6gGes2WOlGw{KztQ%k>pJ0g&Y_I zThh=EWFT&bl`SO{sQqP#?9<@bU~~l`ZhSCDE8+)WDj~@LayTg6VX~amcRS*du`-kN zgh|H?b-9x&a?%P^b&*XpBRQ)}+Gga)%d9^|mJmpZ5D3gQ7m|0GxI-G?iMb5I?vZB_ zYVyKt(Z$ND?xUxuz@(CAT(uLP8v!^o!LgR6$T($u%e-_&5&H@ZtQ|$ts2inQRM+P7>{Xv6vr|{TIPUCejbW@m z&x+$NWo-%lrg>NIyUFKU4zE7-fW4^m&Fco@IY7^sM61Qr#&ncNHw_(otgt%LR^NeNby=gnKq-kIA#6Wk$h2ijH=!;A#~ zagd4)>!&1bd5nKfKkx4p#SN|SVT)%Z0umX)1O|mU>TKo118T=1Le)`UbmV29jb%Iz zgv|tq9t-SJ<%a<#H3w;H!{%-IbbSG9;Qcci1T{t%7muV}h+LlmR#x3&+SzxJE76Zu z*JjBcQT%t0dn%hMybX`m-Ndgwn`7m=M;;GsnThB6peSDP3K}hh^p?03@0m5{-l&?h zNd~&H!m(CN6~7KNZB_`_MSc8I;b_2h*kCJFz1u>A9U6mb+H#BjB)w;>di;h`%;+O{ z+uhXI0Sqs!Y9DjbA4`>#!(@Q23p*3Y357Z_!6e_0zoG>#YF2N|^tk;EjoeSTdh~09 zUoxVPxx8Ab&`8q-HY}xl6g<8zbtQ$w56|Yf#Jr}TVolgHqe=ZURy)5HkwjA9zgFl0 z(TsLHOnMfba|><%VgI$@SWIz5!NANoVC?r@?au>6xn@3d;}-e>TH>?v@|kH$krvzL zH&#uN9Aja8J*)k5`~ZBasqXuI|GW-oOAokN+cK@9Ni=oU8iQ5S zQrMGHtiF)fdkR6MD}Qj$3J(!2br#nPMVF~pdP!FE^5jl%qheCl;P}oN$$^yVnyP+*@sBqak>8RkmTi760NCxdR^wwpv{(Q z>ujfGYjIsDJ6ye$dC2BqEp96=Y|JZ&ef`5Y??&lI+HAG>(*%b)Z5^k7HyQsQU&~F? zkYi4WM9Xw4pwm!n*GLVyNF`TE$ov5m;}I?~V`W-jPQ}ZieqZ-S;m}tSrZMkapF>f` z17*&Zj~r6EIq7ATES68}MS>M^9s6ZO4*l)s?T3Y@6n^_S~fj%#U2 zp&iu^6_@OXgH$HNO-DV6f4B5*MT-u?zFBoNMZXqj8J#Ma?7>&XZSV)0@_)r{!mI&= zOt^(l>(69X9sb~#xLcl@;a;L@hI3_E2b9=XGrW!^{RKjzI`e${G?7cS#|rh%F^PR1 zAsMpNH|`LLDtKM;H?2}^pH|wX(xb`#zoBireHEOOzpF=?Ur6d#ulH>d>20=$Ef0W) zaiLyBICm$(LpKNwnogqKFH}6a_&&IXTyGU>ef&u06`X1HeF7l)Thxwr@2j8jgx?l2 z=kAy*E?>NuI|`gi3i5ncp{aM_2;;JGoFmd@0P=&acR>~lJ7K{76c@dyYM<9tYR^!* zn@pcasgvx4d)9aO~p>qo2DkJv_VH#rMCraHs$jSgeF9;eS1- z{aVfw^BvrSZ=l!0;dPlNAB_w?Ec_oxd;y`j=Mx>As4oj1*EB^%S9p#x00T-Etg87aq#kH0pleMiN*lH;vWfa63Il zaM6-3fCH8Dy#Ip;^v~S-pZCW)9))?I_n(lnYDu9&Y5gWQg&NIV#)CL97bEAX@UyVn znPieGHa;h+=ioS2*wkg(h7Pu51asBYOdgzl)n}b2-#w-Nd6#w8YnhQCVo$)tj>YQta?IZi0&gJgvw5iX~PyF_~A7goSiil3bh4E6Ie|b6xb=hu2g6>af(=9{ddr>6rq7t6+bZl{iZ0){hTIncAjRCff{66{W2kbOWt&$NaEe=IFA)9!$^) z1N{xZ^>V5GaY9>aghCLpX+wGi;(ZE3rpNS5sl+=a@zNxt5ruj+p-R$qTZNcGiBG^D z@#{#97ba~jbr(oOd>&4v6-l* zSxGS&uViS9^3y8v9ExRi1~F3231^#vlshi_?-X2h^dQ}-j;!R*z16H4iE?9zWlQ6z zQYUL}77~BL?%cdc8!qn00RBD4(lQ}a$sU~@pupcF)E@lH^>D-tR&=zU3T|#ru%d(C zuH4eh>f_Og>&P~kWqu-j@dp~BJ-OcD^6t@!8Hw=rLo9Mx|3mJU+R;-6TJFNb1DRu_ zHTNIG8{~xn0^qYhs~1u=b$b}`*$Rct9t65H;m2k{Iy!W)woe?zz8dvb+&U>r8!$i{ zzn!0`l__c-ef5d@^pYhDo54K{(*Or?AwgZt`$j$U>u$M>4lL!UIJSb@mZ)%%jB(?@ zRvdg~fY`|r7zCytPM+3Fgg zy3%haGbWXtFRMBygq(@z-?RpEbWsuX|2!4mpl7>K_P0g37VtNRByOy2GOU4Dr-h}l zw!XE;K~g_?L&!D{;k-seYv?gzB;Z;-ph*@Teb`6 z$Z)UhAV=rntJmtOxT0qyeeZgXE7<^9Tf3FgqHy+=V-xit(Ptu8!@;DKxvV=PiCpu= z(!-%zsjHMsR%g;APtGqZ!4kS$EIMg z=dd5xw@0%5AMA7jTDWIxz7d8yulI$ux&H3_6No_1Xic$7&}0jbFK`=Hw)AEDl$D`1 zyECydwL1$y@q&R|@xQz?_wUa`WFTkPD@T7XerE*g$`92Z#VuBrXG2*gfaQQP=>J4?gf7RD zTT0Y_E`0Yw`P1ZyL%^4&r1rVc1Rmwu$x$d~A80W#}qeHE~p^;>Oe&-IT zz`4@$u4B9FVr(Olg+}zl`>uqyC|!iGZ>tBk3?7EXloFiJX!D;g5bc<0(<2zslp@!b z$`!q#->IBJ!#%~2DNKI^Jq%tpPQ7KATN3kbRG=?uRjv@#yRfBjKDAa49$lrkQBD`L z7ML&h*xl4fAP!ggdd@EGHol+FsN)~5te(Z?0wx0 zNLDXs!i)c;tx_}2taB2~yT5|g?RFe}50ggElp zQ)w&MufD@&?;|rrvy9f3=K``@TCInR64(1~H8o+8+VzuHdM8ff&iT!C0sR{57Dma4 zq9OdFbeeZ)R!QzRPsgKXQ~cQnn6Mj`G)R`^WQ=`9E1g>*wx5I zJaF?-e?#TSpi7S!K3Dm1WBAIH$NDiv5+#gaf{`}ZKJdHcS2KR$X7zul)9xfPu~ckG;F^Gh<1#FT5l zp36)Pj42}`wROOD?S`f=OD(8VxC*-zuz&dxLmIUp7r~P|66+S${mj|4aVp2A7`=}6 z$McJ|R3QWj7{8hRhK74~OQT;uWudA%V9p^G{7*ShA@f;s>LrD!OH!-gWM*X} zrK|&%kzRfVA3L_WuV&)=T=b4$;0YZdgdZFc^G-Dpz~V%3UtKn{IY%26IkAiF4ggB5VP3j5~YX> z!j6e$7V%SditbTXl~WCDuz#;7Dbvp5VWN1JE3@~t20Bep1fG8a8US|xS zX{e1HeAwE)>l@2+a8_zjAFkX;DeB`eYr}l{M>yHr`^iGTG7jtMdCu^m(~!lV#*?LQ zDPr2)CEE}6@)Cmo4sm-vkYB@R!%93Fxjb>B@9u;kAG|!qSU8adZ8_Krma34G7gYGC zez;>?_`!*%8t?8TbJiB~8~wm6#-j4Vzt1No17b!mB968-*P$9_#P~@{W3VR|n|#vY zEe}_NxVNFmGj%6AS%JT^bF<@U^|ml;yMof^GXX!&U0n>m+V(8FA2B!p0G zglhOQ7N^Kgf&k^#x(MwBD8=V~oXeTZ8Gi@Y+>1O?k!-%O6&GDbz+-1jS$c$NG?Q(S z()nrQ*Q0A$Vsi)GOM^$pEm<$EL5Ci3G<{+?{JPnG^D_b5_$x()P&yY^DJy&~RDB%g zF318FBmVvTQVcEN3pi3I7NKXw{&TMb5|yB6iu4ifS$d|+*VjH2G-Ozvct*GPO-gr# zPPa$LnbV0oj@f>4B`}c7S@W2C@k1-?vqB%Hriv}q<0MhQCqShlrVHGK6;3tsEnNo@ z{iWUxML2S5H!@qyELf$lqr8G{wpV_E@%)%fT_me}d_DT6i4!o7k!d|bEr22$F^>0yM9nTs4cj^aM1O?d5Y@vWZSXnx-j4I#3T2C&;>K&J# zohiw{*XR&$=9}*lCDNsZfoi)N(~*nu&{S>6%iCVGS8{{McRzD6L6DzYl|q|$^~-yWDa-MccdPLkc8u`K8(HOCAP%90u;Sw|LX z=ZmU5+YXrs!Tq8dp_@;u|MBdpc^f)HpHi1Y8)jt<;*9qDpgzM0;AGRx4_mVPk;>B1 z8IVQN2M#X*37Q}{jipB?M2)Ntu+YU&a7fD$Mz_?OY%b|4L_MfFa+sn5hKW2}BwRHa z!SaTYS3bvKU+L@B01aCqTW~*omwg2%4|}N+Vt)BlWJc!&YLd&<kO%sVGG!1a@? zz`w-H91JW;jGiip3`r8P%ig^so~m;Y8F6G2j1Cq4IQX@fk1-^eNZb5**IIf+s%>FW zms@zS-U?8$#0C<5kzpaE26cPgvAhp4ndmMqH=4p%om0BJOKG>$yI}FNayXS%z}s$S zlHg-_FT4fs46BbJ)PaY7I9geAXPSE()@-Apy+}t~O8w@0Bzs=%f9b=#wJ+!+dk5j* za0eK3g7Qp;{J`nPN0JJ-u3-qdD$DaxlIiGdzQaXlT&K53(P{}o$<-mf`7*rB8_IW2 zD&oGpWiu5y*ynu$DC1%HDT4C4;9Qpq-JQ$npX}i=X)V)ErdmTO_hg6u^NF~!#9dK3l~A)gmI78 zq9oA@82F=85yelB+Q;GmA?ANC-~aA(_k^45iwcLsf3CbDQAB2m>aJwX{+4bEzUHom z9$Hg<>_z1xxi|c)s_F{go>gudz5cYy5pmtTAGqhWi9L}gl3K!3_bm*AI5TGkHK$Q4 zlPXGW|M_NH6Z>yym1a{b%b=boW%Fj8*_P`B-`&O-ULF_QV#U~jndw?~IDZ>=`8KtWaT+7u;4PQZ zHz5hCbQzUwHeY!j2WlfK!~-f9xdN2Y0w0NTwPS3Sty`F#Ud=?CZZQpPil+KRNusp! z$$eFfeO8gEF+=Tw_qIMS!B21q5tj4>MF0|uBffwF3N|F!pxUdT!UMg#pIv%XIq*+F&@}K6Y&w~ZTvK%n&3#!G?z;jW7Bxu8!jRn@c)+iBhh{DG{ zVv@zG%j}wK+&*8BBF}ot(*%2g>Ehx|8Q=BhWZ)1Lq)mW=IP67K=7I5?7W%(j57Sk@ z?Qa@cc!9B{KzpZ^)VvunZXle=o7z{v+?`m#H&>Ess%N6CeLaxnCoqq$9UybvRccHr zfBt(-{IztSm-Y{bmW2m@6kD_m?VxLCx!8^dpGDK<=PVO;Ui z0@=xNO^E1nU#bke`hw=v)i~{A$`43Sv@!Gf&$f5eV=$Db^P}B4YJq-&zNU2vj4yvG z^~c^a_qjzmRvPETG*Pm<74J&E^&C^qpI_=Z&t&`g(pn+Ea|TMvcU216T0ZUc9mZ_`S_xY1`h&n@ZW^p&nQJa{`?~!W z%yNv-H`f)F^RQDRbZ|H1-xVwpaFgC$@GHxrd-MmZPM`UECN+zi&XoNx#>D*SD^LcX zG$C}NqaRpblSu;E3)Pv#yQ>heIXJvqnanLsYAy=3_*wc=&$kf8Zvb7JLi*eR-GGk6K9Dm11tZ4T zM$$Q}CaO#pHoCYVPqHDyg%%IVbVm8>bm08*y-&!R^2tmrwc!vIG(bX>^RVFW7@LQ$ z5%9p@Mw(4AV~vCzd4Oey;dXFGraSo=LNsZ>t+CM0`gs24=ZWl(vs z_q_3#FpA-$P}4x#I~(oO&9-;JI6wnWegX~$vZa695dqp5y6EgVV}HpM|B?%sP5^4= zq4%uZT|bjfEw-V_WEjfZBd$kJV~NqCoBc%?rJlK2UHKd23#a}_THcASnHv;1CX}O} zItk5OKNrQ5BGjMU+B0ikasDWv;8iS*-|*eXVz>ATtP`cN{ri{-hCoKW6}bp>M!vXe z2+L(dOM8t`dR|Ehr*_=1FMLr^j7c2KwR;xHtwLP3Jx;K0lPB97NYw7K#B-#c9mTzL z^6g7Lq0)=mg;a=NuuBl({n0&fe#ON7K+ja=ce z+jl?q92#ZQ=-Qf;b8TAHY~5LK#*E93mN2piaOPLO}IxHjmcx>{!2jl*WmJClpUG*R3qlol4)kuQz^jy;WQ@#C2tB} zqEFe=tcM{=(;U&h#B@gOn2Ltoym91_LP>1TD=97FF(e~~&(w9)UudDtOE>MRyiokv-x+!>X%nlLC=Ump6)h7XT!P8e>l9*S6PzqBTV=?GW)Jn?u4FwtycA=c zkebrs4=Tn|6U8lziNi12FYefn0%dyz=lOavfOZiK#oNpG@r<23n~H>}tuw}Wrh~S8 zcw+mIxFy|t?L@e1LC(K$fvUp7XHnx3bJU=ObSxYi#w%evrQpE(Z3=Mc@mkJ5!$Hi~;*R6MadBDRMzR?&JN?#8Hx5X|I7efO3`p^GA-rhPc zjyBsG#exM12@o8Dd(hyX#)+G!BhB1cF;|cMTElqnkNQzGKcKs+p8f2-_S$Qq{UGT8G}=9_%}}J1`2@h<$sA#k}E}%hrLESH4}ON%CwgT+lV0j~Ie>R47rV z%1MqvAnYFBGx}9zchYdXZ}o;7Hbh)veddOY<98DXp`Iw+pdw`U+0&j-DNHDob7kL3 zONlffb8L$)LBpGTNrK*3B^QEp-2RAB_xo=OYU_jbmUe#T3b=0u8Oyy*;s; z2wB5{2kI50BRws8HY`YP>e}(RHnvAimoG)}yu@Qc1X81RynK__ut}KqaUvI(Y{uFgw zaZ||w&W{8~?jh6n>S|R_9m{5O+Fqlb!CxM_RXD(H*j9h41}lAd|EWMU!J%-7<%|Bn zmIsVr0u;X{p>VY=o4 zR^|R(XCg9HnlA@$(M;4h`_}vqJTn5ky`1cwGi3?A{d#*g>^Iv%q zyQ9DDnJ$3d!!uqHu|r?OwmT=UOtLkC(32$bljRe$TBxxEFmIX{upbj;%O>3|G{Myo zl;A9LQP?661FK$G)VZW(r*4ln05dD?sMS0_1uWE^T)zleY{cIheu^HJY!BPRlmF>3nnRD)8K4|K4f) z{ro|8*!b9KhikWva_^HQQ$~8Q8pOQO@YA=K(@$w->~aZB1w_AOPMpzrw9}BXjR#4L zWfa@`LaB*R2dn`n%Ab4BOSuIdoxM-4*zb{@$bj^yqk30UB4>0FrUX?qmHf*}>+>GZ zbla%NRE}Hd_$|v3&cPJNv(%;e2uotz!JN5f#))$MA$uwhb90jgGEF9TeyFjDh)IrU zO~u5i7(NxJJXKQ<;{pe7Mwy4PzWB(p9;{O)*Ux*v@FC2jxhmThA=s!%kc=zk%mK$+ zx~ckQ)c&+u6%{TAWtvQ@=Tt?8a!APgw)*~KEuYcey$l@7K<{hCR#)S1117;p^+`70 zw>T9eqViGrh~RlEcRfe6MmA$*NJx!;dcIr+zAWre!|A3P*FP1~Y*>_y&fcXdjlPBY!3l*-Vx)!xsapJ4+6qB&)L?I9~IZ<1?8Ciw~x>J$P z_@bW{W>p&?O&;WTEWFU-5b~N9;2BflR-k!2=qy(_KQSq0&n8N685^e^r!2QIrUs(< zhw2A-T>d82_@6rW?Ck|Al5N{T-H4-%mU>T;!W5>wkyQ1C>1b{Bjx36m$zJ$Me2$+F zwo8ImSh2Kngw7O8@jYENl_gPbBVv=>|D4yEP1k(2&FM-jwxsc+e4rlbS~7j*`V_St z8aV%iz)h&$92r_TWDR>-#SQqZ0HTbj_-zu~)?GS;v@nzj?=aN~%+9PLP)wK~M?SI= zCx234aoH3xT8+%Pp3&9T=fsy7lLM5Y1`TbJZ^ImvMP5Xu@N04{P zYVY3OEy~7=co2MZvm+j4RVFhFTxuLfvCUDL)Kh8r10fm;U*xBW@)&Xio%*OK%g^OR zPz6(+k%1wgb#lDZG*ijqn~$OvG%%MMY@HdKMSb7~Nc}w&1GxTu)U^bt>3~r+z-j|d z@ElZHpro)E^L%NeADBBYKU<}UNRRfu4>bww&yZi=gG##Nn8id_)uFkITc6OYDV{%P zA77&kiohv)zA7#u0@Nl)Z0bt&V-6eD4U&~KcxMzfGd3g3l*`7TOd!V~u|x zkb1Z+cX?9pd71_~7CkH=JKYM&%NMrzz6o@?mBUi;)~U5M9#We5o@pKd~pejVoB+hA!Unt_$Hlo`nVH;VZViaX!@i+5X-390rqS zqg0v5eo6>-EbDMv{u<{){EbNkm!%Y<;hiz&2WrgGzCg z)3hg|c??D}$F@=cbKw-6A^s$9jhRAbrh2j>AXkYaDxaz-8gIAr_5inGk2B$ zRd$Fp3NjjZ{nq*cw~6SNVw=1?U{d#7(QD@+=Pai4fhVH6t!G?s_SlGBtup@|&91G1 zIygd-m9?^V?;>>lO^Nz63{@@s)3@Y4?Cdbc7r)hocYyooz(7;nMv{d&tlmI87*RF!MD`)%Xl8oRVH+TChGx7C0bA$ee<5g zQBk{dmF_TIi|1}L@Y=G!MhqMs2H8WW{${JQi1{?ZfWE zELqUt%X}+Cjj+L})r2S|%Y$m`)1B&Rk*E1d-NGYs$iO@d%~THW_{X*SX!C7ypB|bW zojO5fuJiB2zKxz?!A;}|d-=JOALA92J>~%OND1;tuGo=ZdE~Da-#=Mh0&Tzl;A@$& zBeB4$)DAoLX#E~S@ouvB?Bi1k(_o6pWRPxZ(qJ-r%jgJ@Ip4m}09^RKMX4n?cFZ*} zs}2HA1GeirrGqdDk*F^bc>05ak%J;+<)>yTErbmta+GV>P?8F-kNpuz-Mywv?v(N{ z!a@gj)cyRWlAqa>Kj7cAa+^Ln^NwstFavU|F1pkZ6Y{ZC!E)@VPWO_zIy0^w(VjmL zAXIb9(VnX!sL=`^pLC^TbNP`REXt=wc@V={U9A^#kT6s63^D@G)N`TIbEe+!qq@=Z za6L=c(=e)A^oL0h9ry-=WC)xm^+UJ6J13}tBusv*ypX`7zpgaZ<0OE}$q38ML@McU z9et@TCSM9dvi+uzyM!&tZN`bD2_EI9sNX*WHt_vsf;BmwPwQrG%k{pAiH$zcz8ts6 zj>2dD0HN)5ZL&h)mnwz7GR8GaSrO9eBP~efy3M-(kYl~#`f1)X>x&m1$zt_-=WB8Kd^0(1_2TH z7aa8G*ML7;`p9HQkgWIi>nF6`>m#0;RPyCC1zTyXL-btMsAW$S$6m+3XDOi`Yf8_!hCTVXy%v3lM zpDJp7g%yAU=rty_xc7+RJa&!O9LXVdX_Un`j?RSB#PLPWlFJ%9O6+3m?2N!MD;ghx zw>~MP;1x^x=kUxq^0Ybf=d-vdW|EOSFm1CViPa;}<`w3p;d}fBk3p$Kj8cA}-apHZ zLdHxNu|h?NRx$z+|A4=*>x$?!(R6J#OMnbsDzWsj(Wdym>i@fZ#{HVSH)&&Xu)^yW zOjj`x|0HJ+Zel`r))tA1<}#xdmE%KRA~t)@fG#%0zuR*Qh;fbDO!cT#(9oLdKmt_q zplB`JMEPnbB8|_gft<||h`@iPSN{GLv2CqU497O*eWQY_!wbqa$OfV|;h{+90KOS8 z39Yq1v6nsT6NgG^>-3)3(|;!gs-*0BTdAMaA*R}kmRXdu~|7> zddwRNgMPB-)drRJ5n;{D^~_8U=*_%X>3rdmdZL%&8^&Jh7xwKZHC{K_MsyahEx_3r z(2cJDu`vugqr`pcAEC!y`oXyr5H?Nu(GjljWo##k&FZV7%E(Wqbi$+kp|atM#p+SB zt=f<8S-v;GWh#yc1J_h52MZBMZI5#%ESo!wE?;q+Z2yQ8;HX18EJ%FX zOg_38GPusr7kbaD3ykk;RH`f(z6jC%T0c%3&4!1Qz6dgCtZp3N;?(aPZA^UxqIG{D zyD{~A@GOggz(Xhpzfe7}J-4(lD|jynQU8Jx2CR@mO9` zJ|Ucki0$fz3Gc1emml&*T=I?P_YQJ-9I$lq7$|&qA%Y3iB?nW4RFo})Ch|vr#Cg5Z z8(;ujyzqA9r$@Gm(Ha-YC@OLnwi^?sAhJ^3omLeT*#(f6%bt$fbne6J-C8fLqbDwY z0=>J~9xq2)nuqbjqzb75C3#`$X>Vdj0VUesL*VV#4tw#`KIao|(l{HeQDv+E&=S5lPr% z#Zl{d&0pxmRV)W!&}XMp75Z(Bc`)4O?+P1Mk#2Ms z1vS*Be02|SHIK!>0{kQjinpH=T~Z8pz4#&0Y-3-GQ_g}Oq`pmtIV}aRanHs3uUxiY-&g38RPH+f0Y!twqyxDuK!ZMm~Ng>%Qh+IbR%w9d`! zBz(*=j!p(IlGkb@wOCfh5HHNpwsbcO02&IhW)5c2m`u~9)f)C>HZ#WEvaM$h-`AX@ zvg@gfmq$D%`}B_%*6DEj+is@&Urf8`DppF+&>*Jx;*_skF+LXATM`DXvM5P%C7(md@`FC&TZyR|>Xlt0tB(b$IMi;SDvw-qEooI<#fTbxv5=#KFkp@%`#ZI;EHNXSOqx{K+FHd?)Ljm_n$gPv<5bE z0vOr8)2k9^i;&MnQ}!xQ&VbjiW;<}zmi)P=c;3()IRtJ2B$9f6<)M!B#7#aoxYcXA z<}fK5<7xHPNS$i7w@k>C)Y6C{rg_zOwA(i1gPx_?2f-E#oj8J%Et-Sl)g^B>@zqp+ zO~L_L*58x(glaG%lQoYjk{aL)Ob7HP5e*0fi%=h$30%otk&ZRYX_~&{pvCK@j%72@ zKF`2}4(Azu*tp7aNc7*9DOJ5pTPbhbn=>tzT;VSA75v7-ruMuvj?bChjO^QG%ig#* zXK|NElZ|e`kGc=`1`9zvqTfiBQ_G^$x67v2a06k0g#c}Np53N>Z<}MozP={L!Y|uQ zV7+1ewiluN?Jd6pkIwm#rZCc=hGoC&B7*TG{7FUp%SV#KhofZ6&J-8+8askKll?`X z4Vk%RE!)jtw*8!y`P}kGQ;_SXT~dM^eP6El<3t|7k0~!@ul_-x>y!6If_yEaGM$Lh zbJJUWmDK2oUQ5fM0!|L)VmzhS5uENYIU;}jd6t=@S-m(yvM~SMp6B$4u4QrlWrvD1 zxO|y8U?7$3I$8}}y#Q#sZxXwJX5pPzP{Wbu&0+;2unmxowx4H!h(t+i4FEQWdh(Q`2zE$ec}M@a$2=zo6DO6OP4j{wH`WiJ`eg3ooUSVE z$z!YH01A$y5<6hoLz~qiDx29N@li%wxG-X6FNY7))oFfku6(1rv=a&m^F{>*mpH;C z7iKC+jz=FSV|Hrj*LLwf9xPWi;W6|Piw`SWO$#8H9+C00GHvezL0l7!+q3G>o~PGS zl-$=|n7MKc4279PW$tBdg9hP`<%I8N(EicJ=J(LpVvTQFW;6BJXaPl{Z8O@K5kDoY ziOqUWyD2t5b-y;$;sf9wWqX}GPmkAgJm2%>`B|~<(5(&nc*$h|cZkXDODzJdZaf$7 zE&naVm{|?~VL*RL^1AfaFose4+#I_XFQ=*<^sDc0H!hq_h&*S^30n zsaDG{jK?>Wg;ma>RJu}H`oS0MwwqW3rg3}t{@plCIUExs~1qV&c4r zjFKoj=~&|7Xm+r2n{ubR9gRQcTOF$lf>KaCXN`l@Os~1MQXSG~6jc3qr?asBqu@&W zW;%Iq33uX@p8e=O6~ksMj<4YPB2AALNlIy16=v5nqQ_@i7sIxbjiY8M$ZX*~PRKZF z487neSQe=?_g=s+A+KU2gh4j{f`F`j3OLe_hwQ0CE=u)QTipCm5vx zPi}e}jGPS9R*OG0tE|2`EzTyfPDof>Fw5UDlyl&g;OZ5kkSX|Kpygj!8(yln(B1iR z5Ch@-fI0h`TcDIZ${k$kBYLf81LV)$KFlyr_s-JC0xN-f)d<~tC-%T)gwa` z-N-ycw2d4rj?;_Wn~z_aWiQU6rn^Z{QVfpNor~XDlBK$CH9zeXB>(DPtYqQ*&d#i+ ziQ^ouHOfoK@?ZjouZ+kmZ00B=q_o*S)2DJ#(;-VghF{=-*}-1f*5%x}YBob;RNX*N z!2*c#y;?6#OR%Lh-0m;deb)Hf+y9mJqVOc_N^&c&E6Ouwf9ULbmai6uV2__a7lt6u z2t$YuLvUtt1H?5x6Zr3RnZNf|GtO0@3q;{E9lLLIu&RgG3m^jE`oV;MVYdvo|t-S+c$M@nKo z8*?kS0nR?rYC9MBQa>;O{+88*HZ@%i;QZkDW&bzDHVh>&<_&c4{mm;inKJc06&Gh$}AFwM*Y}w9n{) za#<7iF5oEE_@c4c;cbRRqp*{s*yczFT$ngUd9sM6@Ep_^&U0-SS%~yC`1-XRXVj4FYYsZQbP#8+F$?#Q=%E;}5Grj*u61 zgz7}EXc$*k0$7qp!Kq*9djJ|FoM!e zP`GG7PT9GPD&uPd(8E#V(dqnb2!tYxj||xXaU%{HH6x{+WI2aVfEiM^vE;Xy1~~O) z^h)>0>nCq)h+jCTZoa`(dZ>hv1^LbmJp4>)&wj%_|74b^0~h}R)uS-^xDV3UocAW- zil(LkHa6%(2y}XNq10EEzHJhDdSA%v_!cQkpFVjd1o2~fym%^Qnb6xa226#T$+rW4 zl@n?Nnl9scKT%u}nyyNbzP?n+ml8f<7tZKq8Gx&Y6*oqU-}*q>wp2wFny>EOqmpZ3j&qA z(Jo>3y3H_4I$G`sw1pR27ns+YCBOG9^IU;^c%+f|t2Mv3x5&dvzuRLsRT)u z2H2>^RIyQGf>4t_$>Z33NA}MOsBgzlKo$>!6HD#ysZAauW8uYWnuiwlZm9D{z;gh- zU`EEj?!3Q$)!lY2=BcO^Ox*R$e7mD^Lu@T1G~t^fMXC+h^BK-J1&;mwJ+!qWkhpY(1% zG2l9|JVO(v5M!R=)m=C_BKBs6ViTWa$AC1Uji(o+PZ?if>{=v z@$AUuv^S{HYlm?(Dl~cvEZ9{tfNTaV>sG>-&UE5@v2Ec^KO&V^*j|wNWO~8j-innp zBy#*9TJ#95W1tBInkLXXiLg;{GjIvP-#%=R!!O1`2c)$p)FkqEM}2Y>>kWD?CGJcc zj2?OLseIPD(M;(O_)0Gk@zY6NSlFtBJj2YE7$$GH|N8af+x&N^z3n@yEtPdF?PYMo zL+PB{Dmg4mueVv#@t0v+7>qMi0YW6333OLsjPYiMt)A87m%#g)LHllK4Tb@LA-@jutnzx_3!*Y_)R`jttJm46U+c=ZkC_+5Pa zDI9!ASV)ndw_u%Y{$lkQ^{j{H3KErr@7PfwQ1(f7BE9?g;ia6a9s_x3ad=fl>g1?G zXCuqDXJ_qTF1sAqhlQjiyvI}Dkm~SMa3}>e7UHtMi|cu`#^LBW7FR`PFxd&n?#cfd z&Jx=gbMQ^W{qEDY#}R5N+_DdHe*o{yGK`67#uRvu7@39kWfWsu0&D!{c41**C|)6f zw;r(tB%11ch5Fq{Ba35R*&%7{ytyUUQQ;c%*gH+NeSwV%&Yw*#KrtiE~!$Q*+a zi3}tWr?YzDX*CZqPUm;*+3`y%YR9m74qVlWhsoVpfF&_>pUg@88S^43mc?Vud&~X3V`Vy>| z;uQmCitV&fm>?zTCF*h~N1so=bcHRtsK?#5otNiy=#tKYwth>^pb}ZATV*-C?8*0Z zs!Am(g#?VY0jib21w8%d;lczqYaZsErpxLP=45707kM=TjB8fGwgkMLgLyfVS+OgBN}Qvq6$8y`Vbuta-kp?Im~dP_EC0n z0Eef#jZG+=6{NhmqdIw4gHnEGaa+I>(a6;TY$U(qKZv&HAM@o37D}u+0+Y-}FyZ$0 zbPId<@(R2TMhh}Iv!oBLP~9k7UhnTqau%xPWsxthNR{lW5lwXuAT5bvAd?Quw`ZQn zNjL@s{1RII^7rcEpQg!?e*4*j;#$G9$#-Fg^3pi+@$J`Pu%$4Yc@zFZ79LN+@O6A0 zE$wem(o7GFuic{SFwfxV^~+b!^z7Z}gz9xh-I*vZcZ^<4)uzE0XRx!Hdq3ANgw64$ zES#`xjwUXMuJ1JP%&@QBD1YQqz$2bd4ZNDhT@ypn-p$Qm`3_0FZ8Oo^)6WmSh0>}& zpJh*3JjMX->MxTzJ6^WhxoQ>%7Dq}-rdwzkFAcAaZS-Sp+xj<4*m)jrD^|(%KyD{1 z&mZkDJLeylaLn-Yp8i}4rK_{5Wpa7dA>?5U{rY-2#Lc~I*j%aPn^@DU;Hq>2G0#t* zW0$3Prjs9)0zK{2Ad>(@0z(C}IQ4v(z3nw>R<=Ur0jlcTy)(3S>o;K%_e^Fq}&)eqFArUVzl^a@!*T5Q5 zBL}m^wHJO`UZJIh`16B1T=wYgN6K(v1`3!hvc9wcAeU=>7C8uMdQR_=h!2yGLvJUy z!8Wxf%E7k`L-^&pelNsvP(Ma|aM=B)Q$>`Mx5j^mKi06Loc&>dvDhBZ zEMWgylh66P94vO$uWv|337b6&m`(Vn3`BiBcFpmqLJN&5us2UloFZezD3s6BevL(? z(lCOQ)Pf>pd8uWt`@EwoiRHEJOGrOgKfl0TcB?R!#s(S5fiUIzrxxa8ItaeEyP|SOff;*-7;CsVMwf0sOUu?w0*_ny zO^g(`JJoN>)kY!*(KCeyKJ_s}jW zpN|?m5BDbbS@qh|!AqZvGD~nqzqlx~jonu-B#8xwH<|`2D8cXvnKCIR(h7JGb{|lQ zR#(4cgbh&%WWVc_p?%hBu`+3j&R;xaE(Q0&lzMG`nQ&aIIpSV~~|7;oia%pRVY5a#=c(LxF#O?cUXKY3v zib%8VIi0fi8GG$R^PIw!(sZx0uOw8aV@af`M&cYA`^Jv5kxBIUC%3^_aA~$j68EMo z+d)NtT|e*y>wfV-!fiyx|2d$Pr;`i{Xx@s^7K{BYQX_D z=dvzarxkw;?gz++J)o&#{$6)o#*7O`m!68_+Ona@L>Cg+D55B8h0&^8G<+z0wWfon zNU2*&%bI#d;0b+GYR)s82xqfb#)XYU&_&#{W^ zICEDu5cT~ULi!IJ{}2m-Ws2yll*$_X)Q&dQ2ir5GW5}LRho`uXLVuZ^v|`^-90O3v zarM;Pdlt3(qT?Cn9|$9ppxIbnSN)@JAx1B!(qhpA!1C9a8^w#fdpt+cfuKQKl3jux za+k2fS-kAnSbu;5NCMU}4QvEl!V>AiLHG#>)d|%Je~EnnZimT8&X|j+Aj_C3IVuN2 zq9pyWsH2RYuOuWtOP`(Xci+fEq^64-uEsBt>Pm^#~Z=3yV3dEn<2Jy_@&JB!71(g%h03-a{ZD z2(FsB3JYr~+Hn^I-6kcgCB)(g9EjK^T6eh(Ei*TMF z1hXKh$5H73J3)J!%Puaw#yi#kEu>jNG}_TWErQg4x!b&*J~=kJ7lprv{;`MYIhl~^E0 zkKrm$lKDy3Scix0E<`{{O|)T!Fs^*f-J|Rw*U+JTW)K~3joR|0dl_eQ>~=^-Q97>k zc7`kgE(8qJwP)qbW*HLX452dexaGp|NihJ8S)MT*YQf>kESE| zFV2bv0awT3govzQY@UIL5-<$^n`C}^qL;$Bk!n3AA|Sx~{Q*~M9K<4xR8cP&TAWik z#jc%xH)*6bk#e^ZbY)_QCnL^0RaKCatv!2NJ9^f0M5(TwFj&~tcQUZi1PtJU`F_Ju z?zyM`#|M4Dn%*1a&hHUIgStgj%1GI*BwstO<%U(YzEAj{z9X#d~fYt%6U4v<17N|Gou9mIbjvyA^6(k9|gwR^yp3+JB$=G9l z0Pz$qGt&C3{~6w{ZCwmr=V$?~59l@CoVM*@cpCjChDm+ikCCX!kx9X2lB$C!Oc!|Y z+x5op!ygPN=$WXw%2xt7Y`Aa@p^G(tAfV3d>Lr~|bchLADx>-w8S0f@GN_L|6wJ?f zg^Nom>^04%&$?PPNs&j&34_R4-*6|zA-plfg+Z)mRjA9z3aK{mW=3R90I;toH?JRG zGpTM@PLNx3Y%=){X5ALFjcE4BN9MrPODBa)EcpGyx(l&?yJw zknUD&V{zz*r>U=n9iaxJ$sH`|7;@_RZRd5kC}El-`&1K}9}5zy|GIvw!H@p(O~QR` zC@;)g8mc!};#Y9l;2#_;OBxxz*tZzMWdm(HbVYadC}84xx9C!aH>(Cci`YIP!EL zt%6~PeD`v0i5C1+QHf{OS#0Nv?X?P|etd|%#6JxAj?~+>`ZsGz1-Yii*msbko-TzB zWJOWHSvHb;kBb%=Y^d|lX{DUXv*=jk-u2*Pxf<4^~5}CSdE*r4A3x-#UbKo zM-49VytLEc#A|ln4OUlTx8@H@>=ku)B&QZ% zRQ-Wa@^-6$1c%6YWUfx{Wejy^w4)x;3iEA0fqg^GUKz)B*E`%rDTw)|k zf|@n^6&dpNQCo!HETu57l9i|7b~uwhM*yDMKrrXw+a2k^;iV97BSx$xpnmCE)~_8c zMDc=#J#MnN?3?=9bEKJFy4!js*a}1bB7O5`$l*awc0YI*^-IT5w*# zvO$okH+B`!d;KXRKl1r-!#zoHDp+VYZ`MS;D3mW$)7UgBT6@4Bx;Tl zCRwzO0?CJp;bb`od{>ZRmwUvyL3RokY^lspX|QHD|8c_g9!e&d5>nu15= zQV@Vft{FGM6f!Hj=bB=TW~i`aU3;Ei%6v9l73IYe1uxKwwv}Rg5z7~7DC?;{GWjqI zI;*!K9aKuPGIQej#{oj+TOM%yJB#Y~PPu(fDK=9L)q^ioNIXWKBr7KUVfCs6J^i z`cC-ssv!foohJ#lYRB4y+fjc8cITr%t+X&&QkN$E6o zamRfqBymg&Ier^%G*b-@NZwNEUpEPIk@Q#B&4OaQyr!%57HpOns`(o2it4OIJ=%%U zMxtuee27;dS>Qw!8x=YBG~#2Q{m8Fr&gU1LJkCt*U{1}wZ3jXR(ecjm-b#kqGg=fH z*99+RLxK|P=|=LKIm0ibji;;}=x6x6W@GK^IRJrGj%_pz@B~O(VFJggN$!>&AH z$0w-iSUwGkxU7vF!}st%m6KoTtzH~|Yk-V)}1!BkZauNA`t_$9B!@!J9~tVbN;yc}vJJVvCAs|M zlGjV{>IH*G?xx;+dg3&er0wvl!4un+e6%3~`0Iut=p9kRSlPz0Y3%;Vaa^&*9H7oLIH^#-3{#6GYc~lreMxEwY1B6X-mDirPh;B+Q?p+4cIgWEUJ! z6Iiu>Cw=O~rKX;VtPNX$^8qmym1 z9}Dz%7S4Hkg7jkBVP+uqOOR%2R|ByjI^Cm8 z^$Fln@iID{%G7xST0bPj4N7@92*LAnAn)hz`*K_o?~h{VQFAVfSF^DDZKnzw1<(dH zoT9qx7ctL{HaA{HZyAAEW_jvDx+n;fRXzsF79X2OtP{XH%S?aH>R%m)H5KoS*?6X& zS28^y@=sqY)UwR}75{Q!nJBP(fE)PtfR4tmpo=sr%Vdp^OCKnX?*}vkRAui!w$??E zw}exsZH3B1V+ZxVl}Daa*!aATw!4FXZOUgL)p;oh%Yo135WiNRCg}H;I7~HU9(}uP zLoq*t*k7=*Ui0R2hcD@H<}PR3j}IUHn0tZ^*Y^ysx1QkZ!oo4w=!s)BHoQ{0hlI!o zo-sRb$@Gp((KQd@hiOg#LZuq7zf%$j;~?D4kFBxc8H_VW+zCUXrwSLz6Ly)pw}F@r z3c9cC?t{<$fnN@1pv{F6<+-Z!qXYHPMiuu zs;dON7--rNUohM28?DL-)8hk;w+E^mJ`He!!{kVI*G~oONp2CSq!wrgKYc(xXjzxR z9bL7ib31Wt;#h@R2>jm%_LRA{hmi^1C0GqTwPDNfy<`|_r8(^S5%OH|DQE5QYCIX9 z_UqHTrmS{ftQ5CWoK0g%r3f>Tb~yTxZ=i!Px5un>+-QTGcyCV@kGzQ5bU@DyD*xQ7KX+EI}K zwjJA4PJZU2#>KgG$&63YU-BY$NGeQdNLfCJe7!gDAd$2w?n)#kA|tUkpyFsJc+$S; z%N!h;(3H3h1Jv5kb8}VyU7_Uu@9Z*W1D&y7kH+atnagz z`?mwA@BnKQ;Q`91G?P98koG)7x4s{`3S-Qp0+t+N|M!Sr%Z+9JErG`lx}a7L<1viC zg93jA>yCGgz_kBZfwcaBn%{!zrw#w&6QGepsk<;o%SIR3wrt@H)2Ne(9c%Tze818s z%w0@OC20q{ifs%M5Qda{iydix4y!i$zSlRsFaNpG?sieo2V}cP!m7LV$thB+2ES*4LunQq?3-$nXLfONPw>2JJ9U+iSKLNihKlWMi0&h@R>O$kCpT zTVW{G%v_25JahH^M8=a=lKCk%Dcz9!s`S5QOx!;s|C^)2{ta*OtM|Ra$(f+RCNb%03fE_GifNUO9?zD&J^*^oG4!heGpS8C`l_Lj=ew zU(U)f`xHx)tI%YN3I7`oK@S}SY3XQ4{w=Xs(Wr=4el&C-%xq<&68|Of#n%h z0Qz^RG@g_F%_7%!<3&VjMyKX#!OXHTki){ZGPTV3&C$kCY?OSoB)wYY$ zxTWGp1lL+_ykNyBAgTVhM2}r2ZUtEhAP@az)%zt3*aGgefOlPN05$`bVv*wN&3~Y5 zD=3d}W`qfqX3A`ch`}Jfz91+*k`h-^Pz=|pGU&vrU6wyl!QMqB&8QL((vNKIZmH_v zvnkxEw5j7a9ykuv^H$?{yHV!-Lr!mrZDd(;n!b)%l9Tma)NBcJ@1oEy9k3+608sTZBw>lk>cX&`i^akTyIjM`EjFTGU zvWA&fhG4_qTmHk6w``;4ar|F)9|cAU^zIu8Eb1v(x%?uF+Hs{^?{5b0qMxM+)OAr& zm`2MV!@~^G6zYBJs;gPso-i|h_1eng+IAT&*cph^a}@^P2LfRd`KrI!(>`FM%JxTq z-BYf{NPwAoaV9TykTBS|yYYZxEo(>Xfeba^V37A=?HUgV>HYr_2-Rg#kr|s;1@zs& zG&h|i`QJ~3*JbTgRJLZhxy^SB3%{bN5x&e`ef@;h_zf~9&3?6p?m=Gi1J+X1dFx;f zvC!+3&V7k@Ha80W*~?j{GJbc|Qcg&-OTDz!&QDq2TA%cYE}hNo3L4i*xj^5S(h?gB z5Q)iOadqGM2(Bn08wd7^pr7*Yw<2D~nT843l%MCW$TSH_bnjxyzmE3uZi(_7Vz<^j z*%j2ig4kljQSm$6wP<9gG;(|~+YE`z3H5Zf3L6D4%qu{-rMLh;AOe#J4b2ph({YG6 zlMS%pSOYlrJ8~w^F;yH!gs+Uu=C2$o`p4whFr{UBnso^hv3iR`-+a<%})67vbb{KgM4X zdPjWk#S*E|c_KlJ1AfWe5rAH-wTDuLVRwMtoD-9KQT$EwquKFm1>Pjq^&z!j%1Axc zxYp&^44$>q>4CywVR@fO$pWP>Ka`xBjr=P8-3yzRVO~X__nZ|}c zCj&4T5R;L#^C{r`V|O2X9^4;vYzSZkq$I#7?Gd2$bCPeaW?XcR1>9&yNFyy-ovl#{d-(ycAPb7& z!2UuJjD4Z)eAK``#L9Drqj^_}Xz*!d~s(F1tY9X#$)`IHDNXDDzDDm@q zSO47QNAyNXFUU!t6NyJ+`NS6RW4U)|8hNXJ%CQ7|%L zjy>DIjtRZftw;ANze^P0Pc6aea{JvV)GGYGq+0l(g%l4qSTu5MXNOt+s^$PL0OKPd z1IsiWvCb}#0`aSRjR(7v2b913&&KP<}AY=AzulPwflXiu+W>Rgg9K=6PK$%fa`3(a4YdO@eQ ziz+qpkaIPp=w`aSnXqv(WjEzzW)dYAu94H8(K8TB7j-iL9s|uszBb=SWv=s?5i0^z zToqU5lq2KHJ+YB(`GjMQ`;(sJ$>H93_G{XPvKo53vN)*xWxuAbfTvtS^Tdw34h7D6KfcLZ&=ru&p&`Ekv(~yt zc}Cs}al#QQ0ETK7y@<5%Qjj)N1M?^b(kXLCOuT;Ia_|dH z{e2woe|Ro8VdHse(#Nq*dd^*bRj}(i{&o21FYd>Ht-1;Qs9h2N;=rF0#Ll;c9QkCc`L;MimrW+nj*xA z)5Oj^$W!I+nTPc|*&0L#L$-?G&FRwz-_L-HlQOhn_HIxIlZN>0hsg_~YTO9b&RUe| z4ofu&ox3{PB8?|&Ehw=<4@vhZ32WozPvi#lhff{DOirJ~(r^?5MjS@xal77jge{C* zEZfsmGqVRAMYTA>OnW%>%eI%!2R`OuM7VJ`E*?!cKSibLsx19IRJnVCb*J9Qecr zB?qpx8i~wu*&&n}!R@ep8zwKjnf1S`9KmGETS9Q^0!QI>qlKlTo~+)+!Hdc#MFv(i zr`uuCdbv{L?oRumXAJUS)WsJ2TwT>ZNq+EGq6bv(H4y{C!c|ecHz-I}_L|fXoXj$0 zm+8DrcV|B?X;)Zo-D8<}*UO>#lzpG+{Szto*Z8Ng)q4!*`a1C6PwE}}I`_Un!ko>rt_%S^RX_paf;J{jAHb7#f{O4~U}`Qzt%6)2xt zwl1!ehP|&=>w&+wYunh6FC~OivhR#W`2_cLdaeFtZrPT4l?EJBmC2P+{IlKawtjMy z){~WO-81gz$&FIRIsGjpW5xB>lap2GlN!ax>GkSr>bA_xv@B3mxT5=+P_aA^se3^Y za)6VwXqX(4gN%MPtOldu-e9qi>A;KP4CmB(OMQr*d=`nkRp39#O#}DKec@*==acmt z&0IKVJb)&-nUC#(;PyGYF9vnr6A9DSO*nws93vwZ-+F^KG2i#Ed{2Fw>C*OMxDI7u zw!c7m+abwz75hcW6t~d<2Y2C49)(-x*qf7YV}(y#%yi$1x1Z`AxmW<C>CGbf)W?(*+qe&cYy4E(V<5JWL z-xSbxiEZ?ho=m;chJ^@;iTyi4avSmuvx?lxAb=zUKV=og0Be|i>jVQ%)53#E?@0N? z2f2r})!%8u;kmtcCTrbqTCyYUJ?JxCw5{BVCbN); z^3z@c@fd|;@B~RfL?+;if{90p@PSf50JR$IJ;S0*=zTOqiwdd2lEIr00WC05VFA}q zv+;I^=f=bMdrBQ7?u(;%AZ(RKPiwf}bJM7|<5foV=_!kW3#%&?^9w8eqdn2}25A+A zQ?|0)h-*-;3)ao^-;t^Jaayy}rr@;Ny}s7lvh#OTBB8xRAitCRZmRWQOoZPQh;_ds z#DZSHwjR~Tld&UW%eigfE+U)X`iR6!f2)V2H$gT;^iWZ0A!@tNHeQ@VUB>{B>}VfQ$ZTrYt~#bDic-r=??MBR1IeL8Y`N&kwQ{ z{pgMaSy-V~Ofc?P4%)fM#it)2;yryI=~q0dY)og8Dx)DkK#b5VKA>-;x6ISgo2S}S zPu|{JUX`YMnH(THj^x!8`9GA_Cc&+pzr}1qz-8;+e{#b$KBTuUq(RCUGcNPvl9Iam3vG9QHh(u#VmqdnhQIzk8b(l2>(A1d%$+$fM>_ z=!;U9y6;qJyE8i3PHydqsg4ATTS{v~Ce;PN++=Eb|ETuxe><+Fq&_qOGBn^~EASU* z0U!qdqqb|fnOh`KhxJsJ{|lo2Bw0j7c{-Rt<0vpHj9Z+)105jmFIHNZkW->3d2{b( zu4U#xPAY2!;zg(eWQR6iKbdq#D7H;Bj7ca-z~-xYGSR^BZm2c(73MH6+(&(8tr$iY zJtGRC)nz$rcV?h6fpnj;e>utdo2b_$U+_<6DGmELO=|_5GtcD5D((TbTOdGn@t`Pu z2rPXcNKPvP%&ZVBDnN43AX0bF50n)Lm?U5JOer?h+qSrBkRkmAjVa3H0L;7A5E!+ts-7&zj!MzBwFFg0uOB>Mkldi zEx=<6MPgsFK%8K5!;4t=mDd+&M0^$CAwp{EDlT;k zE;T9kXq71XOfeF8pzJ1iR($}W%I(IF-A0>QwHdThd!OM;%sE|{(i~Cr`^Kn(dG>lp*GYtVhk5CNZejd{#1AI zNW!?c!nzu;r!b1XOgwwB{++v0-}bHf_JQgCM!B!NfSf}s=ZAZ3{D%(Y80n)fRIqlE zL9c^O9|hZgRl188?N~}LJ+O8&AGUuZydCXxIq#fmNrSNPjfr1uVB(UEKZaecampY+ z6r9q4k_T`BN-zm(VG(l9I_PF{dQS|DurLJzoE+sJiH&`=;=)n_dNNUnb&I5wXnf_U zizGB{vVY34fK~C|$shkK#{U)-@>`A%SWN-&!~&huQ4N8tWrSK)0F_vPdBdZhzYP~y zNFtcpCKItRdn$h>&{F(JB)3$`B_t>|2b(ef@E9V!KQP(U$bKE%lf0k^mr58Ut>m{; zwjft*tFbuDHp%~}^euA750L2W)b`Rlwa}MwFANb3J^SJ@LoMeXr{Fujsdq=tdZuZv zY*>?;qaejhYvsU9`%5sFDg(Ga1c+J9&xC^lws&NDA9uZ zxFsgw(e)){Y(any2}I`?owN;1+hhhUz0IIXM%Q@gyZ6!fqdQpjThgWTsh-A~D-oRl8aP>9a+S#EH{ zD!-#S#L23O=9eB400O=es)Q_LX6?Mw9a0ExpzKadN(%&HLSbKi-iUuDOb}vh|7H=e5$_kUxbC(zkRYZ@1fKBG@99O#OjVMYKu+e&JWP6;Z=mtL%V7NIm^=C zx|INNe$wrBnH~|2)+v@PR<0{)9}1vd)2;}^bo(Q#gw@A!hYU-fiChouY=-v% zysb+o7WX@yQm|@#dZLo;C$;hXBlc>&4qE!iooWG+-kMVP4iZQ{k53lUeR4c$Rl6Rb z7+6~_&MGmk=Q2MnvDmt%Ji)BJr-|!B+i$6s(3;-&P$_zO{jq|1fI=noAxFs@POpeE zya!6x1Q?^1T11yU8ZO$C=g+&_*!KVyb|MrN5JPSotI-TFlHZC4{z~2cCwu}TM&ZxU zp}?Q0s!9n2QlXgKa&ka-1d#O??OlpZm|`QRy>9$Qsmm-W<^_F#t8wLJWW_GvJ?qC{ z%ntdUdZv^;ljiCC_Ab7Ki3^rL#>SB)H#5t$ddSz|@|W1(_{a1;wb?4}iCB2CG!+A- z;+qIuSvor%7vckhpT_8l@3>qU&z1c={BZmK3OY& zhCA5h2``=#LUQwDKsCDe=7D}y0)`8SrDCqmcJ!U*Nf@$usvP53rKWuYm;7nH_Pi#?Ds(*~KT*Clsj{T5BD!T#{AC#hcXJou z4~0I5E6#N1x+sQ^aw?8;DnkY$eCtsm3|t!KVld*QqE{HltGgQ1+ynBNW+=Yjf=H^a zIo?7{W=mpO;sh+(KV(sEs4K9$5>PC#V~^&iB*i^uB9B7L0y62C3iecx{Uqz=kM1hX zKKGEO&aO-FMZUVK`u0dltI38X)xo~-OHIsCO)4`h-K%F~LE>?O!NvpYtkKbqq&`-y z7|UBWu4lNP=MpnE%w5(jz0MaeWCXVy;YJESFU8hJ)4t--(liI1Q-nIv;0t=Ati7)3 zm}WjcjGawT7(tVkH}?<;YF8N`$MAI)sk5J~YH_>}HHmkC45L-NFmav^NySwDM&UYM z24$$!JA!QhqIz|87y|A|AxtHpLz1M4ES#XL5LZ$9$59q{oS=*|iGb(PD5b2coLhOz z=6BhrzuVWp?(hGWPiAnTNrF!l1gW$v?dJoa_l9xoQ6O&j@ zTt@A?lHbv0HvYM=%jV)UwC0o>tB$rFlGXzfq^fh3)=f|aec46j(x%n+-z+X^pL zv}}q1x|-ioIcSMG35aP*gy?$T5y#eyIC}}D6OvQ#)oyHW|L9(rx)=&&Tt1N4M<*wz z`-Q;to^)naAfEmxuRz@5Wevr3*}CPD`wEQwq{J}+nk4-?^#lGJWua+scekNRX={lqruK7bCT0s zjaRR{^8&5EP(w_KYhOY!54@oWUWc;R0lP#JP-x{8ZGgAG1L*9cNK*H&@R?CEO|qkA zG_pN%Z69;M#4z}O;#E1sif?n2xVtjWTEz9^q{hhjbI-Hi#6KszKPFgK*X(?bV3%lU^zC)1zc1~} z!Tag#p9fZLOYoVs!^zMuY?|cD9ajC~@X}f_fbNJ!2A27~yALDzEBUFs(ksdk-4QkU z8d`S6D;b&kfU=PI$oZ3U3M$T^f+DbcA^b(5B_@B-uFZjHBO?d?FA)k+)w`P0+%eTM z|EvH7U{U@<0S?QjbV)bb6*N*#h40PkD&|Be_n>9^Qsv8xFF7m{4~$iZwIYP2jATEx zVK_64(c-5AD-ZCRdUaLGJV1(tnQMUOrony|MPgw9TLoaJr2KSwk-h10#Em61zGFBj zRWzJpIs?>F_{Owi5=$pnN!ugAajbYwIX|M-CUYOClaU}+<9}k+_N`@OS9hrOcvjTG zyR%$>*Hl|r?fnz(2?`)Mp%;m#`%s^AnRw6e$RFVpMKrqi3E3An2CPv^(!g;U{Sy@F z*hL~BL@Fw*5{hO_4Y+(lV6l~$67m95>Vcx602}P9azx9Pw~hXG+Yhv>L#qsTGoyes z%aI_?`pshbZ7pb7!M?DDT(H)wT$z~(wujE?)*|ckV^5e)X6M7)Gal0$$~32Exmmu& zKQ9Sy7;z-oWe1`VnUI(#A$5*k)9zC~;kgqq}oygwnz6eIY=l81Mwl79;^9NWjV{igN_9 z+2XM|+4|U3OZ!HlD+Wawr=whA)kVi241lK9n)5vuaK ze%40nOSv4^)?Jk4d#_30Q}iJ^EXY$8+X)AM+Q6%NSrwkycv1Ipr#pyry8clzn{5Z{ zN7mkL_PBcUsn#Jk48h%yMnVP!x7c{@VDCbsg*rVm)41z0xAzTPB@rRnHP(wMHhDm* zd4Ar4z|=Wc3Jfv9A@Hd8;{d^-@-&s7G%Btd5d5{?$D>de3I5Z)_Wxd?R@k%KC&lM= zG*6;aXPvr+r_g5mj=^+c-Hb(KUBb#%k=zU0BtUT(jSTmAW`_*h-j`Q(1G`1~EhWk=rO^&R9Ec~$vZ6Itp6DK^{vftk5@l0kDC?xHCN zjpZD>p6@h(cS+d&LoB-^`yizgmL~-kkW_Y5g}B#*m+WpgYH`8HRCuZ!OBnf;m&QI| zrI+slQA=2B+@=XlFP8^aHf_k-lexa45vT)+<77(`T#7{tDa;cGG8lfUpD-!!cmIL7 z9l)QjCI*J(STVpc6!pL6z*%#`8dKfQTt0ALwwt<##fy64i_VnOn!!P)h0k32 zJAPG5v3b7tB-fW63LDn(&n4a%2o9J#tV2)|q^$WaWVn6g)$CyoGe%b2y%NpoNvZcw zIoC~^$gsRHCx!6pT_8H@5|Di?|3IhGsHV&2q;cmojAh}2!6)=yxMT);(|7P4jC48} zMqZ4BS8lLc3%8PUE65J3rkVm9k_-LS1SvzFnyexaSOU!x2M82#|=*??H{ zg>rs<;z~3#g@NjvON6!QFk2_`OLrU`W8J!86t%CiE=;*`I+4NBeX_?`4$w8m*DuKp z-aJR!ujbV88gVyIoTyUJcQ|;(sYi^BN;wVWk5=L6QR06Q>UDAMw@uv%tH#A_{9qYf ztvS=`=w7-NsZ&3jn-M6dK7`OK-`GOJs~C#zSxb6OH`ujGF6j0KIFI=DEs5CMy-BvDoh z#FO?6umAz1_BNUvw!Kq8KusJogC>H!Ehw!*ydcjGV+x<+_5MdiE@WE7HwK-%gJZ z#J=QFX#MkZZOlT+Q4X9Uzf~AtHS~I_p2UAA^nsJFS;RI=|geYB`x2qsTTD zkc}NQddKaY>M*a~_R8JH%0#DxyQE%aQ-|+ENDA3*o40VZ4gn#-sJ89`?mlB9mK)D& zrYJW^S?4S3fQ9#31%=R?{P5`#qeGD`=U|1!l9QMI^&3T6jw0a@DX8&olZT>YVixvR zqFx_*jx-~w{^aw1=gd}5rXg~`k44fJH;^c`+AfO5JOb`qLEVK?>y8va04nx};^@FW z_!;)}U-*d);LIJ3V2&V!J2-~q^-B!!Y7mV27(iSJ)S;4jq`WgU1P)TPNl9swk5=_fFC6GL0I`(BL;f2BF`uEc_HtT5WG!_C2C7N>^k*9vM5X ztKf-*S5&IAf1%m2k6z9R>zJC7t;Rj1rOL~8z2^>JwjZZQk7h){#_^I}8}W{lSbiG? zxtD{|J>5k0`*%M&kYU@!RgR}O(7FLS=-)H21;Q2ymXmC9tEiGN06qNDqELWjp+2fS z7JRGz8z8ho;W?C;Mj~O@$+kh^u_G-|kzHOdeG5K)wW{oVKH#f0bgK&AzB*l|e3_w# z9K*!?;g-hrs~)xMXxX&>O>V+T%z|^~c%PGn3y%}sCMDtU%K%GnL)UtojT*0$lIRD1 zz6C%dXR28fwe4PIY~OEUl|Y@APp4qZud>j`@i{^Y8+$?`6EYmBsn52_H*4*7-w}D~ zQ{Wj8XY&{@1-};ZKW?eXVKwEsN|w|t(`E|3CEF&{#oyn=%?hasf>@f}npycm21<6o+jacwm8JVuZ0I6ht#sT#Kf^ z8o47rky_B(6e1f&8<=ZQ)F*#6iic{+lth%kX~~q$;kCq;5&}R?{Rk&uZ25U_=WEIWWJ*FbY zL_wT&={692$VqUZemy(y=JJf^iKZQwHG9*xNP}|QkdV+OvVpbU(T9E9K-2STf$#kW z#7hux3?BbwSvD`(cob2@%+yWFZhqA0-oIB`{m&dv1}qLGfXctHKn6IV%NHI_1HXl( z{l(2RLmrxBFlik0gJ>ts-9y_B1{%`fF_5eVg}ylZjC$dMnW4j1XHj>d~mLb$br!Be>?Z}1ANY=}>%%_N4UO3uOex%zPpn6&3ql&U;$=*esl zSb#-FLacyCLj+im?g?SkJ=K>ak4N9^sbWpk?RR>Nd2{Q%?0Bxy9=E+ZJQz+H1zpIH z$c)GYDPVEsg|*6) zu$Lm#*H&vp*cCPzfq~}rJKJUuE^}pNmeEi85FC_D{p7sAso8VgMrP%~Cjp)qKybK~ zf^Pu^$i<#{NSZ7_!Ekzzj+!I*3E8yNN;B`v80ij=c>Qpx+OYnW{nnsOT8dWf?{r6f z=C=AFOR39mA?rC{H-y>(mq+b~jZ9;lD~g|n`?7}~sJQAIlb>S0*r?JLmQcygPsQQe z?P;d&uuz|_drVjPw%m_`kBKVBmil!MTJEaD&-wJt*ErM&j|;TH+{mlzyF zfPspd|1JIp61o=ujc@Wy2WUV~iAy2e6W4v~n=Uw&X5Tz}A}iI5 zQQ($KL7^m-t(Jq9X1L9!#&sJX?=J4&_(Dm-=HjHf2@dW0Y*&j88(%U}r!K)#*+s%! zi*q`Z9^&r~NY538>RicSmdsOghZ@|x?)cVVj;9h|FYR=X!b=-X9c_RslZCf2Ulog% znJNt6^kbBO59l{z=1-$DfOUW5nSl6<-;lR=|5&@Z`SW8lVh@K@4Y_HHnd4r$?!Yuh zF@1sK5f%2TkJMk3Y_us!f@DD_#tRR>s6=r369X3RPj)GX`6I_FGvFa1nP}MCYb!a@*#) zFZq|n=j@{eT-&`5K{u*e zvV+vb7kNO=N)dZv)}5y$j`G?-M#~uUZH73&yVGG5@|HS6aP;-XVXPNmjdOETM&oso zMHz8yj9k)*L8U`NAg0ntvy-)S7Mi8`>1tdYP4eQf-qpqxs~7I%p(Q^+)=P<(WhfuB z+!3Z)%;acpraz?aq!uPdbCM=OQ)tcdD{ozqe_j+-*`k?wbuPHzXp3HV(j~`>sjaGXM36?M?fYSsOCzb#)6=Cp0HbB$ ze@7Vq>U#{JaL}Bk=Vm1dHy2@6Vk-;BN=d<)X;4s;IX)xcl4{Cgy z6pc8Ow$(=Op^UMfLHMkJX-$v##4G_#ik`ZPIKPt_oKXaenTPF2eGnAU9jw(K_(w(lCM_Hs>xT5JM+_ytR)vyt&80G@x_Ca&5`jtybR!@@99 zHgMr(w0?-xct)zw6Z@}!zpdS`BWUbW@l7N#+AcT6p9P4^x)Q02N< z%#*n-Oj^i;`vrN;c6JkcMeu--Su~wg2?dw+&fGKZ>Kp%}VU#dS9brPJazYZn%bjg; z88d9CUYT`!n<#?<}t^w`+`Q zi$3&dLC9IS$W!{XZ!)QpNCF`yy)*12#gS3^*Bju^8{&Wd@jif&Ke14i0nQnalYX{A zVx|NNP2>kF$MK|gGrXTbSPvM#CWV`s-7C_iMr}8HhGvI7yZ=-}Z;Ibzi0hJIOD~!f zNW1tY%HuEU2C&n9Q$1kc{}4HleqQFc&4(2PD&5UPlVF0ZIQcWM2TAh{UX+#sogaKu znXnl|-vZuhujJrn(#w8OiC-lgjrl&OENWm;3DM{E(_?5lr3*tXh7=`NeTco+6a3aT zUp+YX;dC>U)vIr|{coNmFiai6>6(4%y)f5wgYHC~RANVrvgx(q*gorR>}Hl7t|qp; z*MyLjbM8(zp9U+juld&YYlyRb zoH7x1f1P)A>lCs6oB>m59r+Y~$|sdA!-igF#D1QmcXNqu*6t$1BkcTMIf*5Wk38&u1I=qE7pD&so35bulZ!S?9q+Fd0kH{cZ+_>N~ zVxqG?2`O;cuWR>rKL4JDCjea$NVmq;w&XuJw3W25q#9?Rj%&ao^U9Mf!jI@e5IG-< zLH43P(0{k^T{>ZYTHeg>`w{Aw*)%$O!IyI9okhMuo(r-IXoSL?V{U7dffmz8Ylxrm zkx_TJ$1Qc?m2ng;fan(A(AH`5dUa10*XDDg!nv}f)dqea$S6-8c{q3}zx&@}7Jug) zQWEefEmy(0y^;QpdF3*Q&x+`PES~Cdd0zy_uqDbD^z3#ZYBN9SNKK zsQh*EgNr^TlL5zv3pnL!3(n+P6IdI=7k<#$ftG z3K4a5?n%#bi)Q6O^`hD7lERLG$Nv@q_Ge=D>+vr{jSiOBJO=!osh@z_{Ce{CvuX@Q z-XQ48lZLil!kKxk97xNEXPHAa z8+uvgCl?oJ2N!Hx{DaiKkS+io%BcWkkHQLU{I;Dk0mEex>9pNb@u@l0t9c9BN};5u z(F^Jh-41=(EK|&MBVW`{;T%6(z@%bUN7~md-XH8=k-Vz3jW1g{?q7HoG5sa~RjER0 z(ta+j5W@d-Bbu~=35E}T78pCZW zhb%aFROEe8?bywe<^Inr3IisLi0e`*QD;M=f{M{0I3)3k58Q|yQiyI5v z2>D`_4R5e7?2KmBjT(7!nJW!RpWT%7grM>d2J-zPyg7>HoCI zv%j9@-nf&!Cn7 z)HjEbU~9ErbJ8k56MrzLYqjP1Z_J3V5JJOHgLb+&`iGK)8;1gSM~%;xH&RwBB?qu zQ@Ltc1fNYco&oJ@at&tjJPZWcfm-Guie7)HNVm^!RO{>Fo773yM3R%}98l#xL$M&N zlUIPBNCMVpnU)3SAqP;cLYqhZ zkzpZwwZa{=^HTHJqC_=hy*MPdDIsIBX+*oQHyLtoufRa&w^C%nep6)eBG5Q;iI?Wd z=KNq_0J-qSih=4Dr#Dguxd z9Rd@TYyp83;KZ5%zsWtnTfV>bo4WdxDi;`?0Sv1^b89|=E1pUQlFtD>9J@HF>0F89 zA@c=BH-N8MKwX^Hur2N|_Pi z!v}WV^p^O!a`3?G{N0M^e{+}pt=Ig2`L|26L){Cml;2Cme{rzE|0XH_>9?e`q(B&h zBdUiHbRb%e#HL7?aW*!kXCDU&ntHVE1=iJik*8{|1pv0oo=b z0dTDPv9`kDJeFEL$xQ*8{a(l{aRZxdgud!xK}ATSP)!xR#iS_j5qYm z%N}0Jc|lj;F;z!}g4&Vli(c@b*xum(b;0MyBD$r6g{zy3rRihXH%BvDbapmMHcHqR zAt6=?F-mrHR&!I>UquN@HsG)P?Oz>Ab{5W`|9H_^l@ux2fpZ#Slx{BWmgubFN|db1 zjxLW)?L|a>yDj@)Zma3-WJ$@Yt72wrY3>GG=Wgb9`-|LTQ)}RI9jJwy4JA7}Kk!sp zOQ^Mt8zmPXKRT;~qrIbxhLfo|aIvJN2h`kBT}B+ZT*=hcj*^`NxW78^Y^a;7s-=sB z<6|dB2TKPxN3*kgFvc|=4ge}REl)=^g= z2>92N_gUl7I;s{N?BHMj{sn=5LEv8y_!k8J1%dxb5FkY;4+g>g4HgdLg}<=y|1@4J z<6`RlA7HQi{A_H0;IG+7rdy2DVH!aSc_AsHXvZeAUCt=lCWY>EEO~LjkDeHKj zs?F)^n71*IX;NCA9P#6_nK)yF!L7ZEy|`EGmtmSR7NG(S|_G%$C8?YITfl zQQv7Xyqnn~m@o;S3@NbtUpr{Q@kTG}0@adxcx)xmqhpx!t_x^nZICls)mS-my7TJ> zOS&SlQP0!a4lX;Tj2nuSXNJOk_FZ&~!@mrnIL5hh;IMSV{-O0y_SIYpq}KC?O3t$s ztOXiDZz~h2EUpsHGtV{?UH445QcZO5T{ zOvB(6`XcEMAc2y6p&HZ=A3})bw*BZdq~D>gU8tou| z2#21$#sEgl4;p*24(Y2D2k9$kNDc;wG1JozAz@B{U|X_y^Prku!$e5@d8mjaK`$;E z?(h&AM<7BA2)1)^Uw_1V6qBPExLvQeD`Azr84-f|;XPu8?9NZfzPnOOXvkFTs(ulJ zkoywke{Hs-3%ndjhUhJ5{oc_k*x7O*^;2{4+3%x!y-)EfV;AS=e?s1!SLO+T$F-2P zeaE_rP9sm2>%iYcGDw$!Iwg5)hYB;(c2PA<4Pg)C=_c&Fk4ClOI<$nV1l98Wf?fpK zE^OwqkFGi2krmQum`Fe7A%6twfn>84=;kCY1j6=J+;uF)qF%)im~SZ2Dn%tkF`=3} zh`8m`1C!gCy*c%BjLB3CR8t6MEAWH22;y>K5+~+&z&^pk`)INagIniEp^zOb;OQ?G zQp`HxRw+jrZbz8deYMlw#rZkJ@06(qc!N8wgjOkUT`bU@^JLi6yI|Y$x(MZTv~t#h z5xB@y`tySl7Fn)tU^`dd19?X!Q`bDc2qDu9LIBd^wi{nIM~1 zEuKLHIXDvFepf?IhL~4%t|GsNrt@dP%TRV#dD$hEb+=Lmm%ZZ5;Fv?dUV3AHhyG@8 zsMTlQ!OgTMG;~linqmXWAKm|rXBJ$?f^7vF|13!9{u#QdB7JWYd$0orbQ|x zJC_&1Ix{hD`u1$xrTS2!5qQ5-)~63hl_5qoO~nBrpbwlAQ0lMdl15Be=6V5+-v=Hg z=5!GOr@LF|G8p-iw;x_NU4!`naAe<}t@G}8-m% z-w@$oWeL)8BI#R|aWIkfBJci-c%OG@zt*{UAgr%L+vN`UrM*%OiB zo~6L{YPM87X@azx_>3R(%%H5+G2Jmic;sA}MH0t#+U zO(EM4f5c>npYa0Z1=;W08;VF-`mT3RugRS!XSL+xUf^}|+c??LfZN@b zXzZH?$qnf|Wpo^^wpIR}ogJyDAyBox~3WkyZSmR-6Pz*0?B(9e%J2#Q?l z&Ww#9y9x9%-n(7*1tfBcp2ks=>DQp54WleSgu{xLXK0_`X6G1kT5+K3ROt72cm^lg?bcjtHZr1rJ z*l2=Py5N`qRscYof+k05K0B`zk#BOa2@jjXc0(c@2N`UE*QMz9$yin!LavPlOx0GtsE5;_(yGAu~O@-aQ|!pUEQ#dLX_M z;Y%iP-pv!h$XD19vlK`cUYfxP-|)Xh|5|#QTx_o$x$(|*F8Ihv{$@rTFNT3f){@Bi z68qjO>`0+(0Jj8yh&EJmDw}hziAWxVc6reioOm-1iJi7d=-vxWxw1iqe4P}ryQGGxDD8ytxiX+LSqLim7dR!DWYTc|D9GvQm(J*<6JM1%DhB!9 z%x(G|$2X_a%Cw&Wxe3?=k3c!}#r_ap0le48iylFJ@{O~WaBaoc=#e2V&3n_n^^u7Q z+P5p04JR+E_yy0w&4Qr|=YF`gaYMF-Q|MyX9a#(-#1N<4U=0yqTvb2^oT78LuUftg z;)&_&yJQ5>R3%IBCI^fC)Y#{ypV-)q`+6sDAMFUzxbuBgl1qRCbg#vudm}M5zCTz- z{Ocawl-b=fYJ$%b8O66td<>%Ry1JyD`b` zQp_#y{DP2#yn^c2^N=3(aa(>UP^mm_#zLezagm_kLnRg8n6<nXGnP)-*tj>!JwnJAi3u(WjT&{TUl~d=r|8hfUM55s`mOfIZOelWpYq923Dk zNjk_DR|dLZ&Y|FhHW!H6vwfh*DJ-5kzaG22WiI7ZqW}J6Y!DKAjF3WNZJ3Ys7LwIB zllz9JGDQXO#YD6}-w&)Q&giob8RhK6aY2!ABAE4|dN~pbiCr+U^t|*YZ)Wq*gB9 zJR_?4)j&+9YlKPUDE~Y1vWpIZWX3*{j-T{_z)juO^<9CoX)vo5E4m4Cs(494B(vjq zxFQKfZ-#bR-5@}-3+y_dbjd2TPJVPp??~%^WiQppcE*takD|oxj@!m@=pZCrp}9$S ziFmu*g2?pjd(v;_A@+QIPB?G!=Z>wsI3bD{!P#5Q&4pZ0z%d-f7bWyJnQ0;O!P_ZpKKVt!&y*V`a$h3ow^T;GUS*2uU5AMU7hv8zE&hEBZvcOM>RFpa8) zF#SZGa7vv0g!U`e>~8$AX(`jQeyV~SHe8m7EztpZ!H4v*zV+PIDgu#XKOrAMbJvCN z)0?_+?kR>m|0H%7(X8G4Koq1O>7_K+e9&vJu-5DiqjGg%v^<<|1Os81vJpb*$p*N9 z7eZ>-cfY%jEz9PbCqKSxhAvO(6wXd>1N-L+NTy+tZF^5czIF*~#SM39VJ-|v(o*Gf ztzg&%y7@@pgx=0f(edKb_e*7b&S&&fLid7 zylIszj;h~|S8$-oN#M|L^`57Oy>a-dmrr!ll~8{)nZcgt6-I5mEa&F#Oy6vfBZ7sZ z>-{ACgPl%f4L8#L9DBrmyhr0n0Yft?R$Dl5B#2o(yU&R?JqJ)NB_fW~wwKIo{T8{ye@FPTuKAYGdI67ljWk zi>*nJ@)u#^26b&zsaXh_V~KAM0@p@Plqz`&KZ%+2fBDQ%C-ExLTL8c8Dw#wEkosb4 zka+xQQ8b>O4#z%d(%d!^)!~rJ($W@6@7`W}&2`2E++)P9vr4wUQkJrLP;wt3kgPm* zbh?c5LtlPj@mEq+@OH*?Xq@C~mxWZK==Ul4ytxa_PU zDda7XdVi(QI2Pvmm}fg6GL6|tW`dl7?7E33TUv`a)AoUr*?KmB&AvwM%hy0j6%PE< z_I@*iI&wpyg7*9cQhq1#5HS%I=E>S%C$~IOJp@KJ@9Hr|0VzL)$qmg7j&UX{!c+V; zyO|D?*6Bn=EegdKZwjU+Kl_X&N?fY$Bb$%NUhR>aR7bBX&F0G9{saHTzudX_g$30xoMe8?1jRwFJLwW9tm;lS8rxMYWC*@!8y zHShpzt8i&caWFc@<=a=z=_PplwKvScB5FaU@FbO9ah88ytAfAxBuk#bcSS-fJpLv5H7S1$8Ux`|l6%2097#$Ec)KiiX|f zm5OAu;ip%>zg{Fix5ve+^MvF<&Vq!TLqsf<&QY~pwLh9#XA&mOjtd2vYI9Vh2$zb2i4#BlP$4eJQXN95j<_f3S{x3Sc$ z1!Eky=i#lF&5(+_X_brCxxe!P(*HGC9Vj%%2H~ONeh~UZr>(DShy55m3HqGTHgVHC zZ#c9gJ6N~e7G2gN6}f@O!{G?Po?C&BUZw1!B+h|`M$_#YaG>rc&mrr z{#WF8^ef+-zR;P=kQnplR@+%!>ymu$t&ptU1!=pfaY)HUXt05CfEnPfmrap!I1NbB z@mCv4U45pPrA+kE+wX+Oop5ucc+G80yfZDD+mf+8U%4ho7o7w#V=LO^&ab&MiF%?5 z#U@Uy)Ws(L7(QIwOfOwqj~)s|V7cB{Ze07py1NMa9_QP^!T6FU!R78_H@rS|wXok~o&mRy@}g7jQ8vq}(n^qaji6kr25sDX zSz{4~GF+jV#S;)*zBd1%?%Zt|ic&jcF2*4>O5ld9q3N^}`l6jEbo)-7wI&ncWPQA` z>=8lfxSqIoyHF?hM!8%m4>xV#Q@wFN>XADLkA$XE}>(Cji#mjSp;|0S+D2m z6H8e_-6|pXqya3RjLX=vumiKukI5efHIuu*E?2X>=uIZ6yx|c(n@*AMD#c^9}@WvR@veu%wjJVg-3?U&aM#)uWVD_4ssW6nxOk=*`?_QhJ-U} zvbdywS8RyZv}Ok;K$;bo(Jq?$NdhnGxdh^YM+?rl<3JA|W)EKuyddsF$>4|S0=X<6 zhtjt6gTg~%WN!#YOh^v&ydMaC>-;Eq4|t+XafE5ylu6X*4>ymT`HRM=g4TYx(uz=s zU($1E+*q{SO%EQQN!h2*8a*-AIl z)HG*zhBDHxy3&_@Z!#wFVnVdymT`va#xH&QalNzahXDgj!A8g27MDok-nHgCEb(!P zc8b#;#Afa6zexz-VLW|_8|6y zK*f-)tctix0*)v{N(@nTF2ZMl7vK3j)#D)!aD+#16TGU;J9|fe3vK6-FPe?huo=*% zt{F|GABa9@TOS@$NF1Bdyv@rp^+Dk=IbQGb@LezskJZjegZRz zz2aXEJlTetuHTOnf&Z2my4sn*%4V%hq11}0X_L^cVD(F;NXFvYjX3n@$wJm-1=)~T zDKAp{4z1eoG2G9L@P&t;F3V^&b{rlXyxl)Y6k5^R5!0=>(zfB;yHM^z3+b)UDdNk~ ze5c6x?00!f4!_atCVVRshX>~=;(7|48W42m`SIj)Lf z?&gX;_*g>g#qiU#8DTe+!<8)Iy8fpu^+)g;@N`yNigZng`he+Qage5oY6$mhg?CUw* zTI38dWcIMF7?kh;)E!N7ozxovm7O0SOUSXGPh=JA?mTTmx?*rFds>yA?QQtR&rsq3 zlxd>?ZF&LDf|*c*8DbR}9UNWz@GYFqTNw#?PdG+wR@j#g70oschg;ASJ-_n|l)rdOG)Umj-Ue1l@6%2EePT+^s~ za?k~$1>T)Goa)DY&r+OsZCrXJ_4D6H6X*tU5rM+LD&WFKttyB9UTy|3L zTTj5#RHi8y_exDmO;@-3^M$BE=QP`WolI7BCU@PaT|Rg4OOLRW9qdgyG|KIB8?{FV z+=Db~!!yzv!+KRqJ5M)L+&=UFqCaE?7)aEnasOi5%4F^i$rX=@)-TD;AIU z4-TaU^MvC2RMR|oUaahVprLz=h{2t&(QphPXmM+c11_0ZVcs!iscb9B7qa-QAa^#b+SQ7xTrZ>iQefxh~^QgB?U^U|drls6(Md0s-x zA|$nuQ_QMp5LK~~aTuU;rWm@=Qo;hvbU03jKdnW#g~y*<{_R)2>AV0XB=KWW+q`lX z6_k`R|KfRK5YlIX@yID#biVsG|987VpV&ukdqPD{jY(KiAkFkxG`SP?5IR5k9vxz{D|kBqOu1^>JFwxE#0 zb?Cm40J8`t_2P4^m}4VZuM?TsvxF65f;WxSbR$UimWvbSYEVLv<#egF>ho=ovmn8#aqfviI~g1 zpmAw+^1#&7d{x@wnGfp-<4I*Hfq;vuXbI-TMPhC7&V-pPWU~liU{B^$9oakePQ>GT z0zj|;xr-}u$4LSFcoM*et;p;<+R;O>1ayw}WW2-zW7&k|8fJ-Fo{SK`I;)ub2d^kAD=#nLL1g3R=o zbe&K%{!igH7>2jPP0cwSzdsl1ui2`g;Lk{Ft8;j(5Aq*FG&(B8(46V2=LJix;0`r(7bvW9L+R^rb#x#P5zEOJzN)! zr>-ArdxUAO(hf7W4a{sW64Lqtl6W7iS%32OTrRXj8*ZHVa$oC%jG4B?`&WB~1BE8y}U0Brkn)#k1lQMhm zhpX~-4xuZvaRU&twP9+&-`;I1a`(08qQC$LC+mU|#_A(1kJ+33RwS1gFiXgBHcyjm zM{{nY$3kkgvp`&=px)kW(v_2g`td|=DWQnh^=B5wsNh0on~z709OES!vwHGy~p_rB>dH1vI&MgVm> zf3Qu)+Wn6UW-c<`(0>2Qkx_R8J^TgTpvgHfvZ2TPr;=XHgDBgT(OCPp+)~j0**7ae z-N)Cj_>ck2CY(#R{fb~h>KSr2oREY3d3iRdXjIK|O=Xjngsnu@ZwE260BR88CMCax z8=P}=wK{nqakgxib*BDikq}wpaDj5FG#!5VSJd7?T&PiXiASF2P#&o30sCqVeY{#*W$aD;Bks>@IC3+!zmlWx8H8@k~`hgO>#Kf`a z#THB-FQ!N~6?2QlC583ssDw|8^-ojVxe=2AN2GpJFS4K`VZOHEDDV;>IywVklgD!T zuOi$Zt<)L%-N?kwC>E<2N*u_RiU^x4Yg$0SJ7mBeF@1Zn@3DO`4}7D%EkznE+bCmW zv-|<+C6GB&tT+RsIINfYe#u9d8uFXKui4p(cL?UW0ptJXp7x7X1YaE9ZST1)2K2wHlqu!?{NG+jk!nETf{%w^z%zp9lncX}sOjAYF@bQC z%3-hge1ZyiNX7Tp}8b|UOjmMG1BYn1nNtXy^^&dLy0tmu|Ccep%5j&oIAIA~G zBTYKpB5<$peM2@PNFA_2Tm%81hT94+4Ax-ZIJ_d3Qu6E9|JB}QRx?quqNjh<(bVNQ zWbTz`uH`(UHb7d*k@oph>8cUY#gRqV!Sg=7L|tKD<;cv*^OqN!0*h~e{q>Dlg)pY! zgUc;D6A6#0Q=tvjTdveH0(jNhNFO=DxRZ4w9x3(+8eDS;GJ7@C?@~B?4W?=CyYu&o zpqNU!B0U2`$-<+Fszy3A8x~b8TNWB?(g0X=yA2(%URG=Qq+N^&BwZ5`>@KCXx01Mg z&KRgJ1$td6=y&7?4HmX+#OAgIg0@E1=^4gsaEv=82S^0(ERgA%`Nou)%HA_deu?W+ zh?khEP_0b#GfZZAkaPS#L)GTF!+#g0)0k2gCa7V-23M2xNu9KgVLG?ZHpU5JZZg7| z#lKBqR$}TTH$UHiHH=cEs3TsXhS$2|B}X-Uh$EO)09AGf2-8h(Xoyu9_)y7_KAGol zB2%PYw@nZ@USW|lOO|C3E%yZ$W{OK4xl`aMBDcZQLj*tCjKN4zoqr37%)g1q&(K7{*`1kQWoG~kO zT!^7*SqFT*j@3a!nC1?i>}@CdmZb(E&KxR=mhrAK&?KZnNZQ@IF-=zDROu`D)F7?^ z8CT#^jFq%ZOj5abc0;-mS_Q9~#te+iLRXdm@ueH_+0*K)V1^a zQbgp;VodByza!m4!d47*#D^C~ZNI=*8?xN7vBjn~|C$8o>pxBgdBWs`t>K1wsMCfX zId8rXMUS8XfN98h1{Q+ptt5q=vKT)|J6z-RJhWu$Idxo^(oeX3r6_jDbrnm`N2e}t zV2kh=_Ea>3^Wex3LmEuLsZUr3Uy7`?M@2M5`LUFJ`9dkG(C*_Xij#WE+E#7MTJ84@$?KMIedq_%+}O!CEKbq>wDpgtwbAJfV0I zG)G{XuJb$6)=Y*H%#Q?wL8xMZ;CYv!1^ZHU?VzZ<1#hwRZ67m6-dU^%&wC}~E<-xj z6dQCd9J#qs$dB{oVWO8^jydFW;4Dkl#arYx8}|cme5TAtva`7p%SPCWKffi>7%uq$ zI}j=~5=oOOhBlaxRL@}G`-x~FDr9E0vY*l-KhZHMNDpOI!JlWPBB2T#arf(3V0Mdj zB5@q)V{eoQ=_0WgeM(`n`YiSX0u1gbOa6}|7Hys(@FY`~QS)3C0sP)rpUv$9bXgUc zfxBs+=-%BsL3|)I#~AmYW{P^e_c3z&)9$+q*F=5DXoCaK5hiA;u5XMQcofqB*MfME zBOQ#vXqF;o>b$CQn~+OBAC5AU3~L2sIIM1|Y=q@z<|vWqz%#5AC(Kf#A_FL%Y}J)Z zc@(t+=azq12BH|}x@jSdf5|^;Ncc~ey~6)sFmTa#ETWW2E&VDhzi1>2YPAnd4hIgp zl;`^hj)0Z;YB;*$9>U*hh)%g!4a`eMmBFy2y@9KghZVR&Sk9@Dn(`5Bn8kAaDNsl19nUO z9zb^fGv2ontL|WQvw}w)kA_M65QG$3)iwne>IDZCbT^{nd*{d{SfVP%Q#DGA`=0NX>WELpO2;k8p}MkWB#cg5p_m- zA6Y}xVgyr$eM$*XU4gXorF0%*t&t~ zgvm^8m^~`k!=&UwE{=>_>IKxyHhkHy>FW(%e zb+#&F8DIBp4VZf)rUwhMnKxf@?(GjGYL&0WRV-M1lG%s{0r+R*9jXT25U+k`{oQ#^ zSgxkfU1%lwF7%GV5vjBjZm%ob4OsR4{s((^niS4bDF}5+AN_5|!sMcHRu44Xa*cw*49TbZR&D%@XN{|!!u;Yn-8~Bd@G{(N% z{T$6K`q}?p>s?y2!}7yuG?pf}odB_H=GOe(Y9i=}Z+2^QYL|(nhgJp_c!A8IRwXIp z8oiDx{gmL}jHh~A9@L*}ia5OE_`JCxtU&Rtg;LEmS=WbvK;8$XWar|17CH3OB<8wW z#+LV$vnB@@!%EN_ciM_*pHGDajvb$o)hm=$TnqFAR6NUO4TFbHIdowc*)g(z%igpK zNVhVk&pG8&4O2yx9n?)K^tmRB6RJZxu zz5Jmnek*mxFhsMa!%AJ&%HkTqB(&`j&(+;ahf z4d2#EVO-@2D6e?zjh|=~6}m}&+7|atOzh6+SvQ-0-VM!|Wm*o;0e<%V$blPFX^fu;*NA|a!ink$bMd|(mU!+esJJJ_vW`*K4lqOVVKYslDK%=5M zL-k#j{t83AW`0QQypZj^w&5fLC2+I;=wjSh2I=Y_R4=^|FN8Fh9U3@npNHx#aVb9v zC0KSyN^xSAx*M&MA;w%_G!V_VL&xjf15~^7R2o8B8E+98R8SJjPErHYc-{%j#-DNW z_6+$PQU;#G(^u&fK~kF?#4aKe#dmqCpP{54263!(OKlA+Fjiu8!9o6WcgkQ09IrjE z7f!r_vOnEARFQgxnuPiz8Rf4SVuqRPDzV@vsveNcq(D5&znR^C_B4g zX1NYla2XJbMI_%}B70M`Bd?@Z=LLx);pYxaGeSHSEBk#| zs`Ath=8ex4uD*|Y*%o+iFG_`TmFWXqlrZ3cYx1OLYXZJc0p}iRmoi1>m@$#u{jDFzSg~^9>#< zH4<_W@uxGWdA3q#hWLyK-E0CT%C_z~Ij1{m+f~Hh50t(jE-`lNsJ~i;ajdxCZtVnH@tG&1)&c!57EI(3=JwxuhD_uLhyKTXsSyk)=VPX zX^|#wjrr0xZGps*j2_r$;oAziY#49$FEBw{$4*Z!*N5yd_VXQVI^#q6)1q6#9E8a^ zJUCo?BCh_^RB~08^f*iSTr>Hq{+>B?OdctX?Bl<%Gk_XCKbU|ACHp z3Z)3l%wpi8hh&8wi>u!``WvTZEMcQpGNtQS1@8NHP%lXqV)hsxN$mIT42&gw;5*Og zj3h`dlEN~!S|ux10uiX5p_21Mu)Rc(8pao(=xAWfI5dFagZVHWvd$yc3x$xLU+`v@ zRcXVZG4=&9IX|mYp(3r-3^}tKd)$ctPbKp0g9BCch2Acgl?o(|$}mSpnPW|L4jB0q23m zKJRKrC};?@zk-yfs976|G#n1#_N(+fXzP#PzxK9&3x8vWCrD?^ZEEzX{W{~A&#G4( zHUmh1+i3uiUOx*speR>pPmrzuPR5=!5as`xpU86b&o=FZuCj-SyQ#B$ZymNE_h%o$ zI{GIbL5y7@&e9Or)D>T5EVZ?d)JR|+cI$W)st^h-jt)oq%w!kC4Om+e?U8dr3%Swc z7)BYseC!-R)z;uw5B+e}PKykk}M zQn>blJa;mVw!2_jb~T3FZD(NT|BD=0QC#BQ*LfK_2=e_r;guzN8<`5QD(9|erua-0 z@xLjEI#b??y?KA}MU!fnOGnKW$|I`AD^FIcr_)+##PEI+pd(IN}Niuw)?N6Qe(%s2b)eaX%I19i1 z(A;o63Ih)#NcXbL_EtXYhA9h%(iHoyPi zW(9vw-!2|^oLwxpd1m6d?mL3hWS!=Qj1*}1fifeOYQEw<0>)a=z{`N`IYXkn6!C{? z(#0)vkfG+evRwe%W|~ef$~^mCH@h_1tGU^s?cVI?B@{9pRIpd_{tR2P;E%q8R+o7! z^C*6E(2viX1rspNHV>m0h$Eo`xE4P`LGdL-aXHKR5;p=4tp%wDt{GyzYQL~}4~xE@ zp{CEW2kQLHjw$Jt^4v4_m*X#ZU!o3I6(}6fIMwzxJzum$k^$D|xYy90Ascx79s$Lw zctSuq4j*;)%62SjgNZY&S1q5;Kem2MY&Nk>_=2s;2kE|Fn-~`FUN~l%nEu3U6z52s zPDt*)K9$_7#N{`rjE`4IO0IS&?vHYM9I~Q;z&@XAxCd$Y8SFh%0WSZ6I4>+BUt}Un>ab#_1&qj9dsPm#24zV7%Sl3Dn?NalH7P z2TZ%?T^k~wl&@)`^2I`-2RP7XH)OCrD`}k7-f}5jUTfO7v$AxWu!>G@N1&ZZ7Sq%5zl3c5o&D@B( zMh&L(1^*esMwj_RIC@={itCg1H4WxjZIpXONMLOrkKqpZ3zyUu%8f(QMu&$(!c#}- zh*j7>*gBL-rGg6qcFyy+@&mMVXLQzX76!|X-@swdLgCv#f+RKYLKC%V9{?TB!nPr5 z5`=XtihgukN7}f$9c1bGw`8VshP06lnvF_ zd~INz>3XVUJfAdE4)o=Z;NSeTPHA$b*pxRcF8P54=E15VPw@b&StL&UyX~=|uPqh9 zmkOB4^gEtYB7i5li_Nn{+vfmpk?Wq1?E7%xC0nBf-51^_C6m#+iWowZ>;zIJVlW$1 ziHtl-QL)b4(4+*e^0&p zA9f97z$7nCetlOao_eZu%AGe-^m&kTeQ-X+G_o1!iIG63Opo+KrBz5`)B7dMHx2~B z!VcubZXzA>vCk&e4)k-D=OXQeVm!2gI8Aur$uipnhd{txe^CBT#!Tw2!iCB|Taw>ncSS zzC?+KRsk@djZ1sNS%#5xGigJqNxf%FNi97S2V9o#dAM_IHtfqpLFD5=>n17h}a7>onCJIANivLybTI~BNI9dY` zgpz|FAQKdVV$JE4z=@#xhj%do^aY*p`7@tI;08yHk*y(zM4O4P>sy1d7#NyURw`!I zOhSHFw>im3+{zxj_Fihy{=}XQxo`GSYP(U5UF%Jg1&ug=NwfASIt2L%pWUUGBjJC7C^Oj`Rf` z>}{5fjIl1b9=~he-6aqP+&Yjx>t+gEt1c zxB@+Do+yyn}m1!s!WyB|+A*>+$*z&^bvD668C) zlNSqVi{`A9-L|bHM)i6pWZ|{?IoU{>rD_oCHJ~o(ygo{iTC=TCA=5iIunha6E zBo)%hc#i>+U^Zbx#wqO3J}Q?$kITdUMqrd8jeaOVErNegcMLO|CNTO9^#d5cQ!SlR zcSVq92K`sz6>)r0(v8FyLzdocba?wM1X1OZS`A6vwt*M>+B=6h@W9)0o~nDmx3F8L z6Fg}&mwlh#qd2X9Jbb)_z9>Fb%5G7;uRKEB8Sg<@W~k27I>b`HQrz1J)6xiFg|W#z z->3gpo~!Z+-1JApQaB-b&Mo%^9O05L+~hbaX&m+prPz1RfhY{MYKHPQLim^{nW`4w z3aOa6su#@$5A8Gnfq+0PYlBeIS?#z+b7KCZ){g>Ed_$Mi5@y#8xBH!&xU;K+=-54_ zw7c2X=UfLCs4tkdV-IVA;atb(qNic^G!s!*aI==rAKr1wUJZbjmfd{vgwwJ4XC0Ru zfAPP0(Li$$?YreT{Ejo(`gz=@%7O|Rw$$U7K3l5-jRQiF2P>Av{z0VtdZO7guHy0R zywR9^*IXVb-df}3<*45J=F;W^I*C=`WAfD0reZiixf+r+SGFc(#jKLYTKCxW~oLTRcJdr-!mcC1n?P4^h{WaCEz zn^A)>uU!1D_vLfDuyUL&TzuPRkrki;c0#fS9-50stYpMY$9{Zerk(VSE+)E{Wyq(;Y)R2IS6Z=kpvghQO!G>PW5okYVWh1WDgE;^5|Mm zs_tDlET%U@ctQG(Y!E)3&GRn@Wc!QndsFNoJI2kfRnf~a!6(3&sZ8ZAeXV!0+n5oPi;~U|F}ON+6HH&;2L06x28<8;IS(xGc%kMP8Pg^v&_ap zsPhb(^27M6toA?%K3a%Y zu9JW*0KRJDpLq<~3E($9WqF$~SSxzdz(m+*dOyZ=2Y@mBH!Pv}|8wa@+8$Jx7aq=OTgUUsFx&R$RJq zskX1O&&iru55K=at2^+^549pvDz_V(8++*7Wq-VmL!fOwIYLTyu?IGJG&rC~ zdJUtRSHQKXYee)0iRc1*70H1If9co2KLxJq(U1&t$^PElSevd`-G6pljdM{!0SZ!qzc{jT<&~z#Z@bjip_c|o7_u*6e5HhU*r2C z((~uht({$6BDxJ*mmzt)dU9)S_b*Ru<7u4i%HAJI9w^{PR?m#%AjDNJe>-vGwpH<$ z#>Mkzr-qMC!tc`UoC|FObvR{dKFG1R>0yn}^0o6oX!E~2Eh~QTo%)~^@VsCmPmEPf ze!SBu;$E#^emYY{{>z5#f^gN7NDaOaCi~V|q&bUCN_eEIXFi=+{bk^FL0IJ-L-jG& zvCRdNXX`fZB~H3yo&xAyEgY=B3~k3sszRU4x&E@}Up9mbokzx2KdzZiWpLN@8)G5g z$Q#>!jxhasREq!CTfxmOz@X{LdY^H#8AjFG2^;A~zRuBipN0KoeWFig(HRGyoQ7ln zQPj?_vmPHZ*t24G?3TUGvYuEhuFkqU$U-h0fXrGsIjxIBJeBg>V5NVwKBG(UZ4<2| z8hSWI)?aUat(hJQPST)-y(Aq>E8d$y{Ohz`%5fgo!j(==KreUzY;Qj}gbl@TX}D}C?ibz*=*PfV|L`-5(g+&<=o zwaoy>&1Ie%b4@jc(SQH;6QR?Ok`124D&8Mi2!?wo7Dg#=wFxO3@a(`cK z2=C}Zo{<|9!=DK~QI}%F)}-8k#|*FT{Fb9bO{JG;{gXd26f6Dn-wlCHB1IPW7l~dQ z20T1C9Fq)|0&B_TH>Z{PTtf7+d!54{|(aA3xV5xJM& zb-w~ahZ5+WcMkr$LOcZJ&)0){u(y!03bN{BUwGJ^jAp#Xt{%h+;RcjJr*+jL`U zA^+7O^c_ZW#j80zp@IKIVb=r;zCgIJGKddx{{{Z;&l48ft98-Q(EsAu^jp4Zpmx5oOY?C{)u#*r~eg^6XN(Mvh|cx@hWn;D^{)gdQCK9aA)(kwgF_Bh}o;d!;eUlvG16Zv=yhOL zq#C5uWCDD`{u#T?G$?*GCc7(^|JRs<;q}#KBowE45xUZGyyhcRQ7q_61lBEUL4f{- zsNtU4sHpgL{1RlTXg>%C{{L5F$Npzt8qyHPCfl90Iev)o>)(*xvv5N@NBsZCoH@?_ z%Qfx1`@fBJ)n%0t6B9LdHUpD$L6%j~|DVaO?_WRu-;bW-e$UIn z{=bi&JN*%^t1Fek>i1HpU^9cRqmAa6HTjeI*J-vw+kC@sul=cPf$pcXiEG~Q=!+C1 zQ-Sqp_X&m%qM}6Kp^#*x+U(Vjh!^=vV&Y^`U=##5q%ew2Fo09+jl?a}gq*-@rk9PdFh`E9E_z_;OJ*v`)soTrK6v??J_uMHc~Q~R%w3lf%* z6I<+q6Wiem=7VwDyT~a1>UY`)SF*&@4Yw8qVNcq{pE9tfT~Y>qzZV<6;vJvrCovBp z-4AtyC)+(l1=6!|US~1|x?jcRwLh4;2Yu)CB2p=(QthiN%jYj>CjZPoY>!N*#V4d~ zwEx=>&Rpm*I9t)K_UgjbO~Jr)_iia@UK6G1U}CXvg%PvY!0Wpo(xf^yQF$+>O zA-2xeRj{_4-&9uMgczvRb7!gp>q-kR0sUJ-p+E!uU~Q+#vcb=Fop>j(Gl9u>Jqq^1 z)T3pU3YE%HTtG@8hKX!t#*Pr;IU?KVxNjbqW>iMSZv!h6)AB_M@SVY(JlOTYOI0RJ zd0+T&8bd@o^AN|pmL=)%>)=dODk-DBHKDEQ^c^c|Jv(A2+QXXY%HLKOOWQEYRHPZ$ zx5XkWV{PlnwmW1+0{DLg%LA$(8gcIQ;I}h=q`*+~Z`h%AO~zeM+sIu^fY)l=3tJ4% zcn!@csx`Hz<;>lHtj?Hs<5?$zF*ws#*#Q>X8k<)Fzo*^kvEw6hN(5jPo#S5U1YF=r z4-f`XfnzcRerou6987(@&!vb2Ui8uw*ytN?3uma^l7h}Yez|)obTFwejY$b2bIT7J z%gV$Q>SW5w<#iF&L2lT8X2ME1N5m#n2i}4Y+8eGyPEA@13q7bs%RPhed3-U&yws5a zB8r={P2;!mSfXA;$(r6JLM`eUD4&^#R|D|#zj zhA3k-7%yJPl{WW~FDX8=p7yZRVQ0An3sq~v*B>rdc zuPQTUh@c6@Z|XwJBw48pDU}a>6W?2~j4nrT<}i`)`$ZUarIpyNAW$VIcvC(k0SX7n z5WKE)=*UTD4F3o| ztzBtk+0DbkzObB_eS0hcD>sr;*_?SpoPejYjU{?jim75tl_(V!kRe~eAUWhL4V$6O z=ozH-#j=utdXma-7hm-X5`|@HN+g*pOMMXkZlbl0bZ|7a6=`_f-m>3|5RAnhF@ZDi>$#if`q zBZP!}*nQ4GY)ny916-(u?FUGR0Fio|h#)$1M>9y`#%hhk(GUlui5Vy2?|6;iL}>*Q zVak!47n>L_NFVei1$aBS%*;&Yb;y#7$bkw ziOg7r1ObvYejm3J9hy*nKNk6SU&Wr zM>9q~@=7}T)L5_|4>`o7TVYGBd{v54hO**E!5-`EaaAiOS0K}kGq-H2055%5O$z&CF|b|%rEIfKS8SwU>*kk|^zm^XkvFKfG()Q3YaFfN zf?7iyt-apyu`zO)-6;fduKbv+RC3(=*y^QBA5jL6M&WTwWPts?GUAbEhuBpqP2rP> zhMcqnr=lwb!mnKy3Rj9%mco30J$?pzuR^*7acRj7sz@nB+k$}tYU)HO3Fxw4-tW~O zN$cXuyQFkRBp)F_X-H`(a9?-FBk9xoN78g4Lr~HqsfhH$F5v}alU-@)OPg<)GD8YT zR4cOX#*H)s&f?#5jo;%gMQqBr*!>@_HyLmmDzCWV;Rgmyc&AyAi_LQL3X`SVq8KeZpMEHrU1Y}K1B;EI6BF9cpvK0*%OV=f+0@ls_i_UiW~ zE`i&|PCtw~PrX17qi<~Y;=&!TPkRr@LZ&ppSdIp$-5k`H&M4tJrGO(M>N;hJ_u}9m zJTV;(91C89CQaR3Brm3GpUDpPauUgM*DN2Sl9q;#&5z?C9i@VVb7c-BI#eKY>Rl-# zT^@~4GC|eJA{L~^b8G2-BaRCs)TF|!pa-AHif+$-?U-%OYK%O(qV*c&-HjGRcQpU0 z18R5FLjeF3Jj`wcu_=;)`EAOy)QgJ^R2R}b{B4WC?flsyio%HDh&TpPXH1O9VFusW zc4WZW@oexyuuVmr%LbKTgT}33gn${8 zK!@9ajBo*@(c2T>Yq3f-r6bGzsYSo7+##|JfeKy3Aq7SIq>-Q{jdSAER}Zq1W-8RA zp{}SHZmQKr&(RQY#L*X2kR5>@tWLk2$oO%0=+h*2C4I-=rmZi?g#vK90ZszShjoGr zkw>-=)PtX+8OYD_QLSo54n>bezk;OAG%>i93eK=fba$1#jy)RZ?zBA5?|&6H)9n?| zEhWWW&MCJ#>2Jkf3ufetxQ>Z#e{@|Ln&JQGqIPBZhGL28dRGTP{hf)*`%_qV}VQ?kTBWQ^Za<*xQeCgc2fZkGe&TXpn>d^H(|Jx|cDImXhjb$T_N{QbI z-{=&rQHQGxf&1-pR#x{O`70J&jrNn4Z)}AQ@N;xATEsB^vG-{VV3lN0KS*SsMHI)T zK)Z3ag|rWev0O@d1hL_4b~ln>9B79RX5_fgc_g)+lfi*ha*O2}wc|w5Pm{1{>{z#i zwkOgCJHA*2c0zr@6~EIw%81b>IlWZJaM3wnTW#EL3<83b)EKe$9C63k-U60F7I0?p zd&YJzym8d>N77hGqZnmyTN!e1)>wz8;L%JUz6lc@^H@0ces5bzs6GBoJ*ZJ-u|OLS z(q&YoRmp7(A}w8R1{M%*Txx96W*Yh7>X_&z*PTF0ER+=U)L#da)T8uY?v-^~-N=cO zhi^V)RdzvYKDNHjA~HjJe*Bv@#MP4L3#zTz3#Og8GfMDO<&l}S>#2Zp9Rc4zP?wO2d#hTQlTc)jXvXJg} z1cQCm!f@g}08BV#pw|D8p~R4AogTNan{losAx(wYTE2^g6z%~Mn^?yQN2*V1go!e# zbb?$7$cpl-A!Lkt6b4fJ!E zph9Hn%{s$&2)O!&V4u90qU*Vd2&CL!r7`=nF@pr=sDs*)K`W%j3M316T1rzj<3tut zC@Pv5YdRBAeY zBZq%Jts~Nm{UJT#+7m}`K|!rA2#=L;VvMaci;o(PlnIN)U);p@2I*+{gyW@j^j#i| z^RYM$;{_@4mDAY1yl&^mNFE6j1KH1U+;#q^`au9U8efzis^nJca9G^9)!Wu8S#utW zspeG`VoqI^84YWO(w+F-MRcT6dN}hHmQspE)zgD|-rRsVddn0+H0NWIX;lft1o~<^ zZMt#_Wxd$&xIO>4YAJfVXl-shY})U^y$BD`41sqjfp>5T0Z(uMv2LV(_uxDMH~=|y zIfXsSMARA!TR}h`6n?#P#YhC3TVnhjt%$Vbx)h+?d0R7pfSE$LD-R2e;?t*S5;W9c zPC`Bu(sIrKHZXk9vyG^wK~*UYMT3SIOjDpEKUWE-_ z9kfYirWyRnlzW_XyFX*vZv=ICMCmWD=qF~4?5WklJ=zMGJ7WIe=TAZOt7|IWRgN=q z99j-LN!JwM+Sads$gCVRB`qo?O-sBKwwoON6lvk$$(&_xJey{rk`3G1s~0o_o&o zyk5`e^L4I~AN{4!l^=X>vr2!%Y$5JP3H{%dYIghgsiswO&GVdTokq2^^f zW?ze$rSFZPtV;zRI-6*kb2h++@1_)DSwjEC;(Fq8ML=Cf`dKsjBq8ymRafECQ0vY6 zDfR_=vfV0Q6KP5phW-dWYyTPko}ZA7j)3Z05h;v_Q6YH)J)!SudbY#g>tI&hU5sEP zSk|9!S8??oQ@<8_GW-ba2CxV~KG1vL2Ao9rivl*$1A1==)p)JEtvzx@m+gwSX8dMaQrhyK^~ zF}((!p*7bNr^s&iljKjq0LlB{kKEqBxH)ZU=!RTQU;+vR$JI1XBTUeI@v^glF@_VL z4g_vYN>>oSp?Vqr0pxorLi3JaoOKHPUtI1o|NnyP`?4L9h+<6?8X1FP@wZxH_QJku zMLRf#)e7IKWA;bT))o!+)79*dNYPI=Rj2DR?Ls6KE5<1L(6iZ6Wf5`0QQ zFoKnY&^EmbOUDw7(f;(8n9YlK%n-@{l9z&V&yt75NU)*VUFBg91bUSNyj%Fz7o_fSyn0Nk~Lt? z`ElH|9Q+hvO17n}y6^xIl=MCBr*Pf>_z~b-yDtit_P4d6usK zdCUvgYEa_y!&MD2`u{g-Gr0G~J1IQ^E7y!L<{B1Q5XC7|{{gql{Bp`&Am8RHEF1uI z4rN(HHb*5ZMx$K}?oiMoxh7BskMG)QL*Zb~vj_&Qey_4ZMeQ>z@y>8|4lq2KUPY?$b}Gafull%Tb;#!th!1YvCj{%p0oK2q3{1Uu@YLlPw8Re|6Y0!octC@Y(=|_ zIF7Y;PjH2PNi00D$b%&!@?bp0GM+jUEMktmk{q3`_?y~As)`%o{lur-*H%$JIxh&# z&j*T2yd)#g*MmK3g$bk;R0QeG~V^M4aOuG@TKa`pg7nQv9cKc^#PYRuU6zS2Ph&GaU&h(z7M?cf zSc$bHQ<3TZkp2I(6{erUcGw8?3;QtiHp^5N^ySc&uhV6OM3p&DQ%|DByg1i{!h%dCf|;rHi>qv^U{Wj27a#f|0cp(+ zZP_QV+JNWn(qz>Y-$b>V%=9S|64Bi`-k)wR4S^A;UQe+uac z5PwrQ!P&_osTz1%xzQX;y-no>`wg5nYk)#6Q;A z9wRObPdpdSLfvP*F(!a`5E50?VJ0p{iHuT|ikNkR&j)Vk^8WtTJ;$&BCfeX%v6?S+ z|KC48#7Ge|4+^hDx-r;dB7gk5j;j&)cgaDaVzv}Pzxc3fyA>VyVY&bQ->`od^8D1n zI`JM6=|11Qwm{A$P->sG*5{Rq1F6GB)b8$KI4%CbPYnJDw-%H%qK;ew*H-?yd zbK536LkeLyJRD70m23MFeI@x#X85pp*9X%q!XSs8tU+cHbEVjB536HG?6R`Kcw!1) z2NUA~cB1i1RI;)cIjp=@u|~_SqrU&ud;P@oxS?2wBmMWSaSUy!esSgz|BfGHi9Ou% z;a4qur?*V9n`w)c8D$Fx5#cTFP09?FO1@m@6yln~&B3xh(i6-7)OEy{CNW8JuEwtb5IWXyDA84+kWM%He z68UG?&w#N1DRi#kAZV^THuiA|QTp{2-*nC9ihlHjF|VC;-h0)yHmTgk`ziq%rvAS@ zwhuDCmy&qqD;tmeN^t!l6o!t}t8R@v8~C>3r<#>(DTr-H5@x9wnof!2;-^Sf{=T_S zk;)1)jL4YOhZ(-x#W)CF2phqoq2g;PdcQBf-;e8_y99&(l6UtK(1B{Y>|%;mQV1?E z!@I~-%(#1G6q#NV{4cqO0|946216Rsf|u}!+I>vXS_-yPz%c)252+6S z*E+p5ITa0M{ohagBn%}oKYQUsV?vR!1|S4>R2rlG8izC{#L?npn@nFZWWu({L7Ah` z@7Lk9CO`JZ??5AZf=*s=M$oc1I;^=#xJk?}H4X?9#@6eppRpx{SHP8i=6f2iCbx_1 z=X(|hJ}*1VMnPKFrwwKUOr-p4zjmFnonXITAWs&?Q5@kS{_P{Elx#FS9H9*Qg-J64mK^*lW86b7LerMJ}Sw1!%ffvj5z&uJ=Y-&X!W)ji}f(Q&3hgy9oV zu-Ww407=`GcY=uiYH?HoatU~DGqI~*@!5yOZ)u33>E>4Yd^Y`7l;BtH|6DvWMV#3@ zaB!N36E0}^P46#mg0g|*<%Ni4Pofqc=FqfD7ZZ)n?E2g>kYD^qL ztmeU{X|f#YRQ)SyDtX#O7W~}sp2R;0gih)*!-Qfhk8dMzc&KrN$^6jk$g-A*Yj|1z>ag^N zl}O#u%(G*AW2#xSOxcif-?L-ce7H6J>479FbyebZ7<($u&eXZsx*okxlS{8(ao;_0 zzlUJ(0AMMsKEMj5##UK4_j?XQi3fL(dn1+4s)D;o*)nlMk;Yc!h;Tu-P0%b}p@tep;?*H4 zI`Tibev!e=`kIXI#d2;qq=Mt?Y9sTkw|5fOD@CS*i#DM7Ua>TG{QWcLnP~&TgBtW> z9)~W|Yp-4LZ^n}5##rJR*pm=-tG5f3XCVjiV1WJUTWxxb3i~YtV~8zgdi^RmgePhc zOzLGkOs*lSMWFLA3@vu;v-Xu_bJUrkHAZ;glRQhKQJ~gWZ5z|zm+%_*&Ri}To(Imm zW>G6z)CU#Y5VVhSX|vlyzpB z94yn^!U!bx)pu36>jz2Ks|xiFL||ZMG&~3^qbXfs9(*$+yz(Usd&WSk8c{FPaVX-y zm{Q==4N3jI%-aP=|9XXp!I~ED__6*?@rkr~#^Fc-Qa`eKlrMH0S+Vp15Kak55138j zz*N}Ub2I!sjo~{q4PV2j8o>K;MnH>@xLgxiV_OPQ`{0*b3(((+Hi7S$A(trqcYUHA ztEj!pvY-Y#G>yPCiq1R7AvowiVC_2(fuW5;ZYYX9Gldl{3d18T7~=0FwW6)a0+S&u zu{7?f`;%8`U*^COvtwYcmTi@{7-)&VGev&+;0R=Z`|!N+z<#O03wIBYQqNC2WsB!4Bf2VVfOy)a-<=J5Kr?=ZTJ|OY>H{ly9urKmr6>Hq2~ATn<+lPMJa3v+LVVyykp- z1WTTCP&gZ%p*Wv&0>ZALDaAjoI(fs0QmF2clGz zqk)x>f{5jr=dX7_z-GIq8RP$2xWVDo_*`N7y3qOyt3@bciu$Gd@SzRY zQw%Z9o3%Rd{69Lw8Mp85n*l_r=KGFumD$kqSsbA;?7FPgykj_4;Z#7#Vjesmo&54c zk7b4A9LRUEfNT|8wYkQ?7YTLmg7}#eETV~KMjY|g(HNUPgUMH`1`|X7v*E5?)ucv1 z0@SI8s6jYIkbhi+OZsygPD>!@WxjFEzm8F`xUoh1%~s=}@wy}`I|t#E6p8;ii&J_h zZ&M|;{L*v?*?z`FhtaN{3-&CKQng!i@?QMKT3yXEavcuwfMuaj)Ne0_|0(<8WMai` zo+m%C?^;<``(*3q1-MBlHJE{p+_>j!uZ{G8xTgjm2HpZCw=P&s9k6zDk|p^iR|q3G zf z%ZN+Y>olcnLmx-Rt(55RMRdZ*7VOo+Yg%G-?s3$K|3ge& zJ5Jme3(}Vn^c)>8i#O}s zUSburv;E$$wszA*?Q%$&R_MY#MI0ddL+iRWgK*MUn~yuPQk~V+_H4ytk( z5h$P-PHWWv%AR>N;G@G6Fq7OMnH;eV1e$DzKB&d|mr@6{JvSy`OmSXZzoeJ5`|*P8uMiV;V;-%PmKDLp<0hHw z+?qA-%DOS-R(&^$;$nUmF=Hx2-ehrdt}3VfyYGvP z4j#ZxdACKb{4A|1L(fghzuyiYWn@cTpYL_N+r~DQ&>w-todKJo^A)J^7XD)B-kIJ8 z`1LFvPU_t_fQLO>+9|`@jCFx@8S@8aEj9>WXGL+YwO!(P*Kah0EZ8sR{l{=}< zP)m_GHY3bcL4tP+Pd=}SAjo|NS=|C{9pJQ-Yj`x^Z3Nm?@@l~FjmH6wpJhA7@{Hlq zS%KH`SM^(kc#rQD*mG9_N&VI2>ljr$gj)8KKmjnz8G-ZsetILdCb5GodYt%vq<<9k zG^s_7+w4axy7UQFd&A9JkGT3D0&yGP!pg18$7V$Ih{Qk7j>NBgE)I~gU1Z*SG(vje z`r=nuYdIt|(et&-pa+o~nP1-=lPi+9_AC1Ai?g2iqTf87YGnzGVd{1M7JoC>M=V0w zrY+~FHEoG)*fs9tHD$GWoeNV_7z@g}ME;BSXyf(QJ1I+`<|tQ*jstRQwpL4~c$F%; z!kk|VOk$w(;IFswklqSdXLT(Cu^U(MP~Xzl*T4B56BJ$wvHE)fj<2;P;)RTP&)WBW zQj#QDpsau^7t@}6O7|ae#H7d_`~yc*mn!v<65vNOI>O;fx8)NG6qkTz>5kbwV$lCN zN0^?8AdCRt*Fr7_T?}QiYJqSW(t)@D}c-0}ZLIIkFpC-OU_|PZ|R_ zZHZz_@|UW3Lws%3ItNPA9eMo12&QP zIP|I4@C{mbH0lj#^03vN`%VSd>cEVjT4*&V+jyt^L(;b);e2g8gN2v4-aXl3f`7%S zg2KaD=`w#uoEpqt$u|FH8YT3y=G~t?VJFxKcGHTcTV+fKda|Fz5$P!@injAQYX@nCp0`Anw?|JMC`V#Vz^a_Ftdl37{N&V=oT z8!Dvg+M*ri*;OO9(#}c4auwmtaEV~8r6A7k8E>dMwm#g&rLcS# zWI7fW3R=%ze`5gh(V=QSJXad;=scmZjjoWAtUca;!Y4HL3ew<9~?N+|2GWQc?qlATxzWxkHsH&SGV+W!o@GSD#YXfTke3H?7+C?MEKEZIInB%`H?(RgT0h!;h@p*yALn)FPYbTpSk*TD;oMAX{4|Hghbiw-~3wY`^tW2$YPmsyXA65#MBgO z*j9s&P$&e?RE^@#0t|U~-JVxIjL4HZQ1E95-3g!{2*fg`5?CLKx+pR#pKJIjSNJ>H z(gm|BmvWX=5LR)>epFEt^dq*}!YdwF2HHa_V7?rWInXAW3U~yMorft_Az@Q)45UvL zY;=W&DmRd=w@+a8QK^V zMzUt#yGbYda2z0Zp+;~>t(3n9a>Dor0yHNlf`a%{eGC}4xqw09LX{}W8hY-Mp3+29 z`ZJs!G({Lc6>5{q|B6<-LNah7{|M1JF@RZ_@dD? zjc)*&2DZhk!wDY5he7b#->@-M?{8QwHlk*#`;M*y8N@qU)Z7w_|A!V-eslicI8RCL z{kvX8z}w1Kx?&$ItzR{DkSl?k+Mq8%2@lND#sCa2QewU}%5rSQ$CS|+k~O%V+1Dh1 z?;O%Nl!3QpdH_64BD{fukPT}!{@Nmv{ z($&L`=B~Jj^xYIbSQ?;s+d#-dwUv*4fm!iLj~`L8!`uyhcc8{k`^+ACPiC4sF=dic zc9<%j7uDtEDO<+tD(P^AdNWe^Q?aAy9nG&^qQ5@BsFEaTG%&9#><@@!16bbC(^kOD+!JYiqPYFaUOT zMRLjQB*l23*72_9Wpgmp9?b$>b#saLDuRaw{~I>X*WsR7 z%fgf}I7oyR0TkN9)7rjHz7j6@Ztq2r*$cF&clW~hT0XnkJ){~ISJHk_Q)jj|#7hMW zZ?NX4FvwIc_lXR&U>%lia~4)wI_San6LI|?=ZTaz_L@z1Z|Y*!%oZOk^9_7Tqt6S& z-QLdoEWFA%EVH=Vt0}|X{zW9RdmNI1)ubWq%l2OESA#TnCPpfi}~8xt-(5+&Qf_h zu5vH$J%lPm?;b?Jtn^EFbA>2ka?*Gvj#q0Km2JVl#+r{#N$w;Bz{ix}w#|wJM>XF9 z%~3@}|GijW|6gi)Vs)lOyl?t37O9b<9w|7%0v|L@Pgx1!wspG7Fe$PF-FXN%8P0Mc z?D*la9rb=ECh>}n4qpM93wX4WN*{*f%}pAOG!{I=1hjgXGdVOpI|2cdY%K{D^jKn% zvnO}Wh&YX(JbJ#2;8%xM2foDV)qnQSd-1G5S1AysA6c{2GmLKAMg9iw{dmnNz=OD7 z5}(rcWj)|K6-c$^Ne~Q&$S*rR$HVy%4W&%ZUq4p4Owt^5jB8`I<)9=EI__tMKT+0t zpjjXuAR6#ob;?-hvHjHBFgnf!&C^r3MGlJnRJpB zJn-GB{}OAL6g0H>%75kIs@yTgHt*fjfDz79&sM5$9J89SdYI-TKFgO%hCW znz@4!#QVdO%9xM&4gRWihd-2hGyB||WzV_m{ArC~DqkoKjwi2o-}ch!oYUf6ZcohU zrH&wtuN(15KC654j*4)KdQ<8B!OAurh(c%O-KPICQ1_RZ_fB0P?h<5;flLU|XmdH0 z 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�(^U|p1)WF%)88L}kF(IE{mWXVw^ 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

    0j>smKD_H8QT3BjIQbviXeXcAcxm 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

    n$J3Ym#D-62g_;Y{~>?;Se|K|h|PI% zQ6Vl#sNv>rLSy~$v6TeKG2UL8XYK9qSbO;5VscLX_iYjFQt_2T5Vk#+fuk&4xN6MBOL}w33v)XAqXB;*FI!qsogl73xYrX z-ARroEwdBS2^I-xmVjR)6!S7-Ht-Ob9rsIH;}`i4606W51N7r~$UUbHYxorLPiaBE z6`Fz3`x8mJ4@Frt#KxLfD#cmaClgbfub@v&vw@D4DW_V;i|`J&^M}%=GcI!nR1I;a zwp&tVM5Q8g@N|!7YQOz&iE-|M!PpO@;$~Fx&3)`|#jSI;@m9QA?Tiyf_<8xaxTfsT69&vY6x$+cLT*bh?wasDk zupw(Gc&*LXNGk%U*0IZ(DrifgFDEhDX9s|1ot0wAui0 zKIRn6Z+iH`nF}`~NB`X-HK5nDk5(Y`YKCILmDjF2w`js3g%>4$$bI0|SO0&celQiz zgPN*lrmHXBILyAnuRRr4cs}y$cmB;5LK;L-7kSYeo}B{aJsdC1>Ds!s{8PO9#tVNn zd`DJqBQ3{gQpu4Y_BrHpr0jG%Rw9Jl&_DJW(`V9sPgT<|N++JFCpUUkeYA}FXv?Qu ze|t7cbjN2=AVG~|um1kG(tGUq8xh{!rv#suQR0%JcRLT#`mc=$aXL)2qx(KeZNLbK zK8*yx0ri8Fbikj{3uJd-$Pw_iW$7@Rr5(SkXa?3i) z%I#u<0nEp4G*h+3etw6NaWHDxV9K>roeJXJ)tBRF%B>$xS2O*zB2c}%|FMee8^+w2 z8$2HKboa+4L@ZtJi$G2QiR1E`&m;-iY$|>MB=8(28&26h8}^fgH~ccXHkdjnjQw`a z7*V&mILc2e*{>>T6T&s zJ3az}yy1B;A{b|VMeF3rZfue!6&mrEu*L3t^xDlhBrmJY>G8-REZgtTZmvQ*prwX+(neP86!Mn!h z7%M}>IL-H{{LSHSz6Q7}F=Z5TG0~9>XZUpp*@qjoTLbFD)EfP)oah(aWCb{O-`5k% z5r%c`x>0&}95_cQUx-+D5qyqiA4K4sy(9YH+y14sP)u3A;^e1iNbBqMA$l{t-UHK9 zKVAX?c4*NLz@D@S0Kz6uTs&MRo8`OG=-NV^d2Yo!uXVMHj#RonJ70mpi)@!qu=U{! z;|2dEDL^rlj=`7LIzqaz)U#NMW%hY%_QhEllH&9VGa8kEGGYG9^ zKeJMQG&gd{>xXZjmvRAtqR#>6kUwpRL=enqZ;Sn!<3ONh+1{q}0!j99piZD%LH2Ty zN#k0G-su{jh**H4r!w&CvNOEv&&ET;^3XtaVl%QPkzR?ru7Y9yyP7zwXfI%hILC=afbF71N(%0D(q{0^JjtwpEi-xk6H`6SS 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 z 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 z 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

    lYoxyNurCY%#1y0!Uw7{_ntd~tlD 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%0D`#4Qgl>D4)kj}Bm`%oHPcElhRi_H z-5@E_J(p%wXLv0zw1|ILWDwzUVvjop5L~bk&<^UrNJ-%t)N7+1=G!m|GMeQAWfmmf zU(oxWwy1n$=%^)RO&ah#(+#sTNIY7`I6qH~ab7zqy}AJzn%ZOabbEh?p<11U{h|s; zNiF5BvnNnJ84uo95d3W@>wA*_Dvw;$9Lm@3&Q{?dwZKdM9*HTF)x00)j<0ZMUMA8m z7i=E!G){l%^!s)6q?@>3${#qnW7*rW?&@B?d#~{jq#kV-Lpd1{dguKT!rz@qSTiGG zE{av$6iS4+IOrceEA6Z$h0QNq|ED_DvlEjUYd_RCM=1~kE|FZLf8?f9iwFXC(#*7z zfgvKyjGdJMcgVyjLx~9jGAIvmo((uxNdqLn=ZTP+DNJ-8qoII;0DFO@*a?ar*l*ft zz$2O%k$Z%duN!}`FbuE-yUZsMy3A*Mb7;9gFlq#Z#jEO#GSv*;iSgi`e?1u93br~s z{(w+K@YzSQ2<=Z-7|)G;&d^J-asGH2{F%iHYyP4 z|AG7C=l!qQ;Lw`bkHF?T!ymD7udrEu2-}ka2gN7Ez8tTj8Pgvbmj24|7Wt=`!E$#o z2DBVBO`;C+_#Dq1DWBlyuoWK-XJ!f^gH{@VKfRtc&h_%U#8g%=p8%%d~a@t5PR)?$7N6@k3kxahHq|Y#ELx?EF92R4d z6z2*BBDKN1Wxw})+ro3p%d@u7oR~*`HLQ`Z0IOtXTatJn0fV{-pnag)P9g3y0~!pS#7=)VG})##;wU*eyt4!gaDuJ zr$D_ymBW~T=FOflOx9#y<#AcxGs8hX_kG&C0S)w*k?D~9zLv9Q`fNde|F!iaNr#-Q zkEy~ojPo4h} zW$P%fY9H1oWMY834U^twL2)t8mHgvKXq+~YzEq|7;BLo+5PiYHs7 z0oRqz7aH{Og&k#vXwV`kPBA43_8LT?rlREGD5BC}IU+N0gl@7u1=wdTgjrocy}^!t z`=0Uy^+{)(&fPFj?l1{K7hDZs-es!UBc-NYZVV`nv;_5e`-^w)Fb4houo+O`7=o7Q zp;N(pP%$jT1JNW1x?*V6xZ;?tB$0?U3rJyHR!Q>M&66<~(IydWyJ~5?>eA_DQ?-?j z)iU~3=n-__V;iMRZk3bWSu#+>!Cf2Gbayl<_To{hL@rW@wtJD{sTSxkaUy-f$IEy8 zI(3pmZZ;iEoCvE8wK8SO2xr5tl=*b#Ai%5%6)Qvp8*eRU6sX3&}KtpK+b6!g6?0zhGHMtSYG~e$2)BEX6AEP ztysgUw`J$EUvf5i^#0|@fAz#H*%wfI{l<;Z7tpf<`sfYlIez0d{d#wwe{#V2T+E)| z?z#MWThHt3G=DqRUi^M^|5w41iAXJHmDJBO&2d_9t2=Wei0LsFTSJq-y*)*6X*zp( zCUa}*#2(|>-&pCklxbwy&eU0Qrxu)z$ z4f25sa!WPOR*3r4eJqt6x!4qhMiWvEihcyo{(i?bT(xfCAX0%Ii8oW+FWFKciPBhw zKIs8!RAyNrt>-%?L)Jhrp#%QJhvMzd@;0!%Kjm!ncNyP($Y**0I~dS^9&}-KPT}!{ zkS;S8r_)N3DU#wj7(L`q^x(}SFVGcr)g%p~7WdEXyI14@$u%J1- zNl2^W!^mt>(6VOgcwO!VHfF|nfhUtjP0cUxFg^VE|@2-_@If? zl0n>9rW{$cnRvyYc>7Kdn@u0|VJVN&sy;1zF{%Yh0MPR+wAiY-@83UJSpDrn7;(ZR>Q-1a)${GNWfwdHX)I5)mIt@~@q zA;YlU*nXO~<;!f@(RxH_WMZHR>to!^FN(5xFUI`Op(1kzHz#j9J=;R2;06)CE&P25 zct^o|@z0Cnik8-NZQbNwe>y4~$FvL!>LnHh=|ZvqLTT5*;2o^(-E*Y$LUk(2Z)hx$ ze!Pv6^f%U6q{aLv39Y|YP`KQfkFAL8W##MLDDO%Y$ZJqjjNv57fWX5;6X!YbCb=+S z`&pOJ#m3X!%Xw4X_HF;udBu8y&-YVuI77YlyEWPGg1+`I>o^j1xjFv!hLcJ1ClTpb z_1P(XfL|6B%L}SzmNFG8#>zq2`>g#ic-j->QCec8DKthTs8FbZC}wm*k#KqvEB*~u za8PQ2BrXQm#-*VP?KaRT&YY``KrlziHSh1l?K!L11ld

    i+c(Nn83-v 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

    F?W? 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

    (SsQHo7$!OCttCTf@&r7@-6_ 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ℜ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 z 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

    91++QMLy@i41JZHJVPQxRThaQ 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≺U@dmZuY zcp2J{C4ufMT_nUD|KvUB<6C81ZuuoBhl?nhv2K7_n<&)a6_BPi&q2TSz95Zasw-&1 zVq$@P%i^zo^~nwcbWOnPBK$KyK^o^I4e{s;k=wZB19cqq1WdO<9@@5{9ReSAeQDNA zX8Qf=M5vdzX0L`$V)-8k_|*yX=X(wFYOE2+Lb=O0uD`!$ZeWG3yZQ71h(N^ea-t{M=;Ug_ zDqRX1qkcD$OE!sx1u^be4WXk#I*+wCVJZ86jPXvOa()quP2)TqoL&=3&Up192a)v! z7Q|M!W2S1ohdT~2=6&&11L-4G^n1VgNCA+gYsZO@$& zC!m!FQbFsKc=MW+kwe6^^G*L?3YGY@)eTu5r-;~dp&uPWg%AGQHEqI02N_Ba43U3| z77uEKx>2P_G;3Ri>Z5drx3WI zjZ3v(kOskf!xf!c*N?S+KH7+Xu}5snniU3yz?=I`WXVYzZ#;Ntb<8=aKOwc;ghNJ1P~yTvOXt$WtxJ;l zWq6-x;ifp|oXXCifXdnHYy4$+n5?!qwyE%@j(B)QvI*=w!J=%i8E80lHv7! zgI(GV!{05=YwoIP`x!`vW{*Lq#8!8P56I(asGaRoS_;?6zAMJRcVwk|%58DAUK4A- zMPTdf66cir2;C2P2~rq}6$w05{{9dCr$rdY)TD0?wvGU-d$j)2V65BZ-=f z5CB9ENHT(DJJFt%#j&|Z8+g4BqbG0a`jiD?RcK+UL=UQ75HXuSDYw1c zi$(t|)wa7oRZddOoX98h&X`~~Xc3T)nzA;HpO96MY2L4Q6Isij}Y zyOnMY*%J>ADtwwR3Y$`wny=YyCMXEkjYH?G=U0%Q-<9j)4b{`lP|T@XUglbg_g($A z8ZhtKmGyXD3+J<26Np;%jdT}dedQTiiS|`?Viu4F1?FU-a|d0y-fW%g;VQog}>;Bzzvyh zP_SjuRSQ{VWe}L_yd(UPq4TyGz^Z;tgvbGo&##y^7HseCxUyMKJGeJaa$}C_o}G;> zySBU7Ja)C$CW*$cWiMF0ze_cMQ3KJ>`X~a^q+SRi4~FuhCrGjBwx_;GCPB352VQAV z6$KiqLbjYB4DCV!^br8|=Rg$6EaOHnSQJju&}6yk)gzza4?V9jO*kL@v_gV5t;9cw z+mG+&CPxY1{tdXX_j5d$Yfe11OLa2tYjfi(d$3pw{XIb2aq%s)Z>xLyV3H@RL4+fP z;|7qAd}U!$uPLYzF&(%4pwYx(EmN|bzg3siBWc#b+#y5rwsqn6+sI_tP$F-2)8#hc<8u9*6aUq8dsQ!J| zCV`@=7`D2cGY|)nwGVxJIwOxNi}Ym6_>GqWf^X=#eeI=#ls?AH{nIogpv>?Md)K&9 zUWXC-Q|Zck8=!l9^zuJihCS4GC~z~TOOo-+ucfQ{@02-8_Np@clC}YWh)E7gLcF%%dXm-#=5(NWblxWlaoM+DFpJpbX5AOIJ;f|7E^==z8zEx2$uSseu7#I7nc^x94|3k?G((E5| z(N*RS!Hc2HF)__;+hlKU4{dlQ&~bme*h4N-f4$x{KbEH5eE&Bfo^dwPA&k2lNO(Q_ z)t?@RXiB6lsr93`t;z%z^AmI&j&v*<^m9O|@dj3IPrX=Suj<`Hy_W!K4sW=q=ZAc0 z3fh$+J|3X?1{}v}{cGnW)1jH-109x>C75Xbis*kbWoXKSe zK}d}x2rjW~=spB>8&|@Bqa{^>U|pI-VaE6z*n?lvBrhWLRIj?SfMb{4e5;5eQNmCp zoh?T?BLXepOA2>W-N$z8c6}M0rk)RnR@l-+tn?F$?>I~?I@gEV8ORATFV3H~%-4K% zuP?`HDrKL)7wiu#$FtijAsiisflReeEh)ZR((uyg{nR(Z=^PZTq)Ud_zfh$ILenpr zK|%!nfGGm~3}1jO9*?On0GsV$f+Qy6*fBe$oBZ9H`v@I@tSr4#M^%1f8cS%bUsYEj zChDI=ZW?5-WWw?XYddsxQx(O3q^*o4BPSsonB{bwj1@A`Q-z^FSJf9R+`S)pYO6Ohk`K6I?!PK%eyzq54l*^P zBCR{**(tUpKf)F@4|g5iyk4n~ z9m4(hJ%p?1y@#it3gkj6$ehF%%QfR8XDGE$ast!`iPq(<=R_Ls{gdA03gKlgSspxu zQ1Lm4x_Don_i!h@9Xp*^-ThXxEg>l;&cQ{O0}L*Ai=Ay6q*wb&hD^UD0T5q6(A%MZ zAjZEUa!c&VSI;)z-No>=$%kQS8^G!Ikf$=^7~H>>0BIMj6*Mkg_(_qtR+tLa7baz) zgl;-Klu|7hx&5N;z=Sc9mUjycu!p~qpMCw@Zmt-B>H7S~e}*yU`8vN{E?hXcialK8 zmJeKUV(6K4BR3$uD|S4@+1nujBXsx%sq?Uf&jd}AaR{s@GT^ql&%uLGzYHbcUBLBm>;}FFNtggy0A9-e74nMAgM~x7p$(s*SQC|hPP_dD6ho18 zfk;WqYuwZcZlA3lps&|vdCjR9^S$--TILVLgRzv#>iJ^Q7P2LBSi6n%Z@`jsBkEe`47B7qILQk zxRs9pyr`&P3@|bfIM(mXhA#>KCkxcoF+Zb5E zW)vGhH)dGwMZWxxzqDUmfIfo^!LV&-qOd%8vk;W37(wChEUHY!Qpjvepkl#1}7>u9!BVy%xWcq>S4@dQY0V zC5GPK_E7s~NND|uSjS#(vl+;!#pZOC#vxs|<*|N)yO3$`i>bhg3cWkHOOqhLn$wU1 z1lM3#qT>Q)56NI7pGz)aVwfm;mWB*~9z7{3S`@riSYpwOg}j=8-;(6dBzS=_Bj;## zYUI$Zf@~9d!b;x9G(>$oCH=WKVg;Y!*eKw^qGV&dn$;c!zGML_7N0>?Q3juC@qEJ4)Q<4DKuY-<}9Sq zU~R$-yxj=pWm?kPaU~1juF?BTusa>C4q?Qn#j8?tu@jbiPpiegHjbNo{eP>s2PfMO zsuoWkbdQa-8XW9Ajb9@$bkGqf-|RS2kW-@DzM}@FeHa{VM#J<38sOXkz+22ZHS2BD zQfoi3x0aWb#C)-t#v$^^Nn~nS5#S-2>T;IfxJhzhNHKo@MkCR*O;h%lm#bBLvRcuo^$ zACG`Jr%reLRLd2pr6BJ#UZqwDsb{jCc(otT`3#d-^8IGSdR^hvKaiW(>ARCu(HV1iWZ}1kOz}m$9s+{%@?W0 z`f7plaKPWB_98|!4-=O@Yj#I|{O`!2P?k)lMju1r)$gk_wDHc{;czpmpERkRp62rb zk2EOk=;rCHn#WkV=i*Hry61|r_fA-KJygD7=Io=5v9ITPm==5FGBmmnOthk*$&@m` z6@A#juzW;J!ZE6ReKVH7zitpC=ZZDH3oM8_;cr+8QX#WnsdV++6hvGk%*dQ8H5S7p zXaBfrfBd2FcYbdz2aL|`|to?i$TiCI%>emPFm(j_~_+l!L5kHbX-zsi8 z%CfxN{c`?W5*e8f;Wt%!q#mI|`Y? zD1|3H+Z{s|zynA6E#-nTm;$VqM|_mUjNe(yN4+>n2l1A~)4jo*({Q_opmGK`zugUl zuj4?17_TEdT)TtEuaBD^hyFvNS?^uPo(=3SA1CuhDw*0Fh3`sp_d7e%uSbTOeAv<$ zT8K2*7vu+}#8_>;CW!$-qE=bi@zehiQ_%6EFoOy~Q;xuAxYW3y5v*Tt>8^Xh&-^qnnwQ5*_aLb6Kk=6~$v67-zjDuaKqt_juKRpjVvk z<`R)l3g?2VdH__07w1JofnWujx7T1x;4>D|~o(_2pgLAIc&B0BbSDYBKW zJN?&_1@IZgU${sn-f*go`ASdbcCHO$@ zy!h&53QLfOfV)B~i1}}-jcd#CU1;~Lw4<&3)1PiZs=bqE#6G99W>{n(Q@atw0ibPJDJCqKO27GMtnTQVwPrhkykU0PhL8{P%^VZ_=mA zf@DDGL89_RKK}Fw|F%h}EHd+05t!;5)(uR_X|+GqLTub^1n0IiO~g!ndLQp8aG^!m zzMENX?C#49CTkZId*>*6ddsF3$HANVOSvI3;!uOkq#jLf1uN~h2m zCu;;*y2@YS!??>LSbtI95VJT~+m8O2{51t+myI^XRflb?{l0+D<2TUFlR4ucGQx7fg=H0;ULGmj@NUhZ|Qz#Wv{_coK7>k=@Wyu$tCZE-Kg;JBiG} zNcqak_SLK$22ASXRSEexL<6b>}-pQU61a(Is`} zap-Y8t<&Xv`1t1f!O?auo0L1c%+TF#B$7Y60^zjwfO~j3@V!1%Q2j;uY!*;LyxT?$ zJa^We?{V9a%$glNtYip|i}fHh9g3Ve>vlKP?&!ML=kXqj)NR7C2uBi>!I(Z^n_yMk z^9SFiHF~vIClZ*;K`py|$|tXu8hJN3XLa+HW<>$LMYEQ@7yS zY@xM|J0*)yFIdLrTLm%}lfFvy$2?PMV#Lkk_kW4;Crt5fG7C9&K24+qX2FyY;`k$B zSe>Kg-dR{){HeZR+a@f({SZ;kZez}n-rk0zrTcSs2<`CSV;WMj(peZQp76(pm8&$W zuPzp?+#=vS6Yp=W0X<|KhTn{LN=V`d#I$1cqH>YGw=tiFhi51Q!Fk@BbVbtQ3KxZM zCDGTvsbjE&y&yJ!T^}Vd8~~J5Wx0$6aFul>&kj#uz21AxoBLjL6x}!mRdzkLx>_Yd zsF9Mh!fJa4*$~Trb+R$hY?r5_R`}7F z(|v#`CBsiWa(S-F{M-2A8xBLSt7AR#)%M4yQX|_;zi-E*x#Jvnp5vEdApP^L4u$(< z3%Gs0GbLT1gGF&j84@Z1hgj%ITy6Z-w$i~KyEQEd7G*5})y;-{_W8p}R~ovpDY~Ex zl)aUx3>71j6yxDM^a$X2izY$H8>P+}{LjeG6$>ZTYvJ<$SUT%?I{fdC>#MJ3>gtZk z>F%1E>6$h*-8HV7nqipEVY-`{=IZXcy6dXn{d^z4zj^rMI`@6*^?Dwi`~gpl!%1Vp z-9O(O&7%GerElbF{gU0kPVfn^8jokTeY(9(sy*ZSv8sPH&x{--oO!u+6ivFW^lTM8 z$6ZqUDztn*)tETIY@hrIFH<4gFXr*49U*RCe(sizs1vH>d&oNU(@g)=Lh7J?3X|OB zr>atdEE?S87Wws`QR`KNG-W^#x(;g z#SM@mV(8QXr7mv;qC@R;RigPs6)oW#O55S%!^2B+$cFX!pSoiwg>-lSvTfe;4Hi8_ zq|DL8IRwjQ6`n4*v_)Lvt&RbEZUQEW4cxQ*FWjy9?Qh`M^QP=fO@Ww6i;~b&h0101 z1Jg^npmGZwO9DE}gGLO_Js zn@c2jA0vXmx@ZpfoUY5U-6r-D{`jjw$KR!75M##S`i>;AR7lq{7XXl5I5fNnPg?8J zTWhOe{K@;ij|rp#+~3iQDP^ z^M3fioS5rge~ILJ%Wa8lY}X2p&)Bho6Q3&;?gLulTGD=m;AFKlNUa9zFX~SM2_PJx zAP3hV?4~WNknF&mwBXO(_4A@CX5`E@CPX$Rz^)@r0pvg(2g?1Ap$!*W<5P2a?r2{}57SybC(kJc;?n}XJC6sx1qYjc zx$^kO+@{Udk$tsysfs?_Ec9&1>86VVWx)0k(@D*Db<+;B2nOTH8bkJ(b}0 z7{s)lUxba0Tj`3CkVP&TNA=?##o$!WbDmU9P+%l<(Ie@3%&4k(n(l9)ANDFO$U>RfhiQhHIQ=DpsZ@ zw?B3?zpQMP+$Fq$x%yc$MbgO(m%eV`2EUbaZMct-D!gG4bJ$3s4LjNW^Y^DpAV0xn zx3zavLp%1-IYkBAd+|!f)1KYpT0rl>!2`HQ8SZENEx&(S8L7cRE>P*Q)LxSy*>wNy zgkplyr(Nk&cueV{(&D9^}n&8*A6wC&)(yZ0`Ugk4Q4O!fs1ax$UMC?&Z5ob7!a5w$P2R3d-j0;838iIO1c4*>pNQ3zAAU=S=D5&g6 zxx@?|e9WUHb%*+V9stabVr?+hf9+jRUaefbh%z;40^!TyA2z!xDwjh5Xp!SoDd(5% zL$9L2`Nyz`TF~6DIP$qtR-q70fNsefqLYG{JhxD_Q0y?V+DFWS(@_&SEqhL6bg3 zrbgl|W!KkS*!atT+_dEqde~61KWezlU(OhrPX}QE2i^a{+`6H75wR>>0v?D*JkIc5 zCu-vk9+|`{Q*neL_!fc9JudDJ6(^X{g(LvY9>(litPxzdsdows|$c zvZ*v^dRf@yw2kLlyBvlbd`FfI$HV?{(=wBN82$+Senwm7rZuF-h3<}^YG}en=&y_C zfaz;s6Yxd7{JYyB@da&7hYxYvxm<*@l=T5XH*_CWO3L_~aJbX$+Y;J^KaCma9cWCN z6Yq0{R^q6j*Jhb54@mB|VY~tug%gRAV~pU&v`}0o zX!upTQk}#M%e+f@aSNO>AqPWD!hXI7ChRMsN0-qf7bp_V=PZo<%n7p_4DK@{Ktz$@ z@H5)Cq2+r-Rp-PBbam~jx;wo;icJ^}TKjlAcHH%+u{nqa9)LS{-X$+SbdSON(=OTZ zt8G&dHrf1Vyf2dI+}Axza3gC)44N|HPEW#k-g_N9%E4o>UhvqDnn)>pjqGIT@lkx>+o9)F(oi zn{Ec57gAG3nKOVs2LQkl{888;cKXyZwm(%;;JjyW)4A*zeCi66RwgQP?KO9wn;3ip z>AZS6W@5a!nO+??Cz3vxu5V?6!;A9C{>){boI*>{#x5}<#jXc4xjXLX3Sv#UPlP47 zT4|+A2K9*j22rR(>}<3U;a_;Hcc*9IXT-!fmQX{*mJwP_Q<~&WRmo*UjGQfXFw^S0OIY#8YNx5TtVJRjN0&}CF=l; zH*`bPn~9|pR3L!9cbbB50=x(#UXp*cI5#=Zk*u9hQa(`YhL()c?gW6uw-S!?j4=6n zS*{ZGS76fF`|%h}$G=5XfcE(HbG?1U_5%oo=V;8Sc7@Qdh53h^Bya8Zra;xo3-rrk zf+DMHvtY6y?15bR_rCkFX#6@^R}l>z)t5jxO0F~g%_hL9hE@u>3e6(y zy)kR9~PvEtmJ$Xk)bCsv6TA^5H;KCyrt8h*E0jRbtr?gy2BjnG;k+E8&!)zP1-8aroQWg4Y^ z>dyaJKG)&5HP|?a?Wf=2fF_AS2}+YgZmNWRjVorZ2i^;>_55FX9LHOW3o{9T?UCY`oYEb?*m&u-M}TQu&tX-?g{mytn!AV z-_AaWt{+gPK`R6vod7k=NYbH(pJzE;3%;0w^C8_W-yoexpS`BuEyFpmPWGJ0Izwqf;L^o8+ z<)oBX=EN+ANzGhgks;wz^0n1Z+Rrf+YUvz`MHnwRE7ER1h&g`#P$lM5%`K;8<})vG_+UtF|U(DI;# z<4Y&D4v^mM<+J29p@_(m&pFQ2HZRB7W{ckUV%bt>H`OQ(NPjzI_EGdr*$&XUh~Vga zA?-4{sN}8IlrYM5WIrg$m&BqCPf?%PNRS7{#@toHotv>Y=X(SQn%Rd1Fi^Jc@#YQQ zW;yWuj69_P=tm2ALzzBZY%&>D_G@75kT38h*EfN4sn&O->?*|EJ-^Uw7jNib2vq*0v zNsA{U&U{0Q>`Mil8gGVSA#SEGwDvxstm*NOkii&}fDfQVl1)nuxD1vf;c?>tfKBt- z0s*#;k<`6YjUrbuGAY#rMA3Ra^E`m?WN!?o%Z8a)5i7kHh+lL3!cDwCx!RCeNy9wr}CrYG8;trMLBxybu!F&V5`?Et~q?<_Qg_%MKbxZ42 zxaW={vt@e*Y|z6ST`aQ7y?Ula6Eqx0Nk5zUXm=G`asE#?tv8Ce@R{}TPbZ2;buvN% zLX14@=F*lvc`FbevIN^@3p)1KNP^E%cEofN!&-j#o^9xUz|$I6oC8Hhr^e9%ZWh_6 zNg%>T3wWPh%>l!|dW__hA4Qm@9Dh0yes}Y&Pg6u$w#%CaX{wz0Qdj-Sm3eBv$GL~{ zrgcfTtCjC*??%O1{a&m^ECT2HXz_uq>{-c6l(I34Sg1v-J_7>yT*Oi+a+3nU?)NN!J^3gog>reV~&XH}g zxdSdRGhgzqjAg?_VoYm}^yr?>KLje#zrWd%@zc%);lX7%da9_@YH@7;in24@l7h(Y znfFD^?E2Ajd!S2c!AD&`;GRi$TVx11aOFz2FAN}G_9=NL=^OuzP8n2gW={b}51n2* zOQzn2tvZ{vGPZ5MfL3;{*=hPMDlA#jM{5y}xIa{Na-Sx0hS831bRW+}$oDaOl1sJ?%m5U{JFPC_PckPc z{Ws4$7ge*Jwe_X6v%mL=M%`|R@oIkqbW@f;aX6ZkHP6Z?&(o6WOLbMq!s=hBcTeKW z@chn0ix5~idi_lUBn{K$LAjDpX>d>oJW4d9rjk+->gZRj(Y@>_Nz~MPgwXO|6a9Oy zI1Bh3w=25x=eQBm9?%Nv~Aly-jn%c!~uRjYk zy5H{eKp#||67@~=E2Lw716}&CxKYbwI#h|tP2sfAb4G4T*v7Dv{WYSr1G=ue8z_HG z7G1)+K+^8CrzF76ZX%W&X5Q*di}zTCE-AKNNUlvvO1{?Q8Lqr)Tsi%=?sWaNtjAC# zO_$qTe}BV1u+J7pY4vSzkIPvW>*J~M;!S^WAmncEXV&{W1~@tTelj!#q+$D?4$M(h z_J6)i*_WJ-tB{0z!$;TRw37}O!Au3_2#B1NJf3__Xjp!!M@McL(E**h6f2tw0F|gF zJVfOz#)C+{-|M-$$q`v#JzLn;W_kn#d{NBsCMgVR*t59=B|Wa3pPT^pZ|UMoU|Ea*iw#j(=Td4$3ML`1$$NT!W>= zbPQIxY$kf%WAB*lYjc+VnCf*f(^Tk;Y?7-;Qj`<`WplZH`AXoeH1w2 zD>yrRKi7V@3;+lD?=OBTANXv>5D`>ic)eXb&>3)(O{~Lx>iLa+r$T15ObQO**N1?0 zSLxtHa|KXge2}i*ahR$ETa>W1>jYL=KJX?`daBGoU1at^oamaCTUKQ}Ed`1!pZ!AL z>Z}}JvjeWHax&$wb*$)%uw3vzJru8(W$4^PojgC8--|!Z=DSYC5**L)dpcjctOEWB zZmW2zquvEjfP%_AURA9X=LBDTKTZ=qj&ugm?YRHh(cGEB3(jnquVoFld$$>(Ggb3NEfhFkpDwzARYfp6RP{g1& zVSHgY-+1=cd7{@V)dYD=m$klxwk__?C1d@y!}<3ayq5Zx8x$rvF$>L58qm6+PWacR z4m9CgF#W>1A5S*h1dpll_&5n(HJ-}ueajwQ5afz(DtZ?+191fFRo6QZG-U zQL5e$(}9}io|Ta!e`rf>ddl9)jKXuOzrmV1O2-)RqBSY}qEdcEf3K3=+=X}lrK&I(?< zp%M!M_2~+1$ey|>JGm$i-whV_=rKQqWQH!IhT{GjVth#Y@nBrdOG+2`r!4C-i9B$y z`>T38{ZLe#=nnQCSnMK~bBoYKZ;mdJLp|$)&^FRm_F+@i+3}t0X$O14AHUZ-ctf}N zx?@{~Z6@h|{fF5$pwpoTNKqX8bV>F8Tjg?bTwU!@S>YRWNfs;rP%I^7i`#>fAJE%*Flm2=}*M6T}g>^mnCZ;-XSDdu)tM$e%GNgl7n3W&ol%e zxlz*23j32bksU9mPs6uK*ny2^y2O#@a2LF(zjVbb&ci1^0e|bI+^R+=c1f??r{($K zuIBv&*|ea}yv@)wa!OO3+x}aHu2c3$8^^UNc1GeS>^$R@b>bS_dxGO-mo z-3(i9}+B|4toRic3i)Y$06PMxjzcAEgg%#2L z3@?)`T)W1@+aAwA~)N&PP$8eLE0zxa>&a_H#H&C2sQ? z4caa0EKp40cedlr7;L3;b`i6hz|H8;_{X6sh8(r>Mp98ZK=J}kfQ#KKhk24cA2)YM zo{3&Q0*pHSxARut<1Pz%uk={gb@~Rb0gsp|_5EfCm)m`V#*?l5hZ2L7qCs!}A}a(# zsyB;}mQ{)`dB zN@#oc>UrF8c{ZOK%yZlnp4R@Vve=VG(SB#RSaYHtf9B}=S!dIo&zNet8Xs8Z)rrn( z==_7pm||{+Zbb4e43Yjlqae~ZHVqOJZ-)ku;Xal*4dfwz!8D8a*)_WKf+R+nGWj2} zV>{yv6j*UBctNff=VtmTj^{OB`6+)8qhhSDEj&w-O%BVzJCR5YrH?6SH(!WwKYmGd zDdG<`^%1YcOk=`buaQ1j@&apkF=+K4JPX^{<=zR&4}qt!=!x49RuD;iO;M8eP+}}t zGl+dkxHX%qO&@)}k&u)R*wkdI+a&r+>7XH$9WGUHbxAT)mVIa|RL^9Gsb^inYKvUN zg?#06jKH>vwZiccHY9eQWn6KI98a1uQoHhvqzA2(1>==%|4qsxt7M$B}$;^Qru4 z5-oa*3fd&?hcm=o(8laX1+g7euq8{d&`i5io1@>&8Nc}`XCL$Jn|FbSs_c60HSQ0M z-v~*@4}6ZsLS3uj<=CK9ife*Zj%qS41K)Khl1P0I)sR7PtDkYqzjTc6A{2#FdTDW! z01RYtZSS@a|J_o&R3Z}+#|6jRHsQ?ZJ+c^7N#pTxRwnf4YGN~Ezy9Dqrq#idqFwD* zJ!hal&wf{5Pq4r)S$Ex=w)@Z37HfA$3QjrmwU4`@E(_jWUNm0>6X~y6)YRpv5dXJ$;e*%oLsv*LlKOZH zm+uNt&86zgR*%`(E8IU0S7L*hY?ql*R2e^st3;jcm*`hx&_KWt&qmcK}PfyDZm1 z@|XbTYH{7iNMs~=FI7{t#V5_}&Lb7`YWld}4@$&2EB zt`t!v7uaY+UK$~(B)X1_d`~iYpA2K@_e)7BtQOm`!S5+FtaphsqyBj6C|;3N@?o#N z#Rv_UzSw@yALJr6G(huKacHP1-~6nIuW@i9|L|RIEAmAhVji{&$UIMs0i9 zfPe2?ren67M?=6Wd@Q`mXVQ*3YP878DmzM<$9d|El_-Jc2!&HGY5Y)R7yG0WPE8aU z<~9@bN+AZ+yF>>k<%V`9H`h=SN}Dz3d>^#GImt?&zP5in54ckM<;j#iLv@>CZ0xm~ zOObkFcDq)kC?OQ&v0HOP=*3Ci;<;I$@R94@V*9vi4tHJbF^u|zGl(LW@B?9xrbw*iG8W)jvpgyZSB9b^a zk!u@5AC_Iq4}VjrM>NO=ZNYTGq3S?*Oct+V_1NCHe4|nI2zX3sXOQJ{^|`B9ha$|J zlEgnY->&P({p{?+r@ihg(@dV5l4qA6!Ot2GO$kpo76aUZ0=_OE4tjoA=Qw}9>@tBz zA?MPS479VecuHoNcB_#TP7bj{d`{$Y(!8Oixkkh?lY)YyrLJX9BSITVX+}3ZoJolT zyZ;!8P6dUe8l`^5>$o`#kx9H)Uj> z)oJZ1qchx@T<{__>APRTFOl2m-H|3|-_vhngd}5UD|O&^8&xzH;a^cS)9hj(;A^U% z#x1=JNr{;1T&yRY&3&j7+>AVmY9fwm*4SSmm6WbAn8wLB)Xltd<*<-SuEJq)D<;{u zC_=XHYKRnNuce`#W3}UUH*QGil~?ros#DqP}KbrBZ&J&dNDb14!(rTbGl3B&jQF zH5;s(+?1td6Lk{E$L1@YP3l7xk&9FWh68v{zzvqyw2P*H|B|MQxSMt9Q1f0S?M7_< z;{NSE-!RFZi6Oy!0d!SPMA@!h$|SZ19*~2k`D}M8)#oGyuS#UkQi9vsp33cmDG#on z<7@BqQrkOfdlZi{UmEY)*KcQq&$aJg;5UWHc6pDGH9kzl&fL?nh(4&VCz}r<2})N2C%u4H+up zy@Rx9r6`bSdo{2;P!DtZIB|+`1k^XaPZb(l3GWpGay=yKnAW{TRlg)cpG%H)8VLw^?W6?p`%tKWMM*E=^ zFGb@xFT=Qglj0y3@C!v;d(lXHuFXzHlh{QSMqgM0;=L%X7?t0I|3hg!d4UHcGgt+= zK$$g;NE&_Z!&lVxScB#zu%_C_sL&6OcpIX5Hrs|{RbAElf0y3{wmv}5KrWBY^Ynn! zZ!5gPTgxN+fpw=tW{qmT-o67EfnqJ4JAaI{`$VjYL+_Tunt^3oddUHBkJGS!Pn?eO zCE}!_{53uOEI?n{tF2pA_#&KF8D7ZSr}AkKUt8pvBSgUk4v~7K7=f;FKUGo1Q+8QG zX~&h`Uz7o*b+YF1I}0tI{r`-#)ikgk(nEve&oT*o6|a(y+eG%`kEp0-c6)zJgYJXw zk}l6~e*|CcnB}aTPiLx280z@B%7-Ti^1tj>Mg~)|z^qJs0wh&O(CXKvmy##JYLY3< zK%=czgi8&lsGx2LQ0+bx3fMGftin{ZYX;|P6Saj&ps>#CdUZB$$iOV7B7+9YN=h&E zXtIzFQ=|o&G0AxFNw|*A4*v1NbFs!59woQuHfG`%W-itq%lMhJZym$)(G)=sp zAz6GPiSD25V`>(WLe0NrJ^d@%_ddMIQM4I@-@7AhL%YkFY@8L)0B;wHTHNG@>q-Mo zKWJ%2;ySbZg&z|;=Q-RK=x>HK^)IzCngxs}m|>?9w%=kebX;y?x= z`!bG$3aw0}PuhXr#v@7iFsWR6rcr-wMRsr-*(&|L!C^*Rp2WL4$CB#j zY8P288qUoV0xh5XcGlMGPN(nGStQ$wo?^py*Cjr_tV;~s<-9&DC3kT13$=Fkyl)%P zI4*x(pLb7FuQBtarE=Bw`p$5r#Q2oxE{U*+aPn4#3Y#Ek(6h;5o|Cl)GezeR(zJ3& zOoJQxB_;)#s8cgBNQm(PtO~J{%#HhtK`1G=6RU*_)oV3p7>QG-@gY|RedGC;9(;qx zFhZE#onR$2x3{-yp;FKEvg}G?_P>$aFk%Ub`lx+GFYvs?@xUWoL#&sidV!v)?z=5& zo!y@A8bgc?e{^{m%cZ$cE}8{dh$Livz=8lhs}2V=eyc6!a&iBquO{CQr>eQ}DryM$ zC&=QV)9sGCt@zm~&z!~W(uWO-d{&M+ubg5T^Kpxy_EeS-jqVC(P-MnKhd@+_q`}QE z8gMIDIK1=k z;f2(1Gc>q?IuuIZq54ew58$G@wqYiq<) z=Z>4I!D+L8;^Ww>+jfP^JdVk$(zZrrg@h5gf2_s}t&z!&hYkXl4~7{!{HpmWy3(bz zUZg}RHUtnQ98oR}YLAmZc+OSkE51m?;Z6+N&_%Jz%C}~9XN)Aph;!|}MS>~{1TSh> zvm{?F$X2QxU3V0(tx~PvID|wcxKqz({Y|8#CsB|QuZmlrrx)CsoBBvi`P9GnBRIgT z`l&5#SQ6y=q&f25%*EBt`uT32B)F;Wcp|Xh%w@zxVk~GE)mS?HOS)3v7C=MNN)^jA z+EMlwxAtvW)TI<9LSj^Npt*@l?V^QVFB5F=VMQ3p& z80FHaui;?Eq#O8RGx@o0=`%^@s!g5YC`sLr6+sa`!i#xNtrVbFg$+*`qVWM4;lT)> zIHqtl`&hHy*7zO zpxrs#l^U4qp9Be0t2`?GBd2roBR2%_Il9nDgAhhjKW{xK^WCed&SHe*r)60BfJl(xT> z@r5x?r5R-t_~Bamkiv@E4`SS3y{tRHqvGg3rI@c5O8pXF>5zV(=G12m?#_H`YTwL% z9c^~peJqy{3%c%h0hO~`OIstDqv;#QKXXw z2@Z0C%39N)6oR@R!l;oCz@Pnlu*^^*J|euvexKG|v0MVGcy%g4Wrv?Nzk;}iZnp?F z!x3dBi8=@Sxil~WyGt|=z$j7#+*0OoOQi6U3ylKl{yS@=ps0OpUum1bzw|m$<_L-0 zQF?>3BoaTGO#rthzif9`0ORURto?}Co)%FhN2R&AD%;Z*_VK#X}ycatkC{8v1C;0pOOB$!h5=}AEeKI z-n&o@SndDg?mW!M1b;j7T~As21UeRVTZ&8j*m?hNj&b=N_ODy>OvgX9!Y8dNq-+tR z^sHO-gf6l1p@p)bp&@E)m3I-xGU77Y1WHBhY2zDz3#PVASoW2oC6vVY7;3(z`ZJ{J zrm7S@Cq@CV+ds&d(ZE77>K$OpnfGf2226(RZ8uJ7xTgF8(`iPMA}>R0X1JU%yWK!h zlC`ej1A4PA*fsYuwFoRA;i0cK_KPr<5$$uX$D5KAD^KZ$#(cpIqFCV%l{_V>9x)$Q z@>77?p2IY=@COU^H*n@8A1Zz=4N6{)X#CAn!jDA5Itd^MVo2SYn1lesiZ~xOdySSz za1K-ETYiwa{u)WyyT(?om2N8cEXcxNtvx#-2Q9aaEeQjug1v(un&53E-^;y!W#@|i z^>~aQSdTccv*Gx@2d(S0vhDE!0?7`rAnFDSB}^br3A zgD4JkmInkl6buvUx&@Uj26++ghFFx4AxLjh>mRae2pi`fMub>5b5&lUR^w;Ct&6_+4^*J{faq7j&*Y-vcpeAL#<-od>A~+jXaw|m$g``s{l*H5Q zWF-buQg8a!4dhS^!E=k3d>d}~KQ;XhkD*g=aRt=#2-4aRBNSQ=*Ic}7p@~Y8lT4ZY z@Yg|G!s=R!DwU-0wA<8T3Tr(1M9^Nv2>$JWO5kshkmbhYC2*ur$l&89ls9V?Xn5ls z1g-Cw!edOp>$3FWJ=aRJbAPtebdK4a`=GdQgJXyTy^6C3B28o^x;g?T-)F+-XF->b6Q(>n zd*)+y;4KlNY=oAM#uwE2L71@hUKYgxp+Mm_lJw_d)uE>5Hi2I;e%M2 zFF@}9tUb-<7*?7-SxKcWoI9tr3m(;&t&1AJJnvm{Ge5cQ9G-cnP#b(WJI~0UXcQ2t z>AI-$k6kw)re5kZ*30~|2yX*@egx_7wi-cv*hxDVtoLIvrBI44NOpr3bec`-Be)?? zmdV=h8Da3Hh53H$ial0TOqL&}6yUO-2DZ7;ovBUEwk!CZy6m>U*JjdIO5FyY5#a&H z^H0|TZw$|Kkt)$;lrr2U*LcrWUVaK(Qn^q4 z4TlZ(i^aBQqPE;7t+uCGW3p&sQ@KH(OgD&y}krip?^JiG6qeA&Uc=RJ$g7 z=32(}5v%d*$^uA$$*whGlp*=RP8Lax7PhTbe2H~%)R~y1U zRw0N4=Q-C3)}y=Sn=}c?2kmRtDQrE0?}U*!V`E_6Y855*Av{?7<0Iv_v>0>y9*t~R ztCKu_XPgh)&MsZnlT()yxM{&%l~3hwf`fee6GTGyMKf2H5lJPkv#mxEK^qnHj4&nRw0e+@@}q^;0btID zJr8&gqVXn>21Yw*@jGngD?5gyShTknA-PW#+RtSf=Ey*D4(3Rw0`~X4*e&FoxcQmjrY#?MiFQ!GgMUxzD1Rp9qc~xsoad5-#$P?T4KaKc_KoMw|y`h|C>lYrXDF{6>`E``ErkD zh#x|Jdu;NJmOxG{8>uvBy>7oHu@iw(MhZ|juKfLjd37$(7awL`Z^r9Gg2^aipuZd& zQ@z7&+3@QRlLVgk-|1YZ0t$sSG5?Vj`hj)Hr$_$@kpFWh)fLz!z*buwGU z=yrX2(S_~b$9YY1XsgDpR>!gf>(9AQVDFJGGgEjE8QiIJ`v7YNe1u;@>b$6O`DGSV zJ?U-a*nVGKeY6@V_#LspruqEk%q3!V@9QEWSlff z1}d8evO(atD#1pfnaa$c^1``sd)<}8Uq|A9m{$c4!WL38Piwgo z6zBd(J%5Sco%ae+;X1k#hz)rCar_!WD`*;4!Q`ng~S zPc0Rr-|k6ka;gUCf7#KG8**@K0JNkt=Fo7+6tJaB;c5|~3965yzB|X(Ucc?xgws(q zabFgF@@{t%V?wO!^L{a-(Y(a@POsp{MsHtZ`)leUD80^BXq&Ef9hQ?cXMotPd43FU z0>3lqY?k($R;^fbkCx)(HQ9@i!2w-Nr|6W(G=^oYP(GY{rvgAQ^pAs>5pAu0C>E&# z*TLfHS`ocqP|X80`u*)ofZYp#J<=t^|24aW`oZ!h?A0mYe47*|!B=CN$@_hoV}6MZ z;VVRN`49pqixIc_9LB5hgCS8xjQfp}gwN19T`^C4Zn{p(mR>Q4D@V$ba6lddks1(0*WeVZ~_I zPd_>H^Zl&fl%*w}!Idd={rGPE{%S;acfFG1bxV?Y&H4HzBUzSRRZ@Q$n)xo{rLkl( zLG+UJy_ct5-&gTMb=^l}q7$%{PtquNqW>VUnz<^ZSHtZ(Z`PlIJ0B!-o$VLOS4H?15c&Od@h z)W?)x@0%NiN!?7(|pR#YTy=!CUg~v7-0@@yS9t z()6IxG!5$_+igfH!SEY3jvQ25&ZK)BbgtGEnLy=V^ly=n> zWK}gfr{w4U*c~X!OM{fglX}l(lI^U&=GV0f9_hYZ?k*Mn~>DQ<3@5C0k+k{B@ zr}T*K5CgdiN5z!_M_Kv1(5n|y2Wj?nr9t)wfKqQnc6=apTZ%3yF;tU@t)@`kkln_= zCO4T>><+mE1Xnqk^jC&SY#{9pEy6GL3jd=7+L%oi_EdAV%r|a`H@b6v-N6P9)yPQC z_?sLp44&3Zu2P7Jx($*Vc|SeuhF+eTvcBd&Rsp!~Jxs!p*;Us3D<{2O1RuA}zgIO8 zbL8x`pAsycp-_{E9qU%M{UDI+&K$f&GIB0b$9>+=T#hyNi_HVl!h;_sEh0CCcmV!j z7!jm2L_O#c?qG&4aHA{ri`#1fm7Z=QR#7{od9?5w^7Z!mP|yF@aC^q&hEqNW*LnNY z`FaO=?5@HBr-%@Eu@G~YZDa6#>;!YCtyf@mll)XO^j$gyX1_a~6ry%huJdzmzF~_e z7Cg&KF&tw7+Iy5}GN|HE1Es4*j=r?6;->YTRx2rx)h))^p>u~g80$Fc0;YuzdJ-BxvWo?ex7^WBq(|YV|vl*!s!di+qEst~@}QWwB7jrwr}|hL5|h z#D5dI6&hXldi>xSOh88Hx0eTfy~T`|xX!^fz^8jKt|uo$#oUC_*DPM>FPAUhkv&VD zUFe+on8SjZCeoX)4@#O`j2k~aH>0|Xcpb5&`+Vy|eb;W4f8DLlj)`G0C6y5KNuvQQ zQsfF;JlA%EDEfWJVpI%BJZ$?E(TI6MyD^ZdecxkurBOGdD*unZB&0h>VOApAh1z9i z9v*WafydWR{@j!=CmrwKKi$pd%&&L3_jDXlXTsJ$Tm`K(ZqxBVtAw4M?vaCsn@ROf95h z(@Gk4qJ4H%{?>#Ws+r;Xi*C*bi)3Zwm3_(?K9v10ukIOBNBgHUZYuWMQxByS46lTz zlDGj~O_VBj0z&sUiN;)Q%9jZT-C%XULYqZ(q47k1y{L%Mp>n+!$GL^b82wvGD~Xbn z*O5rsArmK8ZGjSL^C#y%SgEK@4&kzXYN5OC`)K&alTIS{Fg)o4h&2Kva-Fo}KAFz=d-f#k_1OBSl-R=c z?<;@xlgH~$+k~gvp0BpFFAIXHbM-v~t^@uYv;o}YRg6W*s1Y-wh3>)|{n zuH$Qw0*WtORXyLHzp?ler8D={=f{*$C>}%n=l_4+{$&-xKg9!M&LO{qVZE95p<-r+ zdYZTGN>@nzUl_h=)Z3-HH$O3z_Z?ohJqeFXb@J(NU=lZn`>tu4zRk*^8k&eDo*Ak# zO4q5Q(IW#6(1$8PD6pHKrCnHdZ~)@c3DetN&Bk6Ot7tK9l{T^cR%n=bnsHd=Zo=`X zNi@8uNgA~;dlob#ncPI2j9A5@{2K*VTzd-m^Z#i2 z%7CW(FJ96iwb7u$hJ=8WNXO`s?ovWQL8Lo2T2e^?rAu16yOayz2d06GuVROE&1%V+SGo2xe_=`)S?a}+0K&4uyv zR?plxpEkJVt$Yho)$!D$tdIRG!L}Qo&{ULpf!gp{O8OS5N5Im?-?u4KU{}kB@vmSA z29UFsw`}>m+N@kb;9@AzwGwk@Hy{H&Prado(xLvry?w`P$VvYc8$eX zBgb9*7KFFrX?!FkYRlyjL;YI~p;*Hp?0EIqaruOOs_IkO;BaUhk3z5bMzzd-K%9C- z91U6N|7FzaN;yt6JJq=;8E&y3n<_c>0ly$8OJ1)2PfR;HR4RZV=cNd9hY07dkxtC* zuhPjf*-S4)y9BWo?-C<&DMEDZeZLvD_UAjRz293()>b({V%^Rqg!R z5_cYvE#vX?{ucypoobpryqS|Z%(6h^x*7J$a~*QK5^7koA4j|LMZGk4)5`d&E&37Q z+d2GKs;5k}*L|#qLDDQVllo6xwOrW=F-n|0FB)oW-}v~nF|0B)BUY+g<3A9m2{`OG zPEPDj!#(yQe1580J0dBRFJqY(dSiT099UTelrQK-B_kJLIcGzboHwvFDP1}Quk**y zr$)*qy~S%kekS;8GRtx(>I{Q6+yj_{Rr4>D49?=JFZ;H?i#x5W`8pLppz&yOUD?rD zxLQ9Prhp#Y+AWUVswmoh_qcD(XSj9ROTD*CKJAN4W7yst1f$++_YwVmu|}Z7vZ0#- z!Lc>tNjump*Qn0#|m-)ZBYsa{dODHe!KWOeJ3wg38cpNej@YHewy zLvnB7W|GDs$xo>5CZ5}G&*5@EVnz0Oq~x@*yRSpg;>Gy2r>yI5$CE3TgvIa>q;;{W z)M;p@Wp?LWbT^BQ!5TE1b7Toc^(@pApP9k%geU|k`&7+q>|sEq_jCj)yuJo$@@1=2 z6?t8-Pigqq6p;&9qK@;dafD?D)8zSis0uktP$m&?^(=D)-e z4v1**I=zOKOvRgE>GgPh1tJxioaAAjeU~$NXip#9GDyjYlZFQfr@9x9f5grzh@(?T zm~qM?#bc9R(|`RV4pas&Tqs@pTXMWEGQ1k8=#nzV)sj7K<#7sacI+FOuli65OxtBg!vLSJ{Z04PMceR{Y5vER_MpdH!`c zKUsgxkghGYVVi4CAS)Q&-zBwo;5t|ex;vK!H0ZPEnc3vH2a1xfDaU(< zm+_zU2&l%t-x&%A1?e$LpBY#SG1S>$DM>>mb=X5`nONX&yF%J6K|Y`(u5t3}6vPnt z!;@CABHRp|%=sX-myBQS1?Tf0_>o=WqRYFiUEaga;G2E_fB45z{xG@i5T}_`DbQ0~NEO?90D(4)qa-92S6Ygaz)e98 zmLCN#=zbV5PVx2I7>B*jg8ZAN^JKmc`(NdW>NHZzn`N(mnU-lxr~)WULI|`!oI%_o zX^_{Z^vQU;1i#x$xx^b$ivwajzHxQQB?@*Psp0SFFI+aeTvXPQlmG_#sdQuoV6*BG zonx)wze>BAiXZ;HxtNJ;s^gxi|9OwQI$)go%? zL~kcp4Fzq_ zQ-kEErhG>k9Pc=212f6*OG`5j4xGNVIc%CQ?%0Y87R-j0wcPFGLlf>VWv(_6ND0RU z#j?r8d*|C|p@f^p{N3(=m9o0cw#IfO!bEhNDeWiaY1h|Oo?yN3JO3h)Q6VN*y*ZMm3&gM-siQEzvEtt9^`Q>4V~m%so24d!|5 z&!?RUj^DM!E;crniwyxQpqY+nU)JNl78*EZLf{nPNmwTz1k{IO+41zTKDtt7VJ8@1 zMHb@`LVmpZw4&BwNx`WeIqGnsKz~>NG6odIyNu%}EJ+*j=c$*7wvfGeYCJ`h6(}3_ zpc}-eg=^Y2xp&s+%iT1v?kMs}Fl8L4Q|d2_SPlnPi5H9;Tfix6`&8>+GJ#y(h-NTD z=Mv&k__fH;+VMK|SVMVrU(MbxI$^K==L6|8x0kCsO$$?!3g48S*dNseGDJu z<{3-7A1zVgBVt}vaO3b99{=9bL*xn$WMUrUcS2q@e|&!k@*x(E{Mp{$Q*RW!>&0k2 zvhVaQeX(RG)8|^vyM8g3?)K+j+B(mz%Cr>y{ROzybo}I5Jxjhq>PjyM3e2hl@c$+@ z)d2;1p$vE-0?XSGZ$^M;l9dMS!Wgd&XY0Ao-m3m4sG@!aJA9j@iUK{?>$1GmP|q^` zu(8Ser+a$?5Ih%MjER|Df4Y743_g3Yll7t1*R8v@fyqNsG!+lOo0xBuHv?h`GvezR|wN~=@%imJxQND+5N zjJ&GHB?l8DGMUOpy5h1xjlpw4o5O_GXUmKcMRMNQhiCqQv|pcz!0-c1le-I%E2bU0 z<)Xf%4r65gqA}tIypt4BAen|?M|<%&6Ue~7$nMoxPkzXk2T$SA|8~wj=S|xH9?lC; z5{&MbtK{)w`74P+%tHdc7m(uw)bNJ+qv|O(RHeWVZOw`C+LAi$Ra2QpN(Pso7fd(X zD>o(Dc@xu$-}gOR^nE*g?t{^2E4Z>k)|veZVbRoOFN_0`zenhT)|H%?!qGwdrsPf! z15r8A+fMZ`gUEzr!VKbYRRSEBIS3WPAFt4qgAc6Ts;U4Dx5DF2eY}IZoj`)cT`y## zPgBHK)9IomF#Y{h*Y2D%m)oe&{OX2t!m2J^5p<@2fwqX|Snt=dD+U7nT+gziOt9Ve z$WQ9AUpTz?vx0xT1*F2JyIGZFc_@87M7uAT_DBl|zv2l(MA0#ylK4VYwfm z49~TS*$h!umUNtmC6;1~#ZC|0rknZe)BkZ|&&6sl-Jm}5*gBy2=QGR)Qne!yX^-oT z*d_;p#p#9#Sr3ny*0rnVX^@_C=Sqf23WeR8`dddIiS^A`$X~DubrI0PIef`k{hMt9d(76feAPa_8JTm7#2OwNi{; zu!%(2!k-im29bWG9)m^DHBw@Vn|&o)(MoZCik7epP$a};vGDTC&wd(e4rCSBHht}m z%ui{QJiIJX`^P=|(qe8j?bnuRekOMp-z#{2gc#}y`MxNcBgHI^^tqTK0l9m%c^!pk ziK3en__b{IX%B1-XP&fj@&TP`C5IGrWb=z$Z2qfrn@6VsA!%{M>xYfppC%hGdaw7> zMNfW(GVF=j%p~_jChaX8cbb^wx7F{~cHHJ%O}qAVf*;|#>e_$mU{GF}!=;Eo3oBCr zxsgX%?^9(Au@U@zSu9Fzj1=Ubnd9q2Rpk#8qB+IafxW{>PadkOS7P;QWPmRGwp^Ht zWJd7Q?8z~m7{ly!+b#6=s1F165O+lvTBK~MV-EAY79CQrZ$B?P{B0}$Hy-dq3%FgD z&|H9K`nDF7WNe;GI@hlacSSSRoCj$SgH!^n%o|E44xiFFs#4nhWLXZaU8%(Z+_InH zaX_xJG&J0VoM-FQFP8j1&}-t&4>M1lofYg!{2$}1srpRSSw*raN}6L~9(&5i3tT>y z7pX@r4l~ztajS~pr2F!!o0LL7->JK%H2H&)lItN`xBI4?wabnb3ed-vlULTqQYT*W zuI-FRB;zN6s8D*1n|2havPBBh!Cp(Ft63}s&O-}|oKcpDR2ZLH#O2ZR-J$>^Mf(-b zzWh^)LScmbzSGdDvf3gzT1f5n;w1;RP`-nV|f#sgO6#815(UyI1dw|I%W9(1`K+rH79LvOoJ zk~aHwy8MGTT~sKVwVa$+l$unl__BGb0(=1M!*U7-qywEM#0Cvz9As#-7YE_ z&jPay$n|-|#NapT={w~{pTVlV!F=J)OOxS%$i=CXwy&?XXot%qDuaJ1b{g?a4SIT+ zs;J*~bG)z@DbyzTafoS+Pv57=x* zmp*H~q1iKaUaJEyh#divxzfic8=V#=n;IgR!ec#&0|I# zqP{B}dom>fKo1ye4-D7ettB}IG5;BX#vA~i8E3&kWtcS>t~7lT=*#{7QQ~aij*Tuf z>U)mftV-o}kown4B~$WX<@6yQGM4glTs3Oslp!6Wo%D6M&(zuwjqVxX7zupsRQyrW+z?dcU2*d9(5CXR%RVlR z$8$e)&CY2_xd`}S7oaj;Jlc%>gmfar<8hm%`+r+d)QfQu-W*vfWI>E{t8NYSJzcnY zbcY-hA8?17SWYtY4ZahY3V{-DrhnPftMC|jK|`Q{`0yN8qN#2!bfbA97J)|j6GocV z_rv^sI6P6--;Skxr+;a-zDzhESZ@q+a^R&Vcpn-xEfSmBtYmM>&*Q}MC`#dGIrACT zvD93v|K!01rbRt^blGugx18oda6mE)mn@6yLCH!8aF?YWtRpRC&&u%KQcIEb;%%Kz zbH!XBYfS`?-NMg5dma+4j>|*&G;L0cy>x{iGE^(Dg^eL-nNMmzn?vTY@Ig z$;Ha{7b_P3Vwd?f+^te%?BAZDM(^w1pAO;Yc<`j3Pd`6FF7R)mi4cijp4%^~x~8yD zh32BA=<=C$J*;umvj~`vc(LbGoEo@vyjDU11JN*`$bqaQO(;x{vpMZdaAeGT!NpAT<&leN-hP#dH zeDTZvs(-uRZ`xhnIH1j{%4@C3i$Sirxp;&aEI)YYF}WOkErx{B&YKkl3ZMWtc*=is zht&UOQY$05`zk80`06xZOF}!$f^cVY3$hI?;TE9RHIKH4=gN%~|a zv>RKdQmSMElzRHEG+wTk0O3Z`;i{ z=^$dN{o8im4w%`RkPG0)`A-nbzZF5-yzqlj6K-^O9^F`*nlke+4E2#>@u*5= zLy^&7w3Ik@-RPcEJ-vPkiI;^cF9p?F)^Pz%k_8MuD~1qn#==ol`t3P2{RK(}td>Dk z=yegHF^1Rih+vYVz(vbu^s8OjuHV0ytAV6FAKwj(^exmLKwIaRg=JB=>!Iy>>Q5hv ze2|rf=BGKwB>xUlGPQOXZYRM<=x)7Z=CGunIgRENAOz;YJEd}?9eoMKIU&!9z&r52 zt&63<*Gb}4mIJ?O7H7^6i3Xa$44S^CvVu;ceP}BNJu6Dl@1So9XHMjbqi6|QmL^E7JucP;h^zz&2*}LhL z>M=W``=UE~hUwF(05ejg?@Bz0t4MH1a+OxstSheb}b-9|1j=&;=^DSd_a@TjlkKiH|pGaf6Rza7a&8u&z$et6LWN9}BTzkG1+>2TJ6{O)?7&E(D9dRkj6Vj+KL2a2q@Q+%v~oHFrV z(H!RSArj;{A=w@pAJR(W*=Ds@mVusIo&sNvya|1&9}tKyM=s$lgsq7nl?Mi_^^xKs z)pA@TdM=XYry!0l`S7QYFj-@*VZqZV5-`hK zm6now{qR;Z%r7ZZ>&GE&~MP=3n5fr(kf6NSL=m*oPN35??;o~gIc{#XtW z?b$dKLA*#2Vhxu%p3CypB&7IDivMm{latj>osF7AE^tAreO066-@5W^?^OG`YHk$K zyBg!a{(vojkpP%Ittg^iM?Md!2&9mEy^-~f-W!!A?yo8>&tdv?y=B3=`L~xqB)6^i zGMCVtsMGRIng-9bgwx!yyWKA^eiy$=&dKell!$gnPN0r_pO+kYKf5H7;~|A$Wl@Mv z?t~8vFDuw52Jg55V)Uw2Q9c7g9L077v+P03KBpW;{vInz>aLrzq8D2@IV@p}=Az|& zHzDzIL;Q5^rj;_m2Gu00NusQ6g#{t7_v#aNG4gHD>B(0mIy z*nQG^{duZjf6tvW{o>Cs;FW7Lx*MF5lx#lEpO=R=>mQ(s&!Stjj{jt>tb(?E8@c&h zD9t3Jj}7Ci0qI*%^^f)$Rp;@@aA0dE!y(jGmKb+!EwE40jm^i|(nND?JS}F98{3B8zv2`~;`BjrNQ!?J6~gb1;vSvNB&01~MUcw= z6tCW%wz_^V(OA1#dOEJAAQh04S+VwptI1*ad3xMD%qiw-YD3`V5j+dL@^oFHhHdP8-hI|h5Gn?*q zX*J&R_sXj$I}?ynoFdk&8cQaGD9HYumca(2@M94pESdJVGz9!gdY4+*Au!(h*piF( z>(^^4>`RnoHKlwP1y~4Py`yHfY?e4pPGe8G{k{x?e7et8H%I2hCNt+gpV|kYEyv5@ zVDJs*{AEUIgWo0vKnEcYtEgP=>MSsm#h4cH!qcLS?1AoNYu$sVufmuLm+=eW<`bbY z4a+RJ%c1Q>ML?m(#F63wh^!*kZ|YY-fF+vAZX%SbPtux*%`405C-C~4*PvxH@MOZD zJ@$G<9;N3x5iyP)X)HLG6AFefTE}V`fhxA&hc%qF~*f=#zBZjMVlZ zq9Z8mm$Y0CrQnVxW>;6fWXuoD1w@h8*nnc_y~M458V~Pu7q`$tk)^EmXIRpg%!&DJ zwBkz0(J5Ud?SHml02od7>svz0rT{AE(|}ZVoPFO8VCZ{dT7>r*%PdOd%PZ!*?|B^0 zUq#NxdD@XSJ$v@#U*C|>>|9`v@(bcVUS48mr?Q@9x9h6C^zzXRCZK(achpPLf*-g% z%}TXqOQiVP!&EV+B)$s{xn0f_TDrJI0Kk0FA2+YLa@xta*rv4ceau*71e$?|IFS)f zbj{Qc&{Ax#tYFG|4f&Pg&mPF&U)At%+WQX5CoRCOr$#=c&orHe3xUou7OICs-bY@! zW`cXMwXqS_H0y(| zr$LtNO@F+42H#*b(nL;=o?$dHBo1R6;xiD-(?YfI8pLXDetP}o_CO06l(SLKM&a8H zJKxLUn#R5&v6ntD!zrUhsh4Ly_+2-_sX+Mi{hE+2F0!YVbwkBJbHRsX;b} zO(0Jy_ed!Sp6e6-R~IUbDd63a1vp8ivn(2x+Zj_q#=A7m2?0wdb>CTd4Is)65HNfth!CR{GOQ+$jAL^ zc@k;tVXHwN;BSJbwoEh@APl=eS!S~mNosCJ0?X^@uo4_>tYH0BDG0{jK>gKj76mfwy@5M2UX*1I$dj4Ln_Zi(66E&rKB%wI z@YqH@lPqKH(fqz88g_~Uwzk1mr%rxbL=JjIGUxv_dK;I1DurE~kdSz|+dH?=zN3eM z_O})blpP+!|Bc(T6~r#onJWif()kn9Q1fxl^~3#g74_nE?+x}S1C-BYp~S$T<#gg) z{;}!fo272nQj=tgws+6>stfr<6nnNi@WOkDoOa_ z$@QJhbt36Jug~8*t7zmk1^|v!G3Y$f)oaV7wF=e;a$aa+9$=egzsLkc97^aQz?MLk z1s3f)2}FnL{e;F%$?kb6=VN$xbfJB7Od*>g>WnurTcOGT0CT>V9Ts14e-MTaL zNT{0pRz1ikHGt9Zb9CtK8=mMd`}B{TRa|{Dq!oqiuXlE$2ktMluPRbBn%^7`@6=qB zmAJUNv^ZSwbNH2=Zb}Gvz*k$UstmRLN5O^n^31M8JN9I_TB$r7w=jXid|&Tn5DMu( zrlYpX^;epzyr0%4Hd!v^dU*}CSI;SDavf*&wleD6@_(R^h#C;^qVUZxwfl!I`O^Yy z7<-^L{-B%qe>R3sam#tmUqW5`BJ}mkrLp4bNlUn&gpoLjAwon1PF8DjDrSZ|AK=&g zm?#++2F_5sUWs%NN0^hV=-{aVQ4625M7~lC2KLxHduEb$(}m$OslqnEzi|R~t%U)3 z(fa4rhUL^$O-?b$!z&qW_9%cdk`V}--Ey7T`>#C;8p#cRBDWBT(vEsAAIPhOhw}|4 zM|kSw{1Fl$q>`RAk*6kBdm!xEnM*a0zHp6Z+QFPN%$A>ut1oFp*5S{w)Ko*zYi50L zsn>xh+=x*E3D;13sDRuHO=lc-&@OA~>!n!Ipx%0>8VN`XcFv~8Y?+LcA`ilU9%~}r{{A>1tKRa5760j+8-9{U!;e6CHCs5W( zFR0s%_&GV}a=WW`vUq#e8~O}xeA2Z+cfk4h=yx^-xgm~Tm8Xmg(8sx7CN z2CUM!zcbQ*m4K_ojeAaHA|5S+Y;Y8Di@*(kSwfb3WNd4oB}JG5JOuC7FsS&XITHnj zc>NfjgdHv74_Q5|DKR@ZKd)(ev(3eosg@es?#Rk|bfCP{{piJ_+TPO~@6U>EJSKup z?bkbk>B4{?J~VIre)77mE(KX%yRdAq^JH4{W&jDhzq}jl{1SN^lP3_xf@;w%BYRMrO~_2O6XK#ELKkj z#WCLlWG8mQf_DDA)_-wD|8>gy-&(_=>=m?0ym>ND*d0_ur1|pL2wcMopTc?f8M{bq zuotB=Wvgvapd|*!(kSyh3eYBA()^ct#b#6Hwrc&B6Wd99V?#~yLGE&~7XGg6N3RPk zVrb$ZaaI%{vJ&;;(SyUDc8tqhfVc)5_qR?<#h{8^O?P+RMjA?!ySW>HqCI zhYgV%WoFkS3wu?jX7l#}M_-HubBrpp9iwv%!NIR6^N*tLQbLTF-E*lYHV37&2;Tf~q^_eN*Prb4xjv$<7Ym>Kx}N_y zPxk&3c~B;dx&9NX@x<#W((T=XA@A|vv!76tmct~js#b*Ek}Y`BX4Id|CT62Uhf)rT zlT|xMSg)?7l}=udqq*gSAlg6E z5UzXXQXmUv0N_YA;}Uxd)bZZ&sWPNwaLqEfSunhL5#0OD-L*^xG-qyvwT8rqvv4cr%ui zw#11C7OzS#AQhLST1|nEb{GrcSf^NXK|(K5X%F#iyKOf&C(b@h_H(lp8O%(IL&ea?f6_YYpC|7SZ#3eFv`V=PQx1IDp#Dwx zadW(g?D^m54S6XZRn);be)HX~IrA>=qy*qqT*hhP^$$!g(XSeRi){gW^6%uyzgINv zBut>}5xO0Tk<><`PpzqeKmUW=y@yMM<^*kyWo^@qYCV3Rj!QVu|DX?lre4UW>CM)S zi{v1FdWdFD4BdeWO~;Z`q9%OpWBh%YM7DGvV;C#(Wc6-D^3|I2t22j6?H+@hUQE<79#p6PH5f|Pc@hZ28*W|(Eu$s@ftgt zm`UT!qdm}aLXgIr!eHpDtZI3E?$6K{%2NXPxGvM#vD)U8nbcpBgeV~)Qhfi~;L4_dil?Dos&llBN@ zcvNd8ArC>7U3W_Ekg*OdnkXT(%k_;t3ZKID`W8qF*owsp8@0y;RPC9#FH+=TIAop- zV=K-@#Bvh>N`73=iYFY13@HB&r+N$Qn2lr_W87biDTa+l6*{in0>m^};>V5W$uVKc{zkf0n6;rNXj zueTl!9#JP`S4@0*t`sDuOGM0i)vK!!myYDcNiwNAoM-|?rJk+zdZ|26%@Fu>9{6XX z1Zi{d)oVvT+JrY>x{8%GvfvqclptP^x^c_J+FA*>QN%-efpV1bxZFW*x8+?0qd>tS}7cCHdnmPaAStFpk6ino8YWXLP zux#N2grCm`p_IPQ!As&-H1uTy4o0r~r8IC}hxUQ{+53g?cTLd;88;i1Sv-Rb?w);7 zWwjH?I>c$kxIr{Vqh8bu*AZ_>!XF3E&>XK%5rIeJx| z3D9P5%73c;_7=z;fB*`Wad}xfT2IwJsydq$xb=4=ZyyR2AfJNUK~(I^+A`<+>;9#3F&D*okGro|6s_XUOBZF}TVUiclWaU( z1@dBBHP11a{(GN>=_4jJKk?VDOE!xD|7GBoMODM2bjeuVLQn)Qxnh~P!nro$d?+hv z*o>jBY6&}KYJ88YAn6LRhqYRalM8Y|JeP)Oh;A}vXv6d}O3v|7U}LTpJw%Z4w3sk_n6as*H`J|{c`Is zv_hHJc*Dqkc2<}k*GioL9+zy5(JkT79lKX$|oDG;vdcjWJCY99gn0S7O?WdFPb3_zbbEGRgk(yxsn07 zJv$H^2nHs9hTj+#oK3215f~O~DcBJ&u~Zx}?6Z_kN$d?fWo#DcAsQgpdYEO&nI8t1 zS_xf5OuHE@ioG4{a!EQ%;mbeJ8HE~E-)yz;a8EbAyLtKCe#<3#cJnJ4vRj*Ui#q@5 zD;iaa1cv&Q2gb(0jF%b@SxC@4VANk^U1OkR|LGg!`3bOolSP4zarq$A)U(TL+k9kG z-ua(Wfu>E@{rUMN{=mdp!(~u-zu8DmbX1C6z;Xx~DpXFg0L@hhg#Uzko3fc6*3$YP z;`T{;a=(H5KLfI2x{9(}GG(L@~EUL?PvEa^S8OCqEI52J?u*7V(r3 zK9ZXsg`-Nc$KJ9#g!ld_vRyu)&vW{X-lw_H1<~W{N$5CzhWpA?L&iag@4Gi!v2N>s z-1TprbGHE%3zMyEP1ogDy@YwJOgtPI>ZCK^Tb%kA?bA^0>j2>P=?EQZqpDu`^gkas~3Txwucp~-Iv z>p_W^0a;+CT&QtN?5Y|(sSMU6EL1m_p+m-PZK^rPA(k&r%YEw2#9ACQ!pmG9FZBYS zuQ@l-m-zu~*dv$jRZb-GYwC1|$^3go)NWsGW0#;o?=oTi8)Wn>6e0&BGc(-oa?5cO z<01_mw68O?V~q@_!6NwcSclKq>5#T1k__=;&#eMg-;G{M{YVE9Ss~D$^ z?^H5?zhqQf^{oU^JS%CdF=$Iw!p<3Qw{?7~7h?lBZYwi$@HT9uuyD$5C?VNLKwdw{ z)abd$>lkWgg|XPI7W_Lt)6)jaWA9x1*QvcntL>eKp@Ujd`>u*?OsK^spGrF`p&@5crg{h4n2EbUCM*O^2*N#%-(tQ!GC{i##f$7lAo9g zpl5pGcWftfPPi!cjW7EvJ^T>&r4$DxS085&5iX#E?-Kj>6I^#r7gIc@^$zp#rQYfP zrbWIZm1=4^m8&SH6rx0^D&g%o#4=i(@|A?Aj8foS;HIx(^pvv+TyTRj3ycfgC6Z#w z+hobw2J$ofPi0lC*d_3W{qS8$nqf_cwKDya4J8`$ zkuw+w`t!{jO!{r%tz9h+da2?!9n+8$jww;2zvE9nxU6yzA_zZdG6I z#oT7YoZq=RP%$I%#NjDzfTusDPOpR#?B3r*<2389oRxLy*LAhjKKpX-zwT|*WYvu_ z?qF1aXG>O$q!?#`v`l&oieU9jw1puQbO`AnTP>e@q923z_QiMA2TbK%hvGZ{6)`~g zo>l?f6QWMbNP*{V5thpw{Jz@#LvF!w=k~;8>gZYeovi-flqQe;U5TJ;4cp1>CpmqT zG;@r;3V78q=BDIi0x@sPv6Ufm+voA#w&HQI6zqz4brrp3T(xC_FP{YDKDrd4`2Lze zM&Zd}DLJP1WBoYGLm(}$s%vI{uIk{)@gYh?1vK;;^W_GYyO=+XKRgF zMspkverAj%gW&`y+{?nzN=epP?FE{#SeX25isO`_;4i)mSewrA)!QPlj4nc{h+Opy zTL;b;)L8h-stR`-EVDxHIO&` z{~WmQ)~>ReY@rCZzA26L6gS_^+<&I^w&Uo^lOK;?E6AfjI55liXeRhBKMQbfkB1L~ z6%JhzrvwejDkHd)H}M~tGS5Z^!`YZ{^?QZ$Na~kazHGAmnhjCj@FIJvQR9pTF*<^q zh9_H_i#+OBJ=|P`o`)e#znp-9GKS-^wTvq?C;r-d(^7UmKKGi>rMKqV;8)@Gjpn>i z%66;oVN%Yf@A=!S;j{GvI~(U4^U+09+vD;5P8u5gXQV4)f?4y_Qe0AVAbnTc2n~sE z=uoup3tOw=NFzX}6vE@(->IW{hdnCkcok}$A>G5R-B_r%?HfSHR8sO#+3>oPujoqt z|Be{+Zrfrn&_Np=d^oLAQQ2^>eDsxgj4xIND72fwAL;l)pN90iRZLgNhhPO`5*a8V z3j5%r++4t-yf>H{Ey4L-u{%R2L5I4J`{aYcXQCe;HibwO`kU{3QwILfsU|2;v@|l~ zonjj(KuOjaoV;LXWE*GLa4!-#>ugiV* zjcMqtO-<7$^`yb&>S<}pqG3zENBA_vf8_t=gR~)GlHI}(l8-%9znCa=S0Zfr#EANb zep!2YU31?z-tHIb{IoNxw!TL{(>I$qQ)rW<1dh}n!62WdlI(MtTa-%nFN20bBgkCd z(y^TSM7hX|Hl;Gjh3)LaftX6BpQgzyF3X{bqu==151cmXgMJP@)^0)v^i@3=N`C2e zOZ4x_+)KpCi2y~q_;p<5X{vf{OLrDnyQtod@>IGfD|&1Ww}tl5vVuUt!VP<|z>)D3 zlE)NGyOUMkXu08jrIHCYN=^92k|pxcyS-yrQMSy8-`h@lXXV8HK-Bx>axxls4{ds`{igkpUqMny>srg~H1_*B6L64oAuaCO z?%i|yjz=*>4|wW;EwOwS$g0Uz5moyPCr@aG?K5%~z6)-`VKZO?QGm2iM*bT<#60i$iYq!*C>j9DtseWV!XA0!v{f-Fb>P?N>S_pl+2@| zgwTi)&2R3s`hW0UQfLg!MzUr94U_>W?&?2oV^8z#HTt@F@dCt-i}h#5!(s=|J=Vn9 zn740ADpm3-QaNAD;YwCLK?A5v+>VgkmE!L?CY3Sgc8IPg?8TFS zIehixgXb2LxfRJz3T0>I`Oc3VTo8e zWzt$!xorqF+>m)btf=b$@vnBE7v8qSikRK9P$AzUZkU91$W)F~rXqrl08vy+qkYAt zV!nnOE-iOD?6?lXmXVB@P4a-c&fgf&KrwgU-aUiQ_}=t5IdIaKyJ1!jO4IIcYrji= zf;yYuU4c(s*L`dx@-z{-8dqVP428oWUkavgv)WFdX(Dpi)a9VGD^f+#c!RZoxy7(y zPX9IQo32RxaCjW8soXMP%O5^?rElBoPIDoiKYeRJeU2`vI4sIv;t^$5{_goM^yB7W z5+-zx!FNT{&dm4_WdJfOzP5LmpIqI6H=?f*dIz7_{QOkn4@da;f_L;ko(63}{ah?yBq zUy%dOZnV?$6vIpGG#>rLrFI7w0QUIb({CwUzYTDJExi)CPiHLclb97~VSA83IIxKl z3-_!@133x=5-_aT;3shlU18GExdUjdi}LS#4Oz`|yCdfH{K+QYbjCR14Co1{#O4_z z2YZ|!L}aZt0I*6qm5F^JM!}ESsNcMLTR1-P<)aeroOxSkoCi3~y!$Z&^vB*o*bck^ zcj1M*jINm7q~PQwE$*`NXxvlJAGDzv(HvBWpEl<|e(j3S5@uR9TG5EMb~WZ=S_|k^ zpd}8{q})5FqSkw@Ilf)QO|$5tu{d2*DVFlAA#Lt~o4t_-DcjSt_#I)AX&Rb=Q_6=Y^CWkEj|<$oFio zj^qd5YV4KDwMK@?OS_4w8e75UN{^1A!RWyhxAnnE;6jcl#;q#|u1@8uR3ht?METfo zZAx2tl8omZf_QF-ubR3ht1h9pmPzhpSDT-3Fl>JHhn;4ggUmu-H32V}q2gnVxB6-R zcM0?-cc;<_|SHv!S6n;fck|6 zGV@;M0L2S5A|N{Rb;|_AJ>;LmM5AAHwyo&*%9f?gHc`K2Mv=rpu-LD*-jk&-ccBLb zhR2sVW(+g8vj$~j2%(z&)%`{KPndZ+XKBA?0xda&%r1xR8ePkS`9+^2B)7lENKVPuGx!lwaz|Z>46yO=#bMQ{3Oh z#tAkBN48Xf8lwUN#s6>1`YP)9b~qH`Qe^&!otP&a6{^l#i}eKrer0OjA4-m3i_?;~ zP$tIknlIZ9&3foxj>?HwSo#CvGU7D^u^;R4Ecnz1vUU8qD2b=`eGdXqokv+tnQvRfP!2wt}oj8QqmwQTM8^j0tM*?y3}QwgUnf^AUoCl<@sQ%B`JIbxvb zQHo}BrO6%fj8orbq#EvQ5+02~hpq@HN&gJ)T#KVcj71{<4^M9$NO#!(|LdNE$qh%3 z>8Y9SV{%Nl>1n2q<{X`4rfV1`r#psern`@>qwDv+KllCp{pl}%xV*3H^?JsmeAyJ%VP`6k4qM(7&;7I7f*Ht1U4cdu)tF~XsZAoD#?%IAW8M>A&UJY2_E;f z)Qx#HIhp24)_P-xjY7;43m0mqLw1@W7;`UW za?vB!Xji2Q9>&n?qb&SUaf^K_S9D#x!vHq(B&g?IGWIhCFk81I zCC#8K-LO_)x^PYR=1IDd6cO$^o~%jD0u9nP*vy1=9Y3rkC=jTUxXBQN(S+vA8%biU zJL?~6e+#$c|4z^n^c=vs;Zwp@izfe?(GmO$l;xInzlErNvAvKRUbs5&ksA)ASF14e zFYuWD1;bKyn#ucwY&5qlC$+=le1(zqGza3%p2{q{111B`4WaeYa%Ri#4#_*IH8JlgC89!6;-d?6s;+5=as9s>7Dz<^)IaW zR??9|_e}cq+g^yyX6E0q?hYKDP$?I%`dv_$>T_2RHI#|ep9k3eV`a87Xt*EFWm$#M zt;_swx;F}^ql8WUD@m(R8(oDj_a@z$c-u@(G>tA7-}zfFJ=wJdv`+1her-K7yeZ-q z6g#zZSBfjYQbRa3-E*+arM`QOUj}=&&c_>8kvrHotCFf!G{M}0CC}>>V`4tNJyat(o4b;>{kJ`Uf z#KI-)Fe|>B#BeF+UP1sz3a2B@TN`AxK=(G6zw>;VzvhqO#ajQvPBBd(iGZ1S)Tu** zH}785q``lJP94z~xptnn=_hOnJ zXyv`lF4?j!f+j%`RygnwMJ!3#wgkZDiu#{*)2EHb_@p(x6CI7r_HiN%%k>M(#v_sD zJM2YLzw21H`r&lXvn0@7EV$&(;~&V$=)M!^>d$5m@KoB;!A^g;^qH%QN!a?-nt!+V z`iwPQ%DJtw_-MK(Vw*zrnl#iuo<;APo>I%5^{Bhce48Q&rfcphvC1b*>W$~XO+J3Z zAZlXsWjxQEg7OxX3Z8sNFR(0q9>qwE64A!PS*{`S9|-^$(iM3Jw7_V$DA>XFA$)Xj z`k!xWBhXY6_GEIv5e?Xcz`3EPXt0PC_Zr!B!^EqOs;L=77uH$}CYQ53Ji||i)eMR* z+dmr&R@V$CPXQczSba3oz2#m6_$I55xd`+Xgwhm3SAKBsE&AtL$}+B+Nhen<<&m7> z=V->1^%9%-^7ozbLX=3L;T_&>SwFw%@yb5bMfcEy4rb|yqHob25 zjKzSi*;a4Tv0UV$X}u|T+g}r(Wf7=YZFt`ju!JF-mv4YHGuk8B=;YDDETZok}knN|y{nEVlr*DV* zWuyB=hu--Sm6-p~PXYGJL;W_-z7y{nuJ*#BrO!IoDy+h*wZQH!A-l(p?;FQZUgFS+ zG`xur7pi`WK#vn-?kr-<0bxnSad1>z)Ru^U)076g#yWO^8$!L5{t^^)%BY7jBJ94% z-3`(n@a}Kj96$LTWSU5LZJ#^Hc#ghk@qGLiH#02S=5|}ZaI|vr5oW->mWh>fOEjh+ zwySV!WuWfJ{!^Uj7EX(Tlu~*@g7D5IfSdsk2KBRC47&9tpPoOaJb&2#F@;caJD4$AJ#>RQBQh!MvxQCGdUIyGRjes54 zeZLs(zD!Sl^eecDn0YTTmvS{h(&om;vY^sDTo6GPq9)9HDJ^ngeW!fJHB~&HT2QOGnrHO+E+SE?@-%V%n z`AnuPqB~~|HFgZI19eVIb{!Q61U_N%wcvzeh{A*b`vgRZ=n6ste=Qvsniv<#gwaNu z-)TDVY?FLDWqULErfW-Bt~~1f!Zrmzet4tvk z-~zT>nnVdxm&|Lv4_hS}M&qYi>SYOG1dbgxul)8c{3edOJOFpt+DMa>OsZdzwkaiHN-8u@@YqZKgK96CxpKWau-x8 zu1syashDJ(cAZ<+9M;0{WvN{8AWRB@{)^Q6Z{8xPQ;M-5%N&l*lCO`k6ZP*V@%62Y z0)i4SYW?rB#)YlLjLY#BNteOo`>z69YrRy;H_fE#C{%$bRa~L9o$R54VV-Tvs2m#2 zwbYP7n1b%IdG$^h-XPv<={e@d`@M|y>0ai;bNuhHu0lc`^})UP!mwPnN&-@UrZP`O zN))sR7(}92BGn&G5c)$Z@a3SJeERtIo7q-6f*zXc#t^Qe(XF!^!?v86V^7})$Lzsv zv@THTGuhmEYM=tes!E^Js#G2C)225gL}rViW&8+dJH?&L!N;~#RmjNmyq|5-lf&5E z6xshp$iy?i)=ZB@4+1-sx&Y&y`Uwu+3uf~iz*Xk%b4%}QP>C)bA--9Z zaAsuVnvlU=bxFS4+tV)4c!u%ab8{U;uY#t9`$_?fA@lt(WyFXZA>?sCJ2i^Tep7Cx ze|QoWr9 z{SIgH@x{F_*TmeysSU3;cU~4fHGEpsd3kIo@LD&slvlO_#J5Jvs|RKSct!|%p%xs) zBJ-gVw7~e52A-K@ir--Q*FS)wIDy1N%pBZ&tRGoFWWc;>w5JG0nujr7jB;b)M^5bf zZ(A3JmbvHQQAVD|X-_>+fv2VB!lOa8egDOeS5ui1?c?{eDHHkWuiM_uBCmwl{Y7<= z)3*l#Nt`oAlJ8q3Y-@B}NEvood>>E^YEl5O zpCo;t2mIaPZ|%`;E34E2YfEBiBe+af38xk7o-yx#2Xc=UI}c=LiOk)K9-ne4&LJNV z^+K2_KEKNCJySi!`1ck;tR}cF3A?985u?mpwy(CtKF4z%3ExHi+*7KzS0%pJ$s_CIJ z-kdOyqgG&mj|0$z6@_}bF({lDL}mxOJ`5SHxn9J=~^(`SPM=DOibPvC3>@ZK2MJ*zYyold7dLg#B@o@}$QXNU3 zNGLo2G_bB(b8WlXk|K#|MuxO9CJP+mM${ZL8lLuLjC-Q!P?{l5(WAOdgJu3Wy+d>V3RYa zJ$cbUo}$3@$N%XvC*wGaGM|W)xv&&3h>h}Ng}U;{%L}d`CjS!a{`3Z3H8R0y<%c%S zO?9)ztL2vsiMalbvf+nDL2p#tl;%ml*0HnN6BAO17)fb6Nt%PcOF5J>-`!)a0<@_Bld{i znK&O}G}+k4Ps;B7>yUZRr`OnA=TFV}yDF?B8+SpK%!PH zoeZ`hL9_F!ULRA~z=r;#fM)0~vn4}`@}4khm2R`;6Mg%iixu@+mb`7g-J=&$4e-9) zZ*RG|jJVSFtF!GtnwR1phMrA+sqvo|KD={)3aT7<^;xoHhpi!QDUIJm-31~;z9Nt5qVi9Sa3n)Zc!u-1f8CiYhR?3V;{6)}t4CN6qNS09}xRuhowXG(nqo=KM50kc!?$?cHPH`Wp0}A)<&=UkS9qPXb zWh^9?b1`IE(H|!>tN3V~wSNoyq<8@&n18>|#%G@Z1->;G<9>rh{LX~Ke5qWkx)lJn z?qa`7Cqt(blmeTFk5H87oI(gCG0Jf|OOZ1FJ5r?R4X|32KuUTfN|{W{)EQ3;e^Tr` zr7d;^1`Q7`lTSL}D>qD;vAf9W5j0FrHK2tj!_K~wX}NQ7Ib^1;Fp;uV%`VnzzgowS zKaf)V3Hq*>a+cuyp}pKW@Dd=ChXFw?wy|XGq7CJY0jt_3Wy1D>-TDSJLA9~n(>u{e zI5#Pl22dWmU#IZ2F={1bu;h_Cx#zA=(<$lrK@m3bgQEVx>w#>Bkd}8l?8|54bRILA zW07!yQhUWDi~L~1#$U|g{v9h3Gx%%;Mqzm&l5tEHG*5V*G_v;_oPT ziIF%WBi|Giul^KqgxVdtebNSs#@t4LdErOPNmrzd$aZ^e?smzmcZObq)~0Geds2|N zIf|U!F>Xw6b{-!S2Hkbq2Woby!AoZ0t&O-OKYkRbjcU~%<^qS|A(KBv?@)rN?$$bJnfd=XNnZk!6pP0qfk! z$vA*@9pzZ~O*0W7Gr9CW4|X+p@6n6{<$@e^_LWFEBj|z7!E|!yn9CpX41Xp$aKjEJ zweySM4>A&u%QEuqD&JFdE8Z@6D_re~xyjQ=+>RVev>07=XEZ%!nOynIb^c~{a`^S` z#%`*jf+C=S(P>9|w6gg(GjYee%|8a@5b;&s`0Ag(&W6j*kp zL@~py)o-XmqW@c}4rMl4D#ww;2@zD1VY#;be{1EZelr5fTOw`zacpcyscG1%A8H-N zvbx%u0`=r-Ph6K-Js|oF?&~g_eX+tmcdJoCpCbcCQA}nB{3rtj*S`;)Xi-ay*M>IH zrYP&E7ql00V1OH$w=bC>%ukN4=$&;7QDF@>vneN(r0xAV` zUj}k(_>Xk_!G$4=<4M*!JDI+B%&kS2OSd<%_5RSSu~8tWhG>Lcj?nm-t~HDbsouEU zJqL@qO}45?Rr5+ zVXw`%>F9jFP5j?pIcMRqBj?kldT$&|>9KiOq%Pb+TefjHG%OW?ZPzZaua0A9kHAj3 zqpuLR-7M+4VL&5tBX}Tk#v2m<{hAFs`mr){_|3HJJZO%EF=IGKOUY^K|MnXnunA?s z`ew|?Aa3}hB=$h0ekhKnc(~U|{wrt7OooL@} zHeLI?9Smd2n5;<`mi#FP_iJUqc{vQ!W{Pq-bsXY1J&YSz}Cq?*LS~Sqbj*7$XYivV*gkDD2${3aziRMTV`9_{X3Z(1K zKGSRpTzjv9coX_*Bq9hkFYcol_Y2f$rXX7N>xB0g^c9j4IQkD?Z&v*Bp5#n<&o~D& zTbsy~sk}x{b*`qM=ax&O`~FX7mldGYBWTkmqAv0{_T!@~leJ9w?)P)|DNN-KDYPnV zya&3Rg?!jI^rQtIC zE$~tl#*zl?KoX5v+wHA7+|ID%udg+Uz5HKaZfaESv2n}szR)j?@~?^}uOBBw`!KB9 zKDAaO0yVB*IX;E?b;2b+#_Q;7FY~tF-~TxLbvSYOC?zvprte`h9i91bls(&|r;y(3 zzqc3?U&weJG#iK-u%yNx>MPlh3x6FWLtUV8MsF-FgFX7Va`}poqj*mIe7s&q z<$fhaQNnS*Jz%*Jgsim|5wJyIYk{US$tiru+Nw#3MuVzJP z=w>KLA}Wa8XjJ7XS{zb~8?QUctL*X5{SamF52~VJKgZ9<=&kR-#*N#3apDzsyQWK? zGO8^rYuz-3uxYX*-?r;Rqh2Sc!Ij^O=O;@|ESM-N9e)gnykFm#xMRSjw@^rUYq|iU zIm0A`<(_Akl`#*DhO!3q3{b^A66wND+EzD-0%zT;JGxow*1zWpgsTLL^Xx>W4VzD$ z82@)i`?#CWOLr8c3!@L(lS#J5+0745k%1f%kp~jOMNkl?Ue^sAhbVds8MwrtN-HxJ z98V_R7MlxEr%H_0IZR<@;hdqu*BZ00>x;jPj(K$x&2#2{?D{L{P6 zkx0h+;?+NQM>LIIa}86Yge93k1!TtQXt@#ex)+n%k+RBpTTbj(rEvMh?6Pzzp9feWQS^aceA=1Y~&X zM`XwZpG|KfMP#834VGk27DXgFz@EGXhN2EJ)82AksR_1tKglW>5UZ818bBzpEHbj) z#*;5@0YJl6tNR5tBv@hIZX$KN;a6+r7XBo;A9AnsRhzK>Rrh9goYBQ;)(==Vw|I5# zdMWyr$>B3@+QBb&s=CiYgUD*Z9D%feSkFbti=o94@WD<3S$x^s!=fZcmOTK}u>8B} zGAk*n6xAt942r35ILF-f?+}{neY0rMSv3A?U*PqF`u{}%cCtlZ$e>lh1V_-&9WR1+ zFh3B|ni2hj;is%&jO7ZgrI6M+n+0qq^(6hoUNVy3#WTgu|rIklDV5{>qrrOKZf zkdxNOYzkgnyE^=$bE+-)=Q=iP_5F-EN*v<}A4gn8@l}tKLcxB=Z|aj@q``ERq$F8- z2NS~|bteKX-SwlUMqFF6gs957Lb|P8v4%!+Z~;|cIw7%ZLX}y|$e_0QGT0HC^}QB4 zeAYe50wlHj9xxjV-H~$BqYDiASW@9ZQYgXd5XKjFd>=?h%oS-SmdYrnrOd||t@eBQ z0j=AdRo*d@*o0P^{DOg&ExT;0CX=hpbhSq@X}TQTX44y}R|7Vw@|%04DK+tS`BP`@ z^wK%NQIWPgo+=kK@Jo6l_Xm+rfqQcfB%T9r>w6;Fb_Xg>3BoNwRDcKy+5J%)U5A4= zcnja)41i22J&eIlZlB&FKV*Lud&35s<_RlT8fku57w5CP3t zaVhRe=W6n-X|&>QTYWdG^!>`x2k(2x$e+1CM>`Y#*f@YQ#2h5`h^nb3Hw9C5ZtFlZ zOo7MTjTH@vX#L32_ttv^@JMp6fZA^q$@R|;YQCBLBm8)sn|>-5oQ3=4||_QjJi|IYvQ@fE%}vu38YNzF^>H+M$6r}{85YNUDI*0TU#gsh@_tV`)#ShoxsW&^(z(2B<`{k3 z7O%z!)GnXS_WBv4>^w&NuFJ`i+7<-Q`;0!d&w9;mJP`_TkG&9};%_Nn_YML!-0kHZ zl7X`!=BG)(+(HcP`M8L-gYTzKK!=I-}16Rr*jv`}YWKA^|3n=`Lr( z?+6qODG-<772_>jMa}s;hkhaWze3Uda|K!O53gI|SNBAj+|`(WDEA$LglQ)n%4WMc ztf4?jsZBO<15Ccp)kmD9pL3*wU?=&my0khpb zPTBaq3ev0Ch;Hd6{#(+|z5DT_i*b65uaW2E#zxkB?e;EXzWlG&wRzvDGbML@hZivX z2;lFU;6qnOw-~cUTf}YfaJF5roov%-@x-cYf-Ht8Gp<2^ zWK}>sTXw#Xv*qwlY-K;Y^_qR!0H5BDdEqz?y;{?&lpT{fzKff$o}ibrEzr_r?;_dz z_ek_570w&elPj_qPK)R%%#GKGO~{25%1$iDW#C!dbV&@Isx?lVP za4yFM=o0ZbN_T)MFyn^G!^;yeW-?Z|h#$1_pU zr>@Rc(cVsXgiI3P5fW&TJVH$&D+2;IQXv{fSwFmhrixxJqCm=$Zw;V8aRP#0x26+X zi*Kr!>rTyzfM7e-OYfib0(Kv}(gel>V4U)Og_+zdHGZ8>%i5AljP)WvplzE&)=JI0Q}u_9O$Y(v0xMh0(N^?_J2F}5ea(?q}hA8xOp@WFHHjh zx3v$Cc_3u`V6H6IL=qRW4a#>?0I{jN1g=x%9k{r;!3hc{ityP^UIGsR}Z z+@aoW0z}Mq@*-otZrl)(HaXa~e=D=PTH1KL740|mM2H^m4ZWiH`#%?4q#ks%lXw#h z1FAV$p~_5bLEzYFJM>40l*>X_wcGc)*1bIT+bIJ52J^W!Tg^ITqmzAV4Og9kLrEBz z!HsUMyx6VdHxZ=_B>V*;83zrUuo9tp53S#{NU)&Q)7>j!!c+_spZJr(;zuEB6{=oI z<3%?PLay(@#Pehd<-y6}9$riJQ%LAunl+2))q%`8IWk*#pN;Uj~y%qM{*Sgh7PKs0`}F9rABmP=tP52{xXfH+}N@cLVg$79+K} znwZsZ0Wb`QDj(g0CQkR?E_ z4vnpK0WOdPJs2|~6haKHqzIp^^eOG7z1-Q}O2&3&NAp%W2Q=!`+DHqX256&vsZ4iu zgtUt0ys;`x;3`8r<$6$V93`L9pPf{Jmx<}&(cFHWpFIlMbqm|W)%_71%335&K|u^e z%QlfHYYKgdKk?tWH(vZPkXOwG}N z0S_y<@SD|#_i5Pl?2;$TOMhD|A~5vW-d)Nn*+PTrsHM-dp-c_>VfX z$lRSb|BKG%@jv`NUaAB7rX^y3+Lg8-R3?13J~TWk#2VL1O^i>Mp z)NfoEIa0gq^BuQ2A8htH-QSK(j0%djc#h=HJNh>o!-d z0z&M{_mV&V6Sg|??$iRy&+P$~HT1Mlp8k_ArErS!Z`TO~z@Bp=HkyDN@QRHqAor%$ zsostU1b=A^Iyux?db|z4Xb-rtTDs!f7jM3Ny3}f|{poz{<}IRw{X@(QF`t0jtO$#! zmErFs&RfG&k__|AJ;zKWBIj$*k)Njo%DSk#*bqR&T!MxgrcRXHL2WN4ZQeO1n~XXQ zK{^T)?n*2v5k1dQ{$j24e_tFMeyrysVnnC$NAC;kyWA*4f;z{rLtH>u&%Jo!eJMF! zgt*g{*?5h+%4gDY$bvbX+;xo-)csW*8@V;eU)v|>%>SyaRbi^{+Kr%$7L18?;K&*8 zC`@K5Aa20hoA^qH#X!qnH^KPk6mFyu{Y(+Zp&*AuxJuSzUtKF?16v#J#GnI5$wpBpQ*b1#)`1a_;41KjHqbZYm+Hc8E=XD)`~t1GXYI9&{u>Osn0~RupHsLWn3+Xk0(6Yx?PeHr{`XcTkgm=oY2%2Y~UT$IAYJCqjmT!^{z~2?kz5i=n(l%Hdh5fQ@ST zr}e+FI6i0A$hz-_Gse!nDVTii0auWvtI@~DEu-wi3V#Qq$3MLZ0_QEy!>PCr^Vo1c zI6mLyLBWK$ms3ZuDokLi1+tYyF2<3bfwbYmTLAP->n&~%jdS6rmrb$aZtU;XA3Vslmj-4VvlWPF zP$0hztFb^rFo>9lA>CuJ;KH5-gGwKY0X@c6HpWcc2x#)qDGu8jMd5Ky=X;RyhLi?X zZX6=jV6bX<{&$=2tjzP7a++4xt=0Lt5WCMi2eS>gC%^OzW|q!pyUX8wS$*b%A?A!C z9pM*}n2X^3MEDonc(#xf@0NQ0iSWb0fE@<6-SL{WocwTxhF#PBa+?-KJgGqi2 zqCtia_){~rzO1z_DL7@`Pdr_=2b^^~NF1kMFaHeU9)(^Xe%)wW7Twtq3t8569XMHd z_&Uc=0Y-iRFDMb*!nL5R?uS`{fkBKMS~wg^m(}f8Kd)9Ggu0J;@i<3z0b(lNj?Y@ZHjHOi_IPd)6Nqg4Bf+ z5r^99VjAG_G&;XW1kuu4V&W8l8wi=`Z^xM7qA@byZ|8CqHZ5U|;IS8l)E2S_Z+R`WZ}L6u{4AqZH! zE`FOu!8h6@`Rg?h_UQhy17gTFNl5f*cA`)~vnbB6(Qjb+ke%?z&-`?;^thoHj0;de zG(t<9>2`TLwj|_56V-9>J_jk%-N4(da3jVF81_S?%DMESO`STQOn2L{Zu{XuM1Pq- z{U>V~0Kgbmf^fODndDNgX_Us3dq0=9HB6C#mUt|W59-xgu8tx;?YFP+txw4b_*#K{ zt+xum^=j9SgCTdHN5TIFNvhEu<2z0g({|)+zDS*c$iKFzH!R3WgRvs~d%TU!b6`OU zVPN@Zm>O!tzlokpXynITTWa7-*f8J13&9yF|9<9zt+$Ev57(!$Yz=5LY2fQ9zmWGMKsx2JPe zGgMr;jP8l35jHj}&Gx|Em0oMUS3)}mq6$QW^=ryX1pey&sc9ooz(VoT5ACG^c2acE zY$(N$-T(hJp_0&-$|7!^Is+bpGFEi6dCDN;AtcW?rbT*c-B3T!;*R;BaTt(2_DYK7 zv#TwO-Es}a#1yt%gG9X2pn7d*q&_WPpX1Hcyts?I>%Fl{;oIThH=wY{NO?*(u@*a& z3!`R|9u%i2DNQwHrRhsesT*P6)t#>W40ChZ*W|OlY-v5;KG=O)O+FuOTiiLFTxCch zvPG8$S9TZDcHzGFo=eAZU%i(8pv~TeO`_>ex26C^7h8`Jj>rnZPO)NpBQ|EBSkgl= z=}VMm7Jpp?tS#2?vHwOu5>*-R;ar3Jz;ff5+K|t(y9sx+!rNwKv9o4JS-;(5Yt4vH zP~vH|;lm;KTZ8;u+3cvULx6>V_$l#qB7|f^js9<-4~SI-=*SJF*R_X#J4ThjBP+d? z?By!a6o1^@PK_SJ2Glo~uDHn%@kFDdcmUes*DT*&VefC<_j07!*G;B+nQ}*8>0Nqw~D)9ZA{58bcn4eZp7r3+&ChOwURry$^ZPHiSdn-0=ZbdAe+@--97e!~wpc*O*w@L$pGsyDjsj1; zcP+MkqXUU}5YaD|<h*%Xi0-LcGp-=chd)e(CVnf}HoYYjh6+ohBreGfIq-7|P_@OccDv%-%SHabyC5s^gMK z^o+$xP(kVBv9ZH_A$?5p5}S2f9QuQsg6s%qqtpeK<@5W#^kuQr&eB)Q-!E3Iv06o~ zJC?ma0k_oQ^{*ej#;mjXB6>8l0?i=fvbv}r# z2_ziPYBHHeRWD>B5sinFK%Vk4f0o3LaQxZ>Z3vHTXz8jWkS4_u^Pvt%*#fmZ!7^*&(&Sis%SdD$SR zhWOoe{PMrf^A9^i)NI@QxkEDaH#~F$*v|;K86E#&;N8K|mZW7gWq?=FU+% zxr1>Yd0ra4M&jh5RnVZKD7O>5uAQ*>x=5sK^4#KwC71QcpOY9;M92^U6oL#5VdxoC)3td@1Wh*t-kWHlm*ulypNG>3`SZ=hp&oLB`eSWvnM}}pb-YNM#T}! z6FFl5B`(p4kSOuI!L)0_oh&Ur$A8G-QMIMBu2tc4tm%=ghR3ub&|yZErO|K?ujO#5 zvK8aD$A|FDAOC#e!9>L7{oxev6V6Zv4OutyKlqm+UNICz_4uLlFyP)KeW8f~W_S=u zN0+A4fI@ygC~PB)=~wVLUFL8^H#{?guiZrspZb;Wf>h->9 z&W#-XJqikjI1Zsb8qocs_j*$EzZwPs4eI+IeWQs9P`J<}!&S$af?p5p;{noRP4zf&bgbH)?WqaVcGzpe(GRjP0)B1fcehOns z29Iy!D4flcCV#Q@^{9C1NF(6#_ty>nrI@JwhdB19%xt5aDcf-Y@^JjXUFNKp1&HF9 zPR4Iv!s2m57&7b*cA#y7KPmV=j$CSRQUk}0$=_ZFHf zt7ZG_c$)F1TZ8+tq8}jy7^E4YEOJO@tLs|Iy@<$FJ;5npxEZh|djcFN|Q?%6jx)4_}FCqexP>e4C+{ z{rVmGSDx}4^fetZrSc1aXZ4O3iLNB}JJO$=?d%^z*!Mq$S$}4Y?G-b*aiARnHi5eT z&;2;kFc9y{bB6k+Wz0OUr0fb0DBvekAbC@SRz8Q9bXW8-LV`- zswv)6A328piI*zemq`lDMBXd5?iKBl3%y+Cpdz&;g{ss1}5Iq$5dZPq&Zb&yU6LmSVrB+I_wp_CqA!Rz~;=TG&dL(;`#aZ*igL#X_&Vz%+-zb0wUKmgG0XJnBINsj| zVPPq!@yjWRfh@7WNev^O~?6FkK%aeB;j7q()xJzwL{zenw?_ zKNGXayu-H@=B^ru_ZCtgR@=?`kr#U^x`2)cTdT4I=PywQYtChe)@w=Ay^@@VO2CSZ z`9Q>O!~vkCAQBxR@i9z$ep2(GRy3%tZt#pn5P$mQ!>fw_8M0&Er74Mb@NFIGV~ELC z!N|%wze}Fc7mL@n==G(SvnVjdXQvt+MJ3;yr|+bEVP&(;PS>G{Om2eC`7B?LZqkyR z_J{gfWL+fO$Ukk$m3&k zmsq|lb&JuR5`iqHu!(#tfwU*by<|8=ygObGZNmWOUy1eCj<)&o@8Um#EBC_Q$B6?d z%#N?Kkk@Mp(nxyGC18wtil*o1cM!1kQ%&4aZ){OjYNnoF_xm-e_rtipp)cl&+X#{M zZjRS3G5{AWpoP3$QjD)(^nxuQP&{-5xa@ga%#iswD?54zru%0ie8GTT6Y06o;-2JknV zx(NGW3KupClRX~%RhJsPPb9pNE3a`Y&B(IP@68?GEePjuW?&5a;=<|5N@5v)b?mp!CRsw;5XI4aO)T&?iAVzUsNKX5B)+V01(^kVT(7w(QVNYWY`iNJM944jDO|64=1Xt6(D3Z- zJ+gcsY*cH}Q8xc7+u#D(NfQNfps6yw-KsY%5<;-4gx}D*AVL^OZVU@Z3{V5%vSHB* z;KXGaxZuO*G($ikVeIPjFzSnHgpTcc?zga&@nBnC% zLcuNC@OipJ24BIy&1^zVL>^l8YbH2Xr762tm;eCRROf7lS$z`Y?l{SF9#$uUO0L1; z&w_er`_IiGbT=qJK}2qU0cOFRQ+neX=8Qj6ZFj*{OOK5NB;`NeRK@3|MGU|7=WSH{?}NNxCu!(6ureZx@GRD{U~Cb z-o{#VTFNddAxA3-B*CC%rBjqo zixH2U`L+`spWPUm_Us<>qKp`6PnD?;UpzEytVwO(9SJVZ$^;zgeP>~IH;z9OK|!f{ zDT|2{*KC^nE?yTYm3EPwmLy`LP6E%n4C7&+qRERy_h`#0(hGA;{r0<;bIjkS#{Ko& z|9dQ^`ILxLhNO|F@apmuDrg`(opVNeEw9KeQnz=suNld5yR?BfqT5-zoNKA*qhH8e z?s(Oc^HBosZM+4248B-Fp+NMwMck&~DCeH~(%xCA6Q$rP%H3g|pE+a^tG zM}3_h!_@*KJa5_N(5TcnA;OjXX?u*@tt44YDZUn1VynkJ8^#6hRjd$!9@)w8YeOEp zpbbJ2J0?kv@PZ7;U$Oq7F$MQb|4}F-ZOKxV*`K;+GTXyop3l>>6xtQuTfH~FLeY8x zPm4#XlpOMnRdOEHJp-aPjYx8(|Bt4xjB7ex-=;?okw!LBIt7s$Ehy66AfO=KIl580 z6s1GDyBkEhn;|i}MvZ!Q{^vYKb)RVFkRf8WIPQ4 zY>V#OEH+gQLH+?Y5v@G0uGYGw13P{F2lx6y=S`Kce-CCSPXf*|d^UJg(^wMx2~Wg5I(8 z#}%epr#LQ#IoWW&&=*bb-$xZ*o>ZhL43bV{dlU=pw+O ztX3@zzCqVHWPCw#uAdOhHkBR4UGLl_&bM3~bPp4%+q9uZ&opN;$HD zUg}d`HoFW1Y}aqMLp)Xeo9;)rL#{{57sVX60!-8W{RZo@8YOS0zIrse*M=JlrbX?` z=AnESCn6wkZ={DyfD0}$=p=2s*b=eRz>v52VqxTslbF@}EY!&C6sNqP9w7d6{|RR} zrg%>YN+u$RHLCVH<|XOQa(&I}C9lHh!&nZc@xQ@0ZzUY)PU!=zgzZ~Deei~myQyar zymji%7BEtLrB@83vdP&RWcAD|(Q^H^>uR)#T z%#e2D`nj66{;Sqi6`SArJ#lg?Atbjr#G<&N*j2#>e)2esx?O#?;zMsxYhXMI@G{xY zWlu=aoeE`*+=l>RxYF-Cx+kb8;J>EKzmD%%A*5b~OQ(`(aCn=Lwu!MnQd^x%Q~%k! zc56T0Pl&PoY`1!PGd%(r|1M_!uXY4zXXQ(82=V;RgN2L zR6VRk9#KNx+@7svnUp?Qu2$(%5Q^40{Y5PU55K!~UQ_tP{ld)?)XcMAKw}d? z>R&}x(+; zQP!>fUuH&R-9w`u+nMmn!)w0R%X`~Rb6Ct196f;CRDW*#l30cK{l0x%3#av|`n6Va?>QLwr+} zq?JTsdGgQOlnuC{N{7esslpmRa8jDpE(6j!Pv7_R*kGzWMSe`XncXAu&}B|GHa1$^ zF1v7SZakU!PX+g@#ma0H;ZZ(*c86*3>veG~24`wYH@41_}h8-oV!yB%pZ za{9Alaz?xZ`eZ6*JY-jfYrjRm5F;~CpApT*EQH%fVMs!*9U!~;AKKxNGuT;$nhp;v58K6p4d#lpzJ^@vAAfH(fxkjdp6krkg@0H%!myCAe)pVF zdwt->DBFWYy?~(H+8wonWWZ`C(tO1~>{V5(l{jV zj2&&dgoWQks_DYKD=L~kpP&l^IkrX22xh}QemuCd_DPt&xejuiV zxl-cgGunslPtJtMM!o+D)*i!?e)#f9od?mHV6iHd!Q`VL2pmku^VVRNu-R^uajHX1 z8)`Ka99`i5xC;)`iAdWfBzsT=UPnrU16(R>YG$qLU$?T7aK&!DF14GxOymUr6t%iY z><47}oqsQ_Y|3lPUvj9`+}M;b_rbxS#Cj`^i+wG1Mw9PF&p<4L;w)_@$P*gpp#156 zyFn;J^>Jk^ndDYxa}tds!_x@qcm$A!r@6)!8Qi4CfRH{+3qh zH_s$K)3bUl66wYnHe2sp5i#jXtU4m=5=wQsRy(1y33Pdxnaib)CuS<~bB~g~C+Mu& z-X~8ddr+Un?~AK8%d|=-Q}Wg3C)J)@R0)i9`R^&!MR6nP*_27Neqb~#L`Fpo$SJ#A zbiQ*)q&4h&IuIWBR`DMD-g3|re0__Ae*27id4BR-lsI`H<6uH&PefBdr@t60KKKOZ za>r6hkZ70J%;o^@MT2xGW$eA!|1gNzEMv{cFhOeYB%@V&!znrEYqNo)=y`ah8d=IE z4pMiuC#_zHi)je*u`%n{&E`Vm;O^5^v$}%L*C*?LQ%@32hZ(YQ{#Ppnt|y!}rroW5 z;w-#{`ysEj!F*@3fpAQG$r+(gaP~fn>lAwpVTwV&hC^v;8(A)Lhzi+F77LlmQTVZo zoeg}yRds}|I>10Ri=7l1)sAdBZmIO@4jx+4?vJ7LW>wX4Xfb&q5P7te`94*nKw2%F z)+v~Z(!Nm&Z#bZ|Sn#Dy)&i2L}tD>a% zI7j4F+Tm)4*Lua7?VO7Dr-!MBR?~;s4BObl%({=T_|k|LKb7cF5~q@9gy9pMw(tHx zKB;j=p|GCzWo$N4dZd)3Eh@+K#}-pW0ZRn^)=X}k-3n9MF7}G7144RB2K;*xuf33M z>} z77OZ_>a6C~tO&Witf=@E>SA%1YUtRx%BoA^^wh)Rk-nN2xQ*AdFYA{^odPdIks zpNJSe{V0$t10hX4R|rm9_qh0aS*rVDO&B`8<6Nqvy4+^78=)ZF>AG z_8A=E8u0$Q+>*nUe-aSIAzL@7m!AWaT{S1iriL?7BCK6u3Q8f6zu2>d)Pf+?1fQ6N z>+h%(Se_LfN+OS(7Zrc&AjO|t$u)7inc2wQ_7pbm5#X{}d)@goyDxe21F`m_`lKT3 zp@=f=;qJ62;HcB{x@XPPc$4eQ%Dp2$52$^EUIRgS0;tFPr?c?t!z22SHqE*V%2NGxjQ>Y|(XB6nr}E-y#x3Upm79nJco1`Ha;C1%7ubV+Z~^;!o8ZEBYPm&m}Zj z#UfUjOr47-TE#R?m08{oRZ+6{YJU$`vJV=@6<+y5#-SCchbg571DKa7#F01?P)|e% zw_f#j7dL~c0#FA70GRp8Mo)PLeV*r5YFc@k5rPn)TpS%Do`m7y{NeaVG;FD9<2|T| z(w~O=3td7vOIqIkDfyL&HhRV^8zM9TIIgQVS-J`T=KfRQ2*4U?;`r{JjlH+~_}YV` z&rL#osSY^fmFM_Tqbl{nQ=$_a<2%OT_}8TbG{-sAhKm0VM-L0aN`SOD!@Q?bmCQBS zafb%ak{qlVK%z*#6tGQHq4#8jKc+?}mXQ=IW+=mznuQAbS@y*WgSnXg90C*`nM+U8 zt0WVL4n4^dy)B0F@~ky_o+CfMEb~SVrj_0 z>*Jh(pIu^f)B?j!ZCjuiMph-a z>7}VtZX|plWL_ms5;_zVLsoGOzrup>_a*siJiR^@H+~U6zQ5mwkU{;iSf55YOj^X7 ztP^%&S)9TqyoAT&9(LKBd0IAsge}s9k-7}4__+sFpMQQq$f5!|D4t>zhDaXF+fs5K zhS;7ITXC!<^=PL5dr`RJD61gQod8A8fRqP{s>1HIH8Ib~O|)eCCtXr}W5KR4W`OHntWpuG>b1jy7K-lkL1qimtgC4 zu(*f)5@ewmFzqDJ^t6-({|MA45}Nh3!@Ic6XCs2@(b`R;E4>^IJc4aK{boz$;rT}R z!UvYWJ)%Rm_Ovip{#>W>SDnx3fbiAHx-Y z_Ko6V1wLw@Mc_4QZIOfpR|~=99~ud)2;QIy22#6b`Hk?8S8djCrt&T9@Lw2km>D&; zRGb|P?{_#r4jc|+p+#DojM#rdGE~zqruVUidz~xq->D{~Cz7n|9klG=uaARIzk#;1 z1QsPdI~@15=Apg$F=PLH+;VM6(E>wJOes7Uwe~MH5eoHH~#`zSP{bl?H?Q z1)_eGw6cCR^xc|exx4xR{q*lQi>gGm=X}F;oSolY*Ve46vCGJ1M`YHfqVkhjE|6)H z$zmcxXlCZ4*RYmTS@@3ziRm{f@DPR>suxKH*2$Rqce@1AFTTg^&DFJU87ID6Wl)87 zUhPUa4WD0UJ;LwS?;j(0uO1HI2;kf|(FT{LU9nU@cdudLh@ybzhg=&^R-e~SD!yCA z?*|y7bHWkx!{3{*# zo&)r<*I^_0OjI#0cM_<%lYnQHj=;1mD8Z7gG9z+?AQQIV_pp;W3l@U^`@FwWsZ6^s z9C9P8dsBula=S_1#>=S_V=Ik3|28S7`3|M=IMNq7!kL-L($-()*3jV=k>FxgBg9Pm z@L*Yla!gn{Jr7ttauIdhPh$DQ(^#1=Xkfbjc*uZqx#_fis!34*{pzq9@}7S^Q-6JT zPgedY{XDaX79OIN@!@iW@Td-(6iDX0u*TQAfGI#kR2y$l81eFGf*)7B{}qiLUY=j0 zSwY12sFGVF#ZX`C46sjn05W3Sq+?6(D2Ni_-13lF%iHb+yP`}5F9IuB;o;+f!zE|1L#!zJv{to&{k+CqC_Qe{mlUgjj#`-BK2oFmC8a zFM4ezV^}O-YIm??a?U+E^=MtS_j7E1v<Iroxr<5fkXZyE66H^$b*uMnk5Wx1< zIS}DTW#Lf{T<4ERfdAHhufpBmh={E?Iqw85H`Q@-|H=I=r$kCVJdo(ss_4CIX`i(; zfKEPZY%yGDmT%@8j2A{Ca_XMfsDZ%sKI6N{Sb}^zC2iPFgca=*w6BB+is?D zN5FdDtSxJqiJ0q1Avd_K2MeYB(@C?N2+1Za>CN^5%9NJX%V$g# zu3@%|m(Ob$#h?hIYQqtaFF%VS6}dU9I;^t~tUj-H+yoU#t{@hp#wBl#{~bNm2J|f3 zDs;9VPx5+j-y-W5pK2ZZ3`@te{4!W6EXmOez{zHsP_<-5n}-G+1p1vlN^eW!5v{fI zgOP+5sWy{IiA}bO(Hn#L(tm3kMDvhci!X^U)Mh#3Z|VCyv8ehKQ}qJp{sl8$P>~;~ zqC|tnuj2DU)h4zpYB%40`iuAqE?w~p@p^1FnvZqU{>i~v7~Rf+=8VSl72w_->4Ahz zExC+xwxbd+YU`|(7SI%9v9zj46-~(XKS=(k`2&pGK-A{Vi@*kD3ZLMpF@7$WVyqLN zL8f&i%W|5Q+q=1|;*t|nV^5v^ekc9OofHUgC$uB|DSFimeT%0NT`cJ-5jEtwa z#OBcR%nGQQ-gY}ot}qb0KGFG9z>;9yMZ4hzdg-4Iq3ro8UeDqluM?X<4y97c4~n&0 z38^bP{xZoQ84GcHH2?DYN8=|qOgu(9daR(2z;A?syQ8PgTN|wM-({4E8kIbhm2%)r zm*}{}du6VGZ$HI8FLJi-o~*p~zx;v6sar1MVYYmyfV$vceL7nKeZJPz=tMJI;n6BI zFieM*K%{!dLgf6?S9-I-go(C4_z&`kGK^eu;=V4$eaZs{i=e7H+y|0oJn9ctGHZE7Ft$TwAYwAsCL0G!9 z{^k^uINp@gcbCs)e_>0Q=Be@;QCV@4@f)r|YJW;O$kH!c{T1fQ-yBg6!#3u^5TQ$> zAa9&ErBJRrSvcCvaLj7nh|=BV74@4Q{pWKj&PvL0>D5-O$~LMdKE9VgvpBX`oAIVb zXqME&E76xhlCQ+we%CcLRWeZ_D#7qPhmL8r9%UTz58G_-uN4oLh9iC@LqZ5bO|u7i zsGp!{4t}NVaXfq55OHGK1Ra@nY!kITm{T9o8CyWE40r#>6Po2Q(HkZ*Cw z+3L0S${`$&89mBn`Ss_^93U4tksXnkvoc5O8vPMJ{Vqqly~?Lhp&>ENtuKK(Fdsyg z_j>kG5rMv@_7QI-EU2hI33--)?0-jEY!+YY=w#xlY_{LG@zno?n0P@@CK;#O*Jl!&q8$vi}?|?Y`A*$|37`6^g_Cr_w*ne+k zH@fu8Zgz(z95iXgNEWovv|lEU&Q`fOCAsWmj=Bc3wYfO~+QwPuB@UBbVvgBgpIdFX znhRtDh4zy9X-z&X6U+tuEL3v+*-L&(KA0r5dPmp>3yRPYZ{CEbSKIQoZ)Tb~zoEi) z5g$DN%7)+d+%E4BHnEHha?)rs=w$-M z_laITr7VKqyV;5s_PNiVXLd!#5taZM*JXLAplVp0PM5!a9A^qX?g^V1-%nLkqx$ou zD)Za!G*j`%fw@LtY=BF5Ai=o1w{db1B>gKqq>ik0!k~g3i#~MUgTb!sEeiv7PTaK0 zBRZ;WCyD!%1H1`mPA~}nz)HoDDEbPexRoT!X;ad!JOHRHi=DJr#s%E=W)VXlVnhao zzxmm3hsHH>-ON7$E|?Uo=#%G} z+#D)@3irJ_TdP9-A{o6W6H~Z@jl6s{rPMhw#^f(V%8< zXCGeKnCR(kf{2m*C3hN^exbO(rfyDu5J&SXr;4(&pDPD*jtdpS%ag@FzMPeZxC zG8}0i)a>uxs+bl3?ZY&ZX|TW`shg7bY)xOm{77OD_gVtmGDKn#p0}6?ytFSyHD?8h zK*RySnCy?0kuSOWh4AHe`OOQuu@h0ZEp1hh{^jzC|Mkd;`2BXWx&f=KhLwh0kC-bHP&+cD}GK&WT$%Mv_v^#H}o1&RX_j8$HPl6>4z znd3C;<0sc~;DfC8E=k`^&rPzyRnMs1Un3p|a=LQGHT2XPBTntaT~gvT;p}K6d_>#LF?3`i+XXR0!Drp)}LZZ-_kg<^$Y5r zG*H@C(DmWrZ6zVNzD42W0{WOe|L>n>uQNt8gl%fV%+diOwDI<>yTTQhW|9rO2T!RF zVDoxG#t}Eiv!n4sS0Y;AQp4!rDiI6GXLDf+ZOA`TH&E(!t?g;XSk6xwjRUREg!jjJGHnp7~2B|;X1e1{p9U0sD(YVaA ztCf46M~G#QC+DXVRlnP_sCD~0WLHz;{MW~RBy~W5_if`K#r;tVz|_=#>~~fe4e8gO z4DTYJUIP0v`MaEAh*>>;K@L!=w`25uZ8j3Tc z)6`ke1>i3+RfGWA7zZiSvTE#&gr~S=WtX^Ef(=r;F(XbL*$tGqvhgKGaVnBVfvA!C z{|fZga91zAi1*?z*dCnnAe3)4-l$*s%50w@<-G5la-nSvp31F3v-O|*N5m-8v_!-i z)^=QTs9*g{o|^!;*zNeMEgZSD@Q&iuOdB5pS)OaJhMQbXEJPU&d|el`9^$4G&D181 zMN0UG7qExtT2Fm_(5eULzXvL&$DvbUXy_|hzPlX?f+)6k=yV1Zo~ofon!k9b>r2LS zp%_8_mWmyHTA4jj?G-;EB7uK}>6$KaXV?Z*5TX2h$_SBQ5M3aKfD72%KDUkSXfvC? zIOj=UF1(-{|2gnJy{1op>Z`W7BDJ&S>Jv#|#-8n%aa*Yl%t+YE2u21KcapG5v?Y%%Ql<-Hp-<|(0jGKtJZO?BqJ0f1^ zJXi1E2ULmznSZ>%w}C*ti3r)48x$)nECdZJ>TZbRUNMAruYvMq#A%)tytl5ss_7J4 zwUp?l=zAevtkp;LYE9N%?X=ss;_zRBOigh1^_ANSSZ_gT#m3#$Cz_JI{6A9B#`O5J zrGbK4sMK3=E>Nhkbp?f96ag`=aOEUW>k%gX-ciD4321lTg92tjsEjC-gnyc5W zMI*!g1S)<>KKTVi)mcC%?KfP_U`@nixwWM_KpC24oh$o0e`$}1KiBf28O;Xp(S^S$ z!ofest&xDoPXzPzRk->D%NSN?C|L2|=I-qzPvW>u@yzGlh>q-r?I$<&L zr6TwJa~_-dp!kNGrLPsKTyQ2LYinHt%vXp)>QZ%i-{&ECmZ1y-;OWa`;1P)Z*BaGF zV2JO;%WJ+Ki78FU4CW16yxjDQiIAy3!FW@lAbC-wwa%u(7pU~p<@I{~;Vd1e>9X)q zv-0yye;-(kSVPA(veuC<{rWzf^Q4L0L|er$860X~KVF!#t*CiUwSt)&XA~dw_R2CO zfuaO5Bsi`F(?LZ*LF)=ndw<-S!$3~Mb@sD=NhaA}ifU*2KC!$4O8VcJIzq2{DI+?( zPoj7mB>gOBx7ItV;9x+S{{_+_U=4aON8Nt>VqYnI*3}P39$XjZueS6)8zw*NKS9QE z8ecz4V^TH|;>MT1?~y~E8jR@u!*i~)Vo=UQJ*mKRq~J4R?`p>@j^{$pf7dm=l!VlN zPXbr0M)l_|!`o{Kc_A?r$U@cYue7^$M&XJY1#isdZ1cFIrvC*RrF z#4(v(W^I~yNL6}lyzHRn4n2{x8Z^t7ar2?dY!ovh2?EqLE>!R*p@hr%AV+g0*I-!> zWP4DJmwcM^?izBVx3p+{F<^C6Q`Cc+`Ca1rfiiT7=#Mlt0#hDEeh$PeH4f%tn-R=o z$N2&gDEF9}6aNly@$JEV&tjibnEH8uVklmD&zzJB6OB9^V&?-izMK?CBp~0?3L@G> zXmu+CY@d20#0JYv#J0Z^*~ZZ=T)`%_BRnPfEIu|qe#Xm9CxG(#`~iHUCoWwMdxL$I zsu=>I(paUSHNnM%{v<@2M}Xj^c7WHHLveZF=<&&;b4c3PR{t{vThv%KDNfa|;a`Ah z*3DW=!r+|Bqup+9C9v}TY9W8TVWr7IV>SNxW7j)s?#9U7{#c0CETH)1FO4f4!&e7P zdAlfNHCLPW`zFfH3iz^UKSbGrsXPy<=Gcpg>^6r1GLv2vJL*LI9mv(FbU3E1JX;CK z^1Qcv+T8BAjcZkiOLT0CJ@KTNR+E)yvRqK2Xhk9Hdf#BbLqnsA2V2#c5+Xl!S(2GWiB^>D)Z-*)f;IIBZw-!j{fr9 z&x>P!ua(s06GOkNFi+->vAyJYnIJ%B}jyXkrPm!J(R~B zOSYB_k*@t~q#8L*{v2+|2Jz@4I*1^L_uVeOP`$O1qNb|MJ{=Dq&THYd>Su8jD4K+V zq0X~bWGro_kN05o{MDF``3O^~&gkOV{Xiozs)nn-9j|Qlz3-h>z7({;l@v@OUx+Ui*d4)Ba&=>#IX9Sz+doCO97nBvO_iiwU*%3 zInIHb7x5u5>wACq0EPY~GmtAkqMKt|RW^-&^2({r1HJ_?HJ_{0=EPx;N}|+i%&{BR zevrsrOXd9tmO%{@;Pbc`313mij>U`9-c0_y_UTW7RPm_O+qPoo4)JMeHkcVl z2fTxYQwYZlOYfPwnvH z1}hT)4++O+$X_Fs*<;2k!7dXe(NNl_7c6?GlSN=juk%NmL;x>G#akq(u zKnLV+b2ie-T45-Bw&$*NeYAE4OGp8DsF+;dY>e)1qUbrl3-($*Daq0>>$vOZ$ z*w%rC(+YK>Qm*mX$46)GH!+&Q>6ibl*I$E^eA5p$t%{auzbe?4a4e;bd~NK$HZZ zJcvXMnZqt6X#16-KB0TNOi>5|V~Q^aPT|bK|hQ(62Ii2T!xF?Y`S-VY|dD z_vZL?M)IV^@hM66^D3>4DT5btl0R-0EKEiVye~v5|7X7h-dojT4VUG=vo9wgWVi+@dScbi z+vsp@)cxOO7xu-_o0G%-wLyv|RtU$s6H~z0;)hmI8jSdl!rPt+kRpoU{W%+)4}zmL zp|t39Qv8ey+h9=r1@`}@sndlhspL0*zQm9;I)BrAfkid-HL~cr6z%H@Ybv#62Qzv1 z>l(ehLDPZrkC`}zf-4~naEZU?lvQ>0n-o#v+P66J)5u@e0>Df8A5%W&E(V`Y8`f&L zXz@c6t1WHxWn6AqhPgS{%$nMuMGUf)RM772ynowA?GBw>?_P{d5|)daZct_MM9a7c zYBLe$ypu$o1`^bmGH4fFdjBM4SJBf7 z6&iFX1*c`x3bKJkk$>m+gFm52n`pS_JENy!TI-dw5}^$*&gw;faijuYF3|24QtAf#MoH!4T__LH+z-Y%`bPK?xOIrVl^H`xidB z#jjP_@j#ff^Hj^kpqBSmmd4)%B zme=~%LEj(KR)HPWn=5#Y$!;ZEFT`=*Xj4Yr@r8kt^Lajq&hAC1pXXvj;paf#&T_k} zWeh|PNbR;q#r-%z_O5$N8(KGW@ew6!eVduMfE&2G1-wC5c=kdmBKo^!qU{%6Q`Z>J z&Ae{bw7VTHH`UDJrVEe_T;8aW=Yu^99f78~B)Le**-Xz1W1! z;#1Y#V`~S($0+gscPXeE67Qa#@g4WV%!4B2Pn$4jhX>Bj3l-bgli^ycZ+>^IE^60* zmVbUE-a(q;TV;vU9)XIZ8#U6LBDMb$zgH*M`AzzDnai_3iXZBKEBw`2`PuTUt-Ow~ z*T*RHkCzprI$f;xZFFAr<}<8*7((ICKFXD8V`Shc^*%Yy$RLzB-IskgIhdFt` zBbuq?Sa|UB>8@a$)K79?ESvQgDg;D=>I;eUD9*7L2y?A=!I7iH(Nm1$qS0mr zbxvpC=|iHA9!AEYk;KLrfr4EY^6?t{bljJw(1A3&IvZt*EvLRK9VK{#dYySzsy>Yz zx0?K%{})Rjah6Tt!GZd6q7P{Aiaf?+^qos5_D}`EafpyMIC>{Ih$Hr=d65)RVv_%Y z$?T7CN&+NWLQ%T^hDaDDbtFAsluNaz>aLJ(%Sph{D|eNRVxhu*vl59#H;{}!QgsB0Qyh4cUm{wRR&yxVQV)8 zZ@B^ztCymqiD7!JQzeW8Ue6s{fzmR)ep;EvRNCc?9-8dEoh3iDH>(;%`o#cW-|B zORIUISbZ`DlOD!Cri;b9+Xa&}X}wJ6j7qg!c|@ZVPTF+1B>q(Uz^T;m655Yk%zZ;= zioaZ?pG8KK)xFXD=3?DKgrJus;Hz}33R>95m>_oB);A|6#bqSy3wq-a-o z4G%(@EQwfCAQdHEm~8d3bj!KtE@wlomFZfy3Mey|IzR8fq6O(!Zw^CwJ5JYZ4cFEs zp}m^AE3Ou76ouN#v4z(Yp$DkEMy_s$I{gEEMij&aE@21HE8kO~IlD_Z zz-^)#-}9Rrm8GCFzUH84~2O)=OjR}p|=WSr!7meMgiElZGv`#1exmcXjeA^Pq4 z$n7I^(c{vsCX|CnqaQ>b*ab0?FAquhU=y(u7NkKE_zdScvt-u0ia*EXFCZe5V3!im0Y*S3oB0&g8MfE7oS(j zkJJZ!SthPNzK3wxrnU{eT%YIz;aj0T?Uev+dzJR3)bT=4i_Q`{p;MqBiX5`=9X|3N zj)9OY6Qm*a=jJ*IHf|+Fu}0J(U{l?HZCf(eM2$%B_ZLQWjBf&>JXe?pl^bzGaH{As z;D6p2QxwXWaKLl@8hEH=CmE7>aHZTpo8$>tT5@+V(r7H4-T$ovO-VH9kb}C%Z9B}e z4WhHwQC4HyR-tO&DqT;(Pfk&w*EBP4CpOR5|uy*cXMQ~tBxEAzCDd`AdSPVmS~ubskH z7B1i#pvYK|E!C`E*9ILY`1o6#DGKUSydP+*{@qx{tZ(W%Yuq>%VE!*!*7p{!BFT!4uSLWRbVOIQb8)*SHKBA5aI?1zE`zKKWSnoHBfLeE? zsj2?`QFZgvg5+UW5+=AAGF5DJ%2~CUI!1Dho}?m#kcMYc*21t`j4fNYLc*I1iQTOh zj(Ye%{k8doOu&OuSqG191+)L&Vv#rzeEzUuj|jmsZWL#!!csOr0%SJ)m^pEDn;4&+ zVcR9VTJ^0AKu|q}vIi;bB42)RT@^EG*&^-u%v)Fy9VrUfJqB$S){#)pHKfR0%` z)2-+Mi_m5KiP3FQ{rtb&jM-kXwwhkUL*AIQ*@2PeG#wA6nd@>J8ZFe-;jKNdST}aW zYhKn|Xt{(j8}VLJ4UyvtWV_uEMC+--#e6q@mR*+2B=Ig~?p)pZ&)_?gcO<<*n_hL| zq@~1z2aIP+Qg8OJu(9=V4hg<6%+%h`uuj4d%@Pd#FqCBDp-SaX zk`lzmt?QP$jd*#VJwZWb2bRG^otCY?gW(;`RSsq%=j}BxykSOPVTH_RoYY&m4ZCx@3#18 zta`Z2|7o#iawLsMtjcws*VOcSAahui7v#0r95f}hPfIBSRGv==hu}(JGE-h>kH0~f zdzl!}-)7fj12^lWz~!vBe0u=-xBDOIBCco}To4)SPv_I%4!@^9$Fv9U6S$}F*L$<+ zp8+7F^P}p;0Og16xBpi-_c~8nn9uo0>X^fE_eG>+k zouulIdkcOIQ;>$|@g1Az0%xvr=}x&+0{f;@QFC9`s1N#bhbt!g)64t_jrGX0{);r6 zT?yDPzFCn&bQ?H}%!!GeEVnVJ;60{RbsCm2AMq?UlOc`C2LuECVi77%i}B~jXR;Q^ zp#LI9+i!jbS--Qgs$oyHHvPZ(o|^l=t|erL)!BellaVtvl}go~gq>1}U`V!pPwq8Z zS%_s<$)LD=(Q$+@9Pn{wb&=R+pC9h|C@i4ClG`4B8j-RyT9pi zrs)skA*#^3fwF)$zmW?4)#H{f^6LwZhwL&3%5=9cbFEYauT);mwq~RBNf9~@O8QL- z;Z4A$8nzXw6p+ZNqBMD9vo_cR1`yw%!pOqgwCP0;_=_gbm(Mkw^AR-|m@i24b!hDs z`xqR6+}sEz?-;Iq(TL*zQ}=jS=W_n}T|-ZPl^|VDIDa4|M~{nn)>C09tr?h&*2nS; zBVzA=qads2yyfhwuTxM!g0@E~s)N*C=T)DT$b`cQ23R5@cD#C*Wzv;-hA?irNNJF0 zG{C7s1nND-Hythu6tfpWPBa7lFdBSQvNmGL^L%?UYi}zxNm{6`7XD>_GAfvaJ+?1z zyP(OZ^F9URRp-VwivIL);r*NuOvp(cVYTU!<_DyOc&tWPSZpRD1@R#>qi&v1z! z8{&jjBB^zi6D@@h)KUiIrcv3-9uR;5-y)^l^l@E2R(PwRSP0B-QbKP*`Q`^`ogOf*X!+;Ck-sTs0@4OUZ&DCUa0-x1sJq)v&Q*Kn7h^C=4ktyHvL)1d)wNAx@6$Y zZlc1a^A87~MuM5eibk9&EWU@bX^MrY1n*<=uoA%bYg~_8-Nq)jD+BHxi&!7M zZkGS4LT{%c8|S_~j9#G-r?ykcO3CwE*InKh6ep%9#aufQxk3m3k^1->hWevGT_PyF zxM=TP(QAZsMhURO43WTn*4w09u|~nPCrB5#B?WG1)5H(=uev$e@KOm;k1fOPmYTn8q*Tp#Zqn2zX_fkU25Z;eGkO;Y^YySeu!UPvYioSKf$BVqYyr`QG+in+ zvOk$Ue^%_P+tH$v0^I!1bQmPg3gt*rwmQ3-ECG>UK9thlrOhMQVuWvFk`gzqyn_BP zUr425E798GiqjwP5r5t09!sOZAo(%1%FhabN?~--6Xur}_ZJ(a_(n1W@PSI%qCy~P z)-^f#%zHpNqf9i`$l{{aSV;Dj?49v1dd+c~!HZnBKha!b%<3xKMz>_fVMP56|s1h)s`klPLVZrL4 z<`+D_`*GIF$0TPgh;%HKucVqIkUyUlKD{iT!e$R+7|Ip=ov3*to$#|u;k}Gil(jR4 zoZp*Z|22l%nt0LbVD9$Jz>`BIp7e&R;@Qg1wvB#!3mu+}4y%VBdA#kXBeEl=%V!%a z?;dzX6kOhsg$S_JZc^y9WW$+WJ-jKOjQHlSHkUq~in4#fK&cC)uJfmW90!+J-ZgNA z{X0dcNFnHw@vEZ-Yz1A=)1znSEo?-$!{2fLOqpqYk?&U3cL#d0)E3a;GhZ4bx-OD` ze|Yuy12@l!4T+Wr6xu-n)nEF{gR_Bxhch|yIU2+R!4NVODrE4t80Kegmznkx&eXo$ zK;09E0awsLm`}tpzCZ@;3Vxr76Z-MeEAxu-;__SU#n|h9f-8FzNP2m?mU*L2eg& zfbvfAa(1a7&cRs;@m-8D4zshm;Mj`d& zTg~3=oJEi|rop`9d(y@vKJ3OITU(GtjMAxAMM-Iv(pqwh2?i0HZX7Bs?(JAJ^e$iI z+1n@%U_vOhko()UKPYjCFoTLLL>c)w&2S00rA4jGngH0K z?3Yi0ah#qLs1isqSFIqz{#{Q?zR(=1d&#GRl6X%7`X@nItf^mvBjYST;N4&q$;1>- zORb@a5snXVYzh;D8$LcAlSi0jBK{a(?h{n4!_im?o{bY9wRQOGtmzC)NvjCi^RI#t_Ioxz0?AP*;^xV|% zsyC}4-~yQs%(}g$wH*vN+f1x9&3YJz3fpC^-Ci-A`4hPmXCzR?T*+e42Wz0>S|~ie zylPvp<3;mfE7Lj2rOyEqf78;Fl@w@L>B%*83i;3j%tI4aoh&DU#@{}dv=d=?iOPD% zj6k6n?cwxNVOd<05U}ntyy<4D>vwg(=4YHD35s<7^@|C;L3iQk&shXUd?|PwG>pBF zngt>`dVjz+raNEqPH=+qQG{W38$K=Y!d=@)8~ez)@iL_E|Be^Q2lnE9{Z$7i`+tGa zKQgVNUPiF?y~iJRY0gndK>4GGfj0t2;vng%2NF{HCUMCl&@gyrA$xe`eq z&@fWxc1i1CWs~c^I+g#Ar?-x4I_%!Z>Bi9w8`9Eaxv&lYC z`wnJP~1zsqYj3^XoA05jWi?;q=Q8AKX}pPXKg+!_?1-Zn>zM?EB+RY zN9?`*Mtzn9OU7X_sh0&T?1qPJNb0)rnGPxgT!g@0W2QfBA1TM*$IQQU*>m^Qaxv z6Uli-8G?rDTMF3^lYOUQmCg%m{hE`Z9s^7Z3n?cB42099(Rw&g2O7>x0}o<=_pM5P z6NIV|cZv6~=Eenc&X}PlYRQrhkBc+XrVsnMF{guwe>w9yPG zTg*23Do>AS*vC5=RsS$ZG^+w!1-d<$PS7cxiMfZQ?=IH zFmy615Y*A%0DMu^pdNF>%Kp8lGhEE{Y{(BW&?zm*p(^XZrs7^Sc%bzIgfXF3z#8+; zL54LN?^4>51TP-l>J23RO9}zE8#-owBL#^GsBHCFSW!O4z6`}dB{v>sNJBV=C2j{V z-9<7jR60+mh=fJ^2pTa$vZR_q6VL6n-SjK_h}VQo>)oU(ljE9rHp zY6e-<+Qc~n%Q=?ZkF`!#bNJOkYObICLu?qoRNKKfCH>0pwVqcVXN=~^I7HkHI0*SC z=GVkYb<2C+dEJ$YRjMP0@S+ngC94zwvEOGrvfl|{_x`LDBVzunNH7{g^tv}GRTZLp zL_MGtJFoq>`rw8`=_CB)R1?(<6?Ya`e|*ai_W3j$4S22oGj9n1?QfNcWx<5 zDwphT#RlC3b010ZquKq8q>eH=LlGsYb|-~5_gd66<_vb5N;ng0RIp^G+YkrHB?|9} z%s561pNI!j$4u5vl|jCUm3{UhdC+EqI?Ho}z|uipOupOpj?_k9nR= z{7|c2pEw*7nfn_fRK}`I>5qnEFYAZ$x(QR*)d^&tb^HDp@y{mh2u? zq>jG{>Xx>=;le(Mq6<|85s;+Y8LC-HY0PiHR(@%cl~?ST~#Dz`y7ReUSmobM6!0L<>#?9Lgw zJ*I2+oBc|O$~-PE6D^ol;2RsIjyWBtt4kyFBPw*-(8&m2^Zmd7PGnK@tOa8GEX}hK z!_nYBueb4@H#%AQ+f$Atk83J7;wejjlnuJyPSroP-QRXRRo_0HBa!zf$biRv{?}kv zn}2e^k6G6zArWg#Ob-Kd`I^u856ro6C={)XsDsHG=x)*VYiHUGQ#AhWdkSOs^As|%4Q=Xeg^m7He8{kppseI!0j?@nlryZJ-NZF>hxNXIu8uGyytm{7>okxzQDM4CK%w-6EvI8>w zh(6Ee|8>L`X>=5nLv;DXpz)lJbLqmrl)k*b&P(dhr+&4G>7E3vyp`_L;6ly${a_GZ z79irmf#)U6(`B$D1f;`bjMn|Fl(!joVyLWyI({~$e+}q!D7Tv2q=6UZB~?sDelToW zpst8F7}!L`ls85N`NGCq{Cu7*(w$1A=@Wa?@z|TOGlgFM0p>2!X*T95SStDqd7ip+V@NTZE03QK|ojD=o|?u-4z!JOjbk|Ph@m*yl$0bIe}DAD?< zI-sZ?Y^dS*Q-hj(Z?f5ew)}HHfYizitW_EwQWTK4!>`<;6bSEeRR`^Jt9`-V(k5}D z!^4a1C+Wg^qDx;YZQuhftUaPiC+yOHk z*i+6PC2!mKA-$nAWnT%ekpV2pc+i_i^F&hn&*7#8WI1d^X$)QpBw$P_DK@JmM`FqF zJXdIs{Y5E7r|6XXbhx(m2#bPrUgfUw+`%G9T`GO=3^Ml+59?bNK&GpM-OjCQfH$A_ z7vDmuGU%*T54S@k^{ahMGtS3J^ECU^1R7^*(7h#(Z;6mD)b&#!EFT}@t_t2~XrdmZ zaB*dI{U^+FifTVPfQ4-vWg(*Xgn_bgvOD|ITKki~eJ_5jwnzF7sb6ab^+LAXZo{mz zUa#`yc%#pk^XrqU5w7qV@j^ZXlrusndCpsXMn^}sY7ey<+F1W- z(UtQ)8(7W>2L1l_U}`M$B=eRB(^%i=3%R_u+a-ow&(19C=NW=hq^S8W+j;0B0j88d zmf!E`59eIjet5!|Wmb7i;Ue-NDr%yL-Mp0V$N|Zux7^x!7)8;4V!<;n!O{GmPV*m3 z35@&uLaEx(PEn+NsJz5Gym0^RxI0VEl2L6kUhP(;ZxReCrWzVlMk;@1jSBs2LfP`; zTw0$l7&CL1Z#RoPHIt0nK5cX|nm~M@54hD*P1gsGk!y1^?Shqoe`XJwLd$&l8`7guiRD;A?B|c zp~?gNOAC^QSuL7V5UYNE_V&8Ra8ka0GV0A8`n)3KvL8zE(WkZ$Fv9+bmJcL)ViC=G zX{`e>#LkHczaM13UyhUN8^Ye>Ay&88&K0HK&RY$L67><7|3z}h1^znN|&xT1*SePaU(hrl8Z;1kP7@d9?(`yrDtpRNcK zm~4H>!(V=NPlTBi|FVj7)lCcR_O7%SvBQ$+ZvHW*wy2w;wR_z*TKp{~>G4Da-dHhtWv3-IW9K)Bg>TUY z9qaE-OPKt=^7ZKFOH@LDB8)+LwNWu(jURgh>?T6shX(jSl%EwRR{Fj>>B*OSo|h!h z?l(~Swpb|?Ci~sr@?UiqvTq0y(0RMmjB3w4&9|t?J>RKPK>9j8203-T>uagHH5Kp~ z89S*4uB&1xCl|*Lza1cg3B2LMyOkz~SoWg^bF@k$dbR0rP;8CvP(s8D~_3 zjAJ^`JcZ^jdch|V{Zwd@wv$DHd;}QeG0|q??Nu$k{(Gpbgag}_AHZjPLjQWqcL;j< z-r(|=U(NL^qIh(C-_pEH46&aC2dP}Sy=(>U)l2~j*gaQH2+RLI4SoP)DyNWHrCdGG>qE7Mn#e2c}eGE!@ z-*^7hH2`eV4@GQ+AC9(p!viPNW}7g_A8AnvP>;XsOb=~g|O@JTc8dH%E1OHIj zDsqRg`8eDEx~^ylc@7HJf({f=Q9U;l3HDcsNOOHF6IGty3>4YBn})K^oX$Qa$Z z8LoRCD>Olf!5=nfGXbdu{DfRIB8sN8f_|AC|CHy|!uSKYmxh1J*d85e=yJY&*^(Qtah z^ypper}vx3LcyQVLUEvIs4v_d%1`>3i3_zU1fuj>V#lRs43aUz3IXR?zNsiF5V#DF zM2n5i;na%Y_VY6{02T+BDyOT!2mXAmkDL+GuE!w!^=!t-vnOrRm^wbLJX+06LJSVu zP5u3x&I9sa6{Wv^e?P*|D+RN@Txx4I6DH*W2>%H@i~f=i$P@`{ijguT_p3RK8*A0f zJPcDGWmkBv-dIed8pWjO=OF&$_lRqrXutDMnRDz-lMoH6(V+KIDj3EuVEtWJG@QZ{ zLpI?aN+5?tgM+~eDm#iOFe1T~m7~Qw@3R{rSyacEl6XhNLd44abG5JK&y1_KVO^BA zUFPo%RD!30uEMUE%m@{Deuf8UlmVW7rd7%FX=-gFHK&reKDoYXthg1w`jHg?QBaC zJZD1ZOid0Yc>xD45zHk1w}Cd{Zlwl&<|TUWPQA4F#df$t6gLE>JU z^Nvq@v&k;iOo+_Nw@BNyKh+k{ZEurEK1OYD(c3)1!^%WF^9U-#SX<@vK(v!6d2OLh z5AErETsfKj5Sy&S{lfP~zyqrikv_G0DgKB;Kx*L6`SR*bP(JDM5e}VJKyY+st9(&C@#W$WSUe)gRv$DD1k8+IJoP}y(y8RQg2L9FUbAomt zE`o*gi2w3(#!jfSpSK-mNst^sqmODK%KNk_1DY3(^RXe=&m*?SRqhPG&j|MUIYi`0 z9w_W$FDx7;g3YW<7(Ydk+9zX;41Ti_OB&z+8=fpyPzdVsD~SGWqK=lrcGQPzIB|WN z5T#TSHl<3^LkZS@jAuWD4*Yo5ytZ*!?EH6k64UIvwS6Ls%vUask!L}m?F;yOY@1-$ zj?Z)|6l^jivy?uTQRt=2FK|O%wJ7ovIhq&eVE)9J>XV+KZZxMM*bUKAW`B_{Qu8w< z&@w8-Ejco;H~wyTP4yzbp`P0u0U)lX9?cph_Vb3a9cqs&$U!Ov_e(6M+}oSO0aB0vDv*#oS66f zsBUG7?IFtLJXkWoEd4WCx_!9_X89vObB)Un6)`dvLan%R?IVwkdtS7Xmm{b1fQrKv z*Q4GC0CMk_1>*dkehuMwjcmT%Xr51eT>n=ZGX71N8WAG!51Z)#Mb{ZSYoA*E z4ct})(r$t&LUeY3pB&f{H}{_h5Jd0AGlp7oMfIl1hkrNDhf)t=8{8{t5JQ@TVGAkU zg@jVKNxD@niVOnLXVVd-r5|39>ztXppRES?)d7(eoFffo9X)|IAxcb}zZ z6}*5nIJN-5N-&!T{5~xQX=J$;R<;cPt>dh=&&&IBV<7s0Q+7(}!-mq!&k=#+Dkwr& z?fF1s_ddQwL8;-aNNSo384&KeS%cW59cufno?xI9`2CBXN|VD*<<}wu zZ_Q_rtNBmzUsLZ>7Wbi!gADM)6$|8fR5SAGqF}-+QMAtCE>lzUX=(L$(2B?W2FG|d zN-H<2N(1INB<>Ro1|djjgTX%6(^|oX2e@`kda(GnzqTXhMx4a@uTs>WlJOlEbb*|R z;gy9HqX!vVY*2tW0%SFZI}^w$S%~UVWBCuhg##GI;lPh%Q;3O4Q(f_I;qMv=dieFE z{W5N^nm4DuSHhv}s<{0JA>W3C_lG0L0cSI_4D;TB0<8ZNRw>ad_C*n~qS&K*iohag zPZcE~=W;MVnLSEqs62PEeEOLpHshf~f0)LvTVVcejiH(yCUkPw-upNC1xx5W1c=^RjR_(Z;CYxjA`^o>EG}`-?Vd&KF`Uv48tq z12V4?Bw?6nBv<#;HUk@8R|QxGSXMt%ct#7lM;*B0v)agX`|vvGq6tzpwej&j#-cOP zN|or#F|YfwH_oC(Uko|3B+W+h7>ML~pE>LI zMD%pTOnV_YjK?pXIW2`Ze*E6GR{3&Bsos>0u2-n_nN3{s$HP zD9n=f32X&mtArCFtb+tae)*USsezC8`wYkMJlOFe1P5L!yk{g~p0zp6+5R_j83xym zs)(2AaP8DKqAyB{PFZb8pbPY}F9WyJ&!xx3q6H<#5(N&pnF{I>g6m+Rt+yNx zjkb&o`@W>Ko^Necge^fBsbWtQwZH6~sehs+iy2<`8tyBJ%;NUbiPeFL;8X6fWV45! zlD`0QDCgmIsTyvJV8{T{Cy*``e*YpyowMIyRuwvdAD?AfXZhZ4yl%Z=2)gy5{nSUg z^UgirBIy0Tf@+epX+uLL#Pq+Z!&T~6s=+LGtg*hYe=FVr(4=%vliO%9Ut{irU{0j4 znyRuRw0D5WFhVQ5m4dV+VTXKeyl@|36!&Ihm7Yj5D-fC07ffmQMt#@YfiidUOBuDI zOV-p^{4L$A3*`zSZN`|{@U83j7vdIf-=LbmFkcP_~ zzR8Px#Pn>;15^Km2^^XcaK_o^SSx%Qj_+=yfp+V4oaQ$#3s`S0`c6Pze>j--2WGx{ zhR@7Is`66Xe_n3LAmITLI0lPVUIQcd1ISnn%&m8;?4q?n(D5TDAWiEB{%)aAT>Z(UUdTsFE9*UFdeD1GewQJ5Hr+^E(J z=tPzSr~=xY7D7rC0~&k}*DSu>&9A&Z%U*-k_jD+|Lp#m06Kt%xpo*5}OrDk1!j^s^ zjEw8E0Xejl#mJ+uARjq&b%+I;Mz-cbv@apOZ;!QZ}10!XRbxD&d2 z8;mH#f7$sQpv0Iiltj6f5DQd z%7x4d94z#Q)6f+P>|;56%#Y_L^;Giu6Z&OTK>36a&SbQB;L0{irWf-)#qbTMId#k| zwwz#z1W4kS@DMqSc2Mf`54`Umd{b1n^{-Lwi#UcX%2N&*Y_=8YT$G4+o{Yc z9X6!d*k{bA`ZYkvpd`ZoCM&P9w+8nuk2U}?yoa2fR3Ik#8Qko!osMC35nh~Qqg>G7|fl1M(nL6 zj#evfaf#wNoCo`pB&|vgr1)E>qTXCvH7$#Ght7wprT=FPJ12MUv!teffN7oT>8tLC z`Xx-j8=jmy!;3#Z2CfXKHG`G~ZGN7`a(~mpdz_B`Z-#i@;PX8WY&UL5w!swc$#nwq z#MDp%(xx%VbC-iryNPZelg?cDMM|YX^8iti7%D~5RHY~8QASoMDy+8)V2EGxjC~%2 zE-v$Fsi%k=eD3#AsVMFcp{m9oI#MMg9$?#fvMlX8u*R;f{HMVE@$fB=G8s2s8A>i% zigVz=tL;|-XIw#%14Np$EEa6ZOf*!_;MyL{Pl+=a9E|y;cvjuiI1Wdf5@bvk{T;pF zH$<2^z7e4>b@6vvi}_eOMZ=R+nbba3YMNY@fQ@M`hgvpB@LFXLE9WE1HofgMxZ1G` z{8qp6YwN)`x6zE{F4v9t$_dGbo_yXjU{;&`{hO`GT+b*lS=lbcQN!_lcko5NwySvG7wqiP9UzVTf~Pp<90T$M9~ z9Xpf)|HZW&O4u-u5N8sgibg3=Bm=Q&L^F8Vg|Ale5wOp)ay3l`({9;_ z5Ne5v1=}eo0i|(!LtQ*1eFER5!tuYu8^?~e${mZUq)e$T4u08wvKucuC!c^Tsb880 z#a$iCd}K|5M-^8>wEi3CJq9)E^?(ejkeMCNk^IePI1J^l$s0IzR}N(jTca9zZ--D4 z12MdXleF}7K_58hWp`C$zh?dox!^KpKwA&PRd4w_)5wPc+5?-4gS-t>8M72 zov$2$itE|V#ZK2u{lD96Q;Jv2yC5W+KFQQy3S1FX9rge=!urpM_kw8RLJvytZBS^<4a-m$3?!6JXlZ*-QTy>#RBS zDjGN9CwSc(_zeL4>0*c4=&#l0a1DxN0V(QoK-ai&3V1R$w5U^N`<-`%lG9o{-?8u3 zdP=c7%|)`CPIFRob-@0??`mk!BlQ~6d1-#AIH=C|PJ(_AIiI71L|p!IscdsQs;Fu< z?=I3n`o?bKlRbXUS56M5qQR3!Npp;qQwluqrcR>`8quP=SfAbm6UYM(@_|i7e=C}( zDWDY65TQbVwY`yaIFP4>JZ8YG*(dNjW`R~nPUg>~cGVNq_t!$m#d3j|36=L~ARZ8#ik{QVQbJ&w-1OgBwlSdG{E zbK0U|2hw7kM!Oq-Z5A0j#>z>*ZLXG=gFBx%MpLdSum96t*MU-8)-p|j!C9V_M1A-t za?|>m<6_*N()_06 zlQwRWekWnKn*JYFTJ*S?zC!kpwYNDkDMh#6EZ*-r{>}J($v)a}>uj2IbRkh+|I)Em z4Wk`YgI0_7r3Tk~69W_@vF<~HMFAnkO_{?r^agJfp_4R%hQ-a z*F)ynQ*BaiE7ab>bMRAw3TA>_UQ+UxBsrdrcsXDpl{p+kLn#lS2nqhG(wAV?Iy4+X zt@qY*{$p;=O5o1m4zOcMOsd4T@=ui-ZI6d19M*dTxhg$FSOg&~o)D;N5qWR%>tZe7 zfh7oW0(=5=ArDZFIDn_?W@qRrl+{sS3s?Kz?uDM7nfCR%PQr7|d@A1FpW?dT5MfD% zAshcnN*gnzriNUXhXfG8a-VGguzW@mXgmf;m%OyZ3s$ur_dM9sT}9=W5#^&18{fHR4!N*vE8CmuouLnp6S`b1&`w)FXI zwT$}N0w@!r^m0kgTV-?-ktkyq-$~7ECX%&1yM59(rl$Vuc*!$;i7iUuV36z=`}p{CIK#5A7KmP7Kf=ahk*(4292HiN^X{QZ%O{DH zx??Be4kbNl{`0#3*8Gktp6bI+?*djYZSj7rN_ZypdRA?BqBq9}k8J~Q)z$bCA0i@fUcd&+u}u5P*$yoB)o@Fp7L_p}3ih(!pZcldekYf3ni3iu+M;_>n(StBF(& zKMeFopT!~6hn_DIi+MG@93O~R2#hAS$xx+RUGvbsGoZ#G$-^p1 zjdVm0O+>Y^Rzcx|v#$dWj&k9H^XABDY71lxKlC0DxVIGaP~CO;YYo0V0ljFQH|Kju zcQ4N>Zy|Bq@S51>8Va0@@{%X!$5jM|RRKipNWV$0EqJ1=iNyw=U?@aHS5Jf(vdX} zT!2fUa6DsuRM7H##3KOd31agMEh;Os3SOVMJ?1ep!bvB1;HTyK&nm^l&tI4lOz|m7 zd|L&O7V7E#9B3no^BWCEN+^GgMIM+Hc>L?Fhb}Sy112_VXoK}PQy~xVIU4H*Q`A4- z7!&8d*roM~PV=%c@4d$x)5`jVW1%jk(&bMc3i9@@nK5C}DhZK!&U9aOYDvTJ1bLPk z82W^{Ed20`=s$8Ra-=zRgGle0-L-rlx$1+^I&u4+S<*zkn1*c9kSJ7ipJVC?cZIJe z36RO}*#GPuxIi1_w}+7;3MCukWn1k;ca!q~b98TSRxd;5!58%wh+%`S$Ic*lM9`hu z+8rEqe!A|K&Y;(TpsiWpy`jIGgO_#HVr9X48aX=UPmb9;!Q~Gq>ulg0Q>^ucF?O*p*!_f>-1mn71IVw$$fP1yCdWA&QE?dA1iL3Msub`ly>zC+DP`fMeKh0rR% z1mnZk!vGYlmn6~s=dxqTPXAzU7%tGg%sf?0fy|Af{Tzo%Z11iHMt9rC%-j3i-(>!x z?5a29d9_?oLO*A{e@jCX$+}PnXb%tH{-q;gVJR6NkxR!zI_swXx8_Y8$-8q6Qyc}( zzUNj@5+&dU6;WhXqQFy+DKPl;#&i8(ZW`qlLKX&)gJ`IKbRx~o*;c_h+pz=fI}l5T zDNYsE@7i?F#lI^$g=J{h%KJ*L&Jx~!h?U%jKajgcgP?si3!+`ZE<~jTGV=^E()F+f zeA>xf>wz z;7BUyd}8%_r5XjeJ`GAdt(Uk2ocpCSb#P#YC5t^8v)0!f>sy)HV|6I+1jME4wUk`H7i`X&IfY0MG%1e-Np1so zX5ySBT4z5iKmuvfZ@DDYA5duV%Zhwh#tgXS;1o55Tknep>(MWmHUjoCzx?zNbCt02 z3;2z5Q%)|=*I{=MH`jLq*d^}$o|qnn{zUQq#nsa&fO)IZ17&B0WaV$w-lhfp_u)bH_`2K+bM zIh;xz-c-JqTKI|QMiHF$B>M#wUKD}f?!In3`~Dqs60j3ZWj^>edMa=0Ym3tU8p$Y+ z_N^+6T{+Q;NIEex5NmJEXz5^PDKPVP!OOt-1iO0q(-m8vn;sV6Hv#)NcVf`OIG)yu zX_am%6}O%`*PN%r*WweyFHYYoDCZ|V!*t?iw}b$Aj^v?M_i78Qe;7cY4R#zlP$tbA zvai1XB+Gb7!mEdysxnaU;-L7ecE9!di0dqy=bQ1-O6RISeB*T_!7Q@Cp4S{Ee9jQh z+eZF?r^X3np+V5G68Q3^#eGEA-FPz+ksEMu8+5W|ao_vRB!fzWKRr`HK9paAJYG3q z2Nsrqk=Ew}X<%XH0L+~Tp-hPf0iFQZ6!k^^ (S5Ih`aWGh)8+2xX%vgJvM#BAp_kVK(pN?_^cc}x9?=27) z+!lArR=#wiI3A*wukJqxNwyurv9})qm{I+;Dtp(oPaB~JE5?>E9OTL9i60t1+|1v;{OS@DvYKC zg$#c#^Dn1B?c0M%cwym0SZ+}`@BT)CarDhnq5*+hVfjh8A@nS7b#D6^9UwGfLU88q z4hoY>C=(=+n*RPRyeV9?is>JEPUBvC4Tllee_U zbJnkbs;)Xi4D!L2@4g$(3%+M3i6&88$P-r#7{aa{q@lR!3^xKU_x6!{_1TaNipw*q zN6UO=4$qX+Vg6Zg5^>vQgY#1Rp;!7Qf{S6^*xbx?&2&IqtSmc&$i?5D?~fD$e&m8Y zwzYWrLx1+ToD^_s5qL%YbSbfR7kBo!-yC?l+TMlylR)_613os#*NUykAZF+#XKmJ;pYZk4>?vQ+LFWvo6qGCFH3|?$g=R{Zin4f`rB6Fe3LJ_O}a` zv}e(_rSZyb?t>y824w}?nqrETiGT``avC~n0^1?LvH=5AIP9d0lZv}rub0lW6QfVu z_4chB;oDu3nu+X;kVfiBB?u}EAM&*V~D(OEBjy zjv$}WzO@B<2|xp)NEQ!uPrAcQiuVsU;dSdHR4y}z@8d>0Kj!UY z;*@N+O;vgOWw(|=OdR=}#YYl%6NAMZNsYN%e{^)anS67K|EF zcz4ex59}ym7sq6L8R^7R$z!@KcD7qjR}W_(hU0;`YU98CEy)cyLAcy+Ljp#JAQvOH zt9P*Kr{3zv>)Xytj;@E8Ttv(gKje(URGsv>G!`_vV%~L+tpcG3G=k+5y@wL@Lyt*4 z=s3cO@&J^?d)cw{KRHCsgzv;qPD97(vzZXspC1Of=YEZah;m)C<7Gs$0pxro*XP^U7lTtMP+qX)b4ft=hExWuY;={7KWfQ~ zwsS|6dgz=}E*JKb+FbfjJLIPqRnbQ#&~;T9%0We=H<6Ux_w}0NjbC;|8N}j*_w`cT ztZ}ne#WxKqodR_x9?9OmN)X*#O!nxv#4yj1WhSh**>pJ8|G60k@>14GaQ6^27fvYO zIu;)0;M>*M09`8_(n%JF@TnAsufqh>%}BD!?(ALm#&ulK5Qjk^M%C5F5# zu}MVGbLKB%o`-)Lo4fpwVL<4GHPC;J8u?ojv2pga*@Z~ue=4^Kx_+6<*-Sq(7glXR z*^l`FtIdiAOP-bWuv6P=*UGbph$LwvA|uQ?mBfw67D|NcEuY>Z`W?(FBy_}*&q-dw zz|w*{Lo{L3*6NFBEOG8Y9$e~TrWBqTxzewWyriz~x=5__UbFDMSR5Q}p6EP_NH@rF zIL_j7uJofHZQU{QFDo@5?4DyGkN#fKy-pJr?Md^>G{mZqjfmAWJme$x;I!_zv@qcf z%QI05Sh6AzSNU-r#xf@8W#mKKiED+-yVzADQVbqw!F6>#j~H&G{%_KQDns0+W%mWc z!88cG6QFjb)66-BLM4c+M#BNjpLc~FGzyK_2m3+Vqt~3s{xemEg|8diO!B5rvuMnv7 z(P5?IwO8s_IO%Ce%|n!NlfKC>w}-*<>J@*)bq4qe0ET-&uCBZ8wyF{TyutSg)md%6 zKNe9rr+ka!{_P~3!!*k3Oh=miO2A!9sQ|FkGZ`fU-u*;`P(}q#Zuq`Q`8Uyh8X9az zVcSNHG1H)v(-VMXeNBBLCpgiMR6*}Lbfvv+sATBEb#HHxV(0A2Y@^bwRXg)v zGcAF&es0`dBDPIsqPB8zb)0~*TGr1CB62hNyfhlJ1tc>w(!5o{wGHdR{9OX91qpe; z2Ty3cJPp%3X6P3`+)5JKG5!*Z}Y#Z9#z=0P>?2}Z{f!8M~Q9?TG74e#_)^& z7qw<>vA>n~$4axaR^o!@Zf1zOnl6PH?e8c*uCYrD?{m5dKuo6VfIsP=(a_0U``eRN zRqNtaBYV#b$Ap7WgT@s}c3rEORB|QUq?vf-XSCvodEMZ=)X{&fJc6I(@uy0wj=sE) zHKU2Y_gp5x5PKxy7DzslLrs06MVbge_gPeN-$aEFapWno%Hx~3rE2poW#t^?NCbWG zavT5MuC#FV9OtlTCes+Yc{cAQlbkEcLU~MU|uv*Qv@jR5E=a!QA53yS%AWs;(dZ;U?Jfb zVJ_{Klqr@JBEmVO`z*(8EAu&{AuU6J>WrBC)+l&>cnX(;62FcHUG7Fq@Wp}S0CDpN z(4g4s*R#jhkN?^r1}8lCE9nl<5pI!>uah{lB^7<-ZTVrz8z_=&-4gACBX8UL!(tWU zU1VOH#=>RXxQP{!>Oa|dnm=!~jW)SLmnnK%@Z?zD$tX@HwcxSGD7<%xbmBrB2{;h= z)o77YEb9vL*3Ub-ScrP;KK|2btYDtJT_3vLKJ^X`CHf`#vN_=BbPloS((yR5gu23P zgAkb(4_A=KM;GLw3FN8g?Q6akY-(v^G-W4V#sfE*un0KZ;&)z#WVlf2 zT`x%J{Ugjvd=+mvNgNlC6Z~$|SpVPX#HSGx?peZ;@{I8><4%6`YNw|2c3)Hk)9l*_}g3-?#LlKmYEkK+87+|HHIZ=5m_{Jk-uh+9)t-x_@V-|7r9} zBP3$MfcJsF=>HZRo2+Z-^95$?`df3m(PuwVZ#dm&=~#AYI0$Sq!`YNbV_p^v$Zh{B z6*)C@VF+gOkr#5HA;XyFDkUk*$~>Bpc$s}~?ASDCbXhV-S7}te;Oedr9fQ%`H;C=B zNVojUOInzcoD}X;c}t6miX7uDEF6- z6Jju%n;(kg&JEmp*>y94Ld=kx){v{6y;Y<`tu_?{y9SpP`Ad=0zKx*jsAq%2vmghC{zBU(8I?(!|i%69Z~C9nE%b6a8K9I9{il#{@l z)(yIe$2tT#hCLRXDUD-gdktk8&FR^he9jfR zz*9WH1!?0%SJkcm)upX+=#CDQo_*J6U}@Qfz&wiqH=v4~MVfisJtk7PtHKf?QI41p zOz!^<*9%@0@2oaTgbY^RC0m4}F)$)vsJ>bj7Jdsh9qeRr_+RmYmXh z4eLC5ERm<_BVHmXzwxMGEqyF&x~BKE;^krZRfL7wf>h8Jq8I@no<)KTTD0>vOqvNF zCvVZtq{ ziTUZ_2~H6wl3h_PZH30_qlZO9HZR1Tvvf6DGIy9UKIc6?%b&|t!7u*TsZhUohoPp_ z0n~)ohlY1XHz=nd@CUu1hLYwB7TN0!ceHoGHJI}lZaB*Fkm()%LiFK4D)RC+o7z3nf;*Il?^}$5l(3 z=Ps#LcRq+%U>NRx*FZx#7Rd$U2CuK%_GG-n+pXynAYw4Zq+RaDsuwrK@?9*&Q8?v7 zxhVMZD4Rx>vzrMBFl>mEpa#~KmG&{UTS_qAX`QY{e08AtwE24V?uOqy@YFnC-wI_qmZEOq@4|pt0E-CePj6vHXyIN- zzk}7T5q-9TlNKh)ou>{9PG`8$S;uNihZQFIG-&U$q^2zuKX~XRthBn*z};r{!?ypN z{%c(V2HgAxbO{9croY0?X5cy=D#PwF!I`a3G^=iTdvaOYcsQ17gw(?bJ@Q{vC;UeS_$Fkme9v>#(hDFXMuvt$ z?-Y*DCydLN>o8yo84vVhH^4#Fe~C%{P&l{Un!vI`OXh95o!*hQ0( z#K9`c8`>YsFf#>mu?*S4&=vENeC!$?LtjyOjU1rZ8!Dac#kjQpE#0D!h>XuZ;c_$= zmS`yG%q)J<_6ASsV2g<}wI-1QF0G}|6BN(vmM4gYA%-Ky3a62QkmN#L0oU94Nvxw3 z@>PJzTXxwN{faS9>cx}$7e}>bPEAy*JNlhkQ$=fA{nAM=G^|p4P&P(9dQZQw`jUu~ znyo?$g_XR(9I@(GQY?FIB0S3+K;$bl0{<^Gr)a7)2=oVB`Dd}~2VrQlD!;U)Jp4SM z9*r+wJJ}?SUNf`%3>x3dRvBN>C5(?uj}uOGokT(IF(L55aY9YoII%D4&s~*9p7Kkr z-l_NilJVtL=6mpX&}7M#?XYR_rJn_Z(@lGN&3N!+OMW2OukQEJ7 z0d|SRvM%K4Pc|2jSbO8Ex=u$2gx-+L-d5`B7EgX3=I=0z%9SE!G|wz2s!I3qG77r^ z?utJd%@Z@ur)kw6_g+(19#B)xTcZ`qcj)VFdz zP^`!s89?V@LFsW3jjxf*Vy?aSF89g6&5YtNF$11go_}Xaz6-PYv|I`3=q2^ApwE0{ zUbDM5Z&l|dua!0Z>&`Rp_Hne%No~ILJx!06?84h%blE0BOkdh6!!H{de~2;2;Q4hj zbk7AWhIa`5X-ssvdF+j(6aFQ98EMVP4JQdBTDc%-b!ZizHR*7Dx{+A(Mf{*HGqc!P z67Q)u9INRDc%p^Li~ao8Iis(aRmmX(tRORpIkJR*v3OSVQ%GIlS%TJ0x*Hv>r2H?! zB(Z@oBOt+=7j2n0J};09cH!!6UZ5T3v2PrB^^I@>c|J;Q(Q2Pwm!$6a;`Rq;Y-s4( ziwRGY^v8y?%0C8t&a=*@KUdmx#k;;)WX~Qk9re9ZS-|d#wY<}eodQf!W6J94hh++o zcrn~`om0~A9t6=6OHbn@;aM=CL4zrFXcEAiIn?xWncc$=`8vEF1yA+IxIZuIEAy7p|HsrjIL6&=-@~z;G)`uMCTVQjwr$%s8%&%uX&c+NZQDs>yHWd_ zd++mn-*^6l&zW;J)>?aQquw&CY2(yVtmT9HcMJ_}L73&$=bsbN@AFAl30?1`)Pw<) z4-|F&gJGD{d^|ndHg65_PofPS^Y&92n zdjdc1F81}S!DMHOdlqTBv*|Zavg>rYAx*QZ$#3!JE4mZ0iORjQ{z>Jx-U}uVN#i0@ zln-G}gTg9E6tnP7A#@$qmg(P zyN+wq69Yv6!U)BI?5?BH7=As95J)CB20z-H&6n{X}AJ2f}HW%}=8K4Q^Q;59lT*VJ_$bA^_!_oB3{(m`6&a7 z6iyU#Kd%IX84c_Eh|6-{fN(ewrT?q7bOW)QZ+k~qz*(7Ji<6Lxhl$5n&MDNS!u81e zA2K1T3!?&q}$5;XES%UUsF5=*&zX`WVR3 zWBq9Q2;4sN1=zfdS14`1wOm?`>18oiF{sZ}XE6Pw z`zdt!W6c@QGT!q?>RpzCP6hHD{;RPhi3SM_uw0gd!zEbQ@$c?7x+fwJgvlr7^<5HSOV>1x#xco_4j3 z;O+uW;*kX^EG`5B;j0&FKKfuTd`BEVX}R^*Va}_t4uBdhARHXq96e&%z$MIEF$9gmiJe8C> z0q#m^@UlbJ%|e_b<~|bme861IvGxj>V65}2y6nAdav!$AiXF!iBE|X$rgC&pF!FgE z;{*6QzE1M9j28Y?B}w9TMh>K~o_5)I?BCbFeULouKfQZdD7vhAKT75}JfFg<`ox}6 z&bv>A@u%U0Zs2f5Sz|$ifj-oP1xV`^T+5JY4J(OE0vvc_ii+XciVvh@Xo1nDB=IDi zN5`($VEwm@8__n)g@?>L41+3kJAfyWjF+&>{B4p14kS%1ufd@?%mX<=T}((eMGt2Eicj^tqt;Akz2 z$Cprxd~^PUu>hik=P;po6D2t7V*s2Po|xHp$)(=qg{OlAPNJk=PCBeU|2!xL^vNYj z++E&%!($Y;7eDg0MGV^IjxkU#Sqb&$Z1hXdeA7&a(8 z@PVmw@IkDI@NFwK`F}rOeU3=K!V~!YhcL)Q!7H-as9{DK81jDZ1)4RnR=(dlI=oyQ zoPolt@WRSxtZUIS{v@)EtNG-WtlRy$QjrTFoCo0;Xmgwg>DduMQB6SBVVE0w;zeh) z0G|AvV_-3dz|yyxmZS5_!^j?Onx;+vvDzQIi(23K0p8d%m~R63u)8iz^lcHzqGZ=z z8%3IQS`~UPP{zY?7;)zKa3VZ2bW656HNx)W(IFxV1GQDcmd-LB&B)mLa7qLk7B;O2 z@H2S!YeyIM*Y7V2UXDf`u7~fN>vx;OX9MDZy+Nz-zA<;_pD~=6 zyDd>)#;~VJKa~CzEF!eZk_iepAG|QiV|kW~QzZ`g@;qH*VQz|n+d~Qlz=uMU&FdV% zjaU7Sweu#~2kazR#C(jG;aDm3l4mvDqmGs&T|?;i{)|dy?0Crek)pqq0;ftwh&4WC7li$6=v4^~aApi?qU;f%QBR49wOD z!6FLu?U5t zhlRxvuyOFikck~ynJ1)Zg+G0UoDwG5eWJ?_x}Y^6wRlK!Mo$og2!&<3Zqc*Y zd4Bio)@TPb%LhU_!Ar}n(FO0A;FzLXY5Y{`nH936vhtUL0 zc_#boXyKjkZ?8|Z-(AXYi7MuzN@n3L-Qq9-_}WdI z?@dj5;CPxUqSg^IdTL{i(zrI(( zvEL+zFCAFbShPKbJHE&aDMQR{)Pwt^~4a|Fv`k2hQ&=eQyi^k?z?&fm?^GtdrN0V%+G z^G_ePg2W&>MDO@|y93#eh;R7mW1)uMsv=Cqq>9lHzv?T+1=kLJ<9-!0FDUjk@kXOH zih`^}mc(@UA}nKuii(nyIEPp|P*y?_CgLdqfS#pz@UtdAa4%iv6bIajAqmlP`k{c4 z2YtZr);q#eIA}C`> zX0B1j6AF(B7M~JaIIyfqhCm3+<|o=Q{nHJBN+b)=@v+g9bJ6kLKo}s(Bh)^YWbBvO z70iQ#MG+K%eb6Unb08c{lz4>E@FvBkTMXFl6kwHq5crDusatsTlH4B?ti~xDnQVoR z<3?GPx}J2I2kq9`^qo3Pk4?QaG%Uz*1XZu=I4D(Vop<@yWliBhrh`jytXJt!L2d6? zOP%2d^_I1#*lr{1SH-@9^dh3j_MJaE8W9l6;__k4`yv=_%Du+U&eAOX^xBP@bWZk+ z9!I|MFE0^ndeK%fU_VSs2uk0fJ^XOkpTJy~b9nO1HjPzCQT*5)ktFYdpJyia2*;$d z_E2L8*HNv1Td}yH=T9goM3qN$`S!^(Z;W>>$7vu~g9R6F2}=B(&3~;9-9auiQg#mf zsRT_TJh=R_W8&X0;9uc>OP^>l?C5YgX0LmY`D2ll8hVTw*=THsBN9u#QpX#(H>r7e zls4WZ7twG&J>NKIlcb z35UMv-4GrUeiF7-HU6yMFTzdofSD}}LnPB7D85Kr0Ui&N>d(UG_=*uj zO6CUvkpMCX(4G||hJd+u3@qp9Vs4mh8>!#XtKcZUH`Hj^+HKTy1;I-a_!;`7o>0I5 zHy=e1sx`&~Thtyl;{3cNOtTW_cMag%x$+nM=hzI0Fd~sdxpdy6%yg=4)+22Qi;`Ee zPnU~*w;to;~ME_VF3$X@2a3P8xKM8m6B z)fW+ZWfjJHgZBzRz(zo@GZM#=9)D!Pao}AI;j4c6{AYD90?&gx)hr`9<5qx4))Z$C znF%FeSFlFfmP68nk4Y+CFgT>s(Bu5{lCNfG!~agcIm;^e^cJ_l<{R%6k7n12XZFkC z%iR!LQ#Rit-%2c=BA#NE_JSbeafn?#CC2&=6h*?9mLM=DKP;U299Gp^3#CsQN;?Zr z{OKg5N#s?;bHfKQsvb-Xw4OslNBIcl#*00eu;9tU30?{5|F85b8&U2^-#~&3eY*sh z;72d_4D?TLs@N_?V4`rlM~xxL`)ALY08P}Te_Mv~Dbt=)cvxhH(Ov*l(#w*?Bb*!H zJ3hx@Ne`l-eLaN_=hkiaS=|hi@V`k#mzSQNn)0-?@{>aiYTh=m@zf%!YU|W;YapdG zpMTg*`uSkN75bD9u= z5D9}RyXoINe|sJ)cdk|ay(93`S&C->ijpld6~=__?rDu9+4(O6+Y@c-J}(qCa3iKY zjVRoSBbnNHbD80eU~5Df4g4fb-+x1+UWYKyZGeft=G1=Lo7MqFV6+7z4+NjI9Ah;U z1_KH^$!#X2%-^~DHSl&7G+M55{H{`%4Borx3>$t^Rk-^AVU-vWqV04ZRXwZq_`8-{ zJ<41U{U6UF=BL}<%QXB<)~#2R`{wM+PZOzg%Vk4FgnvQLvDZOi#}QQZY9~hI*5hMr z_PmF_(HT1jA)F;X511~jxZ2%jM@Y1w1cVQx$KK*9{D0Xha2-0JP#gXPOiOIg(cCE( zS{l#57LG~=?Mn&027h_z>o8taVG9DOP`-g?xN(q-V@$qei(U5I!NjNLJ|Bv>;b0 zR;xDD>sY=3y>}`Y&EPS>-P0Cl7_@ZV;d+~F+v54u&y8;Pzh&{U8-0)9#>^Tl7R4CQ zXE7@EE_T35sgEZe7N+4)F#VQ^)!X97KKG}Ra<-s`NUL!ZX||8h4JSk}brznyT1dHN zBKVm?5>R(&hBA&X4A|p%69IhXMGK%T0PACdzghyjQVrUhUIzVgeD4CDvylY{t@DFY z6~Bj4)PyhzkTq1xqDfE{Bf6t{L*m#^p4}8q0Caj({8!14lCad zr*+Zed=P~oVgU&ZhQw%wg7zu`3@|W?kpjT9eLpQD6)LLtg2jtu~mHIq+ACvoClI z0iqY?ZE4xxscy+qpgGW~>y!y+qC1<3tenoC+I0UvZ(uAJ6jv^c&``Z$%TdvN-L&!I zJHYrWX6S?T=0p%vIn-|f!`W@kzfJ#PgDAsmTE9p4x>n95o7?n`epE0suVquRMT9A&Z10KY76T?FWc}fFTE)GBNOM_2^xUH)$ zGcy;+9`YhlnZyE<$sUqa5}*QT`edBfs;WGkx}MAQYPNm|v|#xEwZIsZ{<8Te4>pLG z{>Lx<1{Ig$4RBC;UswI}(B2Zj8|1mLrCo2i?puID9Ol#~oE|yunb9bSMgC+Y4qv?* zY62D!a<)Ukp^Fa5N6 zaeJJ0t!UA8no6VX&ZaZjO5Hq|lK{}p+E0{gRA}@VJn%(WPD~!UZ}6I4Va7wPTB6pW zG$cAHC}rp=n4YCX5xwPDV^VQ{!M?46fU6N(b(W{T&PtF_7#5DUsVycF1)>FJU^2B^ zXtZP%Q$0|SKx56Jo4}6svVY+7_;KtFGc+C;0P;6JXHnjoDXm1|dUnK#0=PL&5N6?B z9+!_6pXB(If*vAXCg=tO=?fIlX(dcf+3-cej7OGZeL5B%rYkk74N5oL^*j9&9`~k| z2m(<*H302O;ZzZo^HDH9uZ8YmUlH_c4f$d%jDmfPTi}a;o=M}isk3& zRja~JScTHB|A?#}Tdjq<6T0XDW6_E8Nt~dhRRQb*wDZ87Nb{^#o>S0^aGsytonpZj2K2Qxo6Op_ zZCW?U2CmpOxuqd(Y}LAd3ORsAkiD5?rKwYp1{voaN7S9mGn=p}EwqF)3rX0LDw$>?t{un0yPHpaY#Ka)JlxrS7!nU$N)49q}3C$4`Uf% zB{ZHb#gox6?Dqs)znBXEcn`I`yrhsiH1l<0_`lj3P!xC}W-!hz{tPdgdrlae@zV(r zx3faM2n8Cs-3ZvU;e_Ig&$roWoif;A zQvQo(U4KK^p8M!9CDT;v*6t<(OBTZoBX~m|RtLCnN-Y$B|C|V9mNti)3og!< zWR3>fo@;JX!CCyl72~3ht?E7DMXR3EAw}2-GeM;5ypb3yTu@$$4xuqQiCTC1tIW|$ zHZZO5#khK4_C&#k&WB8`nX{iH%OLtL>ovnr-& z;)LkIq~=OoC?D1() zwrm|t#w#`hpY=&22zE)wIK-*bl2@+WWdloA&wL--_u3a(HDDBde-Dpkjy7PjVnnpG z!$2j%9>8QIk`FE$*1~aMbRyNIYAwTpOWkkK;+Tekw<@$;DF_hBkOUeNlqNvkMc9EI z^AqTDu_tuT%J>t1nFVx?TbtePN>EZYdJ!nFFvGg>&-7*=I*Om`%eovKN%5iPlFBj@ zqrO4cbDx!Vkz7UP=ui|qUQqger3HtqG9 zK^FvYeU)?Ic5opnMEMhj?~*tJ<0wdPedS5U(ffdSpET^il) z)xIC9r)QqG{pk(tX6|RRZX8j}t$8KsMhLU`5Rm@j*ws|Tzz+!V;Do;43wX-Nw!UN{_s&lw1 zO}Z)1YzcpM|BZW;5wgfX(Vv~<6a2vKU_Ve+-y-{ty0lM+s!y9bni(Ep5W#pfXaSLO z5)umk6~dPGkGgvwOa_wEip2O*4v@{!gSL{akG&NE z^hJrkkZCWy;u@wxf>ThNELxTq63U|frQt`2-b~PbQQM`&7Kg?9fQ$5;I)gVSA&eD6 z!M@IAv6pR;|GDnvH@+f0tvf5O_*2em->ixXs(nb{SJ8PHU^%X5AM;xjcmV3=x7zph zAel+hv(Z-cB(Qs7JXa@5J~}e_jCexcs0Z~wjRjXn0$J&tr{nclu?b01Kixzr-`;x zO&hajSIf4*Lw6Uy2A5~uk3ZN=Z(PWHR-5rYU0U!ydKLk#{cn9*#`|W=P+{co(Z%%= zpB#Tl&kH#d2BYu@(-37_hs6LkWlZz>pF#yTlJow}G)|5rT;up7?4E4_S+3R}UaZq| zbu*9Yv%fJT>Z#H}QLRs+2nZP=A|RkzK~u6-J!qmilbDBlm1h+0v8V?_~thp92SPOZIqC;`Wu`HI1K4{$eb& z{OwOs)LB9TlRW!_{M8G{05w$>v=-H_PEu2@~U%@8#8@ zRy7yi21MW3$Dt4L5MHagFv}Q^J#4W?Q;EM-AXSiWm-nIQ?fTIBi-MQgcGmTNJ$yaY z0T!<`3&yCbNG5dnVXiG)9G&rRl;Q8?2ZT-w4+D~$zeA9Zapf{r)Z?f=6#n53l6e^w zW)JG9Kk&Q%%!2oK9J9((l1{H9_YY2_S+2XO#re@Mci2r`$yROCr4uSvmyVHcNVz6s zd%~7hn{g4v>vpJtYiQqrF}zX>Ncy%BNXx>GgG30*fp#eg(&#;Hc5W_84DgyA8AdAJ zh)e=e;Ag_n?;f?5ncRrsQI&Vl%*OAdah5x9CH(8rE7wf=`keYH65pj2G?8MnL*PW3^D^$zjoglX+a8PVnqt%VR^*iQ#~hq^=o)-m zLdJbE*+LZ7rjcRyFwn%}yc2Cj(uTZt1t3Oqp<&=Nmi^g+90glg;`Pnucm7ZGZ#MVm zWk4Aw$~w^GgrYr=3#=z~YZb`gJ{OZ~S|g3~D-`@1wA%+EeN#rVVQ|4PbuM6f*E?Amung^^%KHZ6Y0uSdy)CjTu3&+ci-4VLvjT z;}<$;2Bk!tpK93rT4X?;jVq2$HoLTnV>vA*?~LhBUekv&IiAZ$@u%rmTEfdPxRwy% zJi@}>xoqHoPT>dzxd|V-$by!Li4x8y?A}w_B6lTAbXXNPX!;L)?IcNp6=3XmA3Y%8 zj3Rb&Rn&-15Kzdf2wp||1rTMVD}p#KePspkvOckFnfsBWTm9y?H0|o=+clR(mlm)w zCD$`DKpdg;n`-wy_jxSzi~A4Fi8RG*7m#R0cFiKnh)A5@ZcIwJlw(4=U!elfhAcD! zQQZCDtXW2$gb0U#9^(^Mf7urpjBwZv-SIz|O5#G`2D&5^!JGv=6n^;}y`r~B109|R z`m+hD(*cxas@1*Zi;!4WyqJJ17)(F4rnGFmXTgWfvbPPx3d#>sYE7isOz6Vz6hrh3 zc=A1`)eL@GOzGG9O!_=I8{5oQyo)uWGqBZpgwibBug01frMGgCBKho#)_*_$1Upbv z1|wFBTWC4?6;)(Uf6qzsDf#!DcrQiyBNt@VR$xlt#0TE%|7r`!oQP=)3fs|a^eAHrh=SRnnr z%_H>d=+)p>DYA9&XA5;0wtIHFgUPO^rHcr)<#Cj9U!au@u8IeJCjcr8Tu6@x09DXv zm7p-u5+5vj$OiM5JB_-#m;6>ft~PRD;L`rpKA$NRo1Cx&N}FHq#)3rvFj6OBa8BiY zz;K~43hECF42CotJ@g6Y?`!Z@owf_9IWVe!7xPgiF+8CD4SwYVR*dwFaa>akn$78*wS zXt|+S9?vG>qDat!DNNIQuwem48YX(GB)}H%3T#cbbpj2Zv1>lY3PnRzix&?>4=e)9xHTzG@<>B&!}wdz!`QyoRWSnN1-VgVZsT{m zv^%xrodZUNpPFuAP{WyB`L$XUDzQy5 zY#UC{P0tpaV;odAPy%ZpTSA=i5N1AhU&v%T|Mr^-H_pOitqZ9xG1mq;eIC0y*$FzW z=u_|$#k#^&3>Soe99){&-dJ{{Iv~|vKyL2g@i;JO$$8yvm{?iHOzSEF6{n&!ma2UD zb;SF!bUOd!ySJzdcCfiiX&F}%*xOol;Y@#YL{7Ww<;X-F>!KJJz3weM#0g4Dk6;(fPm6Z4?t@1 zM=1am)cX^|1q_-~bhY>ANlkKz`eR-;3?>1gyawS-^l4G9-9XXk5MPQu)$kwAaOmB0 z96hhv{ze9;nQ7c;o7-j37<9Ol%_|Av_}&S;aY+$zfc2Yaz##R}x40~mzmqdN>fFzz z>f@+A2KJAgmV8=_*b9{Dd8Rbe`_xKUqqgyuTT%5Gb0et$9awBrc6 z)ek%tH97Xb+F!f)hUymh)$_b{-zK5Y&t45B9N7HVG@PsyEMrL@eKmFglq-l#&wiL5 zAL_kS`2dL$i~gsn-xkLzYJ?XDV15AA#ncZ^#A0SgZu%!+=Ax#4=`a0t8;#y`z`@rhJ2h<)#%3C?p&aF^%w~@%$wpG4{J3eFki~0q3gFET$A|L@)+YZH-qj4z1o9ii7e5DyO4vNG z2n)@tkV3PRfC25;Dq!6+SmB5Jj5)dZ?euiPZ5H_AY4aGP*0S@q_=4wkhYAwdDB8wR zWeH7BXuxGSe$-vNcwMXVxPDc9*(SLjR=k?mv9gPJ$|}``@X7Y!k?)2T!!U{>C=HI8 zlWP2%%obNx&ZBm}<6H2!?@^$Z{g6TT&(NxexoOGE-mom-5MSFsrdf+Q;RN1d7%aC? z4>h~WBUTz85t)ORURkGFE3BPq#>^JLnuS~da9=qN-AxEDOPw%>NUu!QYkhN^ak;8n z{jOW{hHSXjqOa6KJSOloMAPU^7Gabk3SepFW`5oE$}fZ%txW;jHj%{vzCr;fts3Gb z3x=QceGQvT4qej^gkjS9(32YQPELaE_rySCaLLArySL1%GIel}EM?ysv^h}dBJu{= zF~}-0BQ*w2n7vI<1~UwBiv9{VAq4c^2uIN7j3Tiz{&9y0-W7z)FJu)qJ&-c1tMfQ^ z_b6_2wzwSbxZ3m{!JdKzV6~myQQ^djE+I0u`WBqgGvPEV`S5KF5oLUBsllx_a&6(7 zI@H;$tmVZYF(yTau1LM?v4-1+=D-bFUx9*di0oQr+~OCw&&#kh4C?kaN%L9#cj99k zXaAg*0)-UHE1Vr#$`Gyp2kG8tqBM*MV@`w|8n7G3mwCh@@1)4ol<9 zh@GnGH+@Uq`#`_EWgSNahZ}(m&FKov0oB8w6MtAF+!L?NRR-G*A^C|Amoe%{`4d#J z3m&l3SOD4kr2g!sZ3zqZjpbFIbxRD3S&D|@*@W2Ch}6!l@TMoe9FNtDe$>+fuaMG& zp)~YOnYp_*(4i|3U#q^Gt>U_c!I+))ISCrul;W%9i^j*7Mj&1%9)^?xv738QuKR-p zG>s#r_E<{nMWJKz$ryGodN4%Rx|^LS$3=bCMO-Mt(z=z?!*tFndig z;_w177eHFL4Yq82jebFlR^wCkYR&P3V{SVR=?mA4ZE7nkQnac&V`?tu%=&St+LXey z>@krR2(J>C{yuwJen5pVf3{p^)o0`G<>fGt zg2}IE@t7VI4(Drq7DG0X78Mf5L{ZnVM2Ooa){D$`4M2eC$45ZNLY&r@dpdi3%ytUe zzv#OE+*4T&zLPA;ND%Im#))Q_Of@ZpSFg6<%yYY(;C1hM`;>N(<~IEeyjFDNF+ZJ+ zLvO`?TmeWN9F9WSYW`9>tls1v&~QKQ;MZJ4uH*hsynGy$QyB7%1CkQ^);{6(GcIg~ zp(@USRMJ6aP{6k%QW*xhSMKj(;l+`PSgB|z;Cf7brDEuHf6=u;!03{`shDe{YsuGa znXbis0<9Y{MGBSLIdV=4;j=miIcXkrxDsIi4RFnbpff5pf}&gDf+$9if1lbv_71#}j<*j|b1A>J`QOaY)JvA9Q2${t;GbNOJ7fc=2tkxT{^i)pM;Q zsO5dWA%eQ5Y!o;s>{q1L-p%p24&Fi3z-^`Uik$KfdgH5% z*fI>fl12xo+GVGg=u;^K;RMJ4>$#%zJHLyG?4A4vV>a1lL~e#k5Ib$Vku zcsu1vv_^czCvqFlV1bur^jgIb81`nWp3nv4pLYhfkRfh%~+uY`IxKA4v+TP z$+yMxt5@|W$E#nAISno8k87N?c*5Ir`f5$3wk9G%ao>DThc!RG$z8T=PdZGGCjq!96TST@Pw01NaNSv~)o5AoKamo+`I)pdLkXcA90-?oHbgmTfJjv5y zS@XXb%!OW_wpZ_>ZryDkzjT6{i^dl;%67|e-@9Dp3sjnm^{&nuyZAG@oU5JhC0~Y) zWoHD^dVJROzYSH<-sn$psArc`si211MT~dJ{Q-AZKikyXJP3J*3wyBs%_ZJ>E^0~6p}QVv$AE) z+)bOOlNldvuZxmimKAf~CqCJxr@*_;90qTi!Q4vou+PUb%hI-~*CsSZnBfP6bDi`k zCDCA2&7i2J;s;m@GyHNT=`pbL=+takJZX&}KWAGigKCNqi^LXmay+R+hDH=;D9~o= zh@j8^FIP`4M%`RyMbeO1P(7t)$_|zyoEx)}qjGr9KQeUIp5dZWu>g@K2Z8@<6U zim1)XW6z%3uBQ)|YzfDTC+M+@GU_*9quiS3%2&H0*>>Etj_;3^(yq2EyDneW`3&g= zgEqEx!D3(ybnk?8jz;<>TwU-T%Y5ra-j4XB(M&1#KSEAm{Hp=r0!wNTJewREIB3DR zSB{(zxs^-<-bYJ8Hq0$G(rY>)T>|#xT29uCiXDteWJwEca)`LV;BJfrh8Nh*m(;!GC({I=yu;M1^` zHv*x;!#oJY-!Bj&j{{HUFjvl7lna1cXuGbar;9R8zp`D9P5p1mZsOe|qoOGzf%8Z4 zN!H|s>MFuHQxvS;)~6pCnU>LBsDZf5XAOlbR*|Hn$hB3edY7I<*Xi$NqD_hp*_oEk z`MfTjVBL8gtKY?#Fe`DGayIVS&;Q{39vivMAz=$j6YQ=$XS|C|5D@!31koa(T7<|w zwDe#kR{m#-ui)VY+)ss&(WbxR+8P>;bGEvl*Smq9fdQyXMh z?AYn9#_jhueNB$_58L<-uY;QJnp<#;T8|BRDrzS2<+jc~kem3937?r(?+uL4Qv!GY z!Nydh)K~XHlN(h7<;}V=^?w8KG&!fs8)KsuSxoqZEsvme|K!gqigz^U17YH*j5ZL3g8cOhk3y0BsaKAo)cY> z!bik9{!#ovG}i&A?7{oUF2X>D}DneYDiO`s}hl zDB!ZbytyTyH~sT<)9vbS5TZW>0%uGzO=#iqmJVDv4H9iSp!?@b{N4yj&qh6Q)7&rd zq-jZm>f0Ahrq7x>X%kT%rDHp7-VAGIa+o-BD)#f&eMp-(ct{M+I0N(aQf|aU_0~vK zFRVuaz_EtUM6PP5D&e`s8Um~ZTr zlbk^6`Z4GiPHpHvf{f-)XWQryi8rrNvP2hwTJ9r4+%(^we(ELCZyw3^t)AdzJ!7-< z*B+@h3kTcBuU|J(nKm4H)#rL5n@{`chhtMzOcRu1JHiecH58ia8>9}tOSIPmRYf&i zDcdaRR0Ll?>1gh1C&{J%l7*s+sU$DyFizID2$j_nsRs|wp(9`cW%3?C{P>0GtLWd4 zYz+6_NuK9A;Ju8t%823%J&+(6&3{iMCVTg>4X$Fo3GN`Lbx_CG^vnjmr97T1?d=3! z{F(5(e+;l$DPh-kNB+;z^hzcZf>exc@&)VJO3}lA7+!=P8Bsm;%X@7IWrW3sLo|%n1nL{&OOkKi{Ao{9-K1hVP8wb>CyjD=rQRy6;9aO5tx<{724o=vR zS_HWC`I-1!k93+ZB65VJxhks|OS`yk->cyi(aP>dBmi2rYHi+R8wMs^32$9eoNgJ) zBhNfW1|KUOHsLjkAilk$#!(|X5QKcT<>CTTXY(-}kxKr|#9~Q^kTaWZ3^42t+H|sJA&Hsan3-k>ZAX6+@Il)gVcZ z;U0peXZ~s9bMKuVy%xaxbkbuHp6%yFU12JEmL-p2qk9S7l}}&Dr=PxC9f9ult6P>M zn3SkTU@yQmXC$5?rux9R*vk=Xp$Ym&mamXsmbWY^m|wCPz5nd7jpm>5RiBTvuQ+_B zGvE!atPPFcQFqXApwv7RSoY0xs5(Q=oCi`$uoBD7xs%)I=q^$!;gm+w?)5qdt;Q2q8I_Tesm%Nk|~z?+VyDD#-MaILoRy4H;q*b|A&#ieJtS z%RuX;7uT!fM-3_GjMvN0iQiPi!Sc}m`F`X3QC;r&-wEs^W|1eE52U3GFkr=(C%GFC zW&lh6j0WqpFJCYDDEZ(P4irD;FA+TXJqr_N?P9gd zc?TJNa(DFl$J<=YAxf4*6t;P2F#l|zsBKTuOKrc?s0;w!ve&E1iw0$BH`JkY0LX}mgyp(-HCJUz zz!=|>Ip%EJis=~tWXS$H_8FG^QCadKx3PZ5uY*xSlcP+iJMp8u!nJ!df?~8JhkG4S zHGzMZURJz5K7?)TU?AC;deda|k`aolZbOQGq80w6xQf_U0azOT=TIP4#g$Xxb#>$@ zPmA%^(HqZTVFM_iC}Q45sf||6ry~?D;j{5Uzqkct=GR2Xc%yHN6Ob3B#sVp4nB~;u z!@t&==Lu>@TDHmu=(`L|xLYF3Ag5nlJ)w0O?;wG;ek-na9klW}4B({=$7e$d_GBG0 z)^?gu`1OAG68|8@D+Q?pe&KoHFK`BxaV^y^Vs2V{@vm@wlwNueMN-(I8YV|E3Dpoe z=vJR~4boP)*42unJz5kJhVSW=F^*-)*RfMLe;=jpnezUbg8e3PPdwy8Ig(5tuO{;w zK0UCkPPZLBqu*PBJJ98Qf5ht9XltvhXXAkv2KEfPm5N(T1#8Ch%v}xB6YBAg;Fe}Z zH_d;KB$!U^>JT4~ecFcM@nFNpC#g`4x0d8imE zr(I7Kz{UZ~M|#_rOtU~?b8l>uE`es=x0g|Wi(iHwX~DD2_VMHQEIK;xcE}DN$k&U+ zsiw-Wvrr%B4+OG9NxAj#=+lzo2Iw8K=@w-^-^6U2aC6=kpB!CeXs$SuK#Nr_AQ4AH zYteC&BPANtYVji5H57Zt`YNFOpLnZ@UkakreD#pi?4=xF_9_2D?F!b_%N)QDL=#g` z&WEMLXeRM!b@GiR@0t9*SV+<80nc1dsQImAY!F`fKvpZQCyL(? zA7_isP)JmtAw&K5JX%@Z+~IkTs1+^USR_{9C-!}$q)d70EkXIL2P$zD^05iA$W~M> zJBIu>q6=f5(v$+K2T5D=D12G|-+XuO*svR}kV4G~whjG%!TU)%|9YM&*e2n6Bn_=J zU_FL9Gn3_}nJOY@!HIlq?{iUKi? zoBn6gZ%W$mJm;@K{Bje{D}SHYr@x)Ne~%2^t)#Abn@%}8AZob>aukwEHc-Etm3QO( z?aKX7g!rw~&I0v(=&1;`4nFmb0kcYS7t>3dkdrTMZw_7$H|c#vGw zw(1Au)@2YpnTZC-Ulfp~@Zil^>+o#_2#q~+JNrGihq*DWp5x~ga@K8Zn{~t=QKD~V z?lB_KsZOBHdl8hO`xgox*ZvQyuOHEgf+eC)qxcl;h_b_gE2CiyHpxeMJppLp7)SL`UTIA+5<_FnvF#V6%`#3N&>=;InIrk zc7@|w&Nqj-b9WS9p=w&;=%feyfK!CHqtoIQ8y<(RQ=E1vJF<0+n~6R#Qa-?Z+6Dd@ zDwR^Kl5*9G?H<10`%zX_MnBuBKQwnJjE5Nh`{fWf1Z+|+2&Xb8l9OLj%0cYcICT92 z$u=2xgqxFrh2Z^eKlxcbNbI|DidWH65+*5+7ersk#@Grv%nShZJbXv&a$F3$g7usr zlR9E7pv}t2&E&6+j5nELyldA^>&D9;CqR@ZRHvPDp=h}0_nX=|7Z`%4Rl^2mQ_9bl z<6rGD9dKWhW`-~d5Hoy`9gaCda7cjnOo+!k+nn@5(aC9yA~iPL`ODIs@Dq%0bjn>B z+7Yj#pXCo(O~T6U<0X#~zhky(T7T~n47wX|>o~^gX?Gzm$uwU=7D=KMtAiT(>W>x5 z+o@rZm-ph=*Htr(MtZqc5^zvDGcFntH21$VfDmr_byl$XTSXcqL#I0aihuZ{I30Ya zDFw}c=NMw5#f{u02Du!6{+N-zNE6}+*SK^3v;2& zMZaH=C6sI%9&t`{MH)q*=A3J`wYDeI{1~qs5H= z4HVasSv!`#XQjNZax(B)ZgC9sfE`jchNHe^V2l@#a4ThcQZ``Elueov-6O4IeTUw_<1UUk9@NDx-_@bo6Dibh zF^-o@;8W>}#!EHGK%0!JzH9Ayy^X^pBd<<_DXW#nda&L5mLNzUn$O%DjMKu0QIjSUKM16b!X=K{PW28i{{D|KJ-5_rY#KdoA5(`3wr}iH(xO z0i;@8{pSYl(<6(yyptfvI;5W-KG`xNDSSM$FA8>byhWX#zgk=|kr;k>wJ<`$n_# z>QEYOz;3-O4H&s9pbXX?Rti!@&j;Q9re2J5n*g)L99+9PL|7_-rQ2$nn#bXBORx54 zkEECq;g6B=cp%OAxJ6f|N+=V?tTTS6X7b`ud3u#LMvT~ zNQ*hJ%u?ezQAt>ZouTHNC)z&+Hh5!xGzUUl-IMs7QT8|}IgRRG=P*rmW#vnu&4`R? zoL)5LEdvLzl`8I6mIql@B6|}<`@Z|j6G7;NLZbH$O=I(IWXX?wTkpo$-d#${BPSw^ z!~9;O&n0s@_68|wfHc`ihN2~(ebBC#x}}?N@#&PVy%e#TKt45T%y(pdw7=O4%lNLw zEAwO0sS*x1o8j~RGSx8YTLRahvoV#CrKIVX9?NsfeA0yxZ23i#px2Wouqf{y3^%GL z#kCMqS5A>DZ?bd1G0#==xr8A{msv$7OfoFb%!#$Zf%rv4<28QNhqq=JEIn$4@t!`R zrbc2d!`S+dr1^}G1i2p0AGC;kNxmHy_H6n6cogR;Q?@8z8ENTUa2Rhsb~sC{=n|Y5>BiO4YL^mO05jB`9BWt+H3eHJRFbKc4UL;aJM*Qy7eT949sY?}cq}fjHFS1I z=3~%6&(eocUU7+OiMf7P?0Cg8H4CJdIGS2>`Pwb!3x2rLePsSw*FkT-5YvL{cQN~l z$A>0f{pNV(7w1oT@Eqb|ldOAe4GbZ?8dKnJRD2ED&Cs5`md0@d%BQo~%$RmhTI11o zq*E{4Yy8gK4{2T4Cq4XttFl%WO2bkf>eAkJ({aR+H*HXurMFt6258YsdsyM)l)kk) z1@a9392~P;X`%g*lnHbce1tE)8i~~6v&0$cwXYo(F1r%F*R`d3mfAfmdoclqv!&b~ zkI^W+&Ym;j9MkqiE*BQeGq;!G{^@7U3Xg%{*=!!h;~g99Y;3du@^B; z-YK|UpASF5xBVGpWUkTltfML?8T%FoV{+|N`42*LV)mHjo`#K8mz71%<4}o$Kd4mV z6C7mw%mmzYcO0kzv;y)No3$~3?JL*W8Y4dAsykn-cN=AKSOqQdK1m4Fx}F5Xj9819|;xL$nsHua*Rd5V`SO?J=Hzngtqq4k(}cbyuq&eO-s zm|vvKXf;NV_vop*EmeQ6q^|LR(JOe-53PRQFC4*6qKF#%9=kgkU)L{)sSbA6b0t^o zWk2vR3<;;Mpw1a{1BTPGu zUDzN=v8q(W#Aj2A(oPV;J>!8KTFYhd|71|kvKb zv66`|Oao`v;AT}`2J<+HJk2F^BYtrFGRrMxxipa;*#fwW!>*8aoEn1!L4wof^xQ&2 z-Qn_B1D|o?#LwJghckv*x~&O%VEJ8wdAneIa&(-s4pbs27+Nzet!~7n6)VOK2|zRR zxJ?;>H4C9LB#LDr;G9BIq918s!P4fN5TJ&y?9E#Z3@HOq7Q(X!J)=qcM5n4pE1fw| zgS4+)uRYAU0aNr)+iJbI*{*$yHu?45tDE}81Y6O9L_m~A>$Zr)R`d`t^)4}?a@CJl zOClC3h&=zGebJ*8Mcd<}LeDHk;Jkt}rP*#OJVR3EwW<}p9$k=9SH5{)-G%bN?ee60 z48!X&W=(B>y(P+S#oPN%(t)!QLuJixcbLPkF0BqOj9l4swXuCaw9Sz5dfQWt?N)#N zx8?87omlCxbY=+^>mHX{r;IQvKAkx5-TbKVYS#UG+>gD-b+cgW%^Cu;F+NbjGG}m= zAEl_0D}GV~X@L`)`E%o+*UK<F*e1YG zLO7cCMpG~@{k0*pI4Dqbgg5YYuT=t{Z(8KJ!05wQi^Q)>K>^sxnXMGX=M%VTlZ)Gt zlRsMtBI}OoQe4qn#7^8drUlzRaLhWmPdlmnS1V)iL%eWhe~UK(&raB!G5&W&E#$BvArz;TQF=~Bifo12SuFUTN?R%sc; zxJyUpDJ*|r&im}2(%Wc`lax&i@UmC^xd662q^Z!- z@bhj5SE=1)aVz}fJfyq&XDXv8z-rR{Ol5#D7VaL6ow!G&t>z^ZnT9hWy6Q1&w30Nv zRMDZ-|DB;-WAz!?SgCrI`$wtjo^p>8dwWj8w48*6z085WI)nDrmmYFaaE~4OqN!kH zqUIKhNk^Sj*JkwLdb4B&^AHYE?UyGz%*UVe;B2(2DtHt~IUQJBmbi3a_m{mjO>@!X zvE+s$)PT#t#Xoqv0#^mZ&o*xHJ;10vpooy*@D&8aXr{Fjvv=(i@y^|W+h0{cUi~{w zt8$B2X&7F@gqG2@W!$EE3ToZ85w}&2U}-Qb2QdfoXDU0Hho9a!|0$g2(=-)D7m?SP_D9(;33w#t)OAjkwnkrN932ui}mv>7kYf1)|pRx(#47K$**5aGZnodyG*|@-B?^# zUe@k{GON37IdwOX{&vh=QdZH*y3S{2mLkPTM>_|HV`F3P&dB%x@jGWq(atJ;h!QaG z>d+rv8BLo&=Dx-|jl&;!e7Q+;@bc#?B~bUvbJ1ow$Z4pL(i`w+=dn4-3BM)Kt2O=i zuFH~4HuTvQ)*5Q7y4o8>0cGqqv{y(_97O6@4hHSgB5(2$X?9cQgS)8t4p>N1=h!nVbdePCak z4b{uSL=e9nZw>#tSEKl5{M(29i1PL@mM>MTYEu@8OM7H8U2Fx{tNoTg(Yzlh!l@d) zK@u?IUTeJK*XeMHtk%-|3O!>Yr$#x^ElAvl-gQHy3cFM$jD6`{qtpt|HhTc}RTY-5mBzDDfEoX9NKsSzgpvjX} zYe*x0s{(|g3RPohDWhp8a(@3_$i5C99QuiXPC=a<2x2cOgZfx2Xly@a%jaEY<)gUr z+#KA%dDu!P$+I7>F3=hMno@AYU(jPj@M$7SsNVr+_}i;NQI(&c28r zzwMbm>OY~nUo>tVW;emnPRAp%>d^6#IA$7Grl=!jOk}N@o?CcnStP<^w!Fs5QwZ1` zHIEPCO(~XV{}>oveT^S&ABm{)8C)}_CogpZmXx+^xvlFU37e3;SJZCW$)DrOzdT-x zdEt({41hY-uXODaFAIanlYs_~&)hlV@)nOgh-Yvga#BAN=JE33Z_bLyghtb zXtCCf7*cVWjipL5(B8y5ins2E_!hA?y2NfW`iZ`WV^2T#;VbLz7XmT=g2=h=^%LUN zW45|Jbr~BmUsju6b?4;s%6gBhQaPhnMho{EGna2w<4h-HK4dRba|$=p{lL28R3sC> zsX0c6Y+NsjFJ6#dp=07YzS+dRB{ohX*EiDN)!u_W-dWv)*e(_l-P1n>-LSE;?aH;eNo%Ts98`wsVB(eb?NS<0CM^%U;^Ri*tAeBN#(b%XX{(y->z0aZ z33q9;Kjd&{=cMr?N$=_R*AJO!k;wCuNm6f8H(*>m;|72*g*1!IdzpItda-#NlzBE% z@4hMJ)U7`BX6CCLpia^;J3{@smmqifCf$rEuP#Wn9k$%s$og$PIJB{^()8M+5wqb;=p-(Nj9 zCkvZt#Y~W7EDMe>3qlX*D_lhvMWt(lmK{^MOupjf9ZavX5G3|Za8~BuuZ*DI>1R(8IcYh?Uj! zvKE5yCG9M*%lL;<25!T=545db5UOt78*^qUo_g5o6?8>*8_YdYbhn3{8vUB42m7FB zVcwtt?h&IBuNI-57R#R9ukUR-5U1I{813rOD~p!9Ydxi0dgKw!|^SMZTHyE|~ZY_;P{?=AHY>5(;^Ibl9WVIqyLeq+WhXztVNLICuif zB}qN&B)CF8I(@TJ&HIrXv5}7z`eU2&wR=sg(0kdkJ&qm*KSUxImqi*p2b^4WC7FMv zChHnRrP>s>YaZqRvu;Fy5LcD}VtGGQ+It@sGdO%0@Va&rLxM1}huooD$)NxUseQ!%rF8Y56dX5B0odv~m$MmGBt@v!chD>C@c`$i+BQQm$y)oW1c|YM|*)NQX~zr3Y8vKr( z*T4#efud_oL^&G^3q+PdUh@bqS-r14qNiP zy`%u&@%`1)IfuEL$zJBtyw%dw8~I(&$!`5a>j9z=7Q*;vuH5)V+JIINLS7cGd*lvs!({nlF82E1IN7h< zzEo>ol|;6nkY7_5H^IDh3-Xzvj%%ezeLjs~g_AbEXxC6HZmUUF?;bSS%VT>21WNXD zqhr3HV6EwTrkAZ5!&>6LQtOMs7|3Y!T=+CWVc}nbOJWot*^AK(Ofo8Ivnwl3E96Ih zBO=5uwAEcX6N{}x{?i#Y^VnDA6lKP@kDdA>r#mx$(R_iH&j8^BD#&UA9>5C#Pe5CDcp{Wt& zz`?PoCCbqhn}C>pLtH=8pRw(Q5$d2xjB`=#p$VJ~#2+{7jZo$jFP_0erI+6to%22J zTzP!7rkgh#L!!OqeCA?A`8fzPN@-SFf5j_v{9<__y6vE#ZJ%+Jo|JJoRtHv?4igW3 zp;k5$7U{BYuHj}X?%F(pHgGbl_S}kl=y*XgCe|txlO40x$Q0LU{Cbm_s5YuQTG|Bdkpl;A&y~u>Awq2x8>HBlu;5G2 zR9gM#Y>X?r%t+$}{!Qw0tDc3@>~cfqu00E=rG4#9>9*z{<1E zGM?_xM3PAKO@2AOuj@CV690$y1UL4HQAbtFg!44W7tlA=)A5b>Agm1%W;p7(u!v0tj&o1NMTZV^(JLCeNF_!_m_2t!AO~vB9VEVEx-KK1$rtM znVVvHM;R4*b{A$zo4&6#93AF?jwXX@AS>O30Zr_>r<1S66t#T6(Em}blnY<`8u?Oo z$6HDFYk{ht)7U3VIIa*xg%puFu}-_9O~cYl@z=UiT#fPZCA~xk-6@G^zaNRI67$Q9 zeD)#kom3v}<4TLB7Zvr8a>(n&7X#QbKXQ&K&w9U_&w?T;pI1UVjXX2ewqrXRsjg5H z?$lV0>rE)iq;M*qIq#^2g${v23-7Ic+r|2a z8`gbfziZKeI2mEF0y2cJ4G-kRK!oPU@$CKO&K1$4t;wTZT2#00;K143>55qjv{&x6 z_Lqett5Z^tYTl-!^j8jB2`>x04)j?2(q79KQHzg~buL?~!C~V6&|G4;%0MgZa6sRV ziS51B_F-^)+cU-JRyc!Msh4RF`_9KKvo%>5MHELE8csXVtbwt34Zy^_DVx^0gUH0nA8$Ag{d4S>!)MX%jvhD2qjq{<5)mn@!us`Pz1FJ5A8q9qdR>;+cl~~`$h=N>Y zPzBeN3YEb_W6@%bYph0AQ|ML4>uPJOEklW-b?%1?3z1njN!-pNC|XuCIY_Us5)4s8 z(!}c~Q-b0*E=RQqN9DP=woaRrG6w#D7ZjqK#IC(1ZweXkrM^n*zV;e{EsK*c*6Vw( z@?L94f~jcH<)wD$JGu?lo-dy1OQ4M&d8@Qp?bj)lu~`|G)j2#h2G-RgBV(M4(pE0w zfL1p0^cn~Ug<#&=yq*wQpLlu4%)?O2Ot?D``SAwBRnxE;{Y#-Qb>@LY{n)`kr|r>B z!2mX8?92e{Pj162o3p7#;kgsPd($9xYu>-T7e9LVDu@?SX_EPqeA@4&MjJ`J#5)1? zuFY?lh-&jdUuy|$b&cZTG7Sb3zaUs>J) z)SkN!UnV*1NK)j0v#-Ka2%IImUlFQGR#F2|=jOe*&d4|ZE_ zMdN3u683r3U(6v6RfWnUYe(K5i3sr*^$5g&a7DO#0uCnHwzFY>HrCZU+%n>_zuyB< z_AT17=G1&i@8M@yC3p)b4LU;bsBoD`r<#eySxiGZu<$_0xxMVkmh$qUmTWtIbwP#* zEi+Ja2ErKK=LnC*TjB6Im>B9j-rX1q6N+I`_m)4U^c?HQmwQpI!k_8mX&-cdkCv|t zhHr^6+TI8x)^(eaV9(Sko=lIxW&0u@I-@S%W8&LDm8{cLbTb(()R}sO(~jv$xYZG+ z-oRfc7M+2y_m2jWf@U}o6)C*P%WO}hhfrpciMPtyv_TA=YlYL*1{IUr^1kokJF=8( zVu)GU_>k|5g~ZTV6>?+;AI+p8PfX?)U|s0|-aWt7^8(rV(KJJ@PxB9LY5cMeolQai z)>LeizK>Gc`%=|fYc2lk?dMUB`yz~FK+!Fmb|U^0NSiK!|`EXb!4uc;j&lh8b67Bqzrw3_X*S0t1$v($KRG= z!Pq2Me5CMkc9%;9$}@$uRI9%54wfoy@&~UdH#>fD3;PD1H0)9dKwoB#Mj8zoQU+@B?o;Z z>{RnsKI2in2>Zm_Q}{Qu32RO3KrbXx{Nh=c)22kaSGzxY+NE7X4z*+*(!QZ&A)h#XCww?mfULKb^UfV5f3#CEdJ1)^HdvtUXIgqiVg@YO zG$U;Bd(xzfv+Xx~&xlC+R!XKe+_Jl)X{_v-o%!$g8Vd_xAKGwA`{C`I_<=^yPC?J6 z4aLXx`x`-r8#o3(D%97{OpIIH6l2QW;E&XEoJOLuI1p`zxgF^+;Tb{3&{ztE`O-IU zM_=Ehe%&=#KsKzw!q-=}Bo6$u# zgtZ$E3S;@Ru-oEFYRsmmwMs>2GYigR;w`@{d(eP7NK0@cX3HbxZMoa_n9Z~FoJ@@S z_F)*Y@6qb`7JXID4}Nj4GXiInL)TmPL_*DwVOLt7rnIn6X_W*$7e|+FrtrtkK-Eaz zGtOET_Hp6(cCM?eL@yTA+42iH=x1pm`raF?mB#G}OKTgd7G-F%ytEH}OpO(bq!UN% zOlW8mqROdg#zF`y%-#IUDT1Hqzf@0v=V?%A77#7$wW`1h0mpNztkpif+C=RxCLJan zxcvOnZXUkxPV$)O!M4#u+XoG2F>`C?l8Xi( zTk={xmEJtyHm-T?M$E+Diz+dk)#i6I^~4YCF~8%?I%cA+V!S1h>V;gWzC^MnX3)E? z?3J<^9pCviUr`x4l3PLd-pV}$`%_Cf4KDNK?Zht8BiA90Eg(PpL4{1pQnOv6DT|x{ z+VV-G+8Tr_&+9$;b9XMtcXxG<`2E|#OpD^b*}CHik8+TBdm>sS!3l_32{w?l_e5v8`$8!Js#B=k>YYpAHJo1(A35j>O`%$Ufu522Wv2x;RTav)Ta!egJIqgddhscBUYE^I zt86Lf!Sz9d<)OrcHz{SYUzgjH>-Sb6pfnUalf$?5GZ!qeU9BJeAdTHJ!-UJ)ay;Xe zT^ptFOEp*KmMA&i*=DAD`Z`24AR5mQEWhJE64iu?9I<^Jon2OOdjJZ7t~xj>E3u;9 z>Y8fA3Pl8jg8AdFSdXoF(AXMQ3w1=YS;@zd@qQS?=?lyuwwCoynUtV|5q!{zTQ7nq z+FTCpt@#=+>b->$g^ld5)1tlsM^*j)GfdO29ZFNPD6q+dwF0LE(yD?i;A}twuK~Zq zO2Xdw;fkBR6S;U+weQR}ty`TV3iICef&pTD+6T$Tye?UlriI}Ch8TVwFnu|DkW289 zh7zvKdTmODQ)dKWh3#%lHEGTkFXZ!-q!-q_;&wr~`J~GuV3SQeYZ2S=-k>1psYdlr zzuiUDMlx_X7Rr{Em*{T+iHKRs?lfjPtKFz9js9GxggLRSo9u8PTHm43z9cCH6ox#{ zQaCOe^EKQHqAAIO62@q|m(JPrcQ7d_ea46Rj^nkb$vf`b``_WpV~K-rYM>qIP$BZZ zhWyHDHjG`FiFMzyJiP6vKTDv+C(#l(5RA=vj&RetINLYg?%1BO2H&-bstF1Pyz9UB zIGsE9VNFlYI|T55TbI+dZ{?8 zg!#xH8q?_>QpBmN{NZ0Wp#xBAVSE3cOyKm-7p7Hgo3wH_uD9J(!1JD3K$O%~0E{FN znmJdkLkt8DJ*q`HhLid^BqZQF5zE;7>Sdp`T-b799~LhLBq0hZD11CrROgbGYInDm z7DVgkX#dVOEDxk2tbG*d$>7KiBz}|NI^osKZ?bt3G^lCtCW8t-P-7H3m5>WqgtA#npgD?I(lWF5kY|U?Fdl!C8c)$t&t>#1jblog zNML-Cyq1|D!~$AGJ!Lv0d84N2CH!8ib$SS>Y!hetYC5p!L3=-Ue1ebqlel#)Y8Bp` z``YM)Z_^WBc8lpVA=-8)yFD-uDd0R;PDXMVt+syb)!BZLtJX)-u)q)dV;|ykRFS;m zW3OnF^EWw6tW3p5$?_C+-YKG16Wo4a&ISrOG{i0FS)2UHAF0@}`ejKpWZQth>-99q z!Y1B0VCykF4DNVGoK2JZ1*EU7%On)vP_7iTn@d*uDWg(imv*7yTUu!|_}GGGNW_*+2f!=u6s*i^0LU67NRXtx=1*oUK*?%oo@sds6ltl12| z2N|?U0}-({WO?GCLdr7PTUpvSVtpM4>Si9L<=^*a?OycT6Zr;yMAXUn__LuEi?Af2 zFDygB8#~d3c|7KO*gh~CsYrNS`G<7turvNN zJ24uTa{P@*G0~$ngrNSiBYT;{0Q#p}?|>gE8)%Ltj^T$%$mmmYXK%w@YWZloXY#_u zPg*!P_AC>MzH4-@3?Vu-9V5mOuK97tX|-de-WxCn>n34LcIuCBo+{&W?XzY$km=WC0yYP& zPj=1)-b|F|CL~^3{Spe=0c`yylXfBNQg6wq_YGZ>ypLBieN58%Lvh}KRSP)11QZ$3 z7BvJRI$U;3zhnz)LzM89-iJeiS$SoXXe zmR@}OkiGk<^rH6@A9wqau?pQsL8M(xlW^Lb@AqdB4B6XOkHr zwZ{!g$pq0j7rqw9IT_94{SrxV7%k!z@#TV8v~!;K z&eYThXiUU=Ki|aF?n0{kDc2fWRedtUtQC=kOufLEwg$upp=Ii&Fd+x@_XKB&r$R)oNsC_~UFa39@CP>>6?=`6(g71-de!ZGZ*xPKXt4@FoC=}SEPDvxCY#E0M z20dlT%?Fz$)o$I6m$;yS-V^)=i9SH^_Qi~%HnKjKH}w|V^-gtIMQy!vnMZdn*B)=7 zHn0%FfpdQpIAJNS3R59t2DFx z=Uyf7VuHXj=0}%`sWJ{B+)3}A%yHK88^msdXzGr)4ueE}SDZuw;VkuxX99zGeJ7V# zqxZWF0%iIl~h{_sS6oa;ps>V>z>FG2?t`=k(}!JA+nS~VSYp&)1GnACaMkrJ=56{^w5>6JMRJzL6W=_*tc^(=)?dhrbi zYo{tUZip5qMQDG&kb{)lP+pr)RR{vTighcQeOp_(v46aGc=(uf2sV*M@rA*EYsGvoxo3`LxqNZ_4vgsV_sz zC6y9OVh`76JH3RRwQtQ2QSY0Z=m9#U-5K$HSKksEUz#zSb+cefT;)1=R~_!|Q$~@x-;^aPOBI zWhtZ;WnohK>~G?$Z0s(OQO%F0O)B~xZXP~{@obrOkDbM`8qHDanfi?82K>r46}24v z1gWar{LXvG$wSED5snbQ#yq1KcLkWaxLN7NC$40UA+tonnQ%UzM=st<(oY!*>APsM z5B*s(4PiaTTIJfddoJT1z*dT~T3`!x7bT6twKey9`Wn5mMPkl1C2Z3^#Lz*mZW``| zXCbj(A#57$%b6Msx<;PS!a2=+;|%QCsSRY_hwXWM4c>L0)enh$8PC{m=ZzNskB8Jk zs8A@REWw4ER%$Kh`kTQ+bk``^$jEG@Z#P#BgZfvO%A~YcYX&(f;Pr~HzTd5C^Vti^ z>fFZhAmR9e;E>MRG5_@J!2aMj%mf!R`8aCzM?(8NbTz1;HQNi}1KAo`Fklm)RUUC^ z$F24^QoO4U+Tu^{h=5SUpM&+7peq?^?B{Ro;^ z4oks)v%|g&6f4$?kfmwn>Xni~FlbX}Y?#hGEZit9VYiOM0(;-oW<-iV$JKh(vw?7V z4iJtWa!7xgdvn;qt^zG9@|bSvH2DGFg3kForE5Sr9qINYuzgUjV%Q*$u?F^8EJqF> zB^{Vc)v^Dc)_bSNwR5b_BEcp!P?_wMz#ZzUggu}jq;cJ$X43svv1;N-(9v?3;p*Ue zWLbH<8!?yebs#0BnhLN?|9JG1Yd<9C{i$n&N~R|PgTVXisEHP|9oi@P^J63*$ANy& zQpNYkRGzBzX%mHy=vjk>R2chfm#RBken{I8F|=D8b+KNcXtIOuLeg^W{^b5ZgFDTN zt4u;}6Yp8#ZHKigb#Gk2V7}CQ0H{@wI%pi*rz00GK1lPx%%*#AO)6y*-`KK_qQ@w) z-{>5{Qx^1(2V#7pqz1z+tqdVh{gwx&+mlZ|(Qh!3d#oELF6ED~m-OPRtAJ4cofyw= zPBo+9wXGX_ffXk1LN@eDrMDn$3?{J?XJmt50V2w0bprN>jF0E%%apEFn_m{pq zSRWt+sPn{a*z;&2%+=Se!q;3eY9~WP=xm-7KV8t(FHYqbi|SQCV-FspMEfW4N548| zc_Q3`Y)aZ?oS&I-1w9Ryy7i6Ih>1~f@^?LXyKO;YCNpoc^E|&b2z^L4=Dl`=1YP|~ zY^t7XQNVuo2v$u$<{w5uQJ4J3TL~04cj`sl%+RxvcEcQWVu)+dL|J04nhuv11>LL0 zpHe;#>T@k%nXj6;z^B42(3GN~HLv%;%I2-DsV_+hqIX~1%O>X1H%=_~^7=aJ50;6W z-t!s2?pI^D{U7!$Tgt1dK||rWE?2A!tkPh&Hfi}ZKyDX5?=?zdY&S-cQwKMMU>w#v z4+l$yAh6n<-4#(0PwWG$Cp)WuWYK_qXjeL_R_T~n0qaRDF#oJt-l!PCanS@*9`J~5x`5XCm$aj^|T`)1&tI2EnG?Dr$9d?GCRL@ zdp#y|L9D`a;A*E}lYZ9mAmIx6s4|9<<5{?BFX4*cn~NUue3YV1a=WxYpS}s-k~TM$ zWTPm_yL97rrn&AD3BpSuiqtPDh1plI%z4BNf>CSa?nvjK0P`MR*N!X^)R=0i#_&D! zW*W3vC`>JP6RWPjc5bUk0!V{REvUD+BxA>ii*bAW$c2n$2h-0k3Ch?b)9 z6S#>J0Yuf=*y-dO85<*WH~~b{($vWU%n5}G5J05imgW{tU@i_QKLO;St+lO#s-2Mu z&|4htVrc@GaxiiyfIP5ta#VslJhZj3vqiuWPGI1-l9tv^a0f6%(%Q%gE)F-bH3jbc z2#zoZZp|gY!2yGTPYHB;v($9^*P?YHSD@SdgJVw{`2`C1pb4-e-QW&0{=na zKM4E>f&U=z9|Zn`z@H&ddF@<1(OYKCD}Q4DL;q&~|97@IFCWj}o940V`c@bvLT~K* z%1-}W&9Q2Zi#7w>RrDX~Y^{twL^vOV7=2q1x3Y4GA}3AesA=vJ#3jt)&D?qZc_4Wt z`Kn$})`mIkV|Q}$a=Y8cL9hO(qx&9atCH_-@W<(0Pwb$GY2X+9R09f`u=1ad{scTL zW4i~12cP3pFF(KD#^A@=;FyFuyd-03;Fm4A0PmgXd&xP<%EjJ*8;fjsQJb~GX+xmH z#sB4!eM=2{C;4z<3@O35*t$&8g1)Oeld@9d9;$u02sQLD?`k+(##6T|P6+sbdCmQc z4(4q?T*f}{>nOusjv(33krsKFKD+$keC3FI8MS5@52L@Li+L1Pz+AwWBa@dc7c7@P zKH}s^dl;owUdPaKK83)dta$PKn)ZS{9ryj~rXmX2&>Or_!Jq4=Y_c|t)eSp$8zW>T z^*_!2RNC74Fy{mQeX?xupJ{}|2*Mr8F zI#j7+Q|xapp)XL6eBMi-Uq43q+goOwCq`fCymN)8rK_ZA{UV!GLP=xWR@Xzk_Y-Ao zfvZ2OaU`DTQ8Wuny!xP0m@Hz)eSWG#M&r8Rd2I`u+R~6umlUi*$jNNyo}44B&B!0e zt4w+t_Mk~_Da&RTSk;sjGvjnrVOT-gU9 zm^wMG^BuYFtZ!3l&POfs#-Ig8l4j`-6;N9R64I2k!U}C&bf*2XUlw9n($p^GR29#y z?poC*$mx^vS*mAswR^<6wRn~^dGaKV*k0A6j#;4KSo?OTrxeVu84)(vOuz4f8&X%X6gj445Ky)6NP0)^f8}(p zzcKo6M_1{@t5tzJ+B!R!z#YMW2dv~^YoZEw0_#GQ#3jKHHMpA-7;@tNJ~;h+c={=$ zPXLi{bCObZ0{qxtU8T6ezg%e*0*DkR2N-C;H4H{@=1%|mi53+6OWJ^+XmN6afp&V$ z4dy)Q`s?SCwt$}u{8o||%=`QQl6+vk(<^>3|LK(gSm4(c4EQ5}$iq!7jUL##fpve4 z$|JxF=7(|t^gRUb1-RXgU{0Rj-Bg_%oK2jRj2uqBz(D(#yd#D{*aDoR%XPwWKxpPy7cln;TZ6ezCIHO+OQe7=Pmlw1pYS%A z`{d?e?i0Ge+$U2A=Kg&b?vuOxJ!e8sZV1Gh{(&>O{t|WQuaW_`pE>Kj#tN zKh-b1e~An4{{sEO%LNA7zlY1eD?7ZWhR8q44&Ptn@{7Ozhjj`sU=saXtKEOEcmI$b z-V-MLXW0RA6=&Ab*`TM^5$`X>_CJgT9|ss{{|1lzA7a6G!g&9T1(5Lh3oQ74DYO4+ zETCY%6L$WW_Vd4I5%T@%y36@@X7fKW2H*dJg_n;X47C6IjKTk>ij?#3?Bjm|ga7}L zCjB+(rzy)5AB&$0477g+;J`tJ~4EGkKgw5iRq#O<~bPve6mQX04Cy@P@b-cXYL#Sub=%Fq5NZ9 zz$*AXF7Jua06x)YD&P}Q20ng|crtze-57t$>wk>F37Dt92l?$=f=_5t(f^x|$^VN> zPl>c(H{#&5w?=Staq+o21AzQCg&|tnI$&OIc0N7<9>CAx(<^f~c5{?#}}wp`Zy2n$OWM_0sO_2J>OYVT~{b>z+!>zoO07#)-ql*2B)4+w>p%@bR#7aQ$X$PJVVSetwQKs4Z>b z4qR@=JbX`}0Mvgz4iw784&~wJ0CemL)&ka0E^{M$BS3inp$9O^sqjEK1OVZI{+fo9 z9-J0@_Hb*PCmt@mu0Wr^V;nyIKPdYxa3{0#cY^y1;eXIB4~?9RtZmJI=_7L>j>dm- zGXkI##1V)foX9y4^3t$`yTTom9N=bfApCS1Z~GlM`7i$h`dT{LSsS^F+nT6ZI$6WP zKzIOtV#1u-U;@9Eqf;V&SC0SzH7GAX;Qjq~QEYA=Zmz!%V=oC_QBxZz+aKO(6xSpibij1OKQaMoZ2HviywMIz3OSlMTP%&2(vq|neEkkfLW+q=c&5b* zQX*cZL}Y)aaboXBMow7A!{u7;V(%YIm{TI#!)8r_t#w2s-_v}77KQ(eL6%lH=y(6KlefeCo_ONCW2T_Es;5%cX zA63Cw31)Y`R>M{v(kC6`{J7b(@dXdo;phA5@Y2UDv)5r)UhxhSf2`oWS0TJ{&~5@l zP1~PSB+hGjbKQGnF=9WWGTBg~IYnv2@T2NA5Z2y-!s)?Bsh z$GU3+{J|x~+B!()YgsqFR*9T0SYL!NpCdwf_=Q*g)L|)lG(&tYY1LxUhrsaZVfn0l za@3oZ|Btx04vSlB^o7yl?pEB3>)@`%-QC^YtrRHk#kIJ5af%jqcXxO0uwOZQpMB2z z-S4lJs{P2S^eH%QCAq zNUMW-h%pzD6d!g5_btI+AZ;63S2xA&6`vuMNFwMNuJ_LZQVaWK_P5lr4=#(u^Zapy zTMnvOP42~YT>K43$0*oU?l zVFqT&;P04!D=$Qh$X0~|TN`88<#tv(cs~+`-#ZC#BeA3sZ1?s}mye`~R}55)*f7BU z+T(&pds&ckb1;w^ru-`-%!%ssR>Du^`bNqV5VR9+-`QByKZmBf@-e_`7Y)%0_x*HNihY|5?g`2g-E{WfQrn;FU@th%{w`zjiT4$7jqtJ4p z7X(k)Cv+QIG@*AF=$8l1tw|j86hN0G=mW4>9r>FH6(93-NE(NOhI5zc>5@fHf5mqO z@j!WRu;X_wK&x=lp5jbB#QQT?_AeRsGmaM%9?NGs`m-c{>-D{4997`Fpp_Ko<``$X z{}|zfKPvKlE0q#(XKo5bu>FjN;HI17X+{ub|C+cO-2~cgk$k?9R!T=+4b`5-LLgY70M*1=kFIG>6m30kH=sZ0bw1)V4mQ z??tto&#cYa)Tu%LYF?N3Z2$;Jyj}|7!|LHRAQU0u(7x@jD8D!d*T&RhNVY)qKKO99Kf4$nLP=@)@G|K(2}Iu9NG(C> zAxB@zSyoc7CHSFU(mnWpCXJ3=b8(?Yq7qNQBtKjdn-s&9;IDc0A=i{t;8T$rtu3+X zVowVcEd!Ofo_acvOty%Tn@#-l|3G3tM zVcvFk!il!~?u?TVf}xD9m9uLbV0>>JO0c+ZfLH$uDW$?!3=FR) zn;_R)wtygNa(j+8Cs7CS61OVP+eVyOqI)VM zJqG(f_^=5X`_PPHGIf&f`<`%KbTK$EQd({%eN9FTHj87^Gjy7L@DhJ)PYqr^H3mGK zG4HM|Y2JEC{7jYYuS6r=M^Hw?LB>Rt)PxA zZ>4;c_EK$sg7J8lky;G-IrOR4|G>G+b5{~M$|(3_d8`}3F&zXFdhfA`UWdxHGRwqA zPmLdN&cSVK-r^76uL&AXKI@{vEHp|tPixM!yE}NPm|k7NXpR+}g(44A=6`X2qg;?Q zyvz2}Gkh>j(*oFZO!^)cJKhegvZ>}Z2FP-!7kLAV!Oa3x#5EsBC%o5Sch)M>rs|b68!D-jJD=&+~)Ff z$_bT@V@cKdbey7igFD-myg`?5t%slBM$YGTl!M+c@Xn%S4%zExSX9t)e9PGskoN~a zCuCi@-@fS2cpEKa6Elk;#~HFf#KiP6CRVav{x^U&Zi}e`m}y&udneL zjJuV>M2?!9bgRdX9Ul6yBbIy_IoYt+oZjl{7K1qX>^xKVLiRX~!hF2nKBJad+OBA^ z=ssO@I>~Hm5PFs7t|0Xb5o_dm1UHuHTRpKe%_F+c7Ydjh8$E5mv!6$Lb#!Z*MvZgU z2qY6C(yZH{J8nabLpB9J4=*2_uoyDA{Zd6e=wVMOqqY=or-m=?@LnWRiySi`*uJuf z-{PNe4K}G7WD^uWP__+|U7JrK^>^zh%Ca$Iu2|O4auhJH)L1Tw17CT!HO!JoZ*VB2 zn54_(;40e{k4GS`D)*_>^U>)y4Mpw9LxDT4iCAqbHvGje0acIB%x6@*H0l`p)3)6z zFyKS0bu)Gi7`BVe)RkeF>;*Rhu6F>m?Az@J+)lz$j)im{NiGV%BJ<12 zwwsSkKUb#lj(yCA(ayTK4o%&chFje?YU4P=D{y-X#pefm3KiW?=GGWQTU8kiXK?+5 z*3LQmqGh2Xeg{1e(n)$0zW^jiNILl6jRZCA@n{gLln?^Y2mivy9BXtE{zrV7IraH;$Htc_eOANs!S= zMfE&>rAXBCrePTerYCe+FVpxI|R^*f1Q!7 z(!w79DcDxos$@M;q3vQuatjK#=z+Nf06D?W`Q^-M1%8}({*$Q0M&JYt^ygKhU*Ewd zT?8|h8DYZ$qFJI@k}bV$xqF-UWJ6&85MepBq*g0CU0%(Qo7l~<*&!HP%U;%J-OPkK zo`=Cbm$d9fGgGxOs;I1VMkj^mV!r2p={4pV=+6q(?>$I^Ar(=O zILT!Zp-g!ao8}c|GzmBeEQ^O4blQG!tkx!0^TZDudo6mK-TJ`M)P-PcAB4BO{@2Nk zH>mOW^R#O-^BnPjw=4%wgo<%l_r!{@VSKv)Ra~g_{UiIx^0$nJ7U2H(9Z-{;1IV^r z+SItJlBC(6aUn4W;f@utjU&zkYFObf7zbX&J>D8UU*W#Insof#?*aH50r~E&0D@8@ zM+GRU&2}2Lu385x{+f4eb9Jk>CI>Wd@FbOsOOgCR-Q@ z+L{3YEs#ZiKfKT%whcNCAa%mR&d$nCM90Depl4@fewX%vR2MxXfE{RrVB}zWr=&QU zfY|+gHz39}VJ7+m1izb1{soHPiNwDk^Y?B4vB!Uvo9K@V14QIP22LjL8~o43|9ARB zSW@JDt9Pglq&k6f%68(CA~FW{Kqrhb@IqKP1EU_m#Y!Gdz^fo>Yijq-!z!AXSvWa6 zdJs_w0&^xN)UXV4j>aaA7Pe+YRR7uyxKPQ(-rm~8=KXpCqaVPG$-9R|3jpLTIN6w) z0XjrX%mCJR_K1a^orN9fEnsD3qi1IaQuFLgj6iyZ@ehLmJ2NLefRP>OYhY()r)LGG zQh+icfQ_Dwne7j?kR3>VaIgT`5;h>4$jrnDG?1_Z*&R-HMj%)Iua!E$Yb&Dm$7%fQ zdj3h=_)n|?Gb_iRNd+DGVapyyXB@blvO2g_wt>E{zYJXnCA&Mc2X9~T!TJH&7Op618&2s@m4nHzM5t_h6Q)vvezCz z|K9%oMneCiGXA?>y;mq;EBMc~P}CNf5PGjP|E_Cv68~y~#sP8)Ari)Y8jSNEO4@pAH^k$HlHKfe@Xl{=iUUuYtO_Q}k8)6qiwg;+Td>Xvm_#3H zxHdYNlLw=-?l^7OSt9?ruP9|;U=Wmbo8=L=6`bEWw{kL9zWcV?mg>Rs#`ebKDF;m& zteAsJJT0%KR;g0d7KWS}GBFrB`t74_UNIK21+GxsbZF)dn;oZ~P6)CarI5Rfc=Qst zEq9^+18$0+lbl_X+ss){(Z+(uK2k*n_Ufla^3aFvy>b3}19wxFf)8T{-V31@1V?>o z{p~?92KdC~R?f!m8NXlZ345-zHazsvKg6AW9u0hj-QW8rJ7Vis#|t1NK640;%p%Cr zBAnw5P_~^dnzD;y1`pmv zQ%AoDMHgcSTNA5b9v)ELIskI570j(0($<6`hSn!ShKWLw8&Q%xFf~3g;V(>oSeH{RQVeN@o* zY4VhZ;z8!5i;=F{zmfq}kX$_h-v#1Fq4O}O5m-VeC|G@PCU9bB}tJM`GoWt#PRa@5(r-9!k&e2(CGW1 zQql<^CzRtzc{X47mL}NitF9*4!@iDZOf*27|JtgdGhWA_-?-Y(y8xls*)}PaN%j?W?7;KSE0fhY0ccx3n6VpnmQ~C@`>Q3Cp z1jlLCiM9fQ2f~t34GDY*EiL}ABB0gTlsU)?SG&@=!C1#Gv<6dJ81M_)y$Wp>`Z-Gc zCZlmbdc~X@mB|mD$?uw3u8v7=MEzQ1WK*duDyeSJ5U@e{= zr`ol271knUZcr!qhA}$a9p)T7?X+50)BqkKo(5l`b`&w#0>|Zc|8K}OvDmr&W%aY@ z-OYXu><-vF@q!oQONJe-eH|pFZC-zlid{0t*l+X){4gx^Vjl~*G<$QxdEmCjUWoy= zopY3v+S{9o)KnRGXX7eIeBILMJ#01Nw(UvLaz-jlr@23QC!Posj%l91$w?sP;SVTE z4ZN`%hpEt?n==d#kQbvH3X*>ZIg}?A8O8iUqO;!0Ymc}u&LLR%QHWN3btw2tI>ZED zqCsv9#Jyvl8FE_bWlmvrILIoI6vQ$)@)q?ggzKmTBu)K#vDUqpe5QygLC zQu10)X@{BO5c>dvl9vK4Fwe3v;!gJ&6kotEx_xZDe_y88h`|<|GjfcjsdL>;I-ppR zc0uMf)H_3)h^J`hJBZ9Oh#T!4(H-e2vzvx7T2zEpPsi#K3uB{LOPSB*N$BAni|TLkNyVZOngck@(uEy_^FZ&(_9L!IIg&dX-{hLZgs#MZKGvsV5+K~T^r@0FGJl5qJL2jG(lEMR0Ljk2kfa-YW zpbj@&nGhPn2enD-n7Y@nVd1%tag*e_P?lITYIF|)0#FN~$vCHH-4jsLwRt-9l4kwj z^OboIYcv_#GVQ9>R2Z=1fdd$Poq;+0Eb0?s1F-4v>WhJ2}v?mWM6J$aJupn~-$EjKr~!MZ2HZIJU1=o@sn zGB8rEpM9eE0JhbPdW2t6dx&;2h^j7x{OZ+*^)@#Bh`~d5ekil1J&R!Kr4SZuM7iV; ziVN1RdhA`00E0C|vw{irgT({5p2JawQwAgg&e_?EJ})5*sOVa^AkJjuOFpT9o5^h5 zlH|pL+ic$A#x2?3Xg`o-KG)NyQLgBc3por(7YJHh@Dsm6{xe%PB$InUi@6DmR-_mN-JM#QQl4J<5qEt_&qI^mu=k7v%!i4J7xbg6Z!)s72%G221wi> zG=f%wGoe66HXI=zQ#1@_x?)SZZ!=t$yeGJ(q^#oa@wo#UJo_Th2q)2-N)t@+koqSa zt4Njz{vom*1xvHGEeTy6gEg5%ueroZw-zzjmhJ_*VX&^W7H79{?M>y`J-HR~LdOL7B-4o75@F+CM6E8;pXZCN z7b1ko%yZ)IB?Q;7?y(#WUfbuGh}9FaC7WN4V@bu?H?i(Z2&5X9XlCYF#}s}rgKAOe z$NM)LpdEk8?3R3%47_iY9A2G)a}tO>VWJM^oz?p}Jalw&U(X%gfx!ZLTafyll)<08 zSm4ezemeK|M|FgMtzrX4-*Z?WlJ9*K+Xi$eC67cDs_0W2BxO%@jVuvq-AEOnOXYRm9?3Bn(hoM zEAYoS62}~;UWIrD6lo_b>26xyZLqfpZ*kqzm!+(0EK@FLWjT|or=Y4QfWYq&FqjB3 zO;Zs4d}5;fDQO$_=Q+q>ZBHw+;;OYhT?H7@O#}Snv^73>k){>u= zGvfz?6+TvAsgGLI8rgU>Q#cKkxLw_!Fv;1xsaa^vKMbT|L@zsT=y7Cyc^k?~(??A?8}MI_9-(w}|MVOrpat4a4~h-ao?VzHrNs=rR*d&X=-F-tl&$4j?5 z@-z23$e*%0beVyFvRPphEAk}d8zEFa@|3e#^R{G^sTKZFnqpo-Sefu;7s7TRNMSSp zj~p7IKAMMf?9I^kquJ<|;p!&<@Lv_ulC&9+FmCX zfsYU3>d}|Okn#O^p=u{Zx<14T!fS`^{e_~Ey*-SDuV(Gfpsp<>0$X^C-Y4A8wG%Fu z>Xd~K(AblRqed(c<^8VW)sDj()b76+%|M^>w1X6$5`>Ja?e9lxNj{;TwB9q`&G&)h zhl%b<#uhpa4DlnX>yqz=fSj@;Ih$kpA{X2;uPZ6hGZ9TI1uqoqo{D<-WxgQQS$CpxN%UBB6%MuiUv=o?Y|PlGB}f zPFnCv$9$cd)xbEdx?R;?vFJJSx-F-^MOs^6aj`Vtzg8Z0*H~~LHnXL}i`KLTKbPv5 zgX4n^CL*G~!L&&LL0qZlpyiqUnE7Ur(MV)WPm0wL)soCmd!esWx&PJLm+-407g!29 zl@C+0biO5=nZmCs1$)rZ7MBH=YdtitG6GML zb4H^|Q+}Nyt34=HS{%KS#EShwY(1uK4s+Fpy!lfS=F*k*#Mb9B5M{FEY}*nHSLwr) zY0_eWALYDslZ4ZCHsBj}_|@u%DAkJa$2HhYbqasy%QAZ$^3Dj0;#g?0aV07w+cF(8 zOKC355sNGnYy_ga@j%8mGi8T*FSoh}H|Spbd~Ub;ucn{R@eEg)PC&d!k5+E3SG zAAWtX8(@4hxN2zWSvtRaND2^hGD7D6_#!KNiu#FXM1wO6w+zZLFm3r}^q?`?M>bz# zhqLJx1}FJU?i13H^Twsfv%NFhosN12WtpqPExIgC_Qo|aeK97kfArHSnps$Lun0~U zj3dD9YJqY$RK(E(jF{OY(ENIwiZXc^IyoO1NkP$F%g~^j8?bQVL~+qc*r9ZA;iY03 zJ(e1Iw!uNk9l=|2-QvmnioZijm$rtQq6Y^U6oJL`jd;56hu$4qpRqdcIMeO1TJSRy zu#(yo`S6&Su$Vn**!U?EKTxo1z=A}z_N5?cyT4+PF7HF^s?rXPCGB#vQ~lJ2dA$cL zhYM>GXQU`wZ?h+YU;cu=lIGITlb49LW`J-d{)E{%mSpUTH5Hw!;^K)wD~7BxR|4D~ zfYav@Y{Gj$77~*h0rDCfxj@Uhm5c;c$LZm##al_qSFQ{mA5Yu(m4d$07+Pd91OSFq z?bG;cqE{&#Gws0B^VF{@%6g-R%h6H#5**6;EAoM!55b4F_<_Xa8{HKLUl$1o$aw)F zNki6N4xXmfGb`rojRV8Lw?r=~3a1PV*5eBa-y-pQZ0_;bzKyYQ;osQ&N(hE=2>h*Y%2O2R3mc0gIB*Dx z-%ixDrvfEl>44eg5<&eG*wqEd2u=Ue$ReFkSLC>-zo6OZrX;CBogY}{I(FW>+k@HI z&S^d{_F3{OPKc=Oy!N(Q|Ep!XDjqC3jgu0rwUe9o=_)~$(TWbNbhxm}s=3f{hxeE1 zo=g*wljsbgVkD}N`O%sQa;DfHUx#FNz%!e{il&Ov(@ALwet-QG!R(iv$^Wf%X!weI z_#T=F41h+Y1#X|Css6@L0G53nJ}I z#Ik^E2$ikb;B8zAsbe|)!F=-DL$aBi^4RYUB|sv8T0>(H=_SeU)vTSRDsDp{8QaB^ z{a^cm|GUJcu$5ORXZ)X*=0#Pq|scLo}_~BI@%&`N)s` z8SE;xk?60-o%7o5rL)qprC&=c z^>r2qdoZrbk=GxZyg$dr$JE=(6gxMq>i+!MYGXy$A$R7&$>Ui({GzVHJ!@Rg9yNn_ zQt@Mf7d<;eAe*T%qAySRi+G6s*|$CxCTUO1Lw$v$f(d_g((t>o6vQ&v1!)4gC+=1V-i=E7L&@_BbVpGc zFSJ@T)Pht;;cOzGQx+}@O9c#SvTfUL>PTPiH#|e#*qx!TeNB6yO0R~P+LuQ|qX`YY zet8d%51SJWlc#OnH@8Bi-A8vb*o_qz<>#CPQL6Eh2h@&pnuO2|0Q4a(Rver~be$ww zHTeTeo0)wM>KhuB8g`ky(Y&{q8StC2crS}yYz@>%^KIzI{RQkxCVE-7gDKogUYpU- z)4-YjZ#%LB1xk(~)p;MKOWRm#(;tu=Q~2vTD;P*kJ=x(IB&DTmxHQC~CiQIS@u~^jEEL2n+`xy&EQYI|tBnTw5i1re0#Kmpi_f=x z#7pwS9fhi;2WymOa(f|AVkxD2viL7L8xw{XyJ1C}%2jVznL09b2~~@letIZ=+IXWS zS1wl##hY3)#UFo@QUims*E|F576|(VIn2-Vcs^ekHpcsKJ~Gmy9*x#WuA%qy%XxFErO>!88@7f@tP0$7!2hA>iGR*e@ul$PwDH?A9NHIly?UYr%>~ zKPq7~?Q*m}aY1=LwL(o^Ki08kAg;CASX&P#Rae`PCg#YCiWW1AyxqZQq+P{A#v-r< zgi9-+wG)W;5BA1g%#v>%B}ckxF6iYXOq8?FnL5fOU-M`y8pxN?uTU4A?J%}Sl4Pqpg z7oBDF*9S+z&Ji(q^)Ro2VK7s6k^sQeHYBK%vn;!=w3@=mwO_EYe>=lVPe_|&E$I1l z5Wc+$8XB*Y=-a+ZkUx_0S2-f;9|FzxiM4DP10RwdQN$sA}?Dql3ub`4IDcnuw`6XZy_wa!rVCzh!Im&FAm}mEnE3#L{~Gn#uBZ z5B4C1`V$BP`lQ=>|2_=A=>)9prSY>N`5lDB6CrqLH;D*tJSttG|M4xT3~&5!zn`k@ zhOP;Gj(vQ}-X!;4I2Puvj{YuA0RCppe^(OzOCV|);0d5Zrld^FD_W@el*@4G@S6$!F z0=P_v2pAC4VrOIp9sro$1X}O^_zzT3S%6OG_i1*Z$jHL@UZdEVfhP)_0stc@?@QT% zvGw;Y7>QWffZ=}t2N5eUCjGvK4QN#71RjhHs6YazfkNl|VSz?$;OalrETHBK_@^Yv z#sM@f|6AmJKe2!6SpP}5Vqszbvu>pmH*6ckh%9>N9g=)N(w(A4OPtT687@jla{`6z zB|(Q_gj2JAW;GTgQbI0p=Q-*g>fmkuEouTttSnP$rD#+}IWk6JQ3hnJm&qhR7uJ1O z3$X(@vw!7Xrk{crHhN?#q4~8b*TMbU)*w9tSMD6S?@TseYIlTvEo}Da*6@S@Uf=Xr zUW+NLXVyV|t=$U9Co$_Ks*cJ%lcQ9x-Z{enm}wXlQgO)m6SAh!@5CiddTgb-&n2Xc zhiksF(?62=GkW$Z34b?J9cIT7l+=;Akktz(#tkW8n0%C7xI&lHxFUZ}d)58@ky^IO zJ--)UB`(&3td^)YUs#E?57)6%E-B{08$r-XZf9rCuv#j>RLot>T@d(@1&(FiWn&An zDMaN(Qxz+{PZHDM_&Kx#m$tY20Q{_N)STsvls4oX2L@0wnugRxBYJ4j?b2z z#$Ga<#sGI$X6e`{2j_)khX;pzipLEqs26uRylX71*fxG=>V&bIHYB&|a?W*58$Gpb z*wIF>v_TV|YX{TUa|U+Z_c`XDP}5(f`(@_azh3l?NO?zfZUpR5~i49F>;`Cl>ChS3a0B7qKbL4+E8a=yPk0y7jia8GKo8 zS{k&N$ZLJ3UnE8J<5qcl89sd~#6EO4V6Pug?oCp>fM78ch19501Pzx?O(uy)=42VS zcK!S*`h~5QgAYV9r1Rre?&M1;>S#^B z!DU;@R-d<$vCg_w>wI{Iq#8Ml+z02dFDybU=mj2{xh&4#*yRxdE8tpi_Eo8f~awwEnxC^vto zYztH0jJp<6gcpQx9=0eElXI$-u*T=2U~uHDIE66a%2QsfLPf)huoJ1&+0D5T)FUT* zV@YP#dGVYKRPpg9Yp-mvp!v~PFhFxBN%QCW#EBNJ*{w7#b@;b`ze&~{mY# zH67AK`=5|az}e#7J{}<7j1x6MO?HUk1+;-s2P|w?l>5vrw)a0W?#`NnCvjK9z9G18 z;48wX0kqF@;kz#3>4dpS7sUKYT)o5=0|*kau&MPclu{16-~=!+_vEv<%1{@|#K~}a zJuJqk)#s#9iu8YeC7=VbL-fYI{LJ1i!hSbHb{aEfelF)Qrkq`CuA^7smUJ{+v@mmx zf%*9@(9SmG*_-{!qcdyUu6sxT-7R^KGbO8<>vZ<=J3fCSLcSeBS#=;=q0E{xx_M&B z%fryB+p1?oNAr%E8|&&Ln9@(~w+}J0UzBFHJ%9VHFF=%u?~ zbdT9pv@!a!d%K!@98ZXAY;NA5v;&-Po<&MLj%GP}e?TBUL2%;s2BrMgFwM$WTbMey zOQH6OXujW_#)~KHS!{gaIKHyk4%-bLgH0YLs8e63Lk~7`%OJsq4nYoMgECMqo-vK@ zGo;%&o@$tmX>Ba8qM2A8H()qJR1?LGK%{dGGi$?`sctEecd#%kHkrQi1itKuPv^BQ zC%?F&Z271Gozo{HQ<$l8<~n;-QQe64j+1Uyp5G9LC`sltA2rvu*MYDfx^%Eim1S(A zzMeJ>6XiGq^$2hod;6h{KeF`7bkE_*$xV?xfB$#ufU(r zjQf6ytb^<3&mD#pW$T^UbJs1Oz(H2qGzD=a5q8*LD7%!Z7407G6bq`X+e{IhnG=LN zyYBK{%x}r1($XzvdpOZH&K=f8MnxUSj?&A>W)3}0>Qk!H2-9u!S<|mYt;VjT*9&EA ziGNFNHEXASfsek03biWDg^JeWS#FthtJ2D#hjrM?nR&H$UN*<)z+U{Aneu$N5u2yO zMv$00xv6og@xAy?J@LZG18=C_b-TR$8sv%uxH=`HRit5N%6d z#q)QAnRbD3V!pBQA^t7GoGrL7x&Bs{8Y2`abOL^D_%vl@pFTNqx?ju^dR(M8IC@Ej z|6Hcn{Icm___5VR+KbJ|f+8d?<_CdD$IRL*DV!X_tACZ8yT#(I8i>9=nPY8*>EdF2O7ZB28k7R5L2RyDfKaJs*|N)K zPaCKmJznIQksjPkB4$bYuJ%v=9iZhKH*mNtNy6`cw~5SEq!8>If3ad6VuMI?+!X1Q&_yF zJ|tSihVudoj!p$Z(Zp@u`jTC22;R0(5*oz8{Xe2EhZv$iITyNAi;+kShKIKpRLnEh2r|;uxYk7oCrD{C&rEX@&eLNkp zKsos(`aZjtGGDHrVUzF`?-h;Kh}2qm)2!xM+BHl~(mRsBt7B|!xJrn$c7%EO)4xaF zgbg(K`uy#rQ4wo1uYOE)xLwZvNI?q_y|NDTN!sQU+_9$EZ^zjq#DObQv7eD!ZDN%K`vkVEB=tp zx%?+eYUW*szdy=#2fpN5?=E_!o4{@mF;G zudWaN>EL7nLg;^^r9VHH|FuL!e-!yI@c4f#*#C2Y{0HI%g30%Sal8XkHVz#i+y#cR z*?{mF*eQq>>pLC>0#P7r1op=D4;%}0Apfxk5ZST^ply~F*tY=- zClFWzp{EubGsi!HCp*i#Dfi#k@=u29{|F&C|I$^YPV9j}>P(x;0aJJBtpXVp(#+YyjRNqqpYx|O}r}P;UA8Xt=hClK~E>eXJdpn^T zbe6K0t!LL=yCtqVq9&PiEmubL|6th~N&7(b1ijMNis33}`SCo!#7;J6Y8SS((uvU7 zul5#-lJ%qGY(us^d_IeKHMWNfL6OKW$}s0tfe|QZLR5d#BOfAuZW}Yiu|->d^jk2^X14W<1xdq)NW5%jPN!o}Jd1oJAx* zY9kq{!*H5^aHXT>uOIF?hN7Z1S@%9T8(VL^%Z*jrznf!}TE3&pM~dMspN@^Pw`^X) zt#ilH{Jrh{3AFvWy8gS?y)XQWY4(4sr~j8g@*fT4uSk;VJy!l_Cv?<^}5 zGmyyoPZfa!@J?L(sXu=&7-yrtL~|8hneqZV;96A4F*>|R&VFI7 z3%eB*J)OI>^}o|Ow_S3x-`bvfQjR8_hCd(iLc(ADY5v3Y4LRpo5@gB6{$d+N1IriW zFNYh%_0ED#M#nF#50GwH+N|z6Mb6WJ=Yz z-BG|-c3jmjRjmqNta%ol^wOEsg0#|D{@ z8V6Px>o|Vz7Inl97=#ISAdLh`tH!eI8wh3T=x zXlSzb;R6Anx~&>10!4R4oyVVTd@k_XKPU**pq55nj2KzlKPhK~NecQEo~NC9;G4+0 z4Ez}fN(x|_l;;A!q|Zja6d5g6UE~Y&G>AC!_6&e=JUmk@Y0W86TXgu|bpMikQ7m#B zKSKpJS&~|Y-&78T3ucUDoDVVIP|$Vz!zt7RM4H&uzN6C*ob2v0(%D^zOj2`f8NsF8 zW{5?3=G5oD(dS3*%8qjNH9#r13&=TJjtkl8m%DEySEouxP%$1JV;7pnx*BV>z;0vFmU9Z&NLMkssO1bv`>$fx7h1*Cq>o&fiVw zHkWK4vq$wOF`K0GA5PAd_*^fZ#K6K_!boFql4=ve93enCVIq)-{LO%7pm<7(f8>}r zp7Hl|c3gt7)5IP%q5@(-UmG5`;Cn6zhfXDXUouZq5{cP<8Ok z_pmDS=$}7nk19q(5I7B<>^q(UcP$vBBm2$MLWMa3C3nAIJb&HNrUZ00M2fD?~DE30@L_k}Qzw<(!g zWa5bgs&iJ)dL-^ldvSn#4XX5AVoW`Vdh8m1$tDEJ3ac z>D?rdaJ4kJrYgmRBcfcUT9+X0u-=UIj2`~|Nnd4PO8h^k_!0Rtz>^*lNn`8c60_yt zcdo*3aS=uMf5ldB;v5$uje$_iwjGelE`>UL>WUu34#6Mig!d66a$5Hg%i;Nu3SJ37 zM3)gz4Tvt%^@TkNyf??JNz&j)h;YXcP@vut@48oDl)c2Er1>Suw-wANYfJ>7>~s{w z41nj%BEcyJD`uSBA@` z%|1@5xhC=gzMqRr|0ruV1gCrrT4ocyW$2#lUz8yJ4DAzdd!#jlCYcfmpfIA}2`>(o z4CT*VrO#Tis7nr-yddn8t9E1ho(1Lc1*GTA3UyQ8ps?{^xcLiT$y6?XJ}PTL!tW6H z+*#H>*ld%fr?}}%(hOR4K9~otYa-9kovduVTqFnjZ|gYTq`n{Dl9Xdy91%Pcog9DS zJftrl<&r2w?^o?}O|0Z%iP(K*?<3#zbV$Dca_@RkyV=-hCk=dy^C0n{OB)t~!&*3d-&+AH8 zDd{b2RM+Gub0NOc>EN#Q=x%f@615za9Ic)5YDJs)L-r-g4%(0%ZAa%bMdMTEL9e53LX!LE zRc{C1;~Z6#D-^=_RLgsW+53A_5^r5{I2=%Jl|ITsyl~BV+1=hvJyvXc?c+GZZhw=7 z5PGdsZ?z5)b@funp)=-4J!Y>>y@lj)?;r}J8UbA$>)`*k0m_ZiXNl{F4+pChK=W{$P^%U$8+`gwt3;BmC;PzKE5&q z_$eLMSSowENN?>O6k8H0e85$O%^M0bps*qmIkYBD;3LQY{Za9Kz7XIBCU)te$^JlrdmR;!zL-Nv-{N??C$rKdreWeXdo9lm{kIzC;OVf0o_1u0Z` zJ=f_V${;1T7N)S}OI3SS(QiEZ!)n%6u$zZINEwPT<_u7RW$kUq6lz`}uQD#HDxNPd zmK`i0Ee4SJ+5m?Wye-0CK`c-0kTu;TsR|dUVn{sa0!Y3YjqSS12UR7knclBZ%BJO! zl}^R@_a!TXN>p?LGR+m*xUdE?n*v7Lz2@%K%MFSc_~(&hNzMnneeMizg_x>VHB9@(CH|&QjYR{N7bwCu znqRoe!-HoqR+148o=dcD(m?%OTTinje2TNIXc?p zOOc(%N_Yo7?SFd2GFpMc#ebnZCB!|#c4ki=YFGp z#(kq{_O3Fza#V*@UfU6H!Wr?JY6#A!h(kqJdaa5che~EwKrB*{WX0_I%t+T;P!4C{ z6|pjQT?DPLURA0hnby@NxoPf+%Ky% ziV`2A-)uSo|A)A9j*g^lw0)e3C!E-r*!IM>ZQI7gwrv{|XJXs7ZRhs9?>XoD4)3{t z-L1(W}K2amwQu$nf8P{Sc)tAar!PgZ172}J$mnfFvH^tLkMgpQ-{|BbYm($0Aw|J|E zM|Fsm-FbXd5zvnxx8z?N(7~wh;VM|r`KDlMvq0e{K6W1wq6Z-OrVhS;Nz2MsfDyzV zyU{WHIhR}~!g-G5J*~&UUgAesLhy`A1MIL61krpJJxd|h0tG#WpJ>{wij*Khwp3U{ z!)>6rC@DDR9@y(&yMx3b)3*yF-UoiIdnu~RbArJ*Qrl5eF*D_0Yb#t8il?c;gT!DSbNymQBvV9_k34bd1)?{i$e#EOm+LG@joyTP zDe5cz1L71}>72~S;4|x>agE-W(`QyTqb$)1*^re zgYag#bV%DPaNqnK?;mhQQbSK5J{X;mKJXgPDz;x$y(@WBr#T_d0+`od@ru-BV3xuh zK+{3L_kUJ)^EMWE-#0ml+EJr3@{{sYcHX+c4SK+DGSfXz)fO>l_tRhEwQ(Wwbjr>v zd(!gs^X8DJxF6LKAxs=KzMC7om6g^qLbcp^hPm653UN>6Lkw(RkeL)cuND_y=bEhz z`oNJM1uqTefdo*_v_tfolc95zuJ}^AdOM=T131VaCUa2W^MiWKqcl&d<)Eyugh>;y zyg+Px8-)2%rFCX79VD}z)5QgG+OdKfrzD?FjF{dsEpf zPw7FcfvQmpLMp@iTw5Ws)x}!)kiI-KD+mS%UB)?CN%Z_i07|Hi?=$}5vyN%8V6~By zcPs5%oa?y5#CHZM03X-xkl2OkYe)2YMJAN8D?A*N+c-O+0}=C~jC#zxTb~o@*r^ks zD%ybq1LdtNLe=*p_Zy{f6*}g7UrqVxS#0B~2TPYu8wXp1yvN?$lsWYVr~SJ;{x8?w zpz_F+$%yfapUuuq%W(%!?A%ctXvX4(v z9wg%&f|Ixf5IH|5_cZZ7M`uLw7yRUF4uF+;D8{agFe#hiqE~>=QaIFA5F5GcUxq4Y zWiGYS(HkD)95#-lUbJm+Kbf3wcu5amo;Ukf%1^?M&Yt2gcOUt0%kc@tTKXe^dbaQE zl2sugzW8n0u&-Q-GhtX--2bLYCr7;R_Y4Y3d>9~63H8bwSv6#EVrr0f?ZQbdOWLO# zP!b{mE^l11lI64@LcJHj_2SPK*HKh5E_XhH`)y6&PqN>gpHK-O66L78#`BIz-!5K- zu6yc;d2rr9_egG@>Rf!Ekzw7c|FM!@Y;u?<5LJrMCez2`0pgQgovK=b3AO!AUWY$U zjDIx0M&rst5^T*=Re&^pcDUsgwT!ElO$K0!4M~5NH7gk~t$<6_jR($m;7`8vown9% zh<2c0F9ix>Y_Qdflm&8K!;u+ZqZ&?>php`;ojEn>WOh*{oQ$>2P|Tuiv44m_Sz(i| zO2El0xpK=KRH8^sYHf$eN;}g2**sG?t?cUM{-)HqDZ6i14$~`T^kiX1W2#CE%E9Cf zujqTbyF>PEGt=7zs(Rb4GuQ{K{F>EN2l8$nisfrX$XDt_WSr^&vggTdyj#|-a!%1N z{zVRRL07{aPo;aw$25cxTGtAmV7y)~U`$hxX*Uk?@QAGvQ^t++EjV!jy~nPMC^Mon z8lCtowBtf^gaT6K&8?FT`>ClxxBXsZyRA*-mUa}26UJ6d!VW!EFrv&NTs|9VLYmR7K!rlKN1}*%Adc8^acH1 z*jL!zZ(890*^uLOGx5?CcVwtyLT1*;R7TyIZnJV9ik98-)3f`t-JXJUrK8oyZBjc1 zU9jzGweQCxVQsWC*cNte@vW`Js*%=(wm~huJW`kj6^^%zhnSt>hVAp)g$z@P12Q|s zrlW`9ib~94^_WPhYAcW{y{xuA)l;tW;1;ALe;2+YSt3q6nQm{|etdBfrMf2t6q=0l zL8xNqLR_uts-lTW@!LVV^-IG<(d6x6R|EMe!_s}|GW-0^iqS31tHLijTYcTEOm#S| zXZS_jJWfY5_C}nhr3?H|H3sG*yb@c4AdhGvti_#5D01cGIb@01--5Qr+6q%DIo2)u z<~JizRk<`e!SP-`epeWEp%K16(}*nSJZr}sIe0HRyzQ+g*6~;%nIV({Hx%5sc_uxs z+?q?NST5v64fNd%$`hw6K%P}&0<#!^#vy!C*lQxrG3T2rho*JKO0fh_$H2_}4M^>* zxoUiV=}m7ht$xMwh4UB|b=|Br5b3Dg5B=5lTMo#twSWI&&9l;lBu5#+>|Vf5tBQ5- zy!CzTn6s_irSV*Q-fefjwa*d!bpj&xM@oHO!b71m*W6Di4t}k#B^iP^A*y-ES)oBm zMNu=uV)7++rQ(*DkFF7)w627h*U}CCw{N~Dz?N6jyL(O#MlhJbK-&=t@gk%hD|HN& z8-|1fC6XVVh&g)GcfqH zqWzhKp^ZTmRvSvI`&*r|>SH;@Ph+4rOd6j4pOCb>2`9e4yAEnZ^{K|5%Mn7@l`+ZYDo1uGG+nb#p{=`f5`~Kfj1>gA&go*FlZn zHkimH4I?W!xl-8TdIha-(PGtwm4A5ATS~{0FiY%r^fIF|6 z)ZF82k$PnfuNBwr8=R)TkA%x?pjxwTM}=0o7U$)tTa^}(HZ`uKJzarn?qiyfFSWTZ zzrCrOYhP7r+!8K9kt}B=`FUDo5mrm8DIbz&oW+ID%~SXF*a>8ml$4E+ckxF^6s65L zg59F?l`VxqF-SXQSjI6>$x*nwQPoT-vnm>Am73ekEJA{=SM|;^8#u=ou40tYnm@d@ zVQ0hiS%H`FE7=uFS+H0%R&mIPGz;UXm{*c|sg)}4mKE!`13w_zC#`gHV;Co{bl2z{ z2D5{T4L6{=jri8)&Cafxz^ysRD1|G|(TtOyhwZdNpT3~tytSlJjEn-ArbeNgRbY?X zR%6h^Pdn|0&gF(MGi;}tn_7n@%7ad;=_|Aia&}+)kbtlhfn&+bfqZ<;@$+J*5ae*= z7ihm)b8tAV10f+p+P5e;b=V{m{=o1m5w5I)JGPxY&^Uu(9upHINHj<3!9G>a5b*or zH-W}R`B6s9Dk3Z>n3f+yLzSI*oJ5W)*f(sCvhy6MHS?xvs<1ceUUaGYTZyB2y+Sqx z#~SC8sQXRW%s@8Y!l6ZRY4CIEYsqxU`#7m32t$C+&n@DsoSfn|Z-J#rISWJX&&d6B z>$UgDORCL}mi1pi5)+xbpNT$?g~>;c_hP6AdSKrNL-CeKn&k=el>~fuw6qSSlP|?vyy@aPaXws? zDoP`?FsopQ`~I*R-1+ko2FGrJ?cTVa|CExcF=({+eu3vjh^G@q1h|aT3n`mpzFqV^ zka66~6T!(@DJ?@OU*RESct#IekrnLZ)S`T?(CD|mhFS!cMX59RUdG&|wdme{a~brS zvWDA|nla6MsTV|(PR;J?6nIr~)`q$1@=lM)W%RAuoEY-G72`+FG%_H$)5@Nlb5(BA}R zi*u%DoyaL|YYZ}Tf3EIfHo9KWt4D|?xDi#>>Ny={WebM+q{L^5Ykr$0Q&X%`KGUQ!A&tCV_5h$ zS?5G%%0w09o8^q9qQOpGv3k9)3wVKsB1VtympXD>Yl$G7@wRq0eX5>zPi=K~Pj%x5 z7J{pG0F4SxCX39Ft;ONA!8v0aFKv7QN^(h14(!SE`x=N$E^skm?GZegUP4uZIZjzQ zWuZkXl9-N#Y8OdZ%c-4987bn4(-c-~I`62m|2dUd9;rlHJt-$MaN@R&Fabp)u|BV%C&$Td_hP!KEHyx+k2#b$ zOFFrzf^x^qVa|gK9&bu+hf??~yCUQ*!7>c{`|nP4nJuw|s>#uk%kh$LCUXduiw+)5 zCz&AF98p}Y^E@7*4}OYmq|d+?13qN2;&WfFVPp-0A7GxUN#q@c${^lo9(D(Fjfs@< zgXH9t9jKH9d@!&;@kmG}6eG!>Ik9tXLnxK<1LZnkRrt#w^exsVUVbSs2TqX*zs7{Y zYC^q%Ma&eKGpRAG2h^HS_JH+1@&hDiHX~d-ue`s76^&|A zmgxm9{vLCSfuWgI?$X>Fu#!y{m^xJ558#$xX?diVle9A!y8AUdS|+E$AFNQ)3>= z%V77VHoc`lL~hDxI~{(523*_O4}%80&TlK)0^aRmic>7UykKwOqWp6uK(}9ZlTA^s z55-*JnJlBSKy>QHKMs4+rIr)^ET1h%+J5f~VOyNdC(-~iG`g@newugXqj)Flr>H5s zel~lE)xnXC&fjbQ$NRg>L|vOIKZ#el!-?g)Lzz9f1ev11a1Y5}A01{RMV5appBbSq zUWOvVS1sV;IqrObMe_j6B*1F{NKG@+v-*eY;-5mu{$UCDuSpfb|KP>} zgs?eT>e>H4*>M;E5qJL&b{zWu$&T~4ap0d!>GS}K;@_ME|Cr6+j-r3e34p!)mEQHw z>0tlu-2TlQ@&5~1VFp-k=>8Zt=M zwg3PNVEU|ph7V={m%|LGzGPwrSdp0jSdaiodyIho06-8Qz6K*JU`PJOTv!0D0DzFg zzi#YIEdLefLjTva{x_ft1LHrNOtj?x0$ti~QF)4jzZl>nKoJxQiekUWn(+diku)ks z7-fL^=+vi^%2NZUt!G}J(b&yrVC8d%Z>|$-Tv<*Dv!@i7$9KE`GDRlwC#Qag+t!H6 zjNIX~PG0U^O3@1o^RIm(GBmkFYho`g4KDuf?Esy@@~!E)Y{hrAypfmA|2jg%Xcz^S z|G2Qedi@KP@Jf>$LG^nbT!u*hApmpfgKCM5_g{8K(lnv@iprG{hw8*;1Sb4GYSMQC z`Ml0vF(JTw_#+_%KEPful`mnD66p;)rh6pELxJt>n7fLXAXKHGfovU9&b~-DkUy4C z{5akYwrG!xBr(IXkT?m6n>Vg4;w!idRB9gt7;oMp812e=ZS=Z#VpVppX9;j!`-JKG zz8CP#iDn8n4R&y6lm^zXPh{shN((PXh z0Bv8lFJht~#K1^#V_24;0|RIv5x==Cuj#&alj4I)YwFGrJMB81Tg6)rOw8497@C;0 zt{xkvFATG#N}o04~ueon@IAqg&(0FsO+XweuNsV7&o3kI@tfGdfl{%mwv^_8vU{Yn9yFS&~@_px@-86ClB;WPA0&!y{N+v%rmc$d$t?eF$lQff0^ zl+kHLWM_nQ(_xkva}x~{+S=$$)fAGX>rfKBT1gtov9F_+OwI|aC{`_5*HR9%s9ApX z@eH00KfjmyQYV0kQfG1UCp5%rxjOrQKPE)v^59E2gOs!Ph23Ho4f?gnM_#7_dowGw zbhD=z@#E#j)iSK?OJoVB%0pN=9n?O7FJw4d@Qw>eGTCYIYXgUXG6Z1T3B;zQtfN$FUXp|-tfroe@t?napT#mCLZHf*(y3*!SzyJyu)m9Jvof$yPZ zpsLC5qM?u?_2EpR9D(lyu0aza4CRDsScnj6&i%eI#}|Fl3g76f+B{%m7)Qr(JWRTJ z*d1Kzm!Mgoh_kMj%KP zl?Tf}61p0)TFDiZ&Hs!oXe@-#g(C(_jv-tU1EAtN@qh4yk1zmRr&$g*tIhd=ZVl2q zLt{_2irLb;3B$TXM>L9ZJ&vCWcmQ+Hn%+_z2?Qzk9DYb?;xKT)nnOP7_E|TO4clGG z;gbz&Tujugu^K>b-0p!1lieSxY7)r)qTp5IU*N>FGB z`xLfbfLMvAvcxC><=K*e!UQIYY^WHTpGWBn9}nM*D6gn*1aMyLzUhUycrppSS{wui z2mJ&%(td?#Y$0@=;yGz)=}0K4UD$S9)AzVvu&9Qxc^vS5w(`J(yU7HXlJ*fvfKF_@ zkLF$rlr<|7dk4|7H)%QjRFN9~EGwZR+5NErBF*BpP@9O$*t;%_>NdQ4E_NQqCV7M4n~sO2C8hH zj%^qz-Z=ysS>G8PF(GEYH;j^M=y99H_Lnga{2175($C!Z2CK+v*#vTs%pM%6oXwMt zXWN=4j`^*3X0YqDV!6eHxT%_;n!T^eDKgQTwih_Jz)53NmZXieLqknY?O|k3)39Jl@V90QR4f{?~$war@qh`LXtA|_G<4!Z( z@lv55S$Xss?y|=X7@%-s4(^_o>XH{TW@h16QFksLFeD{Xe;NjA z9-bJ&v`L{)Zr&XfbFBsAX8Lm?!wWAxrd^$>M3lElA`g*Qw}}2)wQ<}-w*PzoRHbTi z0|&ZdMU&e6Nr4Oq%gdMX61C$DFK3<4@XbTI3Ucyx-p{+UiUl^f zPG=&NC7nVqr&`-EkIw>KNOxP+pmv0y9QS&L_keje-loj_ZK+JFkYOfI(*8Y|He+Oi z{9J8yvw1;l<$7$VSLSl#mlDs^%7zZhjqEBPJNL|O;`9mMo#JHeHwZVjeoQQbSY#RI zfdp6e;Hp$&m5CU^up=vfIF58HVG{Zhi@jKPll=FW78|L`Pg4<(U+b+uwQk{?RW7SW z61;!h7Ca(?byY1NRM7Q+CSI@JA@}iv6Cei(qO*azFgvq#^q2?+w!}=!U`C5%oJ(nN z*RPHUxGkJ3^-Fd3w5C3!U6;wbxU@7f6xR%^tnPov&Bo9&dyIzVE@`$l){I#X)jT`9 zW4&~+7m0NY9}Q94E=#uXf21RHEn+OBsg!(=_))NQboJtt6mqH z0eAOH%jk_GM&0H z(#FC5$eE0#@`r9r2M<&GN!41X)x50vHJDWSv}I&fS#C-0V#zp;VO6ZzG2wZM&CzMn zMlnv+*22w&`!PJFcBr;YR5MzWABb~Rj+L8>pQ6!g-}$Y4a*rvu>@V{g3|<0 zX?(2V95UIt8&)i-7EC-~yU-Y%Q)^3_w0>8tR57?1YFx_pfV}i*!63z^{=UGVOST5& z7*UH-!X_T}d~s4XLUy3vW<$OsX{0$uqr@gJ89MBw!(YJDo9u>Qs3oV8P5(jAHH|>| z)wc<|d1K1*_Tt*nv8Cs5vJFCEo~TqKjKgK7J;uZCImU5Ru4npzaKp1A=2DwF9m!b% z+@O;_Q~jG|)54?2wt;= zR?2+At_ahtwcI3+-A`0;-g%FaddGch?#g9X1c%1AF37R|sx_jgae}U#W_ISL?6>#j z!oqsmE^lY6b1LSUxzXf8&Y4S}Hv<~Dap#V@0T4$uTFJeIL~~1fJUW|Dp>5 z5T*gpVg5x-_=oQF55?(k1?um-7oq>4qA3_znf*U!zAyti#{c&+8bIRtAE-7!2n=BF z|J|kUf5Qp=2dwSyY5zN}?Z2Pgzg^D%|I*Ru0p*npfAUuTLflvZG8I6Y`qTNq3K(Gi z(-zMNkeL9*7yxDMkH7@zJO>2-14J@F)IaNAT^ImG3m_%|)&)Rpe;Tp@H4rQSEsUKR zK(_q}abf(=ZF>{BT>LcYJ5WeUktzpZkTcygcFGLa}O)spI1+`J1+fn zBJC)@cp%h2DkMW+bOmWQOx`>~f(GZK{b#)jAU6INC;R^-SpD~B#s6Bd`ingM4~o^F zgW;b~TYxnBZ#(v{iWLK(+8EFv^FJLdtc=Y6F3acK6UtMuzs|)en^7W(ApUDz41q%s z0jMDo2$Y0xilp+?5H8)eKXHuc5*QTz_tBiZuX4Xiz8|5w*csJ@AZv!~gb{uZ!4g+h zybH^jL?u3amzn%J?C|D&lKkj3DN?5JSyfdvE8&!#X3Y?Qj_3q7H0L3z?d^8~wGJxC z1+l^}ARL8Wf40(g8cNJKazS7)Z~(?@qbk+M_5Bf-o|NQ1D*#kLuR2j;a378mx5fJ9 zQ84rpIdGH1NO?J9`%&`^<|JH}S8v4MZKNaV@k0tFEU)vZj$Of|qou@jL9&KM1PAdnr6${`kAh*i*KoaR zO>LHP!q$e#!4eG^t&NOjrQ10{bp*E}WnL5O{)~Y4-X>(V?d+Jt+;}=B>Fqv6RED)7 z>wFvXpC3XHN8<@UcBfW%YvyyQV(}Z>7L0*_H&EzKqzZgX=KRL#VM&!kyQ|f|uhc5|rhi~%_SQ|CJWFPjh zf>~^%?lI_P%R+9`a^L4RfQg4l))1cs9hNw$ap&Q(%i89A`fcEKyy*gfAnWooR*ts&%~TRa!W4DC)q&x2hy*YK*klAH-s zS;35FkHJ(U*}KsLEUEM;7a`6cQ8BE^XH|nn+=0MC6{5o?phGa5@%>#&03orY{N_=c z#JCTlEgazsaUZmxo5n9{F5sNNG98rC z>u=CLREV=||hh(k{J@8SWl58a0T-uHaNWeXVdxC9 zp&N-Fg{>7GEX2ow*|#*IbDI}dsTtpBW~B!|_n0qouTPB*yeg#RqJoVhVM1B@ZHTlI zU$s<2_pZti9As|F0L&SDqFGea$x&GeudcySbfn2q6%MyNz_0`zW(UuTm+2ZfYxeQ` zm*fBE7e6w)YH~xv@pU`F?PfkTyix{! znH?%0yV#plf45}=v|1~UCekl2qJ>k*NqL14-!EX zVf*yIiTCl{N&tT4e!YuwxSvYRlYA~Zm9qDKBH4!7DVUaH9G@i`%|A#-6VkRRi_%1W z%pq4T7QL#cBqpAl<7c6}8*P8{QtGD8iJ5gk7nO`7+Q$VuJk*FQ3Sh-!mmB?l z>bh{vDALQkm@+9j2Zn}=SXpW9-rCfC7KUUM$_XD5CN6QlSzX<`F;ABxG>6stc$uAq zi8@a%Z!;BhriHV6QrSGN+O*$EV)ji$I6%>@I-AGJ$*|*mlT1Fv*fF2d$?G#oC$b8a&5U+SiloYfEqMCax}Xw5|yk;2(9)6#7lx zEbB1E?nfJkavHLG5^|4udL<7?byp3x8f2Z0FkNsXbF&gnruQb+i1$JD_f58XcE$s# z8va@S$wBtTtY)EpESgj_20A90=$?9OpM$ z3RZ<{wTEo$1D;+_ladvan0w)irQ`B(RNA&02GeRx{5iSa~YB~avW>~`X=}*2jL@0}T zT+cyAbW!pgi|iRm^BqGZyxUIS(%uYTLiC8 zc3tcq_@2059!XkqbSt`9HGj_2*v%p7OYKS<^H=8jV>kE22RcpR$BTTyecB(dT84)%veAwMMaoa??XKiSF+5G z%T4c085S2-@$NSZrbWuF<5vo~i*pdWB)N=Iyk(SWRIe7SR(ME0=3Nx<%-Kf9 zM%aAVf2Q^^W-}?=jvU;NH;&(*5M;m@)D}}2_Dfl#Oyn4`1=IFrp7WpGc2J>oo{k}@ zky>--FA=k3YW+s*iC?UZJmaT-AX~1#n(;UT8?f9#qd(AY$D7)9AtN<*qK_nC!xxHS)>5~Wg+Xg9p#<77pt$N-XM8YF$bWR z(bFbgpVVhXMxqHvV_c@}p4GJM`Fj&O#xXu&%c5)S*iwja3^quG{5VYo{>Q{Tk>GH znff{gR25>pd2vKNx{|C+IN%j z!#afSUkEP>OIzV#LAuqaWdgqbA4ZwT8wdKN;fU6Fl2?mJ>}>+AZHo^oLmYmnBdp?FbN% zZ`29W@mDQf`G%uQ#}v3K6o(&Cs7fj(XvYN{m zRvTQ&mmJ1|Y^B`!th98?EOqSIk8C(utD-DJ+dt!2^)PiL)U+~@sRd__>@=ZL79Mua zBBPwqQ9v~*k1RHy|82g%HDPIid0343z&6{!f+OHLPT%xlUlOB#x#%=QN+X!LvfQuG6oau>-N4c(*X5A4R^7;7R# z+pBeP{N%P><3-e0k=oy+gn#eiDxFbMGO<@BX_8MMA<)j7V@@tOVwTVUnp|k$(l#HI zuKGsSBaNG%zfU%XJx||d9}_I}j#ozMc^_zS7MMTqjq-WE(0daNt&!sSWLD$kEw0$W zx)x>d9Vt3qkeX#b0L`FM7W*U?`6~Zgdh416oxTb*oB}l0!Avd>6;#vm$CiNheZfP* zkhj+uujC}Y$?46O^1gB}Ol1_<)KEWOG@s@~x9=E^lvCah`s9+-YvDDc;)Frv^N5isGZJZKu0{OWj6 z&jFu#Hro;)O+-DghlZNn=Fvx~7AHB!CnO)uArj# z%zDPWfF`a`xi+o7O`_J71FRR~ukM!&q1TClyWHt&j z4SB1x7Ulr1mPh{3NztSvYCnUHU5}t#MO#5%G6L5A=q=4%D%?%#{qd>7h;?zJjXBVkN*4dn-Mo=<85#K9ZL^Z-v! z9S^woDL95_4^Q9J!vYdk((0=}V?V7b^4kx`44se=@%tMWbDxV)oc(Tb0}*Z_r$R~b z_|^r|yIS|cl$8iGWm;bOVz$ahfEnR+2z0^Qs2+j)k_em&NfR3IW1PSWf*EhiZ;RiL zzTCQJ3^^DTSD9O^zh6sPm%wqMSZ=r*j|N6v7CG!ImgNBdnkj^OciWyU2z}za2ya-Q zMhSgz+_-Ks-x60`DUE`2vaTX9S}@$8Pn_NYTdfh5nK?6Tf-ft&QEbs%!CaAC;Z!G^ zZ>t*j7rrpvz@9T9QCS?r#PSM0Vhl5{pV;r|gHm9!L1+O%)rc+cZP5(Az?n%KHX!3);AbF+NbH-u`R>?!u>eeDOh>{Qp#w#$ z_4gvi&?PT%S6>l%KC#j#=xUiiy39CzvN5nW$?#};0B{OXrg)G$(3)Jp9&{$OWR6+s zUAP`N(?2p&;Z)f&s(6*}@TtH$TpC`GrL={$;EZKHYD9_vTkDZw}!N#iI*E&V2_uSY1DQ{weu+Mq51y9ur z&+#RxmXEV0(m5v<#}pqn1w0GP8Y~;AT$j6|O@GS*EC^VkTWw2h%V-N(w*!3wimrJ1 zgTNXQRN@-JJwSPfGp503uF)>NJbYQ-IW1V+f{KbND>6i7_ZcWGtmhh^a1H&!sHl=R z&HH6qkbjx~&A2nDRhMAl<(9dT*QM5d8K*JIq+&U9=^TaDV6oP3PZw%vwp2XfHMYNG z-)p!BPasR(0wZ{^#~ep&!K&it!<_QzWK#YDEtNL>b;>@*sYjTKapQtZuA61KQ?^m! z{XI%GVwwq#c93N{p(Ga7@dBAM^z44glB$JPnUO}N1eHJqBUN5rkBXfcs(2OMsp+8W zscb{CNvfrjQto)=0@Y~Y0&KPt?|EwF!UnqkEE%bO4L5b3f=9cl?HLelxg!b20#+Ct z5$ro$X%O+xab0Fd`aTT8NJQcK+Mo1u=$1^F_rl9Vk%kd--oQsFn}^fkv>3-m*ZU|0 z>FlA^%^}qlw#Ivoh;AI>f$g@E@RWB<(z!juVTZx=&a^NCWO(_9a zqgO*r-3EoZ0pTmf%j}Yuq-+T{@!C$&pUl@1=PFIhaV96fTg%hJ#$0MXGxXL5eH9)R z55p>ue6ad3m7+B|NK8O+UuM%2fqsQ>UZUUp!b!xF!ptcjam~{f$UQh-!Kx-)corkwToKs>o5 z6N*0N0)jfk4^Klom_+*tTM@K39Jojk@9LN)l*6G6lfx+KE;ZD~W@{`N z$}9?Bs~E&@yU*-SF^7LPn2yE&F$~TWvDPmmrTX86-~tl&RRzP2C^z;A(_mnZ;grZ%sBTN z(UyguNr;=%FF9sl(vpqYylOt>-ON5TxA9BoRT$K~w!~FR6wP|-A&ioh-RtVH>{Szg zbuFRz4OX5Kuas%k%WGL2?`br1;F)wd{wU$CGj@B}Np>wdua?{pb3kPhK6sGJA4wdS zBFrJCk3BeszOF(Lc^5B762RA(>i=DoTi`bem3J^U2yCHjPN-xzJVhx9t`! zTTl=vr#u*490v#|u#5tV5J-M0G983#m_9kCy-8Rgwn(NQnxEEpcyt-GdlPIgX2lYi zsi2?dlXHnEIXF+qPDEIAeyt!l-FT&(%YNJ?ST$tqzM&wQb6W3yaV3y+YPz)IU_~*= zOX+cbUcQ?O6!#!Sa?mxj_sU)Q-XO0Ecw0c?phXHg_q?V#-TZS1Y^u5t_mJ9rpuVXI z@MC#?C(V0#{N0wAuw%Kfx-?f<`?iKGW%|eqE+H8l@A`38}2KlSb|$z%LL0Ny+y)=ttv@0S6vby3^E8B zJYy+)Zl+od`5)##Q700o)!zTB0+h=$FWZ z$QDVX6g}-o5y&O5B}oA~kvBZ0Bdy?D4?dA=fA7%hPvPreMo}Za#Z{)roBzxN_sh2k zv>MD?9L5a77I7RzTPPW{8tqq#F=+A>_7*@R;1(YRYb}NTm2m)Eo%>w&&^8U;eF|2U zLpk5;$W0Bl!58jJc}%fI(W=fZINyNoN<{5v%zX8AT~NZ0b(UcZQypFt#xl=mhPm6x zk@^a)RhnD08M-}E8EA19u6xyt#QYKnw*amI`d4h(yv&hwE28VSN{A1Mt#wC6TjWaM z4FLmt<(+_q%g;GRF5KsF1C{o00LJi{@4+rTe!t-70!)wVeAGFp=#KsIx|?zpbBR^ZoU zB2QNDvbrCSg|;9YK%WRYz}`f+fZZ{k=sQ5(0<@JLr}+J(?pj;Z;isjy^xQ#R1-Inf zk)O!VLA-@+fO(6#Pc$4Qx4zx6TuHc#tP6b>b#zyQ;TC&!SDSUckY?sQ`jUZr3tWPB z6(ab4^5cPYAwO~B$ZqD~9T{vz-$7lGZArhR!h^`jAzv}!fP4^M!Q#m26dQ9uD;_K8 zdPsg=Mjvm!jT^jlecDQX?zrf`eCrB59`q(F^7%+l`B=saITq2-e_2zee;>N+yCWhj z!h4pI=!>(L$@XGoK61-qJRJSDMRn2;~{AieeBbg z^5Mc;{OM)za+x{1YT)i6iGV$;^Q!Z8R_yf?{4DBgK7Dty=iN$m>B_N8jGQe#p!1tS z)>KxOuOm0oolWPv=-)#zpP5q)YZ@LfkAo}_g#uk=rF1nc|-d9xqh-auZM z@|^D&BWM}x!j**zZhCrrUO7h#(p@qFUFNI|Rrdep%n<(D znZf^miu=x}sG4PM6+tor0!q$^$S@HYq9PzUNzS8!IhdoY6xA=LH6g(W5RfJV2T}k| zp&ceR&zX6l5C{kf0lwh>vm6f`0TM(C!ePKi*FOOofD{Ub0bIoYu`~||_}mXvY~h7L z;UEF90Fb5x1p}Ej0F5fpAAy7ko}nX#{QbfA%opH4m{k97wHNcB{^Iasry*?kvgCQNRY)uSB8o*L2BAUI zl5->Ovv3kc)Qk5^VYH@|Pg(D0I%e??JW9%$cs5y?_2Y+}lcfd8Yklk^Q{fK356*Sv zPGULzN4SP89)uTz2SC95%Zh(`)4zP7Ad!E9VR{k>+!eH%PI@s;yH*jR6k+~hlI&q7>{r7&?pz&-yUxx| zZmIUpf+tsQ;7)Ep^!wzs$d0Q?U!uz+L6!a3AJTdT$^HFV8d9c{Qu^nO1P zJK1wF-K?pb(pjr{R`*@{x*YxnhrGXnh5ViHfxnUy#r>~WUj9%P@ocCp+qAQe&7FMa zh;vG$ZQG=wkKD&B0blhRyj&qpR$#wY%5RTVV*A~rC0#ukb_mG%ej%(M-U(t*^ z8|_oVzM;hq5~}hzwXY?Y9Vx{dmwtnDnpSgPO9ryX!BhD!&wKc2+hFG^?+r=Z#%y@s z+&L)RdhV6m=h5gPg;-T~VO)Sr!QEAz0$kotO&j?eX0flF+<8wnkj7)Uyeu}8tExCq z?Vn1zhh@?klo@`nF0|8RL1aVKqVX~YE+?54Qw?{ORqF^}Y7Gy{2gmtQA>w+wG7G}k z!ybyI1sn6GeGME8X>p~b(!pJQeb{xAsDu5@e3%5(D>9T2ipL9$>SpGB$`}`-$)+_B zAo}CQQ^GhU)36b_L--!gu!s1;+z}10^W3v{-`yhVGwyc^94$GqOr*Nk%^2m3Z+Xmk z{*HQr#oc7lNVO=pC>PSJ(e_aAP)Hk0pBc*^DcWgs^4aA`%J1q&EQ<|$6e=Hu90aS4 zD$2K(OsfBwS?*vB`M%myrL__G~CFFR$?>cY-T8DdfADb z?LRd`@Uy1%<34R>^15a6ww1Cj$ZsQ^`;CQIIlD00L%PW!l zN-7LxU&8QX9EBkh8@XEg2%Goj&)cecWi>_oMYL3S*)RK5W!tD1sfcI1q}h4< z%;}5GZ_nF9GNlcY-L2A4lH%{(@b2o3r&kuftNYkUxOF$UCn-};V~THXxiM~QI?(AT zt<|Fg3OKeza^%~g&4uhv;Z^MuPZ5|m`S-i6&3dESU1GQvlon|@_^Mh7^?j529D9(< z?XKJHc$?Rgr|33Tj2^B@b$iUeY!-7yyrguI>~Qfo&OG5iF)hLMIJ!L|&G;ZhTq^m# z_*RAZx>|E=jQu_1IT~YC{t(#nUwD+1Ix+RM;LWBjw>7{BUy4KVS zXxM0;26r39%8KUg7kc@n4HOwY+DGeZAhu6#y2ercc%G&8HF5_6sWDU=~>7i?{RE#Xf)_KHYlQ;R_-{<%5PlrJmiD3ye)aP>yefFlyqDT5iL#slU5t~+-CQ_vMaoMQjDH6oTC|H6>Pos< zs=*DHH!ha=9U9Gf8;?49vN*cGSySs)nO{VdGZ6Krdu?v(d#(qrI;aJjZ&WK zlWPjHk6&Yohn|KMl;u6{k&=?VYgPC_asokK=1BRTu&DQmz~G$`h2ig|tk331kOd-H zI~Gb7a1u`M2nt19(}-W%wIlQCPr9tu^R{{hIgfN&Le#78XcFu*UuOt{Dd3_M4>*Mj z5LDlYY;7!fvU}QgMr(*&7OL?csIi(0I5)U90CmmvM$Lb+s6*6#dc9u#c5+laHj0h) zs&sWTk1JpnXBDc{^=EVGEL({esnWzmo8RGqVY?#}M5B6CL53zd)#^6O5)DI7r$fwu94Cvhk*?_+iZbrT4D-;uk42Swmm2BY z$mu)LCF<$=qBTSGJ(ansLtAL{qgan0?2pt~b&U@E8_4<<9g*dZ{qvleFG#Exj@>71 zqWG&2Os%@#b1d(>$w4=V2j5dX(t$;etaL0;yM-cSp562D-)ZyWu@YUUXbRg!VYs*ijs-(A{*V98+xZoB4N-9utjP?F8*+kNUX= z_DVd9V=g}-}@~tnf*SneS2euJ3^?n zuxde9T2h~vvaa{!gPDi`k4kk;D$7ay6+E?(TmOrzGv9}p7 zuqrj0MBW|>KyeClBSyMO7A#<`p=DoNms&@4e@x91qU}et6Z*%JRn=S!{IbX@;uq{4 zxyf*f!7LKnITVb!K1Fx|HZqKy;fmHmXnQHTs*(}({l|^l_k$20nwHjRuYV!iD!DG7 zfGPfL1&t>hTS{EZh!`C$7%GqU8qIvYLc4(4v0fk?o5s&D!{gU( zZj2bS$;|5EbGF1}`T`#9Kl^BKZ8zo$^SzOg9yRt3(~mY$#5zW?bqiI57?ll#hU#^CPKRmVqT zUoA}T(ygYqi(H@hT$B@RA|O|2Lj=y^rlj1ezy2}YpV5Skil344HM5Oo51s6CP`ENb zo4G>)K|uj)1P}Q0frN$MG=xN(OydIy;a~X5tf;~8C)Mu6jvhw(*TuWtc1*TZ8PW<0 z7ksrOctmg6*``epalEa`0-jEI~-GD zQ7^O)4h{_cAY|9MmcLz@!D3oj81qaJd(u^1kSL|Sh=qf`VfS!~o|TSzJWl_`=6cRS zYXRwRZ5-?zOE!T!s_(}}pNn~VT(RX#>eVm_%e*22U2klE$@OltKdbc)Zf% zOfqEnv3p|alueo{O`%6vCW`v1T6HYB9Is}Y+~$Zee0ObErDEYevW;vktbL+JgY1h) z_{5IOu%2KdNxOoWe1y30P6PMcfz~frgffHJ%R30)!-q#aR}bV&3y`0~qbG}sp7Lku z^}EWzdD&xI_EvZ@_UKr1+>3}~tPSp%S8_Yah2R;`)Wp> zTs!tR9Xejp`rVz#wylZ`(L9;Hd($(Twr`SY+7Uwg(SJXUir1XwUBibD3(2)=b}Fwp zc+={R2ib)6#Vf?_PObMb%<)r^On}Q5erH~`Wyo=NHnSk*%{&OH7`04OsG6N6imn4s zVI5lHbTGl>tUo0Ke#oXwlo;}uCvJ1+g$yx!8DeWuQ>I>c~_#}3}_2K8vi^S;>4`6 zD65s-bidBIZuxC#zNNp=`(;)0$HT6g2|ra6074x^0{5N6bPeTf=}y%o(hn}gN ztr3pMS{c(PVlw?^`>CYu?Z!9;U9HvqETUh;Z~o|@$}@^}UHs>c1~-7YZ; z+-&$7LH_(3B?fU%zo?|%wuzZoanu?XsTvr))ZF3cZAa~d1T%3YmnF{$UI@O+& ziwA5y-WD_<18rfm`ko~Dw1?4wfs6-seGe=}!=Cr=SGDa8y3p+iS0=FbKTOZ0A(LB; z(ddIhf0qBnLd$0~F%o&EXp%|1#H*ZJVUjZU4` z$cUG&d~uVWc*06u90^BXI!YbGF*DV4__pz=b#6}iok4g+P!{wT4)lPWmn{J+$V(bs z|K<1V&ihg3M~-@Gn>a>+9-Xr>H7+xgcQwSz!F^6YJ-_?5PH}{srbp<>&zTH= z8g;Cd&j#ZYo)G9zFq1?dGy-BV*X-O?tlfX~L8(8JEKDZ__o&O0SmZ7)BzH5bEyPfT z0=+cgWZGNcI!ojtCaoTkGk-xDsg>V zHH+GuM^}F9OtKiUhCO}N6yhWF15K((X2dn9w)Z7V9jE!CTN`OzqQ}7=ylI*w9XdLZ0=8ClyAS^=yh%Yh86-#Z zy=GjKzJJv}Sv7jJ9OAYYt6)|YX9Z7P^^$@A7+za#`O6D*WnvPw!zKDcY^hkj)u9Ob zKiy?%Yo|NPssb$BDQe#7eep z%VL(hDB|z#S-s1OX2hVgKaqLN_BYaGA*gwsK;vWfTl9y9D#Z~&gP7YB$iP8H_GE40 z>KgApF*o7&UUM2|B9?Y`DcMgf)zveW29_t*)lw)YM~PY;YBP(uy!x%alid;*&LCEy zP4APw#w|K3t{tdRn{5UY5e210q!+F*j8Rx)TQc7eVnbAKr12>Hb`a8)bl4t@rc zq;#lm$)U@v{Fq8uSm`f}`fSwgEYe2rtcfL9rq)vI{#VEowK?qKmtWh8;mUXe0{I{M zUbNoRLaCw-=qe3;{YyaJH~J+E-W7tLeA#%-fv|lVX<9etQChO}EM-SaGhjpE7#8&G z7q8W$den5Mr$&eNtN@xVaWYnt4CD zOpqVcsztgjBH1sBmaMe;Vql%SGH#Wuh;w-_YER`gnJ;hC)pOZJO@Gsf*WAl884Us&)KkVOypr_%m(x z(3@>pnb0&fxoeVf*Fu(>N{3TbSCG|I6X>gHVu9?Rj$A(MG}84|<-hz|mCz^efvouY zsWC4wl6!gUMV?gYNS)DLBl>S!hF#PZp~eU8pCKj-`Qxh5Ny3N?4i2n8nFuFu!T@co zzEDM;YE2`;1Z`oM^6Goy%>m(Wb@q9~sE3rY4#`|EO9P%a8KzDw<+X{a6!q<@{NOX| zS`S^ZMqEV^@DQ@rb#g2&^iqE5&3_cKam~A=EJ#U*{0_s<`M9dh?78sJ&5s{5z@grO}PO2p;?I zN{5{Sh0fg7%XB+$c@h@s3e|_0sueYh4GgpTsedPzgKt~kS8Au~1lMJ54r~4z&CLbn zV^(TxCI$^#kBOxC?zgv4US~S{Ak0pt?%EN0l4#!AD&+@hnbZbD6iszMBxeXby>u6UcQjdw%S9>p&sL za*f9c#fP@r7>`NqBApcbUAWPq6U6i8$y8IMD7Qh-CPyTXUvubX1~EKJLqSI*@drtr zpWZLTK1|LSw5t82@Q6C_Fl@G}E&Ve8$f_uB<$f~`B?H}|mU1`of!fAuRaT~g!UU!- z?`FX77s}m{=Fx+C91{!=ZF>>URTf{JL=afz-Y%TQnqe^M3pu*XGWp9#=E8}j51O*c zh{KOx2vKM+cUN$%B@OBwviw;o8NtWr))(6hZ&>ZpEj7?`;98`TgOgdHT3mK=Ds z-I-V`>W<@8?nu+g1eq?CZyZbaIy*Pso3UMB7WHU&I#bZ>jCOiK` zN>AhO&ZFpObep58dT5|x`eC$V(^Dstvhwt9#@XfXA8QOYYh&;@Fr?$l;id|Eu##JE zhs0P@SXkI|3|OuH!XsyjY#zRTCv2MHCq{Tpi<^gR;89$nTT=gMpXq^N0#dg1p~9b zW5xF}O9p-gYw%gVFrf{KC&@2`SDQW~z1drioy9%Urlm9N+)ao_8`XqPp2Xl3CWLf8 ztBfxfWtni|z~A$05Os+1L>pQLJ<5aA+S>9JG)((yDNya~33T3(-Q0rF;`kMjxf!i% z7}9*pYn0v1tv960e`hFdEAHtnw>+0NxGV=Bh5AS1-p=SOFaF8&lZ0Bew)la$!ibwB zCuuZzZV;dGVA%FLX0Nsm1U)Q#vYeblEK}jM!6y4MZ62nz9y}u0gdm`zt3lzqLTy_t z%xUP5-uh*7M1O^;i`dZ=3Rg;KB)(N+}L zh!8Co8`0>_(*3>BowGZu(Vew>%J)D!HpJ&ZC6>$w$7kE*@ z1Y4P4Tl}p`a1jAoJ(jJp`c5|rMM|*s7R*Pq6%M}Ui)8K&Xsl-L-fCQ-F--v{H46H= zD8<$^u8^C40y8uU`k2$Sg1SMdWGd4);4xnp>DVk^7r9t2Ul)nkHeVNoSnEcSJKdV7 za{MhnaDvas?e3;V5%z986yuGB%cwP)1u@hR5xNMx?4!feO^aG1H!TBOH;!|6-$7{- zqThgdd@u&F*v7k*rvBhhgdeqIr5f+vFs%iD!iOoxCiup&Ddd4a`kGUlMuTC#aV*`> zQJDlVjaW`pCjP)}1#j?9qXM;QIQT{5S3;O-EJ0%+O{R3LeWNR<$wkhG_-3$%p#}r&cUID!=h5Q3OXfGYaZ^i&?=F1@)1o$xH!LqxyYh zsW_!#pP~*O!4U&SmEK?Fd1RhVz!Q&($}x)nYrAuK^i2oI~oxYoEn1}gPI(}ro(cS1DxtoL84$yi(76E`Ea3} z+&fioH90lZO|-svQ#}vZe3Y!NsS&TPHmD{MA-@>SI;ti~M%}l-YQg*7R~A>}K-NVA zBa76~%z}5l+v8b@G?f`(FjvJ_)@oeyR(tYhvT8l)mm1Got0Tp)1=WEYk=hNpWP&kiNRDiW0_+BlS_=L$svtd#)l3Ocg-M^^exx0X z0+HE|)MM|1$m}pFT^{;FXiQ9(5XcgfKjT0aGpN6|;6M|@|8P;IJxO2FUZ(>~3gW34 z|7?Pc8LPNER}$Gp0s7>i(``Z?kovlq?ga!YV{l`@{BS1Af$f2ehG$n zCcMQ29CKeE&!J-;T2C%Q(4QiY7xNtSt3sQ;AtMwH$`OJ3%0pvn^~34!YxkS8#$0`9 zOq>oBF@JbTFTxG&KS$BU@s~Uw$P^@skwim~#{(>?`mT2V&u?zAOkgDK2)_3R$={4o z0kPo!t&^>b?vuI`)n3kO7@p=? z=McnI^5U!iJ`G#v-oJXx;7%-dg~^Moo?vP-dv4leoza=58fOyE_Vtr##dSPqhHAWE zFScn7yPNb^ieAMu$k$iSFb7|&517VX7x_lE`&w!GYVYeBW3q1~La%U2j}+dPcpDgV zIa9A(8uO4#OMWdzl6*zki>rQa8nP}>Od>*9?!{{ibG~YIh3@quT@&ja|6qWk8M(w# zd|3pa@zS36QN61jpZ2vOFT^xsQF->@w2d)w7VnIFQ%1Cne3fhmY6QiBa!@yOFmueV z=6J4^{gfog?~WCLF739`mk#E^{(F^!GD&OR46V(P64`@RflE5yW*?I6_aSQa+?@_O ztK7-<<*vC;?fz=iDnBIc;Egm&?evslk1XVfB4|-6sH*-}$iwg~D{lotwPMCgXE~f- z5|R61&T2Js^3jA+Mzvg(_))-pj_Sud78G%MRw4Pt$oT?2HgsOVs(johU8iRE!*K>=E((ewA4-&I8GC*Qp@ZFjVvx6^OqbtfXxlneI?IU7n{ z#n9Sj!4yy9^e9IOj`aHJKe5kYC9d4KuBJRu4{WuG9lTf z*TtO4s);5q+j@Vhhpclt<5ZIx;yi31U%w+rO!``@zH6Gp?mGP?J};X3Eo1R-*MweE zid@_E5;YcByhQqibj6tF@BM9nO`EUZaHbHs%y=#2we_@WF_qQjkXMSvY|b}DuJXUS z)_^np(vC@+Yz=q0Ubh%;97ofe-;PTgSMy5s)d8w$$5&d$mBe>1fAVTERwWe%UEONn zHD;_|=1juTZLs=6Z2CIR7%!GI^L0)tfx_jW)XQJJJB%r^amtKYV=uLO(}GFWap-R1 zNPFK=A?Un+>ozWj@r|1Ve|e))ug`nY8{>`uS@u`rj4v&cLGKAIUc1XolJ0dQl=v|G z(6hJumzGEF$pr3xibo^<0bek(#O5N11_BTt{~Hv|zvl*e_`e9W2evk7TPqa$pAa;F zGyDGk;>`r$P!PWWLI6OQ{T~DkApimZV^HWnA!z)9AVIhQ|5=V8ewZK#A_%Z0|0f6< z6bwS1Vyxf*unmBm0a!Eug@ZsqK&L7p%z|(v2>9y-7~0=-x_`p2PI+uD&>{UB7}}|6 z&cM(v7~o%6qyP7`K@bG6c3{PVU^qV#0NzPzF`vPh{lWS4pYTU8$XSe8_}>K5QhUD% z`39t#*{;3?$apB&sXekwneMHy{LLVZ>uCggK#>z&{6Yl%tWe~t2HL9BL1e!;&8%U= z(A*qFTcmkOyh+NOx<&uajAo+&aT4k^&8Mw-W3%VtCGV$2_P6^wM&fKq9YmTai6#rK z=571h*5(bN-4F{jcwd6wh`O?|)a-tD~F48gV%A0zSYLPx{ zShZTzT|?`zFl@cejCegObO`e!=`90rF7p49=!1O!j% zr~ViZ0*4DgPdW7ekbxmkLEzZ9AVUHu&9m)bV8IJAfV%zs+Mo~w@|1DxPaRMwk{=0} z^AFjnUEl!q)}Jyk6b6Bwp9>TK$^vX$XWI!tVHexMFZM;kVW-?}f9M4RQxOz6w>Bse zAp1Hym(%$PT(CXBs((rXc6K}@Lg1YJV8HfXkO77P7{$)?g+U?w=X8Jpncyh})t@>5 z8Iu3({D5{)$Z4H}v+bb3MR7p}6TB!xoZm}eJbwO*?F0dy{qs7I7j*z;K4%vg6qxnd z^#V2(1ia(?c)(OH=n#Nhkijp;5e(Qhfa&e*`~b@Xgm{0-PW8eO=VbuI_!NVB`usBn zVF)nt!a5L8!3#10C=#f*@Mqss9jBEO{*-}%ngypd49>{};TL28qWoMeoQ{VCYCHVd z7jP;t;96&707e@5cio87hW}g#91OWI7eJ}tIe!6kAOXs}v*W>`{P6Ss0*4A-@F6%H zu<6;ew=z(BDIAd=3@0DnF& zJN4(YF>^W|KkVFG5CCo9g>^t+fNP!60oaNk*phQHC~!WXw<&OJoZ_)hpMTv^K$^q9 zlL?%)Jup8g^%$Eb7%4CeF?b`(=dVav2fb%{2c(?tH5D$-u7^Q=!N(I zwi3v2I6D`>p)a%p&Y=tTLjZ3c=lddn=12" - } - }, - "node_modules/@ensdomains/ens": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", - "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", - "deprecated": "Please use @ensdomains/ens-contracts", - "dev": true, - "peer": true, - "dependencies": { - "bluebird": "^3.5.2", - "eth-ens-namehash": "^2.0.8", - "solc": "^0.4.20", - "testrpc": "0.0.1", - "web3-utils": "^1.0.0-beta.31" - } - }, - "node_modules/@ensdomains/ens/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "peer": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/@ensdomains/ens/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true, - "peer": true - }, - "node_modules/@ensdomains/ens/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "peer": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "peer": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@ensdomains/ens/node_modules/require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@ensdomains/ens/node_modules/solc": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", - "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", - "dev": true, - "peer": true, - "dependencies": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" - }, - "bin": { - "solcjs": "solcjs" - } - }, - "node_modules/@ensdomains/ens/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "peer": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "peer": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true, - "peer": true - }, - "node_modules/@ensdomains/ens/node_modules/yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", - "dev": true, - "peer": true, - "dependencies": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - } - }, - "node_modules/@ensdomains/ens/node_modules/yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", - "dev": true, - "peer": true, - "dependencies": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - } - }, - "node_modules/@ensdomains/resolver": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", - "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", - "deprecated": "Please use @ensdomains/ens-contracts", - "dev": true, - "peer": true - }, - "node_modules/@ethereum-waffle/chai": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-4.0.10.tgz", - "integrity": "sha512-X5RepE7Dn8KQLFO7HHAAe+KeGaX/by14hn90wePGBhzL54tq4Y8JscZFu+/LCwCl6TnkAAy5ebiMoqJ37sFtWw==", - "dev": true, - "dependencies": { - "@ethereum-waffle/provider": "4.0.5", - "debug": "^4.3.4", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/@ethereum-waffle/compiler": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-4.0.3.tgz", - "integrity": "sha512-5x5U52tSvEVJS6dpCeXXKvRKyf8GICDwiTwUvGD3/WD+DpvgvaoHOL82XqpTSUHgV3bBq6ma5/8gKUJUIAnJCw==", - "dev": true, - "dependencies": { - "@resolver-engine/imports": "^0.3.3", - "@resolver-engine/imports-fs": "^0.3.3", - "@typechain/ethers-v5": "^10.0.0", - "@types/mkdirp": "^0.5.2", - "@types/node-fetch": "^2.6.1", - "mkdirp": "^0.5.1", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*", - "solc": "*", - "typechain": "^8.0.0" - } - }, - "node_modules/@ethereum-waffle/compiler/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@ethereum-waffle/ens": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-4.0.3.tgz", - "integrity": "sha512-PVLcdnTbaTfCrfSOrvtlA9Fih73EeDvFS28JQnT5M5P4JMplqmchhcZB1yg/fCtx4cvgHlZXa0+rOCAk2Jk0Jw==", - "dev": true, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "@ensdomains/ens": "^0.4.4", - "@ensdomains/resolver": "^0.2.4", - "ethers": "*" - } - }, - "node_modules/@ethereum-waffle/mock-contract": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-4.0.4.tgz", - "integrity": "sha512-LwEj5SIuEe9/gnrXgtqIkWbk2g15imM/qcJcxpLyAkOj981tQxXmtV4XmQMZsdedEsZ/D/rbUAOtZbgwqgUwQA==", - "dev": true, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/@ethereum-waffle/provider": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-4.0.5.tgz", - "integrity": "sha512-40uzfyzcrPh+Gbdzv89JJTMBlZwzya1YLDyim8mVbEqYLP5VRYWoGp0JMyaizgV3hMoUFRqJKVmIUw4v7r3hYw==", - "dev": true, - "dependencies": { - "@ethereum-waffle/ens": "4.0.3", - "@ganache/ethereum-options": "0.1.4", - "debug": "^4.3.4", - "ganache": "7.4.3" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/@ethereumjs/block": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.3.tgz", - "integrity": "sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.6.5", - "@ethereumjs/tx": "^3.5.2", - "ethereumjs-util": "^7.1.5", - "merkle-patricia-tree": "^4.2.4" - } - }, - "node_modules/@ethereumjs/block/node_modules/@ethereumjs/common": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", - "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.5" - } - }, - "node_modules/@ethereumjs/block/node_modules/@ethereumjs/tx": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", - "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.6.4", - "ethereumjs-util": "^7.1.5" - } - }, - "node_modules/@ethereumjs/block/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@ethereumjs/block/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ethereumjs/blockchain": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz", - "integrity": "sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw==", - "dev": true, - "dependencies": { - "@ethereumjs/block": "^3.6.2", - "@ethereumjs/common": "^2.6.4", - "@ethereumjs/ethash": "^1.1.0", - "debug": "^4.3.3", - "ethereumjs-util": "^7.1.5", - "level-mem": "^5.0.1", - "lru-cache": "^5.1.1", - "semaphore-async-await": "^1.5.1" - } - }, - "node_modules/@ethereumjs/blockchain/node_modules/@ethereumjs/common": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", - "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.5" - } - }, - "node_modules/@ethereumjs/blockchain/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@ethereumjs/blockchain/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ethereumjs/common": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz", - "integrity": "sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.3" - } - }, - "node_modules/@ethereumjs/common/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@ethereumjs/common/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ethereumjs/ethash": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.1.0.tgz", - "integrity": "sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==", - "dev": true, - "dependencies": { - "@ethereumjs/block": "^3.5.0", - "@types/levelup": "^4.3.0", - "buffer-xor": "^2.0.1", - "ethereumjs-util": "^7.1.1", - "miller-rabin": "^4.0.0" - } - }, - "node_modules/@ethereumjs/ethash/node_modules/buffer-xor": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", - "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.1" - } - }, - "node_modules/@ethereumjs/ethash/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@ethereumjs/ethash/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ethereumjs/tx": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.4.0.tgz", - "integrity": "sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.6.0", - "ethereumjs-util": "^7.1.3" - } - }, - "node_modules/@ethereumjs/tx/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@ethereumjs/tx/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ethereumjs/vm": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.6.0.tgz", - "integrity": "sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ==", - "dev": true, - "dependencies": { - "@ethereumjs/block": "^3.6.0", - "@ethereumjs/blockchain": "^5.5.0", - "@ethereumjs/common": "^2.6.0", - "@ethereumjs/tx": "^3.4.0", - "async-eventemitter": "^0.2.4", - "core-js-pure": "^3.0.1", - "debug": "^2.2.0", - "ethereumjs-util": "^7.1.3", - "functional-red-black-tree": "^1.0.1", - "mcl-wasm": "^0.7.1", - "merkle-patricia-tree": "^4.2.2", - "rustbn.js": "~0.2.0" - } - }, - "node_modules/@ethereumjs/vm/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@ethereumjs/vm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@ethereumjs/vm/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ethereumjs/vm/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ganache/ethereum-address": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-address/-/ethereum-address-0.1.4.tgz", - "integrity": "sha512-sTkU0M9z2nZUzDeHRzzGlW724xhMLXo2LeX1hixbnjHWY1Zg1hkqORywVfl+g5uOO8ht8T0v+34IxNxAhmWlbw==", - "dev": true, - "dependencies": { - "@ganache/utils": "0.1.4" - } - }, - "node_modules/@ganache/ethereum-options": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-options/-/ethereum-options-0.1.4.tgz", - "integrity": "sha512-i4l46taoK2yC41FPkcoDlEVoqHS52wcbHPqJtYETRWqpOaoj9hAg/EJIHLb1t6Nhva2CdTO84bG+qlzlTxjAHw==", - "dev": true, - "dependencies": { - "@ganache/ethereum-address": "0.1.4", - "@ganache/ethereum-utils": "0.1.4", - "@ganache/options": "0.1.4", - "@ganache/utils": "0.1.4", - "bip39": "3.0.4", - "seedrandom": "3.0.5" - } - }, - "node_modules/@ganache/ethereum-utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-utils/-/ethereum-utils-0.1.4.tgz", - "integrity": "sha512-FKXF3zcdDrIoCqovJmHLKZLrJ43234Em2sde/3urUT/10gSgnwlpFmrv2LUMAmSbX3lgZhW/aSs8krGhDevDAg==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "2.6.0", - "@ethereumjs/tx": "3.4.0", - "@ethereumjs/vm": "5.6.0", - "@ganache/ethereum-address": "0.1.4", - "@ganache/rlp": "0.1.4", - "@ganache/utils": "0.1.4", - "emittery": "0.10.0", - "ethereumjs-abi": "0.6.8", - "ethereumjs-util": "7.1.3" - } - }, - "node_modules/@ganache/ethereum-utils/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@ganache/ethereum-utils/node_modules/ethereumjs-util": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz", - "integrity": "sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ganache/options": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/options/-/options-0.1.4.tgz", - "integrity": "sha512-zAe/craqNuPz512XQY33MOAG6Si1Xp0hCvfzkBfj2qkuPcbJCq6W/eQ5MB6SbXHrICsHrZOaelyqjuhSEmjXRw==", - "dev": true, - "dependencies": { - "@ganache/utils": "0.1.4", - "bip39": "3.0.4", - "seedrandom": "3.0.5" - } - }, - "node_modules/@ganache/rlp": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/rlp/-/rlp-0.1.4.tgz", - "integrity": "sha512-Do3D1H6JmhikB+6rHviGqkrNywou/liVeFiKIpOBLynIpvZhRCgn3SEDxyy/JovcaozTo/BynHumfs5R085MFQ==", - "dev": true, - "dependencies": { - "@ganache/utils": "0.1.4", - "rlp": "2.2.6" - } - }, - "node_modules/@ganache/rlp/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@ganache/rlp/node_modules/rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.1" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/@ganache/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-oatUueU3XuXbUbUlkyxeLLH3LzFZ4y5aSkNbx6tjSIhVTPeh+AuBKYt4eQ73FFcTB3nj/gZoslgAh5CN7O369w==", - "dev": true, - "dependencies": { - "emittery": "0.10.0", - "keccak": "3.0.1", - "seedrandom": "3.0.5" - }, - "optionalDependencies": { - "@trufflesuite/bigint-buffer": "1.1.9" - } - }, - "node_modules/@ganache/utils/node_modules/keccak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@metamask/eth-sig-util": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", - "dev": true, - "dependencies": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@morgan-stanley/ts-mocking-bird": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz", - "integrity": "sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.16", - "uuid": "^7.0.3" - }, - "peerDependencies": { - "jasmine": "2.x || 3.x || 4.x", - "jest": "26.x || 27.x || 28.x", - "typescript": ">=4.2" - }, - "peerDependenciesMeta": { - "jasmine": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/@morgan-stanley/ts-mocking-bird/node_modules/uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.2.2.tgz", - "integrity": "sha512-atjpt4gc6ZGZUPHBAQaUJsm1l/VCo7FmyQ780tMGO8QStjLdhz09dXynmhwVTy5YbRr0FOh/uX3QaEM0yIB2Zg==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-tx": "4.1.2", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.2.2.tgz", - "integrity": "sha512-6AIB2MoTEPZJLl6IRKcbd8mUmaBAQ/NMe3O7OsAOIiDjMNPPH5KaUQiLfbVlegT4wKIg/GOsFH7XlH2KDVoJNg==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "4.2.2", - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-ethash": "2.0.5", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.1.2.tgz", - "integrity": "sha512-JAEBpIua62dyObHM9KI2b4wHZcRQYYge9gxiygTWa3lNCr2zo+K0TbypDpgiNij5MCGNWP1eboNfNfx1a3vkvA==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-util": "8.0.6", - "crc-32": "^1.2.0" - } - }, - "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.5.tgz", - "integrity": "sha512-xlLdcICGgAYyYmnI3r1t0R5fKGBJNDQSOQxXNjVO99JmxJIdXR5MgPo5CSJO1RpyzKOgzi3uIFn8agv564dZEQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "4.2.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.3.2.tgz", - "integrity": "sha512-I00d4MwXuobyoqdPe/12dxUQxTYzX8OckSaWsMcWAfQhgVDvBx6ffPyP/w1aL0NW7MjyerySPcSVfDJAMHjilw==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "@types/async-eventemitter": "^0.2.1", - "async-eventemitter": "^0.2.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.3.tgz", - "integrity": "sha512-DZMzB/lqPK78T6MluyXqtlRmOMcsZbTTbbEyAjo0ncaff2mqu/k8a79PBcyvpgAhWD/R59Fjq/x3ro5Lof0AtA==", - "dev": true, - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.5.tgz", - "integrity": "sha512-CAhzpzTR5toh/qOJIZUUOnWekUXuRqkkzaGAQrVcF457VhtCmr+ddZjjK50KNZ524c1XP8cISguEVNqJ6ij1sA==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "functional-red-black-tree": "^1.0.1" - } - }, - "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.5.tgz", - "integrity": "sha512-+8sNZrXkzvA1NH5F4kz5RSYl1I6iaRz7mAZRsyxOm0IVY4UaP43Ofvfp/TwOalFunurQrYB5pRO40+8FBcxFMA==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "ethereum-cryptography": "0.1.3", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-tx": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.1.2.tgz", - "integrity": "sha512-emJBJZpmTdUa09cqxQqHaysbBI9Od353ZazeH7WgPb35miMgNY6mb7/3vBA98N5lUW/rgkiItjX0KZfIzihSoQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.6.tgz", - "integrity": "sha512-jOQfF44laa7xRfbfLXojdlcpkvxeHrE2Xu7tSeITsWFgoII163MzjOwFEzSNozHYieFysyoEMhCdP+NY5ikstw==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.4.2.tgz", - "integrity": "sha512-PRTyxZMP6kx+OdAzBhuH1LD2Yw+hrSpaytftvaK//thDy2OI07S0nrTdbrdk7b8ZVPAc9H9oTwFBl3/wJ3w15g==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "4.2.2", - "@nomicfoundation/ethereumjs-blockchain": "6.2.2", - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-evm": "1.3.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-statemanager": "1.0.5", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-tx": "4.1.2", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "@types/async-eventemitter": "^0.2.1", - "async-eventemitter": "^0.2.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "functional-red-black-tree": "^1.0.1", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/hardhat-foundry": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.0.0.tgz", - "integrity": "sha512-/2cmtIZPnsQj/SRIu9idbBan5j19RD35MECAGmZCcuXX4AO6Wn0nOnpUwpcvGomKW403h4+rXh8AHMWC4Vvw0Q==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "peerDependencies": { - "hardhat": "^2.12.6" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, - "engines": { - "node": ">= 12" - }, - "optionalDependencies": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomiclabs/hardhat-ethers": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", - "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", - "dev": true, - "peerDependencies": { - "ethers": "^5.0.0", - "hardhat": "^2.0.0" - } - }, - "node_modules/@resolver-engine/core": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz", - "integrity": "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "is-url": "^1.2.4", - "request": "^2.85.0" - } - }, - "node_modules/@resolver-engine/core/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@resolver-engine/fs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz", - "integrity": "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==", - "dev": true, - "dependencies": { - "@resolver-engine/core": "^0.3.3", - "debug": "^3.1.0" - } - }, - "node_modules/@resolver-engine/fs/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@resolver-engine/imports": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz", - "integrity": "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==", - "dev": true, - "dependencies": { - "@resolver-engine/core": "^0.3.3", - "debug": "^3.1.0", - "hosted-git-info": "^2.6.0", - "path-browserify": "^1.0.0", - "url": "^0.11.0" - } - }, - "node_modules/@resolver-engine/imports-fs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz", - "integrity": "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==", - "dev": true, - "dependencies": { - "@resolver-engine/fs": "^0.3.3", - "@resolver-engine/imports": "^0.3.3", - "debug": "^3.1.0" - } - }, - "node_modules/@resolver-engine/imports-fs/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@resolver-engine/imports/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "dependencies": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "dependencies": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "dependencies": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@trufflesuite/bigint-buffer": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz", - "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build": "4.3.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@trufflesuite/bigint-buffer/node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@typechain/ethers-v5": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz", - "integrity": "sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - }, - "peerDependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/bytes": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "ethers": "^5.1.3", - "typechain": "^8.1.1", - "typescript": ">=4.3.0" - } - }, - "node_modules/@typechain/hardhat": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.5.tgz", - "integrity": "sha512-lg7LW4qDZpxFMknp3Xool61Fg6Lays8F8TXdFGBG+MxyYcYU5795P1U2XdStuzGq9S2Dzdgh+1jGww9wvZ6r4Q==", - "dev": true, - "dependencies": { - "fs-extra": "^9.1.0" - }, - "peerDependencies": { - "@ethersproject/abi": "^5.4.7", - "@ethersproject/providers": "^5.4.7", - "@typechain/ethers-v5": "^10.2.0", - "ethers": "^5.4.7", - "hardhat": "^2.9.9", - "typechain": "^8.1.1" - } - }, - "node_modules/@typechain/hardhat/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typechain/hardhat/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@typechain/hardhat/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@types/abstract-leveldown": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz", - "integrity": "sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ==", - "dev": true - }, - "node_modules/@types/async-eventemitter": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", - "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", - "dev": true - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/level-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", - "integrity": "sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==", - "dev": true - }, - "node_modules/@types/levelup": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", - "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", - "dev": true, - "dependencies": { - "@types/abstract-leveldown": "*", - "@types/level-errors": "*", - "@types/node": "*" - } - }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true - }, - "node_modules/@types/mkdirp": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", - "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.3.tgz", - "integrity": "sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/abstract-level": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", - "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.1.0", - "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", - "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/abstract-leveldown/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/abstract-leveldown/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "engines": { - "node": ">=0.3.0" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "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, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-eventemitter": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", - "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", - "dev": true, - "dependencies": { - "async": "^2.4.0" - } - }, - "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 - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true - }, - "node_modules/bigint-crypto-utils": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.8.tgz", - "integrity": "sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw==", - "dev": true, - "dependencies": { - "bigint-mod-arith": "^3.1.0" - }, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/bigint-mod-arith": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz", - "integrity": "sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ==", - "dev": true, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", - "dev": true, - "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - } - }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", - "dev": true - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "peer": true - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browser-level": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", - "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", - "dev": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.1", - "module-error": "^1.0.2", - "run-parallel-limit": "^1.1.0" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-reverse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", - "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/classic-level": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz", - "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "dev": true, - "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/core-js-pure": { - "version": "3.29.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.29.1.tgz", - "integrity": "sha512-4En6zYVi0i0XlXHVz/bi6l1XDjCqkKRq765NXuX+SnaIatlE96Odt5lMLjdxUiNI1v9OXI5DSLWYPlmTfkTktg==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/crypto-js": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", - "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", - "dev": true, - "dependencies": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/deferred-leveldown/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "dev": true - }, - "node_modules/encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "dev": true, - "dependencies": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "peer": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", - "dev": true, - "peer": true, - "dependencies": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - } - }, - "node_modules/eth-ens-namehash/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true, - "peer": true - }, - "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "dev": true, - "dependencies": { - "js-sha3": "^0.8.0" - } - }, - "node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "node_modules/ethereum-waffle": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10.tgz", - "integrity": "sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ==", - "dev": true, - "dependencies": { - "@ethereum-waffle/chai": "4.0.10", - "@ethereum-waffle/compiler": "4.0.3", - "@ethereum-waffle/mock-contract": "4.0.4", - "@ethereum-waffle/provider": "4.0.5", - "solc": "0.8.15", - "typechain": "^8.0.0" - }, - "bin": { - "waffle": "bin/waffle" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/ethereum-waffle/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ethereum-waffle/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/ethereum-waffle/node_modules/solc": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.15.tgz", - "integrity": "sha512-Riv0GNHNk/SddN/JyEuFKwbcWcEeho15iyupTSHw5Np6WuXA5D8kEHbyzDHi6sqmvLzu2l+8b1YmL8Ytple+8w==", - "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solc.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - } - }, - "node_modules/ethereumjs-abi/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "dev": true, - "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/fmix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", - "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", - "dev": true, - "dependencies": { - "imul": "^1.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/ganache": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.4.3.tgz", - "integrity": "sha512-RpEDUiCkqbouyE7+NMXG26ynZ+7sGiODU84Kz+FVoXUnQ4qQM4M8wif3Y4qUCt+D/eM1RVeGq0my62FPD6Y1KA==", - "bundleDependencies": [ - "@trufflesuite/bigint-buffer", - "emittery", - "keccak", - "leveldown", - "secp256k1", - "@types/bn.js", - "@types/lru-cache", - "@types/seedrandom" - ], - "dev": true, - "hasShrinkwrap": true, - "dependencies": { - "@trufflesuite/bigint-buffer": "1.1.10", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "5.1.1", - "@types/seedrandom": "3.0.1", - "emittery": "0.10.0", - "keccak": "3.0.2", - "leveldown": "6.1.0", - "secp256k1": "4.0.3" - }, - "bin": { - "ganache": "dist/node/cli.js", - "ganache-cli": "dist/node/cli.js" - }, - "optionalDependencies": { - "bufferutil": "4.0.5", - "utf-8-validate": "5.0.7" - } - }, - "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz", - "integrity": "sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "node-gyp-build": "4.4.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer/node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache/node_modules/@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache/node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/@types/node": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", - "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/@types/seedrandom": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz", - "integrity": "sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/ganache/node_modules/bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "dev": true, - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - } - }, - "node_modules/ganache/node_modules/catering": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", - "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "queue-tick": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache/node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/ganache/node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/ganache/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache/node_modules/keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache/node_modules/leveldown": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", - "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "abstract-leveldown": "^7.2.0", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "catering": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache/node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache/node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/queue-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", - "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ganache/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/ganache/node_modules/utf-8-validate": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", - "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", - "dev": true, - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - } - }, - "node_modules/ganache/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/hardhat": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.13.0.tgz", - "integrity": "sha512-ZlzBOLML1QGlm6JWyVAG8lVTEAoOaVm1in/RU2zoGAnYEoD1Rp4T+ZMvrLNhHaaeS9hfjJ1gJUBfiDr4cx+htQ==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "^4.0.0", - "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", - "@nomicfoundation/ethereumjs-common": "^3.0.0", - "@nomicfoundation/ethereumjs-evm": "^1.0.0", - "@nomicfoundation/ethereumjs-rlp": "^4.0.0", - "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", - "@nomicfoundation/ethereumjs-trie": "^5.0.0", - "@nomicfoundation/ethereumjs-tx": "^4.0.0", - "@nomicfoundation/ethereumjs-util": "^8.0.0", - "@nomicfoundation/ethereumjs-vm": "^6.0.0", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "abort-controller": "^3.0.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "qs": "^6.7.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/hardhat-deploy": { - "version": "0.11.26", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.26.tgz", - "integrity": "sha512-GvnkD8v6q0coCQbwZNeUcO3ab1zz36FKsqzNdm6EcnVoAfXVkFpdA0pgJ7/Rk3+Lv5709xOtbneFOyoukUOhWQ==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.5.3", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-web3": "^0.14.3" - } - }, - "node_modules/hardhat-deploy/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/hardhat-deploy/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/hardhat-deploy/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/hardhat-deploy/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/hardhat-deploy/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hardhat-deploy/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/hardhat-deploy/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat-deploy/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/hardhat-deploy/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat-deploy/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "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, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "2.1.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true - }, - "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "node_modules/imul": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "dependencies": { - "fp-ts": "^1.0.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "peer": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true, - "peer": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dev": true, - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/keccak256": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", - "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.0", - "buffer": "^6.0.3", - "keccak": "^3.0.2" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "peer": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", - "dev": true, - "dependencies": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" - } - }, - "node_modules/level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", - "dev": true, - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-codec/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "dev": true, - "dependencies": { - "errno": "~0.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-mem": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", - "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", - "dev": true, - "dependencies": { - "level-packager": "^5.0.3", - "memdown": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "dev": true, - "dependencies": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/level-ws": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", - "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.0", - "xtend": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "dev": true, - "dependencies": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levelup/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", - "dev": true, - "peer": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", - "dev": true - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/match-all": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", - "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", - "dev": true - }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/memdown": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", - "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", - "dev": true, - "dependencies": { - "abstract-leveldown": "~6.2.1", - "functional-red-black-tree": "~1.0.1", - "immediate": "~3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memdown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memdown/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/memdown/node_modules/immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==", - "dev": true - }, - "node_modules/memdown/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "dev": true, - "dependencies": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merkle-patricia-tree": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz", - "integrity": "sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==", - "dev": true, - "dependencies": { - "@types/levelup": "^4.3.0", - "ethereumjs-util": "^7.1.4", - "level-mem": "^5.0.1", - "level-ws": "^2.0.0", - "readable-stream": "^3.6.0", - "semaphore-async-await": "^1.5.1" - } - }, - "node_modules/merkle-patricia-tree/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/merkletreejs": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.3.9.tgz", - "integrity": "sha512-NjlATjJr4NEn9s8v/VEHhgwRWaE1eA/Une07d9SEqKzULJi1Wsh0Y3svwJdP2bYLMmgSBHzOrNydMWM1NN9VeQ==", - "dev": true, - "dependencies": { - "bignumber.js": "^9.0.1", - "buffer-reverse": "^1.0.1", - "crypto-js": "^3.1.9-1", - "treeify": "^1.1.0", - "web3-utils": "^1.3.4" - }, - "engines": { - "node": ">= 7.6.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "dependencies": { - "obliterator": "^2.0.0" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/murmur-128": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", - "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", - "dev": true, - "dependencies": { - "encode-utf8": "^1.0.2", - "fmix": "^0.1.0", - "imul": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "peer": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "dev": true, - "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "peer": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "peer": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "peer": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", - "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "peer": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "peer": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "peer": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "peer": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true, - "peer": true - }, - "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "dev": true - }, - "node_modules/semaphore-async-await": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", - "integrity": "sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg==", - "dev": true, - "engines": { - "node": ">=4.1" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "peer": true - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solcjs" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "peer": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true, - "peer": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "peer": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true, - "peer": true - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "peer": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, - "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/testrpc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", - "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", - "deprecated": "testrpc has been renamed to ganache-cli, please use this package from now on.", - "dev": true, - "peer": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/treeify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", - "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/ts-command-line-args": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.4.2.tgz", - "integrity": "sha512-mJLQQBOdyD4XI/ZWQY44PIdYde47JhV2xl380O7twPkTQ+Y5vFDHsk8LOeXKuz7dVY5aDCfAzRarNfSqtKOkQQ==", - "dev": true, - "dependencies": { - "@morgan-stanley/ts-mocking-bird": "^0.6.2", - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, - "bin": { - "write-markdown": "dist/write-markdown.js" - } - }, - "node_modules/ts-command-line-args/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ts-command-line-args/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-command-line-args/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ts-command-line-args/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ts-command-line-args/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-command-line-args/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-essentials": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", - "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", - "dev": true, - "peerDependencies": { - "typescript": ">=3.7.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typechain": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.1.1.tgz", - "integrity": "sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ==", - "dev": true, - "dependencies": { - "@types/prettier": "^2.1.1", - "debug": "^4.3.1", - "fs-extra": "^7.0.0", - "glob": "7.1.7", - "js-sha3": "^0.8.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "prettier": "^2.3.1", - "ts-command-line-args": "^2.2.0", - "ts-essentials": "^7.0.1" - }, - "bin": { - "typechain": "dist/cli/cli.js" - }, - "peerDependencies": { - "typescript": ">=4.3.0" - } - }, - "node_modules/typechain/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/undici": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.0.tgz", - "integrity": "sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==", - "dev": true, - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=12.18" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "peer": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/web3-utils": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.9.0.tgz", - "integrity": "sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-utils/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/web3-utils/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true, - "peer": true - }, - "node_modules/window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", - "dev": true, - "peer": true, - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zksync-web3": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.3.tgz", - "integrity": "sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ==", - "dev": true, - "peerDependencies": { - "ethers": "^5.7.0" - } - } - }, - "dependencies": { - "@account-abstraction/contracts": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@account-abstraction/contracts/-/contracts-0.6.0.tgz", - "integrity": "sha512-8ooRJuR7XzohMDM4MV34I12Ci2bmxfE9+cixakRL7lA4BAwJKQ3ahvd8FbJa9kiwkUPCUNtj+/zxDQWYYalLMQ==" - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@ensdomains/ens": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", - "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", - "dev": true, - "peer": true, - "requires": { - "bluebird": "^3.5.2", - "eth-ens-namehash": "^2.0.8", - "solc": "^0.4.20", - "testrpc": "0.0.1", - "web3-utils": "^1.0.0-beta.31" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "peer": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true, - "peer": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "peer": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "peer": true - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true, - "peer": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "peer": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", - "dev": true, - "peer": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true - }, - "solc": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", - "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", - "dev": true, - "peer": true, - "requires": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "peer": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "peer": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true, - "peer": true - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", - "dev": true, - "peer": true, - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", - "dev": true, - "peer": true, - "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - } - } - } - }, - "@ensdomains/resolver": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", - "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", - "dev": true, - "peer": true - }, - "@ethereum-waffle/chai": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-4.0.10.tgz", - "integrity": "sha512-X5RepE7Dn8KQLFO7HHAAe+KeGaX/by14hn90wePGBhzL54tq4Y8JscZFu+/LCwCl6TnkAAy5ebiMoqJ37sFtWw==", - "dev": true, - "requires": { - "@ethereum-waffle/provider": "4.0.5", - "debug": "^4.3.4", - "json-bigint": "^1.0.0" - } - }, - "@ethereum-waffle/compiler": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-4.0.3.tgz", - "integrity": "sha512-5x5U52tSvEVJS6dpCeXXKvRKyf8GICDwiTwUvGD3/WD+DpvgvaoHOL82XqpTSUHgV3bBq6ma5/8gKUJUIAnJCw==", - "dev": true, - "requires": { - "@resolver-engine/imports": "^0.3.3", - "@resolver-engine/imports-fs": "^0.3.3", - "@typechain/ethers-v5": "^10.0.0", - "@types/mkdirp": "^0.5.2", - "@types/node-fetch": "^2.6.1", - "mkdirp": "^0.5.1", - "node-fetch": "^2.6.7" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - } - } - }, - "@ethereum-waffle/ens": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-4.0.3.tgz", - "integrity": "sha512-PVLcdnTbaTfCrfSOrvtlA9Fih73EeDvFS28JQnT5M5P4JMplqmchhcZB1yg/fCtx4cvgHlZXa0+rOCAk2Jk0Jw==", - "dev": true, - "requires": {} - }, - "@ethereum-waffle/mock-contract": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-4.0.4.tgz", - "integrity": "sha512-LwEj5SIuEe9/gnrXgtqIkWbk2g15imM/qcJcxpLyAkOj981tQxXmtV4XmQMZsdedEsZ/D/rbUAOtZbgwqgUwQA==", - "dev": true, - "requires": {} - }, - "@ethereum-waffle/provider": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-4.0.5.tgz", - "integrity": "sha512-40uzfyzcrPh+Gbdzv89JJTMBlZwzya1YLDyim8mVbEqYLP5VRYWoGp0JMyaizgV3hMoUFRqJKVmIUw4v7r3hYw==", - "dev": true, - "requires": { - "@ethereum-waffle/ens": "4.0.3", - "@ganache/ethereum-options": "0.1.4", - "debug": "^4.3.4", - "ganache": "7.4.3" - } - }, - "@ethereumjs/block": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.3.tgz", - "integrity": "sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.6.5", - "@ethereumjs/tx": "^3.5.2", - "ethereumjs-util": "^7.1.5", - "merkle-patricia-tree": "^4.2.4" - }, - "dependencies": { - "@ethereumjs/common": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", - "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.5" - } - }, - "@ethereumjs/tx": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", - "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.6.4", - "ethereumjs-util": "^7.1.5" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "@ethereumjs/blockchain": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz", - "integrity": "sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw==", - "dev": true, - "requires": { - "@ethereumjs/block": "^3.6.2", - "@ethereumjs/common": "^2.6.4", - "@ethereumjs/ethash": "^1.1.0", - "debug": "^4.3.3", - "ethereumjs-util": "^7.1.5", - "level-mem": "^5.0.1", - "lru-cache": "^5.1.1", - "semaphore-async-await": "^1.5.1" - }, - "dependencies": { - "@ethereumjs/common": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", - "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.5" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "@ethereumjs/common": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz", - "integrity": "sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.3" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "@ethereumjs/ethash": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.1.0.tgz", - "integrity": "sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==", - "dev": true, - "requires": { - "@ethereumjs/block": "^3.5.0", - "@types/levelup": "^4.3.0", - "buffer-xor": "^2.0.1", - "ethereumjs-util": "^7.1.1", - "miller-rabin": "^4.0.0" - }, - "dependencies": { - "buffer-xor": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", - "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "@ethereumjs/tx": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.4.0.tgz", - "integrity": "sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.6.0", - "ethereumjs-util": "^7.1.3" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "@ethereumjs/vm": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.6.0.tgz", - "integrity": "sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ==", - "dev": true, - "requires": { - "@ethereumjs/block": "^3.6.0", - "@ethereumjs/blockchain": "^5.5.0", - "@ethereumjs/common": "^2.6.0", - "@ethereumjs/tx": "^3.4.0", - "async-eventemitter": "^0.2.4", - "core-js-pure": "^3.0.1", - "debug": "^2.2.0", - "ethereumjs-util": "^7.1.3", - "functional-red-black-tree": "^1.0.1", - "mcl-wasm": "^0.7.1", - "merkle-patricia-tree": "^4.2.2", - "rustbn.js": "~0.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "dev": true, - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true - }, - "@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "dev": true, - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "dev": true, - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - }, - "dependencies": { - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "requires": {} - } - } - }, - "@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "dev": true, - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "dev": true, - "requires": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ganache/ethereum-address": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-address/-/ethereum-address-0.1.4.tgz", - "integrity": "sha512-sTkU0M9z2nZUzDeHRzzGlW724xhMLXo2LeX1hixbnjHWY1Zg1hkqORywVfl+g5uOO8ht8T0v+34IxNxAhmWlbw==", - "dev": true, - "requires": { - "@ganache/utils": "0.1.4" - } - }, - "@ganache/ethereum-options": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-options/-/ethereum-options-0.1.4.tgz", - "integrity": "sha512-i4l46taoK2yC41FPkcoDlEVoqHS52wcbHPqJtYETRWqpOaoj9hAg/EJIHLb1t6Nhva2CdTO84bG+qlzlTxjAHw==", - "dev": true, - "requires": { - "@ganache/ethereum-address": "0.1.4", - "@ganache/ethereum-utils": "0.1.4", - "@ganache/options": "0.1.4", - "@ganache/utils": "0.1.4", - "bip39": "3.0.4", - "seedrandom": "3.0.5" - } - }, - "@ganache/ethereum-utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-utils/-/ethereum-utils-0.1.4.tgz", - "integrity": "sha512-FKXF3zcdDrIoCqovJmHLKZLrJ43234Em2sde/3urUT/10gSgnwlpFmrv2LUMAmSbX3lgZhW/aSs8krGhDevDAg==", - "dev": true, - "requires": { - "@ethereumjs/common": "2.6.0", - "@ethereumjs/tx": "3.4.0", - "@ethereumjs/vm": "5.6.0", - "@ganache/ethereum-address": "0.1.4", - "@ganache/rlp": "0.1.4", - "@ganache/utils": "0.1.4", - "emittery": "0.10.0", - "ethereumjs-abi": "0.6.8", - "ethereumjs-util": "7.1.3" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz", - "integrity": "sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "@ganache/options": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/options/-/options-0.1.4.tgz", - "integrity": "sha512-zAe/craqNuPz512XQY33MOAG6Si1Xp0hCvfzkBfj2qkuPcbJCq6W/eQ5MB6SbXHrICsHrZOaelyqjuhSEmjXRw==", - "dev": true, - "requires": { - "@ganache/utils": "0.1.4", - "bip39": "3.0.4", - "seedrandom": "3.0.5" - } - }, - "@ganache/rlp": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/rlp/-/rlp-0.1.4.tgz", - "integrity": "sha512-Do3D1H6JmhikB+6rHviGqkrNywou/liVeFiKIpOBLynIpvZhRCgn3SEDxyy/JovcaozTo/BynHumfs5R085MFQ==", - "dev": true, - "requires": { - "@ganache/utils": "0.1.4", - "rlp": "2.2.6" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", - "dev": true, - "requires": { - "bn.js": "^4.11.1" - } - } - } - }, - "@ganache/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-oatUueU3XuXbUbUlkyxeLLH3LzFZ4y5aSkNbx6tjSIhVTPeh+AuBKYt4eQ73FFcTB3nj/gZoslgAh5CN7O369w==", - "dev": true, - "requires": { - "@trufflesuite/bigint-buffer": "1.1.9", - "emittery": "0.10.0", - "keccak": "3.0.1", - "seedrandom": "3.0.5" - }, - "dependencies": { - "keccak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", - "dev": true, - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - } - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@metamask/eth-sig-util": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", - "dev": true, - "requires": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" - } - }, - "@morgan-stanley/ts-mocking-bird": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz", - "integrity": "sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA==", - "dev": true, - "requires": { - "lodash": "^4.17.16", - "uuid": "^7.0.3" - }, - "dependencies": { - "uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "dev": true - } - } - }, - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true - }, - "@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true - }, - "@nomicfoundation/ethereumjs-block": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.2.2.tgz", - "integrity": "sha512-atjpt4gc6ZGZUPHBAQaUJsm1l/VCo7FmyQ780tMGO8QStjLdhz09dXynmhwVTy5YbRr0FOh/uX3QaEM0yIB2Zg==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-tx": "4.1.2", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-blockchain": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.2.2.tgz", - "integrity": "sha512-6AIB2MoTEPZJLl6IRKcbd8mUmaBAQ/NMe3O7OsAOIiDjMNPPH5KaUQiLfbVlegT4wKIg/GOsFH7XlH2KDVoJNg==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "4.2.2", - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-ethash": "2.0.5", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-common": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.1.2.tgz", - "integrity": "sha512-JAEBpIua62dyObHM9KI2b4wHZcRQYYge9gxiygTWa3lNCr2zo+K0TbypDpgiNij5MCGNWP1eboNfNfx1a3vkvA==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-util": "8.0.6", - "crc-32": "^1.2.0" - } - }, - "@nomicfoundation/ethereumjs-ethash": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.5.tgz", - "integrity": "sha512-xlLdcICGgAYyYmnI3r1t0R5fKGBJNDQSOQxXNjVO99JmxJIdXR5MgPo5CSJO1RpyzKOgzi3uIFn8agv564dZEQ==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "4.2.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-evm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.3.2.tgz", - "integrity": "sha512-I00d4MwXuobyoqdPe/12dxUQxTYzX8OckSaWsMcWAfQhgVDvBx6ffPyP/w1aL0NW7MjyerySPcSVfDJAMHjilw==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "@types/async-eventemitter": "^0.2.1", - "async-eventemitter": "^0.2.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-rlp": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.3.tgz", - "integrity": "sha512-DZMzB/lqPK78T6MluyXqtlRmOMcsZbTTbbEyAjo0ncaff2mqu/k8a79PBcyvpgAhWD/R59Fjq/x3ro5Lof0AtA==", - "dev": true - }, - "@nomicfoundation/ethereumjs-statemanager": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.5.tgz", - "integrity": "sha512-CAhzpzTR5toh/qOJIZUUOnWekUXuRqkkzaGAQrVcF457VhtCmr+ddZjjK50KNZ524c1XP8cISguEVNqJ6ij1sA==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "functional-red-black-tree": "^1.0.1" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-trie": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.5.tgz", - "integrity": "sha512-+8sNZrXkzvA1NH5F4kz5RSYl1I6iaRz7mAZRsyxOm0IVY4UaP43Ofvfp/TwOalFunurQrYB5pRO40+8FBcxFMA==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "ethereum-cryptography": "0.1.3", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-tx": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.1.2.tgz", - "integrity": "sha512-emJBJZpmTdUa09cqxQqHaysbBI9Od353ZazeH7WgPb35miMgNY6mb7/3vBA98N5lUW/rgkiItjX0KZfIzihSoQ==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-util": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.6.tgz", - "integrity": "sha512-jOQfF44laa7xRfbfLXojdlcpkvxeHrE2Xu7tSeITsWFgoII163MzjOwFEzSNozHYieFysyoEMhCdP+NY5ikstw==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/ethereumjs-vm": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.4.2.tgz", - "integrity": "sha512-PRTyxZMP6kx+OdAzBhuH1LD2Yw+hrSpaytftvaK//thDy2OI07S0nrTdbrdk7b8ZVPAc9H9oTwFBl3/wJ3w15g==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "4.2.2", - "@nomicfoundation/ethereumjs-blockchain": "6.2.2", - "@nomicfoundation/ethereumjs-common": "3.1.2", - "@nomicfoundation/ethereumjs-evm": "1.3.2", - "@nomicfoundation/ethereumjs-rlp": "4.0.3", - "@nomicfoundation/ethereumjs-statemanager": "1.0.5", - "@nomicfoundation/ethereumjs-trie": "5.0.5", - "@nomicfoundation/ethereumjs-tx": "4.1.2", - "@nomicfoundation/ethereumjs-util": "8.0.6", - "@types/async-eventemitter": "^0.2.1", - "async-eventemitter": "^0.2.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "functional-red-black-tree": "^1.0.1", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "@nomicfoundation/hardhat-foundry": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.0.0.tgz", - "integrity": "sha512-/2cmtIZPnsQj/SRIu9idbBan5j19RD35MECAGmZCcuXX4AO6Wn0nOnpUwpcvGomKW403h4+rXh8AHMWC4Vvw0Q==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, - "requires": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" - } - }, - "@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "dev": true, - "optional": true - }, - "@nomiclabs/hardhat-ethers": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", - "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", - "dev": true, - "requires": {} - }, - "@resolver-engine/core": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz", - "integrity": "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "is-url": "^1.2.4", - "request": "^2.85.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@resolver-engine/fs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz", - "integrity": "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==", - "dev": true, - "requires": { - "@resolver-engine/core": "^0.3.3", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@resolver-engine/imports": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz", - "integrity": "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==", - "dev": true, - "requires": { - "@resolver-engine/core": "^0.3.3", - "debug": "^3.1.0", - "hosted-git-info": "^2.6.0", - "path-browserify": "^1.0.0", - "url": "^0.11.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@resolver-engine/imports-fs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz", - "integrity": "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==", - "dev": true, - "requires": { - "@resolver-engine/fs": "^0.3.3", - "@resolver-engine/imports": "^0.3.3", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "dev": true - }, - "@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "requires": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "requires": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - } - }, - "@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true - }, - "@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "requires": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - } - }, - "@trufflesuite/bigint-buffer": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz", - "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", - "dev": true, - "optional": true, - "requires": { - "node-gyp-build": "4.3.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "optional": true - } - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@typechain/ethers-v5": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz", - "integrity": "sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w==", - "dev": true, - "requires": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - } - }, - "@typechain/hardhat": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.5.tgz", - "integrity": "sha512-lg7LW4qDZpxFMknp3Xool61Fg6Lays8F8TXdFGBG+MxyYcYU5795P1U2XdStuzGq9S2Dzdgh+1jGww9wvZ6r4Q==", - "dev": true, - "requires": { - "fs-extra": "^9.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "@types/abstract-leveldown": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz", - "integrity": "sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ==", - "dev": true - }, - "@types/async-eventemitter": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", - "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", - "dev": true - }, - "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "@types/level-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", - "integrity": "sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==", - "dev": true - }, - "@types/levelup": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", - "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", - "dev": true, - "requires": { - "@types/abstract-leveldown": "*", - "@types/level-errors": "*", - "@types/node": "*" - } - }, - "@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true - }, - "@types/mkdirp": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", - "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", - "dev": true - }, - "@types/node-fetch": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.3.tgz", - "integrity": "sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "abstract-level": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", - "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", - "dev": true, - "requires": { - "buffer": "^6.0.3", - "catering": "^2.1.0", - "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", - "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" - } - }, - "abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true - }, - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-eventemitter": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", - "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", - "dev": true, - "requires": { - "async": "^2.4.0" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - } - } - }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true - }, - "bigint-crypto-utils": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.8.tgz", - "integrity": "sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw==", - "dev": true, - "requires": { - "bigint-mod-arith": "^3.1.0" - } - }, - "bigint-mod-arith": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz", - "integrity": "sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ==", - "dev": true - }, - "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", - "dev": true, - "requires": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", - "dev": true - } - } - }, - "blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "peer": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "browser-level": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", - "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", - "dev": true, - "requires": { - "abstract-level": "^1.0.2", - "catering": "^2.1.1", - "module-error": "^1.0.2", - "run-parallel-limit": "^1.1.0" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-reverse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", - "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "classic-level": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz", - "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==", - "dev": true, - "requires": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "peer": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "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, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "requires": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, - "command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "dev": true, - "requires": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "dependencies": { - "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true - } - } - }, - "commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "core-js-pure": { - "version": "3.29.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.29.1.tgz", - "integrity": "sha512-4En6zYVi0i0XlXHVz/bi6l1XDjCqkKRq765NXuX+SnaIatlE96Odt5lMLjdxUiNI1v9OXI5DSLWYPlmTfkTktg==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "crypto-js": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", - "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", - "dev": true, - "requires": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "dev": true - }, - "encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "dev": true, - "requires": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "peer": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", - "dev": true, - "peer": true, - "requires": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true, - "peer": true - } - } - }, - "ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "dev": true, - "requires": { - "js-sha3": "^0.8.0" - } - }, - "ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "requires": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "ethereum-waffle": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10.tgz", - "integrity": "sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ==", - "dev": true, - "requires": { - "@ethereum-waffle/chai": "4.0.10", - "@ethereum-waffle/compiler": "4.0.3", - "@ethereum-waffle/mock-contract": "4.0.4", - "@ethereum-waffle/provider": "4.0.5", - "solc": "0.8.15", - "typechain": "^8.0.0" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "solc": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.15.tgz", - "integrity": "sha512-Riv0GNHNk/SddN/JyEuFKwbcWcEeho15iyupTSHw5Np6WuXA5D8kEHbyzDHi6sqmvLzu2l+8b1YmL8Ytple+8w==", - "dev": true, - "requires": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - } - } - } - }, - "ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, - "requires": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "requires": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true - } - } - }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "requires": { - "array-back": "^3.0.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "fmix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", - "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", - "dev": true, - "requires": { - "imul": "^1.0.0" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "ganache": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.4.3.tgz", - "integrity": "sha512-RpEDUiCkqbouyE7+NMXG26ynZ+7sGiODU84Kz+FVoXUnQ4qQM4M8wif3Y4qUCt+D/eM1RVeGq0my62FPD6Y1KA==", - "dev": true, - "requires": { - "@trufflesuite/bigint-buffer": "1.1.10", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "5.1.1", - "@types/seedrandom": "3.0.1", - "bufferutil": "4.0.5", - "emittery": "0.10.0", - "keccak": "3.0.2", - "leveldown": "6.1.0", - "secp256k1": "4.0.3", - "utf-8-validate": "5.0.7" - }, - "dependencies": { - "@trufflesuite/bigint-buffer": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz", - "integrity": "sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw==", - "bundled": true, - "dev": true, - "requires": { - "node-gyp-build": "4.4.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "bundled": true, - "dev": true - } - } - }, - "@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "bundled": true, - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "bundled": true, - "dev": true - }, - "@types/node": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", - "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", - "bundled": true, - "dev": true - }, - "@types/seedrandom": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz", - "integrity": "sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==", - "bundled": true, - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "bundled": true, - "dev": true - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "bundled": true, - "dev": true - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "bundled": true, - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "dev": true, - "optional": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "catering": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", - "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", - "bundled": true, - "dev": true, - "requires": { - "queue-tick": "^1.0.0" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "bundled": true, - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "bundled": true, - "dev": true - } - } - }, - "emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "bundled": true, - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "bundled": true, - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "bundled": true, - "dev": true - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "bundled": true, - "dev": true - }, - "keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "bundled": true, - "dev": true, - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - } - }, - "leveldown": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", - "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", - "bundled": true, - "dev": true, - "requires": { - "abstract-leveldown": "^7.2.0", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "bundled": true, - "dev": true, - "requires": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - } - }, - "level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "bundled": true, - "dev": true, - "requires": { - "catering": "^2.1.0" - } - }, - "level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "bundled": true, - "dev": true - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "bundled": true, - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "bundled": true, - "dev": true - }, - "napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "bundled": true, - "dev": true - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "bundled": true, - "dev": true - }, - "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "bundled": true, - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "bundled": true, - "dev": true - }, - "queue-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", - "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", - "bundled": true, - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "bundled": true, - "dev": true - }, - "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "bundled": true, - "dev": true, - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "utf-8-validate": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", - "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", - "dev": true, - "optional": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "bundled": true, - "dev": true - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "hardhat": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.13.0.tgz", - "integrity": "sha512-ZlzBOLML1QGlm6JWyVAG8lVTEAoOaVm1in/RU2zoGAnYEoD1Rp4T+ZMvrLNhHaaeS9hfjJ1gJUBfiDr4cx+htQ==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "^4.0.0", - "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", - "@nomicfoundation/ethereumjs-common": "^3.0.0", - "@nomicfoundation/ethereumjs-evm": "^1.0.0", - "@nomicfoundation/ethereumjs-rlp": "^4.0.0", - "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", - "@nomicfoundation/ethereumjs-trie": "^5.0.0", - "@nomicfoundation/ethereumjs-tx": "^4.0.0", - "@nomicfoundation/ethereumjs-util": "^8.0.0", - "@nomicfoundation/ethereumjs-vm": "^6.0.0", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "abort-controller": "^3.0.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "qs": "^6.7.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - } - }, - "hardhat-deploy": { - "version": "0.11.26", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.26.tgz", - "integrity": "sha512-GvnkD8v6q0coCQbwZNeUcO3ab1zz36FKsqzNdm6EcnVoAfXVkFpdA0pgJ7/Rk3+Lv5709xOtbneFOyoukUOhWQ==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.5.3", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-web3": "^0.14.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "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, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "dev": true, - "peer": true, - "requires": { - "punycode": "2.1.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true - }, - "immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "imul": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true, - "peer": true - }, - "io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "requires": { - "fp-ts": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "peer": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true, - "peer": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dev": true, - "requires": { - "bignumber.js": "^9.0.0" - } - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", - "dev": true, - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - } - }, - "keccak256": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", - "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", - "dev": true, - "requires": { - "bn.js": "^5.2.0", - "buffer": "^6.0.3", - "keccak": "^3.0.2" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "peer": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", - "dev": true, - "requires": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" - } - }, - "level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", - "dev": true, - "requires": { - "buffer": "^5.6.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true - }, - "level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "dev": true, - "requires": { - "errno": "~0.1.1" - } - }, - "level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - } - }, - "level-mem": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", - "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", - "dev": true, - "requires": { - "level-packager": "^5.0.3", - "memdown": "^5.0.0" - } - }, - "level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "dev": true, - "requires": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" - } - }, - "level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", - "dev": true - }, - "level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "dev": true, - "requires": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - } - }, - "level-ws": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", - "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.0", - "xtend": "^4.0.1" - } - }, - "levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "dev": true, - "requires": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "dependencies": { - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", - "dev": true, - "peer": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", - "dev": true - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "match-all": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", - "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", - "dev": true - }, - "mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "memdown": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", - "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", - "dev": true, - "requires": { - "abstract-leveldown": "~6.2.1", - "functional-red-black-tree": "~1.0.1", - "immediate": "~3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==", - "dev": true - }, - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "dev": true, - "requires": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true - }, - "merkle-patricia-tree": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz", - "integrity": "sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==", - "dev": true, - "requires": { - "@types/levelup": "^4.3.0", - "ethereumjs-util": "^7.1.4", - "level-mem": "^5.0.1", - "level-ws": "^2.0.0", - "readable-stream": "^3.6.0", - "semaphore-async-await": "^1.5.1" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "merkletreejs": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.3.9.tgz", - "integrity": "sha512-NjlATjJr4NEn9s8v/VEHhgwRWaE1eA/Une07d9SEqKzULJi1Wsh0Y3svwJdP2bYLMmgSBHzOrNydMWM1NN9VeQ==", - "dev": true, - "requires": { - "bignumber.js": "^9.0.1", - "buffer-reverse": "^1.0.1", - "crypto-js": "^3.1.9-1", - "treeify": "^1.1.0", - "web3-utils": "^1.3.4" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "requires": { - "obliterator": "^2.0.0" - } - }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "murmur-128": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", - "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", - "dev": true, - "requires": { - "encode-utf8": "^1.0.2", - "fmix": "^0.1.0", - "imul": "^1.0.0" - } - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "peer": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "peer": true - }, - "number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true - } - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true - }, - "obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "peer": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "peer": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "peer": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "peer": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "peer": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", - "dev": true - }, - "qs": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", - "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "peer": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "peer": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "peer": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "peer": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true, - "peer": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, - "requires": { - "bn.js": "^5.2.0" - } - }, - "run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "dev": true - }, - "semaphore-async-await": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", - "integrity": "sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "peer": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, - "requires": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "dependencies": { - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "peer": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true, - "peer": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "peer": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true, - "peer": true - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - } - } - }, - "stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, - "requires": { - "type-fest": "^0.7.1" - }, - "dependencies": { - "type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "peer": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, - "requires": { - "is-hex-prefixed": "1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, - "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "dependencies": { - "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true - } - } - }, - "testrpc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", - "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", - "dev": true, - "peer": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "dependencies": { - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - } - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "treeify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", - "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", - "dev": true - }, - "ts-command-line-args": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.4.2.tgz", - "integrity": "sha512-mJLQQBOdyD4XI/ZWQY44PIdYde47JhV2xl380O7twPkTQ+Y5vFDHsk8LOeXKuz7dVY5aDCfAzRarNfSqtKOkQQ==", - "dev": true, - "requires": { - "@morgan-stanley/ts-mocking-bird": "^0.6.2", - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ts-essentials": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", - "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", - "dev": true, - "requires": {} - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "typechain": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.1.1.tgz", - "integrity": "sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ==", - "dev": true, - "requires": { - "@types/prettier": "^2.1.1", - "debug": "^4.3.1", - "fs-extra": "^7.0.0", - "glob": "7.1.7", - "js-sha3": "^0.8.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "prettier": "^2.3.1", - "ts-command-line-args": "^2.2.0", - "ts-essentials": "^7.0.1" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", - "dev": true, - "peer": true - }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true - }, - "undici": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.0.tgz", - "integrity": "sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==", - "dev": true, - "requires": { - "busboy": "^1.6.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - } - } - }, - "utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "peer": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "web3-utils": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.9.0.tgz", - "integrity": "sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "dependencies": { - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - } - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true, - "peer": true - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", - "dev": true, - "peer": true - }, - "wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, - "requires": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "dependencies": { - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true - } - } - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zksync-web3": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.3.tgz", - "integrity": "sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ==", - "dev": true, - "requires": {} - } - } -} diff --git a/package.json b/package.json index 9b046639..3ddadbe4 100644 --- a/package.json +++ b/package.json @@ -1,31 +1,32 @@ { - "name": "@zerodevapp/contracts", - "description": "ZeroDev Account Abstraction (EIP 4337) contracts", - "main": "./dist/index.js", - "version": "4.0.0-beta.10", + "license": "MIT", "scripts": { - "prepack": "./script/prepack-contracts-package.sh", - "postpack": "./script/postpack-contracts-package.sh" + "compile": "hardhat compile" }, "devDependencies": { - "@nomicfoundation/hardhat-foundry": "^1.0.0", - "@nomiclabs/hardhat-ethers": "^2.2.3", - "@typechain/ethers-v5": "^10.2.0", - "@typechain/hardhat": "^6.1.5", - "@types/chai": "^4.3.4", - "@types/mocha": "^10.0.1", - "@types/node": "^18.15.11", - "chai": "^4.3.7", - "ethereum-waffle": "^4.0.10", - "hardhat": "^2.13.0", - "hardhat-deploy": "^0.11.26", - "keccak256": "^1.0.6", - "merkletreejs": "^0.3.9", - "ts-node": "^10.9.1", - "typechain": "^8.1.1" - }, - "dependencies": { - "@account-abstraction/contracts": "^0.6.0", - "dotenv": "^16.0.3" + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-foundry": "^1.1.1", + "@nomicfoundation/hardhat-ignition": "^0.15.0", + "@nomicfoundation/hardhat-ignition-ethers": "^0.15.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@nomicfoundation/ignition-core": "^0.15.0", + "@typechain/ethers-v6": "^0.5.0", + "@typechain/hardhat": "^9.0.0", + "@types/chai": "4", + "@types/mocha": "^10.0.6", + "@types/node": "^20.12.5", + "chai": "4", + "ethers": "^6.4.0", + "hardhat": "^2.22.2", + "hardhat-contract-sizer": "^2.10.0", + "hardhat-gas-reporter": "^1.0.8", + "hardhat-spdx-license-identifier": "^2.2.0", + "solidity-coverage": "^0.8.1", + "ts-node": "^10.9.2", + "typechain": "^8.3.0", + "typescript": "^5.4.4" } } diff --git a/remappings.txt b/remappings.txt index 91f7eb8d..03e79deb 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,6 +1,3 @@ -ds-test/=lib/forge-std/lib/ds-test/src/ +ExcessivelySafeCall/=lib/ExcessivelySafeCall/src/ forge-std/=lib/forge-std/src/ solady/=lib/solady/src/ -I4337/=lib/I4337/src/ -FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/ -p256-verifier/=lib/p256-verifier/src/ diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol new file mode 100644 index 00000000..dacde9b9 --- /dev/null +++ b/script/Deploy.s.sol @@ -0,0 +1,65 @@ +pragma solidity ^0.8.0; + +import "forge-std/Script.sol"; +import "src/Kernel.sol"; +import "forge-std/console.sol"; + +import "src/factory/FactoryStaker.sol"; +import "src/factory/KernelFactory.sol"; + +bytes constant KERNEL_CODE = + hex"0000000000000000000000000000000000000000000000000000000000000000610140346200020957601f6200520c38819003918201601f191683019291906001600160401b038411838510176200020e5781602092849260409687528339810103126200020957516001600160a01b03811681036200020957306080524660a05260a08251620000708162000224565b60068152600a602082016512d95c9b995b60d21b815260208651620000958162000224565b838152019269302e332e302d6265746160b01b845251902091208160c0528060e0528451917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260208301528482015246606082015230608082015220916101009283526101209182528051602081019063deadbeef60e01b825260048152620001208162000224565b5190516001600160581b031991828216919060158110620001f3575b505090507f7bcaa2ced2a71450ed5a9a1b4848e8e5206dbc3f06011e595f7f55428cc6f84f9060581c60018060a81b03198254161790555190614fcb928362000241843960805183614093015260a051836140b6015260c05183614128015260e0518361414e0152518261407201525181818161047a0152818161079e0152818161095401528181610cec01528181611053015281816111c2015281816112220152818161174a015281816118b901526121180152f35b8391925060150360031b1b16168038806200013c565b600080fd5b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200020e5760405256fe6080604052600436101561001d575b366128595761001b612828565b005b60003560e01c8063112d3a7d146101bd57806312af322c146101b85780631626ba7e146101b357806319822f7c146101ae5780631f1b92e3146101a95780633659cfe6146101a457806357b3a5f41461019f5780636e6fa0c61461019a578063721e67f41461019557806384b0196e146101905780638dd7712f1461018b57806390ef8862146101865780639198bdf5146101815780639517e29f1461017c5780639cfd7cff14610177578063a65d69d414610172578063a71763a81461016d578063adb610a314610168578063b8afe17d14610163578063c3e589781461015e578063d03c791414610159578063d691c96414610154578063e6f3d50a1461014f578063e9ae5c531461014a578063f1f7f0f9146101455763f2dc691d0361000e576119ec565b6119b4565b611888565b6116cf565b6115c0565b61150f565b611433565b611351565b61131d565b6111f1565b6111ac565b61114e565b611022565b610f1b565b610dca565b610cb6565b610c14565b610b68565b610b0b565b610a5d565b610914565b61075c565b61043c565b6103dc565b610289565b610251565b6001600160a01b038116036101d357565b600080fd5b35906101e3826101c2565b565b9181601f840112156101d3578235916001600160401b0383116101d357602083818601950101116101d357565b60606003198201126101d3576004359160243561022e816101c2565b91604435906001600160401b0382116101d35761024d916004016101e5565b9091565b346101d357602061026d61026436610212565b92919091611bec565b6040519015158152f35b6001600160581b03198116036101d357565b346101d35760803660031901126101d3576004356102a681610277565b6024356102b2816101c2565b6001600160401b03906044358281116101d3576102d39036906004016101e5565b90926064359081116101d3576102ed9036906004016101e5565b9390926001600160581b031961032d81610326610319600080516020614fab8339815191525460581b90565b6001600160581b03191690565b1615611cb6565b8616156103ca576001600160f81b03198616600160f81b81141590816103bb575b506103a9578561036061001b976129b9565b61038161036b610eea565b60018152925b6001600160a01b03166020840152565b600080516020614fab833981519152805463ffffffff60a81b1916600160a81b179055612a14565b6040516361c4e91b60e11b8152600490fd5b600160f91b141590503861034e565b604051631a0a9b9f60e21b8152600490fd5b346101d35760403660031901126101d3576024356001600160401b0381116101d35761041a61041160209236906004016101e5565b90600435611dd1565b6040516001600160e01b03199091168152f35b90816101209103126101d35790565b60603660031901126101d357600480356001600160401b0381116101d357610467903690830161042d565b60243590604435906001600160a01b03907f000000000000000000000000000000000000000000000000000000000000000082163303610727578084926104b16020830135612d80565b6001600160f81b0319909116159590939091866106fd575b90846104d59392612f65565b956104e76104e284611b7a565b611efe565b94159485806106bb575b6106aa57602001516001600160a01b031691821690811561069957600192610526610545926000526000602052604060002090565b80546001600160a01b0319166001600160a01b03909216919091179055565b036105f8578261059a575b5050610589576105739250805b610577575b506040519081529081906020820190565b0390f35b3490349034903490335af15038610562565b604051631a0a9b9f60e21b81528390fd5b6105f192506105ed916105cf6105c96105c36105b86105e695611bb3565b936060810190611f2a565b90611a1b565b90611b4e565b63ffffffff60e01b16600052602052604060002090565b5460ff1690565b1590565b3880610550565b82919291610666575b50610655576105c3816060610617930190611f2a565b638dd7712f60e01b916001600160e01b03199161063391611b4e565b16036106445761057392508061055d565b60405163dbbb044b60e01b81528390fd5b604051631a0a9b9f60e21b81528490fd5b61069391506105e661067a6105ed92611bb3565b6105cf6105c961068d6060880188611f2a565b90611a0a565b38610601565b604051631a0a9b9f60e21b81528990fd5b604051633ab3447f60e11b81528990fd5b50805163ffffffff1663ffffffff6106f56106ec600080516020614fab8339815191525463ffffffff9060c81c1690565b63ffffffff1690565b9116106104f1565b9350906104d59161071d600080516020614fab8339815191525460581b90565b94909192506104c9565b6040516348f5c3ed60e01b81528590fd5b6004359063ffffffff821682036101d357565b359063ffffffff821682036101d357565b60203660031901126101d357610770610738565b61079261078c600080516020614fab8339815191525460581b90565b60581c90565b6001600160a01b0390337f0000000000000000000000000000000000000000000000000000000000000000831614158061090a575b156108ff5760405163ecd0596160e01b8152600480820152911690602081602481855afa908115610890576000916108d0575b50156108be5760405163d68f602560e01b8152916000838061082136343360048501611fed565b038183865af192831561089057600093610895575b506108409061310c565b803b156101d357604051635565eb9560e11b815291600091839182908490829061086d9060048301612029565b03925af180156108905761087d57005b8061088a61001b92610e44565b80610bc1565b611dc5565b6108409193506108b7903d806000833e6108af8183610ec9565b810190611f8f565b9290610836565b6040516348f5c3ed60e01b8152600490fd5b6108f2915060203d6020116108f8575b6108ea8183610ec9565b810190611f5c565b386107fa565b503d6108e0565b505061001b9061310c565b50303314156107c7565b60203660031901126101d35760043561092c816101c2565b61094861078c600080516020614fab8339815191525460581b90565b6001600160a01b0390337f00000000000000000000000000000000000000000000000000000000000000008316141580610a41575b15610a365760405163ecd0596160e01b8152600480820152911690602081602481855afa90811561089057600091610a17575b50156108be5760405163d68f602560e01b815291600083806109d736343360048501611fed565b038183865af1928315610890576000936109f6575b5061084090612054565b610840919350610a10903d806000833e6108af8183610ec9565b92906109ec565b610a30915060203d6020116108f8576108ea8183610ec9565b386109b0565b505061001b90612054565b503033141561097d565b6001600160e01b03198116036101d357565b346101d35760203660031901126101d357610573610a9f600435610a8081610a4b565b600060408051610a8f81610e5c565b8281528260208201520152611cf8565b60405190610aac82610e5c565b80546001600160a01b0390811680845260019092015480821660208086019182526001600160f81b031960589390931b831660409687019081528651958652915190931692840192909252905116918101919091529081906060820190565b346101d35760403660031901126101d357602060ff610b5c600435610b2f81610277565b610b4460243591610b3f83610a4b565b611bb3565b9063ffffffff60e01b16600052602052604060002090565b54166040519015158152f35b346101d35760203660031901126101d3576020610b9e600435610b8a816101c2565b6000604051610b9881610e77565b52612992565b60405190610bab82610e77565b546001600160a01b031690819052604051908152f35b60009103126101d357565b60005b838110610bdf5750506000910152565b8181015183820152602001610bcf565b90602091610c0881518092818552858086019101610bcc565b601f01601f1916010190565b346101d35760003660031901126101d357610c63610c306131ec565b90604051928392600f60f81b8452610c5560209360e0602087015260e0860190610bef565b908482036040860152610bef565b90466060840152306080840152600060a084015282820360c0840152602060605192838152019160809160005b828110610c9f57505050500390f35b835185528695509381019392810192600101610c90565b60403660031901126101d3576004356001600160401b0381116101d357610ce190369060040161042d565b6001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821633036108be576060906001610d3e610d316024356000526000602052604060002090565b546001600160a01b031690565b93841614159081610d9a575b610d65610d5e826060610d6c940190611f2a565b8091611a29565b9030613338565b92909115610d7d5761001b9361335f565b5091505015610d8857005b60405163f21e646b60e01b8152600490fd5b9150610d6c610d65610d5e610dc0610db8610d5e6060880188611f2a565b9034896132b6565b9492505050610d4a565b346101d35760003660031901126101d357602063ffffffff600080516020614fab8339815191525460c81c16604051908152f35b9181601f840112156101d3578235916001600160401b0383116101d3576020808501948460051b0101116101d357565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610e5757604052565b610e2e565b606081019081106001600160401b03821117610e5757604052565b602081019081106001600160401b03821117610e5757604052565b604081019081106001600160401b03821117610e5757604052565b61012081019081106001600160401b03821117610e5757604052565b90601f801991011681019081106001600160401b03821117610e5757604052565b604051906101e382610e92565b604051906101e382610ead565b6001600160401b038111610e575760051b60200190565b60803660031901126101d3576001600160401b036004358181116101d357610f47903690600401610dfe565b906024358381116101d357366023820112156101d3578060040135610f6b81610f04565b91604091610f7c6040519485610ec9565b8084526020906024602086019160061b840101923684116101d357602401905b838210610fe45750505050506044358481116101d357610fc0903690600401610dfe565b916064359586116101d357610fdc61001b963690600401610dfe565b9590946120e9565b84823603126101d3578285918251610ffb81610e92565b6110048561074b565b815282850135611013816101c2565b83820152815201910190610f9c565b61102b36610212565b61104761078c600080516020614fab8339815191525460581b90565b6001600160a01b0390337f00000000000000000000000000000000000000000000000000000000000000008316141580611144575b156111385760405163ecd0596160e01b815260048082015291169290602081602481875afa90811561089057600091611119575b50156108be5760405163d68f602560e01b815293600085806110d736343360048501611fed565b038183885af1948515610890576000956110f8575b506108409394956122a5565b610840949550611112903d806000833e6108af8183610ec9565b94936110ec565b611132915060203d6020116108f8576108ea8183610ec9565b386110b0565b50509161001b936122a5565b503033141561107c565b346101d35760003660031901126101d35761057360405161116e81610e92565b601b81527f6b65726e656c2e616476616e6365642e76302e332e302d6265746100000000006020820152604051918291602083526020830190610bef565b346101d35760003660031901126101d3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6111fa36610212565b61121661078c600080516020614fab8339815191525460581b90565b6001600160a01b0390337f00000000000000000000000000000000000000000000000000000000000000008316141580611313575b156113075760405163ecd0596160e01b815260048082015291169290602081602481875afa908115610890576000916112e8575b50156108be5760405163d68f602560e01b815293600085806112a636343360048501611fed565b038183885af1948515610890576000956112c7575b50610840939495612584565b6108409495506112e1903d806000833e6108af8183610ec9565b94936112bb565b611301915060203d6020116108f8576108ea8183610ec9565b3861127f565b50509161001b93612584565b503033141561124b565b346101d35760003660031901126101d357602063ffffffff600080516020614fab8339815191525460a81c16604051908152f35b346101d35760203660031901126101d357604061138160043561137381610277565b61137b612720565b50611b7a565b602082519161138f83610e92565b5463ffffffff81169283815260018060a01b03928391019160201c168152835192835251166020820152f35b602080825282516001600160f01b03191681830152808301516001600160a01b03166040808401919091529092015160608083015280516080830181905260a090920192908101919060005b828110611415575050505090565b83516001600160501b03191685529381019392810192600101611407565b346101d3576020806003193601126101d35760043561145181610a4b565b611476604091606083805161146581610e5c565b600081526000878201520152611d30565b9080519161148383610e5c565b805460f081901b6001600160f01b031916845260101c6001600160a01b031684840152815160019182018054808352600091825286822083880197939490939092905b8282106114ed576105738888886114df818e0382610ec9565b8183015251918291826113bb565b845460501b6001600160501b03191689529788019793830193908301906114c6565b346101d35760203660031901126101d357602061026d600435612739565b9060406003198301126101d35760043591602435906001600160401b0382116101d35761024d916004016101e5565b6020808201906020835283518092526040830192602060408460051b8301019501936000915b8483106115925750505050505090565b90919293949584806115b0600193603f198682030187528a51610bef565b9801930193019194939290611582565b6115c93661152d565b916001600160a01b036115db33612992565b54169283156116bd57606090600185141593846116a6575b6115fd92936139ed565b91611611575b60405180610573848261155c565b60405161163381611625856020830161155c565b03601f198101835282610ec9565b833b156101d3576116839361166a6000809460405197889586948593635565eb9560e11b8552606060048601526064850190610bef565b6001602485015283810360031901604485015290610bef565b03925af1918215610890576105739215611603576116a090610e44565b38611603565b6115fd92506116b6363488613232565b92506115f3565b60405163710c949760e01b8152600490fd5b60603660031901126101d35760048035906116e982610277565b6001600160401b03916024358381116101d35761170990369084016101e5565b936044359081116101d35761172190369085016101e5565b9061173e61078c600080516020614fab8339815191525460581b90565b6001600160a01b0390337f0000000000000000000000000000000000000000000000000000000000000000831614158061187e575b1561186e57169560405163ecd0596160e01b81526020818061179c8a8201906004602083019252565b03818b5afa9081156108905760009161184f575b501561183e5760405163d68f602560e01b815293600085806117d63634338d8501611fed565b0381838c5af19485156108905760009561181f575b506117f694956127fb565b823b156101d35761086d9260009283604051809681958294635565eb9560e11b84528301612029565b6117f69550611838903d806000833e6108af8183610ec9565b946117eb565b6040516348f5c3ed60e01b81528690fd5b611868915060203d6020116108f8576108ea8183610ec9565b386117b0565b50509261001b95929194506127fb565b5030331415611773565b6118913661152d565b6118ad61078c600080516020614fab8339815191525460581b90565b6001600160a01b0390337f000000000000000000000000000000000000000000000000000000000000000083161415806119aa575b1561199e5760405163ecd0596160e01b815260048082015291169190602081602481865afa9081156108905760009161197f575b50156108be5760405163d68f602560e01b8152926000848061193d36343360048501611fed565b038183875af19384156108905760009461195e575b50610840929394612810565b610840939450611978903d806000833e6108af8183610ec9565b9392611952565b611998915060203d6020116108f8576108ea8183610ec9565b38611916565b50509061001b92612810565b50303314156118e2565b346101d35760003660031901126101d3576020600080516020614fab8339815191525460581b604051906001600160581b0319168152f35b346101d35760203660031901126101d357602061026d60043561281b565b906008116101d35760040190600490565b906004116101d35790600490565b90929192836004116101d35783116101d357600401916003190190565b906018116101d35760040190601490565b906014116101d35790601490565b906020116101d35790602090565b90929192836001116101d35783116101d357600101916000190190565b90929192836014116101d35783116101d357601401916013190190565b906016116101d35790601690565b906016116101d35760020190601490565b90929192836016116101d35783116101d357601601916015190190565b906002116101d35790600290565b906009116101d35760010190600890565b90929192836009116101d35783116101d357600901916008190190565b90602c116101d35760180190601490565b909392938483116101d35784116101d3578101920390565b6001600160e01b03199035818116939260048110611b6b57505050565b60040360031b82901b16169150565b6001600160581b0319166000527f7bcaa2ced2a71450ed5a9a1b4848e8e5206dbc3f06011e595f7f55428cc6f850602052604060002090565b6001600160581b0319166000527f7bcaa2ced2a71450ed5a9a1b4848e8e5206dbc3f06011e595f7f55428cc6f851602052604060002090565b90929060018103611c3b57506001600160a01b0392611c359250611c25915060581b600160581b600160f81b0316600160f81b17611b7a565b5460201c6001600160a01b031690565b16151590565b60028103611c6e57506001600160a01b0392611c359250611c629150610d31908416612992565b6001600160a01b031690565b600303611cae57611c8f611c8a6105c9600193611c9d95611a1b565b611cf8565b01546001600160a01b031690565b6001600160a01b0390811691161490565b505050600090565b15611cbd57565b60405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b63ffffffff60e01b166000527f7c341349a4360fdd5d5bc07e69f325dc6aaea3eb018b3e0ea7e53cc0bb0d6f3b602052604060002090565b63ffffffff60e01b166000527f7bcaa2ced2a71450ed5a9a1b4848e8e5206dbc3f06011e595f7f55428cc6f852602052604060002090565b908160209103126101d35751611d7d81610a4b565b90565b908060209392818452848401376000828201840152601f01601f1916010190565b611d7d949260609260018060a01b0316825260208201528160408201520191611d80565b6040513d6000823e3d90fd5b91611ddb91612c05565b91906001600160f81b031980831615611edd575b6001600160a01b039081611e08611c62611c2587611b7a565b16156103ca578316600160f81b03611e8d57906020939291611e2c611e4a96612d37565b604051637aa8f17760e11b8152968795869485933360048601611da1565b039260581c165afa90811561089057600091611e64575090565b611d7d915060203d602011611e86575b611e7e8183610ec9565b810190611d68565b503d611e74565b509060081b92600160f11b611ebb611eae611ea787611d30565b5460f01b90565b6001600160f01b03191690565b16611ecb57611d7d933390612c86565b604051635b71057960e01b8152600490fd5b9150611ef8600080516020614fab8339815191525460581b90565b91611def565b90604051611f0b81610e92565b915463ffffffff81168352602090811c6001600160a01b031690830152565b903590601e19813603018212156101d357018035906001600160401b0382116101d3576020019181360383136101d357565b908160209103126101d3575180151581036101d35790565b6001600160401b038111610e5757601f01601f191660200190565b6020818303126101d3578051906001600160401b0382116101d3570181601f820112156101d3578051611fc181611f74565b92611fcf6040519485610ec9565b818452602082840101116101d357611d7d9160208085019101610bcc565b916080939160018060a01b03168352602083015260606040830152806060830152806000848401376000828201840152601f01601f1916010190565b61203d602092606083526060830190610bef565b906001838201526040818303910152600081520190565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556001600160a01b03167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2565b906040516120b581610e5c565b82546001600160a01b039081168252600190930154928316602082015260589290921b6001600160f81b0319166040830152565b9592949193909461210c61078c600080516020614fab8339815191525460581b90565b6001600160a01b0390337f00000000000000000000000000000000000000000000000000000000000000008316141580612259575b156122495760405163ecd0596160e01b8152600480820152911695906020816024818a5afa9081156108905760009161222a575b50156108be5760405163d68f602560e01b8152966000888061219c36343360048501611fed565b0381838b5af197881561089057600098612209575b506121bd969798613428565b803b156101d357604051635565eb9560e11b81529160009183918290849082906121ea9060048301612029565b03925af18015610890576121fc575b50565b8061088a6101e392610e44565b6121bd979850612223903d806000833e6108af8183610ec9565b97966121b1565b612243915060203d6020116108f8576108ea8183610ec9565b38612175565b505091939092946101e396613428565b5030331415612141565b916020611d7d938181520191611d80565b6bffffffffffffffffffffffff19903581811693926014811061229657505050565b60140360031b82901b16169150565b9290916001840361234b576101e3935061230e6122f7611c626122f16122eb6122e4600080516020614fab8339815191525463ffffffff9060a81c1690565b9686611a57565b90612274565b60601c90565b610371612302610eea565b63ffffffff9095168552565b603480820135820160148181013595918301948482013590940190810135939201919060581b600160581b600160f81b0316600160f81b17612a14565b919092600281146000146123ad57509161239e6101e393612383611c626122f16122eb60148801358801966034890135890198611a57565b928391601482013591603401906001600160a01b03166136af565b603460148301359201906135e2565b9091906003810361242d5750612428611c626124186101e3958461241360186122f197013582016122f160388401358401996123ec6105c98787611a1b565b9061240d611c626123fd8989611a46565b6018880135976038019691612274565b91613496565b611a46565b6018860135956038019491612274565b6135e2565b9091906004810361246e57506001600160a01b031691823b156101d3576121ea92600092836040518096819582946306d61fe760e41b845260048401612263565b600581036124ac57506001600160a01b031691823b156101d3576121ea92600092836040518096819582946306d61fe760e41b845260048401612263565b6006036124e8576001600160a01b031691823b156101d3576121ea92600092836040518096819582946306d61fe760e41b845260048401612263565b604051631092ef5760e11b8152600490fd5b6040519061250782610e77565b60008252565b35906020811061251b575090565b6000199060200360031b1b1690565b91906040519061253982610e77565b819360008352116101d35760206000910152565b92919261255982611f74565b916125676040519384610ec9565b8294818452818301116101d3578281602093846000960137010152565b929190600184036125ae576121f9935060581b600160581b600160f81b0316600160f81b176138a1565b600284036125c9576121f993506001600160a01b0316613857565b909190600384036125f857506121f9925080806125ec6105c96125f29486611a1b565b93611a29565b916137fd565b91926004810361267e57506121f99261264b91612624600080516020614fab8339815191525460581b90565b612630611c2582611b7a565b6001600160a01b03868116911614612651575b50369161254d565b9061374e565b61265d61267891611b7a565b8054640100000000600160c01b031916640100000000179055565b38612643565b600581036127015750600080516020614fab8339815191525460581b5b6126ae6126a88386611a65565b9061250d565b906001600160f81b03198116600160f91b146126d6575b50506121f99261264b91369161254d565b60081b6001600160e01b031916146126ef5738806126c5565b6040516313002bdd60e31b8152600490fd5b6006036124e857600080516020614fab8339815191525460581b61269b565b6040519061272d82610e92565b60006020838281520152565b61274d818060081b918160301b9160501b90565b929091600160f81b916001600160f81b0319919082168381141590816127f1575b816127e6575b816127d7575b506127cd57169081141590816127c3575b506127bc576001600160e01b0319166127b6576001600160501b0319166127b157600190565b600090565b50600090565b5050600090565b905015153861278b565b5050505050600090565b607f60f91b141590503861277a565b838114159150612774565b801515915061276e565b9161280b916101e39594936138a1565b613b57565b906121f992916139ed565b600711156127b157600190565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460408051338152346020820152a1565b6128766128716000356001600160e01b031916611cf8565b6120a8565b80516001600160a01b03908116918260008161289e57604051631cd4b64760e21b8152600490fd5b5060016060940361297c575b5060408101516001600160f81b03199081168061293257505060208101516001936128fb939290916128e4906001600160a01b0316613bb4565b9290929586939586935b516001600160a01b031690565b94851603612920575b505050501560001461291857602081519101fd5b602081519101f35b6129299361335f565b38828282612904565b9192910361296a5760208201516001936128fb93909161295c906001600160a01b03163690613311565b9290929586939586936128ee565b604051632d6a6bb760e01b8152600490fd5b61298b91935036903490613232565b91386128aa565b6001600160a01b03166000908152600080516020614f8b8339815191526020526040902090565b60207f6789ec0c85d6458d897a36a70129b101f8b4d84c6e218046c3107373dbcbae8891600080516020614fab8339815191528160581c6001600160581b0360a81b825416179055604051906001600160581b0319168152a1565b9193909294612a2f612a2584611b7a565b5463ffffffff1690565b93600080516020614fab83398151915294612a52865463ffffffff9060a81c1690565b63ffffffff809281808416911614612bc7575b50506020820180516001600160a01b0397919291612a9291891615612bbe575b5460a81c63ffffffff1690565b81612aa46106ec865163ffffffff1690565b91161490811591612b94575b50612b82576128ee612aff92612ac587611b7a565b815181546020938401516001600160c01b031990911663ffffffff9290921691909117921b640100000000600160c01b0316919091179055565b91600185841603612b71575b5050506001600160f81b03198116600160f81b8103612b55575060581c1691823b156101d3576121ea92600092836040518096819582946306d61fe760e41b845260048401612263565b909350600160f91b141590506103a9576101e39160081b613cf3565b612b7a926135e2565b388080612b0b565b604051633ab3447f60e11b8152600490fd5b9050612ba2612a2587611b7a565b90612bb46106ec855163ffffffff1690565b9116101538612ab0565b60018452612a85565b600080516020614fab833981519152805463ffffffff60a81b19166001939093019190911660a81b63ffffffff60a81b169190911790553881612a65565b9182358060f81c80600014612c4b5780600114612c3e57600214612c2857600080fd5b6001600160d81b03191692600501916004190190565b5092601501916014190190565b5050600160009301916000190190565b9092608092611d7d9694835260018060a01b0316602083015260408201528160608201520191611d80565b909192612ca594612c9991858585613f53565b94929391969096614047565b509065ffffffffffff8091164210918215612d2b575b5050612d1857612cf9612ccf602096612d37565b60405163392dffaf60e01b8152978896879586959193916001600160e01b03191660048701612c5b565b03916001600160a01b03165afa90811561089057600091611e64575090565b506001600160e01b031995945050505050565b16421190503880612cbb565b611d7d9060405160208101917f1547321c374afde8a591d972a084b071c594c275e36724931ff96c25f2999c838352604082015260408152612d7881610e5c565b519020614070565b90818060081b9160ff839260f01c16600214612d9857565b6001600160d81b031983169150565b9080601f830112156101d357816020611d7d9335910161254d565b9190610120838203126101d357612dd7610ef7565b92612de1816101d8565b8452602081013560208501526040810135916001600160401b03928381116101d35781612e0f918401612da7565b604086015260608201358381116101d35781612e2c918401612da7565b60608601526080820135608086015260a082013560a086015260c082013560c086015260e08201358381116101d35781612e67918401612da7565b60e086015261010092838301359081116101d357612e859201612da7565b90830152565b908160209103126101d3575190565b80516001600160a01b03168252611d7d9190612f18612ee8612ed661012060208501516020870152604085015190806040880152860190610bef565b60608401518582036060870152610bef565b6080830151608085015260a083015160a085015260c083015160c085015260e083015184820360e0860152610bef565b916101008092015191818403910152610bef565b939291612f49906040928652606060208701526060860190612e9a565b930152565b929190612f49602091604086526040860190612e9a565b929092600092612f753682612dc2565b916101009182810191612f888383611f2a565b90949093600160f81b936001600160f81b031993841685146130d1575b505050871603613032575050604051639700320360e01b815293602092859283916000918391612fd89160048401612f4e565b039260581c6001600160a01b03165af190811561089057611d7d92600092613001575b5061456e565b61302491925060203d60201161302b575b61301c8183610ec9565b810190612e8b565b9038612ffb565b503d613012565b909460081b93909291600160f01b61304f611eae611ea788611d30565b166130bf57600061307061306a60209661309a99858a61436e565b9461456e565b604051630ccab7a160e01b8152979096889586948593926001600160e01b03191660048501612f2c565b03926001600160a01b03165af190811561089057611d7d92600092613001575061456e565b6040516314b9743f60e01b8152600490fd5b909195506130ed9398506130e6929450611f2a565b9088614184565b969192909361310085899599369161254d565b90860152388080612fa5565b600080516020614fab83398151915280549163ffffffff92600a848260a81c1601908482116131d65782851691851682116131c45760c81c84161015612b8257600080516020614fab833981519152805463ffffffff60c81b191660c89290921b63ffffffff60c81b1691909117905554818160c81c1691829160a81c16106131925750565b600080516020614fab833981519152805463ffffffff60a81b191660a89290921b63ffffffff60a81b16919091179055565b60405163e60fd64760e01b8152600490fd5b634e487b7160e01b600052601160045260246000fd5b6040516131f881610e92565b600681526512d95c9b995b60d21b60208201529060405161321881610e92565b600a815269302e332e302d6265746160b01b602082015290565b60405163d68f602560e01b815233600482015260248101929092526060604483015260648201839052600092839183918290849060849083908084838501378181018301849052601f01601f191681010301926001600160a01b03165af19182156108905780926132a257505090565b611d7d92503d8091833e6108af8183610ec9565b600092836132dd95936040519687958694859363d68f602560e01b85523360048601611da1565b03926001600160a01b03165af1908115610890576000916132fc575090565b611d7d91503d806000833e6108af8183610ec9565b60009060405192808385378338925af4913d82523d6000602084013e60203d830101604052565b60009192806040519485378338925af4913d82523d6000602084013e60203d830101604052565b919290916001600160a01b0316803b156101d3576133a2600080946133bb60405197889687958694635565eb9560e11b8652606060048701526064860190610bef565b9115156024850152838203600319016044850152610bef565b03925af18015610890576133cc5750565b6101e390610e44565b634e487b7160e01b600052603260045260246000fd5b8051156133f85760200190565b6133d5565b80518210156133f85760209160051b010190565b908210156133f85761024d9160051b810190611f2a565b96959192939694909460005b86811061344657505050505050509050565b806134878a60019360051b85013561345d81610277565b6134738461346b818c6133fd565b51938c613411565b9061347f868b8b613411565b949093612a14565b01613434565b90156133f85790565b6001600160a01b039391929190848316156135d9575b6134b590611cf8565b946134e16134d46134c6838561348d565b356001600160f81b03191690565b6001600160f81b03191690565b946001600160f81b0319808716806135ba575050908061350392861693611a73565b823b156101d35761352e92600092836040518096819582946306d61fe760e41b845260048401612263565b03925af19485156108905761356a61358a936001936101e3986135a7575b505b82546001600160a01b0319166001600160a01b03909116178255565b0180546001600160a01b0319166001600160a01b03909316929092178255565b805460ff60a01b191660589290921c60ff60a01b16919091179055565b8061088a6135b492610e44565b3861354c565b92509250509491940361296a57600161358a9161356a6101e39661354e565b600192506134ac565b6001600160a01b031691821580156136a5575b6136a05760405163d60b347f60e01b8152306004820152602081602481875afa90811561089057600091613681575b501561364c576001600160f81b0319806136416134c6848661348d565b161461364c57505050565b8061365692611a73565b823b156101d3576121ea92600092836040518096819582946306d61fe760e41b845260048401612263565b61369a915060203d6020116108f8576108ea8183610ec9565b38613624565b505050565b50600183146135f5565b919392916001600160a01b039081841615613734575b166000818152600080516020614f8b8339815191526020526040812080546001600160a01b0319166001600160a01b0390951694909417909355803b15613730576133bb9394836040518096819582946306d61fe760e41b8452602060048501526024840191611d80565b8280fd5b600193506136c5565b906020611d7d928181520190610bef565b60407f2b82f87bf66300af618a9621d3f221edfab735f5bacb4e004cce1b62375396c3919392935a8251956137ae876137a06020820193638a91b0e360e01b8552602060248401526044830190610bef565b03601f198101895288610ec9565b6000918291828587519a6137c18c610e77565b828c525193f1943d90816137f4575b6020818360009352013e81516001600160a01b0390911681528415156020820152a1565b600091506137d0565b61380d6138409194939294611cf8565b80546001600160a01b031981168255600190910180546001600160a01b0392831696919492169161264b9136919061254d565b5080546001600160a81b03191660ff60a01b179055565b6001600160a01b039081166000818152600080516020614f8b8339815191526020526040902080546001600160a01b0319811690915590911693926121f99261264b91369161254d565b909291926138d36138c1600080516020614fab8339815191525460581b90565b6001600160581b031980851691161490565b6126ef576138e3611c2583611b7a565b936139046138f084611b7a565b8054640100000000600160c01b0319169055565b6001600160f81b03198316600160f81b810361393d57506121f9929161392b91369161254d565b9060581c6001600160a01b031661374e565b600160f91b141590506103a9576101e39160081b614609565b60405161396281610e92565b600181528060005b6020808210156139855790606060209282850101520161396a565b50505090565b9061399582610f04565b6139a26040519182610ec9565b82815280926139b3601f1991610f04565b019060005b8281106139c457505050565b8060606020809385010152016139b8565b906040611d7d92600081528160208201520190610bef565b600881901b926001600160f81b031992600160f81b929091906060908516808601613a7f57505050613a26908035019060208201913590565b929093168015600014613a3e575050611d7d91614887565b03613a4c57611d7d916147ca565b60405162461bcd60e51b815260206004820152600b60248201526a155b9cdd5c1c1bdc9d195960aa1b6044820152606490fd5b95969591929180613b2257505090613a969161471e565b93909294613aa2613956565b971680613ac7575050613ab49361476f565b613abd836133eb565b526121f9826133eb565b03613a4c57613ad593614746565b613ade846133eb565b526101e3577fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb7613b1d613b10846133eb565b51604051918291826139d5565b0390a1565b909650919390925003613a4c57613b4d8280613b476122f16122eb613b539787611a57565b93611a90565b91613338565b5050565b6001600160a01b03169081158015613baa575b6136a05782156133f8576001600160f81b03198135811614613b8b57505050565b826001116101d3576121f99261264b913691600019019060010161254d565b5060018214613b6a565b600080604092835136810185523683823784516014810186523360601b90528260143601925af1918151913d83523d6000602085013e60203d8401019052565b8054906000906000815582613c0857505050565b6000526020600020918201915b828110613c2157505050565b818155600101613c15565b6001600160501b03199035818116939260168110613c4957505050565b60160360031b82901b16169150565b80548210156133f85760005260206000200190600090565b805468010000000000000000811015610e5757613c9291600182018155613c58565b819291549060031b9160501c821b9160018060b01b03901b1916179055565b9092809260209483528483013701016000815290565b6001600160f01b03199035818116939260028110613ce457505050565b60020360031b82901b16169150565b90803501906020808301923560fe81118015613f4b575b613f3957600180613d1a85611d30565b0154613f20575b60001982019260005b848110613e435750613e089594613e16949093613dec9350613de59250613d85613dd6613dbd611eae613db7613db187878e613dac8e613d7d611c626122f16122eb613d77898989613411565b90611abb565b9a8b91611d30565b805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b613411565b90611ae9565b90613cc7565b613dc688611d30565b9060f01c61ffff19825416179055565b6001600160a01b031696613411565b8091611acc565b6040519586939092906001600160e01b03191660208501613cb1565b03601f198101845283610ec9565b803b156101d3576040516306d61fe760e41b81529160009183918290849082906121ea906004830161373d565b613e9a611c62611c626122f16122eb613d77868a8e613dac8f613e668e91611d30565b01613e94613e87613e81613e7b888888613411565b90611aad565b90613c2c565b6001600160501b03191690565b90613c70565b90613ea9613de582878b613411565b90613eca604091613e0883519485928d63ffffffff60e01b168a8501613cb1565b833b156101d3576000938492613ef492519586809481936306d61fe760e41b83526004830161373d565b03925af1918215610890578492613f0d575b5001613d2a565b8061088a613f1a92610e44565b38613f06565b613f346001613f2e86611d30565b01613bf4565b613d21565b60405163b62d956d60e01b8152600490fd5b508015613d0a565b8484613fd692613fc1979694989560405191613f6e83610ead565b613fd060009b8c92838652836020870152604086019d8e52606086019c8d918583528560808901528560a0890152606060c089015260e088019286845261010089019687529063ffffffff60e01b169052565b6001600160a01b039091169052565b52614920565b60ff80613fef613fe96134c6878661348d565b60f81c90565b16036140355761401e614009846140199561402e94611a73565b9490955163ffffffff60e01b1690565b611d30565b5460101c6001600160a01b031690565b9351929190565b60405163b32eeb6960e01b8152600490fd5b8065ffffffffffff91828160a01c16928315600114614068575b5060d01c92565b925038614061565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f0000000000000000000000000000000000000000000000000000000000000000461416156140fd575b671901000000000000600052601a52603a526042601820906000603a52565b5060a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000006040820152466060820152306080820152206140de565b91929092614190612720565b9061419b9085611a57565b6141a491612274565b60601c60208201819052600080516020614fab8339815191525460a81c63ffffffff1680835260349560148082013582018089019791959294919360548601358601808b019490880135939092878c01358801808a013593908d0192918a0135918891908d8436906142159261254d565b80519060200120913661422990888861254d565b805190602001203661423c908b8d61254d565b8051602091820120604080517fb17ab1224aca0d4255ef8161acaf2ac121b8faa32a4b2258c912cc5f8308c5059381019384526001600160581b0319989098169088015263ffffffff9390931660608701526001600160a01b0393909316608086015260a085019390935260c084019290925260e080840192909252908252906142c861010082610ec9565b5190206142d490614070565b607489013589018d8b82013591016142eb92614b72565b9a6142f69488612a14565b6143008183614d0f565b61430991611a1b565b61431291611b4e565b61431b91614ec9565b6094810135019293830192013590565b6001600160c01b0319903581811693926008811061434857505050565b60080360031b82901b16169150565b604090611d7d939281528160208201520190612e9a565b60009493916001868161438085611d30565b016000835b6143cd575b5050505060ff806143a1613fe96134c6878961348d565b1603614035576101006143c56143be8561401e96611d7d98611a73565b369161254d565b910152611d30565b8197969754811015614566576143fe6143f66143e98385613c58565b90549060031b1c60501b90565b908160501c90565b98909761441a614414613fe96134c6858561348d565b60ff1690565b808403614535575090818161445361444761444161443b8461447098611af7565b9061432b565b60c01c90565b6001600160401b031690565b600901916144656143be848484611b08565b6101008b0152611b36565b989098975b600160f01b161561448a575b50830183614385565b99866144c7929b60018060a01b036040918983518092633894f6e760e11b8252818b868260209c8d9760049c63ffffffff60e01b168d8401614357565b0393165af1958615610890578896614516575b505084166144fc5750506144f285949392859261456e565b9a91929350614481565b51631f24c1fb60e11b81529081018c815281906020010390fd5b61452d929650803d1061302b5761301c8183610ec9565b9338806144da565b909991989083111561455357604051630760bdcf60e11b8152600490fd5b61455b6124fa565b610100880152614475565b96959661438a565b6001600160a01b03818318811615606083811b848601821b9081149186901b14171760011461459f57505050600190565b65ffffffffffff60a01b80831693906001600160d01b031984811691908316908615614601575b83811680156145fa575b8781109088180280881897146145f2575b508181119082180218921716171790565b9550386145e1565b50806145d0565b9550856145c6565b9190803501916020906020840193359061462281611d30565b9260019060018501906001825401850361470c57906000835b61469e575b5050505061468d9161468882613dec6101e397986146656001613f2e613e0898611d30565b875461467c9060101c6001600160a01b0316611c62565b94600019810191613411565b61374e565b5080546001600160b01b0319169055565b8154811015614707579083826146fd613e088c6146ef8a6146d4868e6146cc6143f66143e98c9f9e8e613c58565b969050613411565b6040519586939092906001600160e01b0319168c8501613cb1565b6001600160a01b031661374e565b500190919261463b565b614640565b60405163013dcc8d60e31b8152600490fd5b90806014116101d357813560601c92816034116101d357601483013592603401916033190190565b906000928491604051958692833738935af1913d82523d6000602084013e60203d830101604052565b9092600092819594604051968792833738935af11561479e573d82523d6000602084013e60203d830101604052565b503d6000823e3d90fd5b91908110156133f85760051b81013590605e19813603018212156101d3570190565b9190916147d68361398b565b9260005b8181106147e657505050565b806147f460019284866147a8565b80356147ff816101c2565b6148206020809360409361481585830183611f2a565b939092013590614746565b61482a858b6133fd565b5215614839575b5050016147da565b7fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb79161487d614868858b6133fd565b51838051948594888652850152830190610bef565b0390a13880614831565b9190916148938361398b565b9260005b8181106148a357505050565b806148d960206148b660019486886147a8565b80356148c1816101c2565b6148ce6040830183611f2a565b93909201359061476f565b6148e382886133fd565b526148ee81876133fd565b5001614897565b9092608092611d7d9594835260018060a01b0316602083015260408201528160608201520190610bef565b919060608301600193600161493f614019845163ffffffff60e01b1690565b01936000936000958054965b87811061495d57505050505050505050565b8061496f6143f66143e98c9486613c58565b6001600160a01b031660a0880190815260808801959091614998906001600160f01b0319168752565b6149b26149ab613fe96134c68a8561348d565b60ff168952565b6149c0614414895160ff1690565b808403614b3a57508681816149e561444761444161443b614a399c9d614a0c98611af7565b60208c018181528c60c0614a016143be60099586018789611b08565b910152510191611b36565b959095965b51600160f11b90614a2b906001600160f01b031916611eae565b166001600160f01b03191690565b15614a46575b500161494b565b51909150614a5c906001600160a01b0316611c62565b8651614a8090614a73906001600160e01b03191681565b6001600160e01b03191690565b60e08701519091906001600160a01b031691614ac56101008901519360c08a01516040948551808095819463184dfdbb60e11b835260209a8b9760049a8b86016148f5565b03915afa938415610890578b94614b1b575b50506001600160a01b038316614b005750860180518b9392614af89161456e565b905238614a3f565b9051631f24c1fb60e11b815290810183815281906020010390fd5b614b32929450803d1061302b5761301c8183610ec9565b913880614ad7565b839196945010600014614b5957604051630760bdcf60e11b8152600490fd5b614a398b93614b68368861252a565b60c08a0152614a11565b600080516020614fab8339815191525460009493929060581b916001600160f81b03198316600160f81b8103614c355750604051637aa8f17760e11b8152936020938593909284928392614bca923060048601611da1565b039160581c6001600160a01b03165afa90811561089057600091614c16575b505b6001600160e01b0319166374eca2c160e11b01614c0457565b6040516362467c7760e11b8152600490fd5b614c2f915060203d602011611e8657611e7e8183610ec9565b38614be9565b919550929190600160f91b036103a957602091614c589160081b95843088613f53565b60405163392dffaf60e01b81529297929586949385938493614c8b93909230906001600160e01b03191660048701612c5b565b03916001600160a01b03165afa90811561089057600091614cad575b50614beb565b614cc6915060203d602011611e8657611e7e8183610ec9565b38614ca7565b15614cd357565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c69642073656c6563746f724461746160601b6044820152606490fd5b614d1c6105c98383611a1b565b906004831015614d2b57505050565b602c8310614ebb57614d46611c626122f16122eb8685611a46565b602c8201358201602c604c820191013591604c840135840194614d80614d726134d46134c6878761348d565b6001600160f81b0319161590565b80614e2a575b94614dc761242895611c6295614dcc956101e39b956122f19a614ddc575b614db7611c626122f16122eb8a8a611b25565b916001600160a01b031690613496565b611b25565b602c86013595604c019491612274565b614e25606c8701358701614e1f602c604c830192013580614e06611c626122f16122eb8488611a57565b93614e1a856001600160a01b038a16614f2e565b611a90565b916135e2565b614da4565b5091939092956040519163ecd0596160e01b835260208380614e5460048201906002602083019252565b03816001600160a01b0389165afa928315610890576101e3986122f19761242897611c6297614dcc97614dc795600091614e9c575b50959a50959b5095509550955050614d86565b614eb5915060203d6020116108f8576108ea8183610ec9565b38614e89565b505060046101e39114614ccc565b7f9d17cd6d095ac90a655405ab29f30a7ee7e88ef3974c1bf7544bf591043bb71a91606091614efb82610b4483611bb3565b600160ff198254161790556040519163ffffffff60e01b1682526001600160581b031916602082015260016040820152a1565b6101e391906001600160a01b039081831615614f81575b16600052600080516020614f8b83398151915260205260406000209060018060a01b03166bffffffffffffffffffffffff60a01b825416179055565b60019250614f4556fe1bbee3173dbdc223633258c9f337a0fff8115f206d302bea0ed3eac003b68b867bcaa2ced2a71450ed5a9a1b4848e8e5206dbc3f06011e595f7f55428cc6f84f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032"; + +bytes constant STAKER_CODE = + hex"0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5060405161080838038061080883398101604081905261002f9161007a565b6100388161003e565b506100aa565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b60006020828403121561008c57600080fd5b81516001600160a01b03811681146100a357600080fd5b9392505050565b61074f806100b96000396000f3fe6080604052600436106100c25760003560e01c8063b36f97051161007f578063d8b964e611610059578063d8b964e614610172578063f04e283e146101b2578063f2fde38b146101c5578063fee81cf4146101d857600080fd5b8063b36f970514610139578063c5265d5d1461014c578063c7e55f3e1461015f57600080fd5b806325692962146100c75780634a1ce599146100d157806354d1f13d146100e45780636e7dbabb146100ec578063715018a6146100ff5780638da5cb5b14610107575b600080fd5b6100cf610219565b005b6100cf6100df3660046105a7565b610269565b6100cf6102c7565b6100cf6100fa3660046105cb565b610303565b6100cf610336565b34801561011357600080fd5b50638b78c6d819545b6040516001600160a01b0390911681526020015b60405180910390f35b6100cf610147366004610609565b61034a565b61011c61015a366004610637565b6103b1565b6100cf61016d3660046106c2565b610466565b34801561017e57600080fd5b506101a261018d3660046105a7565b60006020819052908152604090205460ff1681565b6040519015158152602001610130565b6100cf6101c03660046105a7565b6104d2565b6100cf6101d33660046105a7565b610512565b3480156101e457600080fd5b5061020b6101f33660046105a7565b63389a75e1600c908152600091909152602090205490565b604051908152602001610130565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b610271610539565b806001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156102ac57600080fd5b505af11580156102c0573d6000803e3d6000fd5b5050505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61030b610539565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b61033e610539565b6103486000610554565b565b610352610539565b60405163611d2e7560e11b81526001600160a01b03828116600483015283169063c23a5cea90602401600060405180830381600087803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b505050505050565b6001600160a01b03841660009081526020819052604081205460ff166103ea57604051633220d5f360e21b815260040160405180910390fd5b604051633a9b44eb60e21b81526001600160a01b0386169063ea6d13ac9061041a908790879087906004016106f9565b6020604051808303816000875af1158015610439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045d9190610732565b95945050505050565b61046e610539565b604051621cb65b60e51b815263ffffffff821660048201526001600160a01b03831690630396cb609034906024016000604051808303818588803b1580156104b557600080fd5b505af11580156104c9573d6000803e3d6000fd5b50505050505050565b6104da610539565b63389a75e1600c52806000526020600c20805442111561050257636f5e88186000526004601cfd5b6000905561050f81610554565b50565b61051a610539565b8060601b61053057637448fbae6000526004601cfd5b61050f81610554565b638b78c6d819543314610348576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b6001600160a01b038116811461050f57600080fd5b6000602082840312156105b957600080fd5b81356105c481610592565b9392505050565b600080604083850312156105de57600080fd5b82356105e981610592565b9150602083013580151581146105fe57600080fd5b809150509250929050565b6000806040838503121561061c57600080fd5b823561062781610592565b915060208301356105fe81610592565b6000806000806060858703121561064d57600080fd5b843561065881610592565b9350602085013567ffffffffffffffff8082111561067557600080fd5b818701915087601f83011261068957600080fd5b81358181111561069857600080fd5b8860208285010111156106aa57600080fd5b95986020929092019750949560400135945092505050565b600080604083850312156106d557600080fd5b82356106e081610592565b9150602083013563ffffffff811681146105fe57600080fd5b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b60006020828403121561074457600080fd5b81516105c481610592560000000000000000000000009775137314fe595c943712b0b336327dfa80ae8a"; + +bytes constant KERNEL_FACTORY_CODE = + hex"000000000000000000000000000000000000000000000000000000000000000060a03461007757601f61047038819003918201601f19168301916001600160401b0383118484101761007c5780849260209460405283398101031261007757516001600160a01b0381168103610077576080526040516103dd9081610093823960805181818160d10152818161023401526102f00152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600490600436101561001757600080fd5b600092833560e01c90816348aac39214610267575080635c60da1b1461021f5763ea6d13ac1461004657600080fd5b61004f36610352565b94919083519560209661007a86828a81019486888737868201908c820152038a8101845201826103a5565b5190209483958551917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076875261600989527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f97602192605f60212060358601523060581b855260ff855380601586015260558520993415948b3b156101fe57505050506001916101f85785388180348c5af1156101ed57505b818652846060521561016b575b505091516001600160a01b0390931683525050f35b8082859493859483378101838152039082875af1903d156101e7573d9067ffffffffffffffff82116101d3578351916101ad601f8201601f19168801846103a5565b8252853d92013e5b156101c35738808080610156565b5163487e630960e11b8152600490fd5b634e487b7160e01b81526041600452602490fd5b506101b5565b63b12d13eb8652601cfd5b50610149565b91939a5091935034f59687156102145750610149565b63301164258652601cfd5b838234610263578160031936011261026357517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b848334610263578260209361029d8361027f36610352565b90808a879498019788378201908982015203878101845201826103a5565b51902081517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076835261600985527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f6021209083528360605260ff84536035523060601b6001526015526055822091603552519060018060a01b03168152f35b9060406003198301126103a05760043567ffffffffffffffff928382116103a057806023830112156103a05781600401359384116103a057602484830101116103a057602401919060243590565b600080fd5b90601f8019910116810190811067ffffffffffffffff8211176103c757604052565b634e487b7160e01b600052604160045260246000fd00000000000000000000000094f097e1ebeb4eca3aae54cabb08905b239a7d27"; + +contract Deploy is Script { + address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; + address constant ENTRYPOINT_0_7_ADDR = 0x0000000071727De22E5E9d8BAf0edAc6f37da032; + address constant CREATE2_PROXY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; + + address constant EXPECTED_STAKER = 0xd703aaE79538628d27099B8c4f621bE4CCd142d5; + address constant EXPECTED_KERNEL = 0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27; + address constant EXPECTED_FACTORY = 0x6723b44Abeec4E71eBE3232BD5B455805baDD22f; + + function run() external { + vm.startBroadcast(DEPLOYER); + FactoryStaker staker = FactoryStaker(payable(EXPECTED_STAKER)); + if (address(staker).code.length == 0) { + (bool success,) = CREATE2_PROXY.call(STAKER_CODE); + require(success); + console.log("Deployed staker"); + } + console.log("Factory Staker :", address(staker)); + + Kernel kernel = Kernel(payable(EXPECTED_KERNEL)); + if (EXPECTED_KERNEL.code.length == 0) { + (bool success,) = CREATE2_PROXY.call(KERNEL_CODE); + require(success); + console.log("Deployed kernel"); + } + console.log("Kernel :", address(kernel)); + + KernelFactory factory = KernelFactory(EXPECTED_FACTORY); + if (EXPECTED_FACTORY.code.length == 0) { + (bool success,) = CREATE2_PROXY.call(KERNEL_FACTORY_CODE); + require(success); + console.log("Deployed factory"); + } + console.log("Factory :", address(factory)); + + if (!staker.approved(factory)) { + staker.approveFactory(factory, true); + console.log("Approved"); + } + IEntryPoint entryPoint = IEntryPoint(ENTRYPOINT_0_7_ADDR); + IStakeManager.DepositInfo memory info = entryPoint.getDepositInfo(address(staker)); + if (info.stake < 1e17) { + staker.stake{value: 1e17 - info.stake}(IEntryPoint(ENTRYPOINT_0_7_ADDR), 86400); + } + vm.stopBroadcast(); + } +} diff --git a/script/DeployDeterministic.s.sol b/script/DeployDeterministic.s.sol deleted file mode 100644 index caae47ac..00000000 --- a/script/DeployDeterministic.s.sol +++ /dev/null @@ -1,40 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/factory/KernelFactory.sol"; -import "forge-std/Script.sol"; - -import "./deterministic/ECDSAValidator.s.sol"; -import "./deterministic/Factory.s.sol"; -import "./deterministic/SessionKey.s.sol"; -import "./deterministic/Kernel2_2.s.sol"; -import "./deterministic/Kernel2_3.s.sol"; - -contract DeployDeterministic is Script { - address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; - - function run() external { - vm.startBroadcast(DEPLOYER); - KernelFactory factory = KernelFactory(payable(FactoryDeploy.deploy())); - - ECDSAValidatorDeploy.deploy(); - SessionKeyDeploy.deploy(); - - //(address k22, address k22lite) = Kernel_2_2_Deploy.deploy(); - - //if(!factory.isAllowedImplementation(k22)) { - // factory.setImplementation(k22, true); - //} - //if(!factory.isAllowedImplementation(k22lite)) { - // factory.setImplementation(k22lite, true); - //} - - (address k23, address k23lite) = Kernel_2_3_Deploy.deploy(); - if (!factory.isAllowedImplementation(k23)) { - factory.setImplementation(k23, true); - } - if (!factory.isAllowedImplementation(k23lite)) { - factory.setImplementation(k23lite, true); - } - vm.stopBroadcast(); - } -} diff --git a/script/DeployECDSA.s.sol b/script/DeployECDSA.s.sol new file mode 100644 index 00000000..fc12961f --- /dev/null +++ b/script/DeployECDSA.s.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.8.0; + +import "forge-std/Script.sol"; +import "forge-std/console.sol"; + +import "src/validator/ECDSAValidator.sol"; + +contract DeployValidators is Script { + address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; + + function run() external { + vm.startBroadcast(DEPLOYER); + ECDSAValidator validator = new ECDSAValidator{salt: 0}(); + console.log("ECDSA :", address(validator)); + vm.stopBroadcast(); + } +} diff --git a/script/DeployECDSAValidator.s.sol b/script/DeployECDSAValidator.s.sol deleted file mode 100644 index ad57c0bf..00000000 --- a/script/DeployECDSAValidator.s.sol +++ /dev/null @@ -1,24 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/factory/KernelFactory.sol"; -import "src/validator/ECDSAValidator.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract DeployKernel is Script { - address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; - address constant ENTRYPOINT_0_6 = 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789; - address constant EXPECTED_VALIDATOR_ADDRESS = 0xd9AB5096a832b9ce79914329DAEE236f8Eea0390; - - function run() public { - uint256 key = vm.envUint("DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - if (EXPECTED_VALIDATOR_ADDRESS.code.length == 0) { - ECDSAValidator validator = new ECDSAValidator{salt: 0}(); - console.log("validator address: %s", address(validator)); - } else { - console.log("validator address: %s", EXPECTED_VALIDATOR_ADDRESS); - } - vm.stopBroadcast(); - } -} diff --git a/script/DeployKernel.s.sol b/script/DeployKernel.s.sol deleted file mode 100644 index d46570bf..00000000 --- a/script/DeployKernel.s.sol +++ /dev/null @@ -1,58 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/factory/KernelFactory.sol"; -import "I4337/interfaces/IStakeManager.sol"; -import "src/Kernel.sol"; -import "src/lite/KernelLiteECDSA.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; -import "src/validator/ECDSAValidator.sol"; - -contract DeployKernel is Script { - address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; - address constant ENTRYPOINT_0_6 = 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789; - address constant ECDSAVALIDATOR = 0xd9AB5096a832b9ce79914329DAEE236f8Eea0390; - address constant EXPECTED_KERNEL_ADDRESS = 0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5; - address constant EXPECTED_KERNEL_LITE_ADDRESS = 0xbEdb61Be086F3f15eE911Cc9AB3EEa945DEbFa96; - address payable constant EXPECTED_KERNEL_FACTORY_ADDRESS = payable(0x5de4839a76cf55d0c90e2061ef4386d962E15ae3); - - function run() public { - uint256 key = vm.envUint("DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - KernelFactory factory; - if (EXPECTED_KERNEL_FACTORY_ADDRESS.code.length == 0) { - factory = new KernelFactory{salt: 0}(DEPLOYER, IEntryPoint(ENTRYPOINT_0_6)); - console.log("KernelFactory address: %s", address(factory)); - } else { - factory = KernelFactory(EXPECTED_KERNEL_FACTORY_ADDRESS); - } - if (EXPECTED_KERNEL_LITE_ADDRESS.code.length == 0) { - if (address(ECDSAVALIDATOR).code.length == 0) { - console.log("ECDSAVALIDATOR NOT DEPLOYED"); - } else { - KernelLiteECDSA kernellite; - kernellite = new KernelLiteECDSA{salt: 0}(IEntryPoint(ENTRYPOINT_0_6), IKernelValidator(ECDSAVALIDATOR)); - console.log("Kernel Lite address: %s", address(kernellite)); - } - } - if (factory.isAllowedImplementation(EXPECTED_KERNEL_LITE_ADDRESS) == false) { - console.log("Registering kernellite implementation"); - factory.setImplementation(EXPECTED_KERNEL_LITE_ADDRESS, true); - } - if (EXPECTED_KERNEL_ADDRESS.code.length == 0) { - Kernel kernel; - kernel = new Kernel{salt: 0}(IEntryPoint(ENTRYPOINT_0_6)); - console.log("Kernel address: %s", address(kernel)); - } - if (factory.isAllowedImplementation(EXPECTED_KERNEL_ADDRESS) == false) { - console.log("Registering kernel implementation"); - factory.setImplementation(EXPECTED_KERNEL_ADDRESS, true); - } - IEntryPoint entryPoint = IEntryPoint(ENTRYPOINT_0_6); - IStakeManager.DepositInfo memory info = entryPoint.getDepositInfo(address(factory)); - if (info.stake == 0) { - console.log("Need to stake to factory"); - } - vm.stopBroadcast(); - } -} diff --git a/script/DeployKernelInitial.s.sol b/script/DeployKernelInitial.s.sol deleted file mode 100644 index 45c1e4e3..00000000 --- a/script/DeployKernelInitial.s.sol +++ /dev/null @@ -1,41 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/factory/KernelFactory.sol"; -import "I4337/interfaces/IStakeManager.sol"; -import "src/Kernel.sol"; -import "src/lite/KernelLiteECDSA.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; -import "src/validator/ECDSAValidator.sol"; - -contract DeployKernelInitial is Script { - address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; - address constant ENTRYPOINT_0_6 = 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789; - address constant ECDSAVALIDATOR = 0xd9AB5096a832b9ce79914329DAEE236f8Eea0390; - address payable constant EXPECTED_KERNEL_FACTORY_ADDRESS = payable(0x5de4839a76cf55d0c90e2061ef4386d962E15ae3); - - function run() public { - uint256 key = vm.envUint("DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - KernelFactory factory; - if (EXPECTED_KERNEL_FACTORY_ADDRESS.code.length == 0) { - factory = new KernelFactory{salt: 0}(DEPLOYER, IEntryPoint(ENTRYPOINT_0_6)); - console.log("KernelFactory address: %s", address(factory)); - } else { - factory = KernelFactory(EXPECTED_KERNEL_FACTORY_ADDRESS); - } - Kernel kernel; - kernel = new Kernel{salt: 0}(IEntryPoint(ENTRYPOINT_0_6)); - console.log("Kernel address: %s", address(kernel)); - if (factory.isAllowedImplementation(address(kernel)) == false) { - console.log("Registering kernel implementation"); - factory.setImplementation(address(kernel), true); - } - IEntryPoint entryPoint = IEntryPoint(ENTRYPOINT_0_6); - IStakeManager.DepositInfo memory info = entryPoint.getDepositInfo(address(factory)); - if (info.stake == 0) { - console.log("Need to stake to factory"); - } - vm.stopBroadcast(); - } -} diff --git a/script/DeployKillSwitch.s.sol b/script/DeployKillSwitch.s.sol deleted file mode 100644 index 48aa6df9..00000000 --- a/script/DeployKillSwitch.s.sol +++ /dev/null @@ -1,33 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/validator/KillSwitchValidator.sol"; -import "src/executor/KillSwitchAction.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract DeployKillSwitch is Script { - address constant EXPECTED_ADDRESS_KILL_SWITCH_VALIDATOR = 0x7393A7dA58CCfFb78f52adb09705BE6E20F704BC; - address constant EXPECTED_ADDRESS_KILL_SWITCH_ACTION = 0x3f38e479304c7F18F988269a1bDa7d646bd48243; - - function run() public { - uint256 key = vm.envUint("TESTNET_DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - KillSwitchValidator validator; - if (EXPECTED_ADDRESS_KILL_SWITCH_VALIDATOR.code.length == 0) { - console.log("deploying KillSwitchValidator"); - validator = new KillSwitchValidator{salt: 0}(); - console.log("validator address: %s", address(validator)); - } else { - validator = KillSwitchValidator(EXPECTED_ADDRESS_KILL_SWITCH_VALIDATOR); - console.log("validator address: %s", address(EXPECTED_ADDRESS_KILL_SWITCH_VALIDATOR)); - } - if (EXPECTED_ADDRESS_KILL_SWITCH_ACTION.code.length == 0) { - console.log("deploying KillSwitchAction"); - KillSwitchAction action = new KillSwitchAction{salt: 0}(validator); - console.log("KillSwitchAction address: %s", address(action)); - } else { - console.log("KillSwitchAction address: %s", address(EXPECTED_ADDRESS_KILL_SWITCH_ACTION)); - } - vm.stopBroadcast(); - } -} diff --git a/script/DeployModularPermission.s.sol b/script/DeployModularPermission.s.sol deleted file mode 100644 index 839d909d..00000000 --- a/script/DeployModularPermission.s.sol +++ /dev/null @@ -1,74 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/validator/modularPermission/ModularPermissionValidator.sol"; -import "src/validator/modularPermission/signers/ECDSASigner.sol"; -import "src/validator/modularPermission/policies/GasPolicy.sol"; -import "src/validator/modularPermission/policies/SignaturePolicy.sol"; -import "src/validator/modularPermission/policies/SudoPolicy.sol"; -import {MerklePolicy} from "src/validator/modularPermission/policies/MerklePolicy.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract DeployModularPermission is Script { - address constant EXPECTED_MODULAR_PERMISSION_ADDRESS = 0xfdDE9a26b6c3B7ca4b52C5f010d5B9Fb67e09E5A; - address constant EXPECTED_ECDSA_SIGNER_ADDRESS = 0x5569b550050F6537D9ac3329001be7F4C6659Cb0; - address constant EXPECTED_GAS_POLICY_ADDRESS = 0x62868E950Efbb336DCFf033598Ee5E602f0a93cD; - address constant EXPECTED_MERKLE_POLICY_ADDRESS = 0xb808D75B5ACf6B5513eb816d3980C733ae6Be468; - address constant EXPECTED_SIGNATURE_POLICY_ADDRESS = 0xdb5F74349Dd2FB2A09eEc2C6A39e77B68ca2852C; - address constant EXPECTED_SUDO_POLICY_ADDRESS = 0x9262C3A894328f9036Aa7a3f0f2cE8CF684ad20f; - - function run() public { - uint256 key = vm.envUint("TESTNET_DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - - if (EXPECTED_MODULAR_PERMISSION_ADDRESS.code.length == 0) { - console.log("deploying ModularPermissionValidator"); - ModularPermissionValidator validator = new ModularPermissionValidator{salt: 0}(); - console.log("validator address: %s", address(validator)); - } else { - console.log("validator address: %s", address(EXPECTED_MODULAR_PERMISSION_ADDRESS)); - } - - if (EXPECTED_ECDSA_SIGNER_ADDRESS.code.length == 0) { - console.log("deploying ECDSASigner"); - ECDSASigner ecdsaSigner = new ECDSASigner{salt: 0}(); - console.log("ecdsaSigner address: %s", address(ecdsaSigner)); - } else { - console.log("ecdsaSigner address: %s", address(EXPECTED_ECDSA_SIGNER_ADDRESS)); - } - - if (EXPECTED_GAS_POLICY_ADDRESS.code.length == 0) { - console.log("deploying GasPolicy"); - GasPolicy gasPolicy = new GasPolicy{salt: 0}(); - console.log("gasPolicy address: %s", address(gasPolicy)); - } else { - console.log("gasPolicy address: %s", address(EXPECTED_GAS_POLICY_ADDRESS)); - } - - if (EXPECTED_MERKLE_POLICY_ADDRESS.code.length == 0) { - console.log("deploying MerklePolicy"); - MerklePolicy merklePolicy = new MerklePolicy{salt: 0}(); - console.log("merklePolicy address: %s", address(merklePolicy)); - } else { - console.log("merklePolicy address: %s", address(EXPECTED_MERKLE_POLICY_ADDRESS)); - } - - if (EXPECTED_SIGNATURE_POLICY_ADDRESS.code.length == 0) { - console.log("deploying SignaturePolicy"); - SignaturePolicy signturePolicy = new SignaturePolicy{salt: 0}(); - console.log("signturePolicy address: %s", address(signturePolicy)); - } else { - console.log("signturePolicy address: %s", address(EXPECTED_SIGNATURE_POLICY_ADDRESS)); - } - - if (EXPECTED_SUDO_POLICY_ADDRESS.code.length == 0) { - console.log("deploying SudoPolicy"); - SudoPolicy sudoPolicy = new SudoPolicy{salt: 0}(); - console.log("sudoPolicy address: %s", address(sudoPolicy)); - } else { - console.log("sudoPolicy address: %s", address(EXPECTED_SUDO_POLICY_ADDRESS)); - } - - vm.stopBroadcast(); - } -} diff --git a/script/DeployMulticall.s.sol b/script/DeployMulticall.s.sol deleted file mode 100644 index 6f94e870..00000000 --- a/script/DeployMulticall.s.sol +++ /dev/null @@ -1,22 +0,0 @@ -pragma solidity ^0.8.0; - -import "forge-std/Script.sol"; - -contract DeployMultiCall is Script { - address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; - address constant EXPECTED_MULTICALL_ADDRESS = 0x8ae01fCF7c655655fF2c6Ef907b8B4718Ab4e17c; - address constant DETERMINISTIC_DEPLOYER = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - function run() public { - uint256 key = vm.envUint("DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - if (EXPECTED_MULTICALL_ADDRESS.code.length == 0) { - (bool success, bytes memory ret) = DETERMINISTIC_DEPLOYER.call( - hex"000000000000000000000000000000000000000000000000000000000000000060a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea2646970667358221220aee0f2dd047c52784b9c7806e4078197141e146ec66587d8610576db5f8ad20e64736f6c634300080f0033" - ); - } else { - console.log("validator address: %s", EXPECTED_MULTICALL_ADDRESS); - } - vm.stopBroadcast(); - } -} diff --git a/script/DeployRecovery.s.sol b/script/DeployRecovery.s.sol deleted file mode 100644 index dbf9683a..00000000 --- a/script/DeployRecovery.s.sol +++ /dev/null @@ -1,19 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/validator/WeightedECDSAValidator.sol"; -import "src/executor/RecoveryAction.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract DeployRecovery is Script { - function run() public { - address deployer = vm.envAddress("DEPLOYER"); - vm.startBroadcast(deployer); - console.log("Deployer address: ", deployer); - //RecoveryAction action = new RecoveryAction{salt:0}(); - //console.log("Deploying RecoveryAction at address: ", address(action)); - WeightedECDSAValidator validator = new WeightedECDSAValidator{salt: 0}(); - console.log("Deploying WeightedECDSAValidator at address: ", address(validator)); - vm.stopBroadcast(); - } -} diff --git a/script/DeploySessionKey.s.sol b/script/DeploySessionKey.s.sol deleted file mode 100644 index ae2f6129..00000000 --- a/script/DeploySessionKey.s.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/validator/SessionKeyValidator.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract DeploySessionKey is Script { - address constant EXPECTED_ADDRESS = 0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5; - - function run() public { - address deployer = vm.envAddress("DEPLOYER"); - vm.startBroadcast(deployer); - console.log("deploying SessionKeyValidator"); - SessionKeyValidator validator = new SessionKeyValidator{salt: 0}(); - console.log("validator address: %s", address(validator)); - vm.stopBroadcast(); - } -} diff --git a/script/DeployWebAuthnFclValidator.sol b/script/DeployWebAuthnFclValidator.sol deleted file mode 100644 index 94437add..00000000 --- a/script/DeployWebAuthnFclValidator.sol +++ /dev/null @@ -1,22 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/factory/KernelFactory.sol"; -import "src/utils/P256VerifierWrapper.sol"; -import "src/validator/webauthn//WebAuthnFclValidator.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract DeployWebAuthnFclValidator is Script { - function run() public { - uint256 key = vm.envUint("DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - - P256VerifierWrapper p256VerifierWrapper = new P256VerifierWrapper{salt: 0}(); - console.log("p256 wrapper address: %s", address(p256VerifierWrapper)); - - WebAuthnFclValidator validator = new WebAuthnFclValidator{salt: 0}(address(p256VerifierWrapper)); - console.log("validator address: %s", address(validator)); - - vm.stopBroadcast(); - } -} diff --git a/script/DeployWeightedECDSA.s.sol b/script/DeployWeightedECDSA.s.sol deleted file mode 100644 index 1e7e6d13..00000000 --- a/script/DeployWeightedECDSA.s.sol +++ /dev/null @@ -1,31 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/validator/WeightedECDSAValidator.sol"; -import "src/executor/RecoveryAction.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract DeployWeightedECDSA is Script { - address constant EXPECTED_ADDRESS_WEIGHTED_ECDSA_VALIDATOR = 0x4fd47D861c349bD49DC61341a922cb72F9dF7E8d; - address constant EXPECTED_ADDRESS_RECOVERY_ACTION = 0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1; - - function run() public { - uint256 key = vm.envUint("DEPLOYER_PRIVATE_KEY"); - vm.startBroadcast(key); - if (EXPECTED_ADDRESS_WEIGHTED_ECDSA_VALIDATOR.code.length == 0) { - console.log("deploying WeightedECDSAValidator"); - WeightedECDSAValidator validator = new WeightedECDSAValidator{salt: 0}(); - console.log("validator address: %s", address(validator)); - } else { - console.log("validator address: %s", address(EXPECTED_ADDRESS_WEIGHTED_ECDSA_VALIDATOR)); - } - if (EXPECTED_ADDRESS_RECOVERY_ACTION.code.length == 0) { - console.log("deploying RecoveryAction"); - RecoveryAction action = new RecoveryAction{salt: 0}(); - console.log("RecoveryAction address: %s", address(action)); - } else { - console.log("RecoveryAction address: %s", address(EXPECTED_ADDRESS_RECOVERY_ACTION)); - } - vm.stopBroadcast(); - } -} diff --git a/script/StakeToFactory.s.sol b/script/StakeToFactory.s.sol deleted file mode 100644 index 4a80a611..00000000 --- a/script/StakeToFactory.s.sol +++ /dev/null @@ -1,24 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/factory/KernelFactory.sol"; -import "I4337/interfaces/IStakeManager.sol"; -import "forge-std/Script.sol"; -import "forge-std/console.sol"; - -contract StakeToFactory is Script { - address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A; - address constant ENTRYPOINT_0_6 = 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789; - address payable constant EXPECTED_KERNEL_ADDRESS = payable(0xf048AD83CB2dfd6037A43902a2A5Be04e53cd2Eb); - address payable constant EXPECTED_KERNEL_FACTORY_ADDRESS = payable(0x5de4839a76cf55d0c90e2061ef4386d962E15ae3); - - function run() public { - vm.startBroadcast(DEPLOYER); - KernelFactory factory = KernelFactory(EXPECTED_KERNEL_FACTORY_ADDRESS); - IEntryPoint entryPoint = IEntryPoint(ENTRYPOINT_0_6); - IStakeManager.DepositInfo memory info = entryPoint.getDepositInfo(address(factory)); - if (info.stake < 1e17) { - factory.addStake{value: 1e17 - info.stake}(86400); - } - vm.stopBroadcast(); - } -} diff --git a/script/deterministic/DeterministicDeploy.s.sol b/script/deterministic/DeterministicDeploy.s.sol deleted file mode 100644 index 53986845..00000000 --- a/script/deterministic/DeterministicDeploy.s.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.8.0; - -import "forge-std/console.sol"; - -library DeterministicDeploy { - address constant DETERMINISTIC_DEPLOYER = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - function checkDeploy(string memory tag, address _expectedAddress, bytes memory _code) internal { - if (_expectedAddress.code.length == 0) { - (bool success, bytes memory addr) = DETERMINISTIC_DEPLOYER.call(_code); - require(success, "DeterministicDeploy: failed to deploy"); - require(address(bytes20(addr)) == _expectedAddress, "DeterministicDeploy: address mismatch"); - console.log(string.concat(tag, ": deployed at %s"), _expectedAddress); - } else { - console.log(string.concat(tag, ": already deployed")); - } - } -} diff --git a/script/deterministic/ECDSAValidator.s.sol b/script/deterministic/ECDSAValidator.s.sol deleted file mode 100644 index a70f4df7..00000000 --- a/script/deterministic/ECDSAValidator.s.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity ^0.8.0; - -import "./DeterministicDeploy.s.sol"; - -library ECDSAValidatorDeploy { - address constant EXPECTED_ECDSA_VALIDATOR_ADDRESS = 0xd9AB5096a832b9ce79914329DAEE236f8Eea0390; - bytes constant VALIDATOR_CODE = - hex"000000000000000000000000000000000000000000000000000000000000000060808060405234610016576104ee908161001c8239f35b600080fdfe60406080815260048036101561001457600080fd5b600091823560e01c80630c959556146101d557806320709efc1461019b578063333daf921461015b5780633a871cdd1461010d578381638fc925aa146100c85750639ea9bd591461006457600080fd5b346100c457806003193601126100c45761007c610296565b9160243567ffffffffffffffff81116100c057936100a08392602096369101610263565b5050338152808552205490516001600160a01b0392831691909216148152f35b8480fd5b8280fd5b92905060203660031901126101095780359067ffffffffffffffff8211610104576100f591369101610263565b50503382528160205281205580f35b505050fd5b5050fd5b50600319836060368301126101545783359167ffffffffffffffff831161015757610160908336030112610154575060209261014d916024359101610348565b9051908152f35b80fd5b5080fd5b5082346101545781600319360112610154576024359067ffffffffffffffff8211610154575060209261019461014d9236908301610263565b9135610464565b838234610157576020366003190112610157576020916001600160a01b03908290826101c5610296565b1681528085522054169051908152f35b509060203660031901126100c45780359067ffffffffffffffff821161025f5761020191369101610263565b6014116100c4573560601c90338352826020528220805490826bffffffffffffffffffffffff60a01b831617905560018060a01b0316337f381c0d11398486654573703c51ee8210ce9461764d133f9f0e53b6a5397053318480a480f35b8380fd5b9181601f840112156102915782359167ffffffffffffffff8311610291576020838186019501011161029157565b600080fd5b600435906001600160a01b038216820361029157565b903590601e1981360301821215610291570180359067ffffffffffffffff82116102915760200191813603831361029157565b92919267ffffffffffffffff918281116103325760405192601f8201601f19908116603f011684019081118482101761033257604052829481845281830111610291578281602093846000960137010152565b634e487b7160e01b600052604160045260246000fd5b600092916001600160a01b039084833583811690819003610157578152806020528260408220541693826020527b19457468657265756d205369676e6564204d6573736167653a0a33328252603c60042091846103be6101408401946103b86103b187876102ac565b36916102df565b906103ee565b1686146103e557506103b16103d793926103b8926102ac565b16036103df57565b60019150565b96505050505050565b60207f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a19392608060405193838301516040526040830151928360605260416000988995869485526060840151851a885210915114165afa508251923d1561045757606052604052565b638baa579f90526004601cfd5b3360009081526020819052604081205490936001600160a01b03918216939192836104996104933685876102df565b836103ee565b1685146104e6576104d7926103b8916020527b19457468657265756d205369676e6564204d6573736167653a0a33328752603c6004209236916102df565b16036104e05790565b50600190565b50505050509056"; - - function deploy() internal returns (address) { - DeterministicDeploy.checkDeploy("ECDSAValidator", EXPECTED_ECDSA_VALIDATOR_ADDRESS, VALIDATOR_CODE); - return EXPECTED_ECDSA_VALIDATOR_ADDRESS; - } -} diff --git a/script/deterministic/Factory.s.sol b/script/deterministic/Factory.s.sol deleted file mode 100644 index 471e2c1a..00000000 --- a/script/deterministic/Factory.s.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity ^0.8.0; - -import "./DeterministicDeploy.s.sol"; - -library FactoryDeploy { - address payable constant EXPECTED_KERNEL_FACTORY_ADDRESS = payable(0x5de4839a76cf55d0c90e2061ef4386d962E15ae3); - bytes constant KERNEL_FACTORY_CODE = - hex"00000000000000000000000000000000000000000000000000000000000000006080346100b257601f610b2d38819003918201601f19168301916001600160401b038311848410176100b75780849260409485528339810103126100b25780516001600160a01b0391828216918290036100b257602001519182168092036100b25780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3600080546001600160a01b031916919091179055604051610a5f90816100ce8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c9081630396cb60146107d45781632569296214610789578163296601cd1461059d5781634d6cb7001461052b5781635414dff0146104fa57816354d1f13d146104b4578163584465f2146104745781636544c82814610436578163715018a6146103f05781638da5cb5b146103c3578163b0d691fe1461039b578163bb30a9741461034557838263bb9fe6bf146102ec578263c23a5cea1461026157508163d7533f0214610243578163db4c545e14610219578163f04e283e14610199578163f2fde38b1461012c575063fee81cf4146100f657600080fd5b3461012857602036600319011261012857602091610112610845565b9063389a75e1600c525281600c20549051908152f35b5080fd5b8390602036600319011261012857610142610845565b9061014b61088e565b8160601b1561018e575060018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b83906020366003190112610128576101af610845565b906101b861088e565b63389a75e1600c528183526020600c20908154421161020e575082905560018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b5050346101285781600319360112610128576020906089601361023a6108d8565b01209051908152f35b505034610128578160031936011261012857602090516202a3008152f35b809184346102e85760203660031901126102e85781356001600160a01b0381811693918490036102e45761029361088e565b84541692833b156102e45760248592838551968794859363611d2e7560e11b85528401525af19081156102db57506102c85750f35b6102d190610a13565b6102d85780f35b80fd5b513d84823e3d90fd5b8480fd5b5050fd5b809184346102e857826003193601126102e85761030761088e565b82546001600160a01b031691823b1561034057815163bb9fe6bf60e01b81529284918491829084905af19081156102db57506102c85750f35b505050fd5b50503461012857806003193601126101285761035f610845565b90602435918215158093036103975761037661088e565b60018060a01b03168352600160205282209060ff8019835416911617905580f35b8380fd5b505034610128578160031936011261012857905490516001600160a01b039091168152602090f35b505034610128578160031936011261012857638b78c6d8195490516001600160a01b039091168152602090f35b83806003193601126102d85761040461088e565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b5050346101285760203660031901126101285760209160ff9082906001600160a01b03610461610845565b1681526001855220541690519015158152f35b83903461012857602036600319011261012857356001600160a01b03811690819003610128576104a261088e565b81546001600160a01b03191617815580f35b83806003193601126102d85763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b8284346102d85760203660031901126102d8575061051a602092356108ab565b90516001600160a01b039091168152f35b8284346102d857816003193601126102d85782359067ffffffffffffffff82116102d857506bffffffffffffffffffffffff61056f60209461051a93369101610860565b6105948580518381948a830196873781016024358a8201520388810184520182610a3d565b519020166108ab565b828460603660031901126102d8576105b3610845565b9160243567ffffffffffffffff8111610785576105d39036908601610860565b9360018060a01b039384821681526020966001885260ff858320541615610730576bffffffffffffffffffffffff8551898101908987833761062988828d8d82019060443590820152038d810184520182610a3d565b5190201696331560011715610724576106406108d8565b90601382019860898a2060ff86536035523060601b600152806015526055852099856035528a3b15610678575b8b8b8b8b5191168152f35b856089929394959697989b50f597881561071857918185939284938884527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8d85015289840137870190348a5af1156106fe57507f09e48df7857bd0c1e0d31bb8a85d42cf1874817895f171c917f6ee2cea73ec20818692a3848080808080808061066d565b3d1561070d57503d81803e3d90fd5b63301164258252601cfd5b8363301164258652601cfd5b50632f6348368252601cfd5b845162461bcd60e51b8152908101889052602960248201527f4b65726e656c466163746f72793a20696d706c656d656e746174696f6e206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608490fd5b8280fd5b83806003193601126102d85763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b91905060203660031901126107855782823563ffffffff8116809103610128576107fc61088e565b81546001600160a01b031693843b156107855760249084519586938492621cb65b60e51b845283015234905af19081156102db5750610839575080f35b61084290610a13565b80f35b600435906001600160a01b038216820361085b57565b600080fd5b9181601f8401121561085b5782359167ffffffffffffffff831161085b576020838186019501011161085b57565b638b78c6d81954330361089d57565b6382b429006000526004601cfd5b608960136108b76108d8565b012060ff6000536035523060601b6001526015526055600020906000603552565b604051903060701c1561097c57666052573d6000fd607b8301527f3d356020355560408036111560525736038060403d373d3d355af43d6000803e60748301527f3735a920a3ca505d382bbc545af43d6000803e6052573d6000fd5b3d6000f35b60548301527f14605757363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc60348301523060148301526c607f3d8160093d39f33d3d33738252565b66604c573d6000fd60758301527f3d3560203555604080361115604c5736038060403d373d3d355af43d6000803e606e8301527f3735a920a3ca505d382bbc545af43d6000803e604c573d6000fd5b3d6000f35b604e8301527f14605157363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc602e83015230600e8301526c60793d8160093d39f33d3d336d8252565b67ffffffffffffffff8111610a2757604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610a2757604052560000000000000000000000009775137314fe595c943712b0b336327dfa80ae8a0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789"; - - function deploy() internal returns (address) { - DeterministicDeploy.checkDeploy("factory", EXPECTED_KERNEL_FACTORY_ADDRESS, KERNEL_FACTORY_CODE); - return EXPECTED_KERNEL_FACTORY_ADDRESS; - } -} diff --git a/script/deterministic/Factory_old.s.sol b/script/deterministic/Factory_old.s.sol deleted file mode 100644 index 066e3004..00000000 --- a/script/deterministic/Factory_old.s.sol +++ /dev/null @@ -1,24 +0,0 @@ -pragma solidity ^0.8.0; - -import "./DeterministicDeploy.s.sol"; -import "forge-std/Script.sol"; - -contract Factory_old is Script { - address constant DEPLOYER = 0x7A0D94F55792C434d74a40883C6ed8545E406D12; - address constant EXPECTED_FACTORY = 0x5D006d3880645ec6e254E18C1F879DAC9Dd71A39; - address constant EXPECTED_ECDSA_FACTORY = 0xD49a72cb78C44c6bfbf0d471581B7635cF62E81e; - bytes constant FACTORY_BYTECODE = - hex"60e060405234801561001057600080fd5b50604051614de5380380614de583398101604081905261002f916100e1565b8060405161003c906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610068573d6000803e3d6000fd5b506001600160a01b03166080526040518190610083906100d4565b6001600160a01b039091168152602001604051809103906000f0801580156100af573d6000803e3d6000fd5b506001600160a01b0390811660a0521660c052610111565b611b8380610abe83390190565b6127a48061264183390190565b6000602082840312156100f357600080fd5b81516001600160a01b038116811461010a57600080fd5b9392505050565b60805160a05160c051610957610167600039600060f101526000818160ca01528181610191015281816102c3015261033701526000818160610152818161016f015281816102a1015261031501526109576000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063037637aa1461005c5780631bb12e691461009f578063296601cd146100b25780636c2f70fd146100c5578063b0d691fe146100ec575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100836100ad366004610471565b610113565b6100836100c0366004610471565b610243565b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6000808585858560405160200161012d9493929190610508565b604051602081830303815290604052805190602001209050610237816040518060200161015990610464565b6020820181038252601f19601f820116604052507f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000008a8a6040516024016101c5949392919061055e565b60408051601f19818403018152918152602080830180516001600160e01b031663cf7a1d7760e01b17905290516101fe939291016105b9565b60408051601f198184030181529082905261021c92916020016105fb565b60405160208183030381529060405280519060200120610426565b9150505b949350505050565b6000808585858560405160200161025d9493929190610508565b60405160208183030381529060405280519060200120905060006102f7826040518060200161028b90610464565b6020820181038252601f19601f820116604052507f00000000000000000000000000000000000000000000000000000000000000008a7f00000000000000000000000000000000000000000000000000000000000000008b8b6040516024016101c5949392919061055e565b90506001600160a01b0381163b1561031257915061023b9050565b817f0000000000000000000000000000000000000000000000000000000000000000887f0000000000000000000000000000000000000000000000000000000000000000898960405160240161036b949392919061055e565b60408051601f198184030181529181526020820180516001600160e01b031663cf7a1d7760e01b1790525161039f90610464565b6103aa9291906105b9565b8190604051809103906000f59050801580156103ca573d6000803e3d6000fd5b509250866001600160a01b0316836001600160a01b03167fa4ec333d142e947b3345528c6cbc210be703d984f8df2c3d589f2b3ea39f74378888886040516104149392919061062a565b60405180910390a35050949350505050565b600061043383833061043a565b9392505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6103088061064f83390190565b6000806000806060858703121561048757600080fd5b84356001600160a01b038116811461049e57600080fd5b9350602085013567ffffffffffffffff808211156104bb57600080fd5b818701915087601f8301126104cf57600080fd5b8135818111156104de57600080fd5b8860208285010111156104f057600080fd5b95986020929092019750949560400135945092505050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0385811682528416602082015260606040820181905260009061058b9083018486610535565b9695505050505050565b60005b838110156105b0578181015183820152602001610598565b50506000910152565b60018060a01b038316815260406020820152600082518060408401526105e6816060850160208701610595565b601f01601f1916919091016060019392505050565b6000835161060d818460208801610595565b835190830190610621818360208801610595565b01949350505050565b60408152600061063e604083018587610535565b905082602083015294935050505056fe6080604052604051610308380380610308833981016040819052610022916101be565b6001600160a01b0382166100965760405162461bcd60e51b815260206004820152603060248201527f4549503139363750726f78793a20696d706c656d656e746174696f6e2069732060448201526f746865207a65726f206164647265737360801b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc82815581511561017c576000836001600160a01b0316836040516100db919061028c565b600060405180830381855af49150503d8060008114610116576040519150601f19603f3d011682016040523d82523d6000602084013e61011b565b606091505b505090508061017a5760405162461bcd60e51b815260206004820152602560248201527f4549503139363750726f78793a20636f6e7374727563746f722063616c6c2066604482015264185a5b195960da1b606482015260840161008d565b505b5050506102a8565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101b557818101518382015260200161019d565b50506000910152565b600080604083850312156101d157600080fd5b82516001600160a01b03811681146101e857600080fd5b60208401519092506001600160401b038082111561020557600080fd5b818501915085601f83011261021957600080fd5b81518181111561022b5761022b610184565b604051601f8201601f19908116603f0116810190838211818310171561025357610253610184565b8160405282815288602084870101111561026c57600080fd5b61027d83602083016020880161019a565b80955050505050509250929050565b6000825161029e81846020870161019a565b9190910192915050565b6052806102b66000396000f3fe60806040526000602d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90503660008037600080366000845af43d6000803e808015604d573d6000f35b3d6000fd61016060405234801561001157600080fd5b50604051611b83380380611b8383398101604081905261003091610130565b604080518082018252600681526512d95c9b995b60d21b602080830191825283518085019094526005845264181718171960d91b908401528151902060e08190527fb30367effb941b728181f67f3bd24a38a4fff408ee7fb3b074425c9fb5e9be746101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61010f8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b031661014052610160565b60006020828403121561014257600080fd5b81516001600160a01b038116811461015957600080fd5b9392505050565b60805160a05160c05160e0516101005161012051610140516119c26101c160003960008181610347015261050c015260006110a6015260006110f5015260006110d001526000611029015260006110530152600061107d01526119c26000f3fe6080604052600436106100745760003560e01c80634be5cd9f1161004e5780634be5cd9f146102e157806354fd4d5014610304578063b0d691fe14610335578063cf7a1d77146103815761007b565b806306fdde03146102325780631626ba7e1461027a5780633a871cdd146102b35761007b565b3661007b57005b3080546001600160a01b03167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81815560006100b56103a1565b6001015460405163064acaab60e11b8152600160501b9091046001600160a01b031691508190630c959556906100f290600288019060040161117d565b600060405180830381600087803b15801561010c57600080fd5b505af1158015610120573d6000803e3d6000fd5b50505050600061012d3090565b600101546001600160a01b0316905080156101a45760405163064acaab60e11b81526001600160a01b03821690630c9595569061017190600330019060040161117d565b600060405180830381600087803b15801561018b57600080fd5b505af115801561019f573d6000803e3d6000fd5b505050505b600080856001600160a01b03166000366040516101c2929190611208565b600060405180830381855af49150503d80600081146101fd576040519150601f19603f3d011682016040523d82523d6000602084013e610202565b606091505b50915091508181906102305760405162461bcd60e51b8152600401610227919061125e565b60405180910390fd5b005b34801561023e57600080fd5b506102646040518060400160405280600681526020016512d95c9b995b60d21b81525081565b604051610271919061125e565b60405180910390f35b34801561028657600080fd5b5061029a6102953660046112ba565b6103d5565b6040516001600160e01b03199091168152602001610271565b3480156102bf57600080fd5b506102d36102ce366004611306565b6104ff565b604051908152602001610271565b3480156102ed57600080fd5b506102f661084f565b60405161027192919061135a565b34801561031057600080fd5b5061026460405180604001604052806005815260200164181718171960d91b81525081565b34801561034157600080fd5b506103697f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b34801561038d57600080fd5b5061023061039c3660046113ae565b6108f8565b6000806103cf60017f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9611429565b92915050565b60008061044e6103e36103a1565b600101600a9054906101000a90046001600160a01b031663333daf9260e01b87878760405160240161041793929190611465565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610a63565b9150506000818060200190518101906104679190611488565b9050600061047482610ab8565b905042816020015165ffffffffffff16111561049e57506001600160e01b031992506104f8915050565b42816040015165ffffffffffff1610156104c657506001600160e01b031992506104f8915050565b80516001600160a01b0316156104ea57506001600160e01b031992506104f8915050565b50630b135d3f60e11b925050505b9392505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105795760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20656e747279506f696e74000000006044820152606401610227565b60006105896101408601866114a1565b610598916004916000916114e8565b6105a191611512565b905060006105ae8661160f565b90506000806105c060608901896114a1565b6105cf916004916000916114e8565b6105d891611512565b90506001600160e01b03198416600003610670576105f58861160f565b92506106056101408901896114a1565b6106139160049082906114e8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101408401526106556103a1565b60010154600160501b90046001600160a01b031691506107ad565b6001600160e01b03198416600160e11b036107a0576106936101408901896114a1565b6106a2916024916010916114e8565b6106ab9161171e565b60601c915036600081816106cc856106c76101408f018f6114a1565b610b29565b604051949d50929750909550935091506000906106fe90889063064acaab60e11b906104179089908990602401611751565b509050806107595760405162461bcd60e51b815260206004820152602260248201527f6163636f756e743a20656e61626c65206d6f646520656e61626c65206661696c604482015261195960f21b6064820152608401610227565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140890152506107ad9350505050565b60019450505050506104f8565b85156107ff57604051600090339088908381818185875af1925050503d80600081146107f5576040519150601f19603f3d011682016040523d82523d6000602084013e6107fa565b606091505b505050505b600061082283633a871cdd60e01b868b8b60405160240161041793929190611765565b915050610842868280602001905181019061083d9190611488565b610f33565b9998505050505050505050565b3080546002820180546001600160a01b039092169260609290919061087390611143565b80601f016020809104026020016040519081016040528092919081815260200182805461089f90611143565b80156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b50505050509150509091565b60006109026103a1565b6001810154909150600160501b90046001600160a01b0316156109675760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a20616c726561647920696e697469616c697a6564000000006044820152606401610227565b6001810180547fffff0000000000000000000000000000000000000000ffffffffffffffffffff16600160501b6001600160a01b03881602179055833080546001600160a01b0319166001600160a01b0392909216919091179055828230600201916109d49190836118a2565b5060006109f686630c95955660e01b8686604051602401610417929190611751565b50905080610a5b5760405162461bcd60e51b815260206004820152602c60248201527f6163636f756e743a20656e61626c65206661696c65642077697468206465666160448201526b3ab63a3b30b634b230ba37b960a11b6064820152608401610227565b505050505050565b600060606000808451602086016000885af260405160203d0181016040523d81523d6000602083013e90925090508082610ab05760405162461bcd60e51b8152600401610227919061125e565b509250929050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003610af4575065ffffffffffff5b604080516060810182526001600160a01b03909316835260d09490941c602083015265ffffffffffff16928101929092525090565b60003681818180610b3e60586038898b6114e8565b610b4791611963565b905087605888610b578483611981565b92610b64939291906114e8565b909550935060008888610b78846058611981565b90610b84856078611981565b92610b91939291906114e8565b610b9a91611963565b60001c90506000610c7b7f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641768c8c8c600490602492610bda939291906114e8565b610be391611963565b60001c8d8d602490603892610bfa939291906114e8565b610c039161171e565b60601c8b8b604051610c16929190611208565b604051908190038120610c6095949392916020019485526001600160e01b031993909316602085015260408401919091526001600160a01b03166060830152608082015260a00190565b60405160208183030381529060405280519060200120610fce565b90506000610cea610c8a6103a1565b60010154600160501b90046001600160a01b031663199ed7c960e11b848e8e610cb48a6078611981565b9089610cc18c6078611981565b610ccb9190611981565b92610cd8939291906114e8565b60405160240161041793929190611465565b915050610d3a81806020019051810190610d049190611488565b60a06bffffffffffffffffffffffff8016901b8d8d600490602492610d2b939291906114e8565b610d3491611963565b16610f33565b98508a8a84610d4a876078611981565b610d549190611981565b610d5f9282906114e8565b9550955060405180608001604052808c8c600490600a92610d82939291906114e8565b610d8b91611994565b60d01c65ffffffffffff1681526020018c8c600a90601092610daf939291906114e8565b610db891611994565b60d01c65ffffffffffff1681526020018c8c602490603892610ddc939291906114e8565b610de59161171e565b60601c6001600160a01b031681526020018c8c601090602492610e0a939291906114e8565b610e139161171e565b60601c9052610e206103a1565b6001600160e01b03198e166000908152600291909101602090815260409182902083518154928501519385015165ffffffffffff9182166bffffffffffffffffffffffff199094169390931766010000000000009190941602929092176bffffffffffffffffffffffff16600160601b6001600160a01b0392831602178255606090920151600190910180546001600160a01b03191691909216179055610ecb602460108c8e6114e8565b610ed49161171e565b60013090810180546001600160a01b03191660609390931c92909217909155600301610f01888a836118a2565b50888b60588c610f118883611981565b92610f1e939291906114e8565b98509850985050505050939792965093509350565b6000816001600160a01b0316836001600160a01b031614610f56575060016103cf565b60a083811c9060d085811c9185901c9085901c65ffffffffffff8083169085161015610f80578193505b8065ffffffffffff168365ffffffffffff161115610f9c578092505b60d08365ffffffffffff16901b60a08565ffffffffffff16901b886001600160a01b0316171794505050505092915050565b60006103cf610fdb61101c565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561107557507f000000000000000000000000000000000000000000000000000000000000000046145b1561109f57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b600181811c9082168061115757607f821691505b60208210810361117757634e487b7160e01b600052602260045260246000fd5b50919050565b600060208083526000845461119181611143565b808487015260406001808416600081146111b257600181146111cc576111fa565b60ff1985168984015283151560051b8901830195506111fa565b896000528660002060005b858110156111f25781548b82018601529083019088016111d7565b8a0184019650505b509398975050505050505050565b8183823760009101908152919050565b6000815180845260005b8181101561123e57602081850181015186830182015201611222565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006104f86020830184611218565b60008083601f84011261128357600080fd5b50813567ffffffffffffffff81111561129b57600080fd5b6020830191508360208285010111156112b357600080fd5b9250929050565b6000806000604084860312156112cf57600080fd5b83359250602084013567ffffffffffffffff8111156112ed57600080fd5b6112f986828701611271565b9497909650939450505050565b60008060006060848603121561131b57600080fd5b833567ffffffffffffffff81111561133257600080fd5b8401610160818703121561134557600080fd5b95602085013595506040909401359392505050565b6001600160a01b038316815260406020820181905260009061137e90830184611218565b949350505050565b6001600160a01b038116811461139b57600080fd5b50565b80356113a981611386565b919050565b600080600080606085870312156113c457600080fd5b84356113cf81611386565b935060208501356113df81611386565b9250604085013567ffffffffffffffff8111156113fb57600080fd5b61140787828801611271565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103cf576103cf611413565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b83815260406020820152600061147f60408301848661143c565b95945050505050565b60006020828403121561149a57600080fd5b5051919050565b6000808335601e198436030181126114b857600080fd5b83018035915067ffffffffffffffff8211156114d357600080fd5b6020019150368190038213156112b357600080fd5b600080858511156114f857600080fd5b8386111561150557600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561153a5780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff8111828210171561157c5761157c611542565b60405290565b600082601f83011261159357600080fd5b813567ffffffffffffffff808211156115ae576115ae611542565b604051601f8301601f19908116603f011681019082821181831017156115d6576115d6611542565b816040528381528660208588010111156115ef57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000610160823603121561162257600080fd5b61162a611558565b6116338361139e565b815260208301356020820152604083013567ffffffffffffffff8082111561165a57600080fd5b61166636838701611582565b6040840152606085013591508082111561167f57600080fd5b61168b36838701611582565b60608401526080850135608084015260a085013560a084015260c085013560c084015260e085013560e084015261010091508185013582840152610120915081850135818111156116db57600080fd5b6116e736828801611582565b83850152506101409150818501358181111561170257600080fd5b61170e36828801611582565b8385015250505080915050919050565b6bffffffffffffffffffffffff19813581811691601485101561153a5760149490940360031b84901b1690921692915050565b60208152600061137e60208301848661143c565b6060815261177f6060820185516001600160a01b03169052565b60208401516080820152600060408501516101608060a08501526117a76101c0850183611218565b91506060870151605f19808685030160c08701526117c58483611218565b9350608089015160e087015260a08901519150610100828188015260c08a01519250610120838189015260e08b0151935061014084818a0152828c0151868a0152818c0151955083898803016101808a01526118218787611218565b9650808c0151955050505080868503016101a087015250506118438282611218565b602085019690965250505060400152919050565b601f82111561189d57600081815260208120601f850160051c8101602086101561187e5750805b601f850160051c820191505b81811015610a5b5782815560010161188a565b505050565b67ffffffffffffffff8311156118ba576118ba611542565b6118ce836118c88354611143565b83611857565b6000601f84116001811461190257600085156118ea5750838201355b600019600387901b1c1916600186901b17835561195c565b600083815260209020601f19861690835b828110156119335786850135825560209485019460019092019101611913565b50868210156119505760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b803560208310156103cf57600019602084900360031b1b1692915050565b808201808211156103cf576103cf611413565b6001600160d01b0319813581811691600685101561153a5760069490940360031b84901b1690921692915050566101606040523480156200001257600080fd5b50604051620027a4380380620027a483398101604081905262000035916200018e565b604080518082018252600681526512d95c9b995b60d21b6020808301918252835180850185526005815264181718171960d91b908201529151902060e08190527fb30367effb941b728181f67f3bd24a38a4fff408ee7fb3b074425c9fb5e9be746101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c09384019096528051940193909320909252919052610120526001600160a01b038116610140528060016200012962000158565b600101600a6101000a8154816001600160a01b0302191690836001600160a01b031602179055505050620001e2565b6000806200018860017f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9620001c0565b92915050565b600060208284031215620001a157600080fd5b81516001600160a01b0381168114620001b957600080fd5b9392505050565b818103818111156200018857634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e0516101005161012051610140516125286200027c60003960008181610135015281816104af015281816106ff015281816108d30152818161098301528181610e5a01528181610f72015281816110ae0152818161123201526113a901526000611a4501526000611a9401526000611a6f015260006119c8015260006119f201526000611a1c01526125286000f3fe6080604052600436106101235760003560e01c806354fd4d50116100a0578063bc197c8111610064578063bc197c81146104d1578063d087d28814610500578063d1f5789414610515578063d541622114610535578063f23a6e61146105555761012a565b806354fd4d501461040b57806355b14f501461043c57806357b750471461045c57806388e7fd0614610471578063b0d691fe1461049d5761012a565b80633659cfe6116100e75780633659cfe6146103105780633a871cdd146103305780633e1b08121461035e57806351166ba01461037e57806351945447146103eb5761012a565b806306fdde03146102165780630b3dc3541461025e578063150b7a021461028b5780631626ba7e146102d057806329f8b174146102f05761012a565b3661012a57005b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101a75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20656e747279706f696e740000000060448201526064015b60405180910390fd5b600080356001600160e01b031916905060006101c1610582565b6001600160e01b0319831660009081526002919091016020526040812054600160601b90046001600160a01b0316915036908037600080366000845af43d6000803e80801561020f573d6000f35b3d6000fd5b005b34801561022257600080fd5b506102486040518060400160405280600681526020016512d95c9b995b60d21b81525081565b6040516102559190611b28565b60405180910390f35b34801561026a57600080fd5b506102736105b6565b6040516001600160a01b039091168152602001610255565b34801561029757600080fd5b506102b76102a6366004611bab565b630a85bd0160e11b95945050505050565b6040516001600160e01b03199091168152602001610255565b3480156102dc57600080fd5b506102b76102eb366004611c1d565b6105d9565b3480156102fc57600080fd5b5061021461030b366004611c96565b6106f4565b34801561031c57600080fd5b5061021461032b366004611d30565b6108c8565b34801561033c57600080fd5b5061035061034b366004611d4d565b610976565b604051908152602001610255565b34801561036a57600080fd5b50610350610379366004611da0565b610e33565b34801561038a57600080fd5b5061039e610399366004611dc9565b610ecd565b60408051825165ffffffffffff908116825260208085015190911690820152828201516001600160a01b039081169282019290925260609283015190911691810191909152608001610255565b3480156103f757600080fd5b50610214610406366004611de4565b610f67565b34801561041757600080fd5b5061024860405180604001604052806005815260200164181718171960d91b81525081565b34801561044857600080fd5b50610214610457366004611e5b565b6110a3565b34801561046857600080fd5b506102b76111da565b34801561047d57600080fd5b506104866111f0565b60405165ffffffffffff9091168152602001610255565b3480156104a957600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b3480156104dd57600080fd5b506102b76104ec366004611eda565b63bc197c8160e01b98975050505050505050565b34801561050c57600080fd5b50610350611213565b34801561052157600080fd5b50610214610530366004611e5b565b6112aa565b34801561054157600080fd5b50610214610550366004611dc9565b61139e565b34801561056157600080fd5b506102b7610570366004611f98565b63f23a6e6160e01b9695505050505050565b6000806105b060017f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9612029565b92915050565b60006105c0610582565b60010154600160501b90046001600160a01b0316919050565b6000806105e4610582565b6001015460405163199ed7c960e11b8152600160501b9091046001600160a01b03169063333daf929061061f90889088908890600401612065565b602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106609190612088565b9050600061066d82611442565b905042816020015165ffffffffffff16111561069657506001600160e01b031991506106ed9050565b42816040015165ffffffffffff1610156106bd57506001600160e01b031991506106ed9050565b80516001600160a01b0316156106e057506001600160e01b031991506106ed9050565b50630b135d3f60e11b9150505b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061072a57503330145b6107465760405162461bcd60e51b815260040161019e906120a1565b60405180608001604052808565ffffffffffff1681526020018465ffffffffffff168152602001876001600160a01b03168152602001866001600160a01b0316815250610791610582565b6001600160e01b031989166000908152600291909101602090815260409182902083518154928501518585015165ffffffffffff9283166001600160601b031990951694909417600160301b9290911691909102176001600160601b0316600160601b6001600160a01b0393841602178155606090930151600190930180546001600160a01b031916938216939093179092555163064acaab60e11b815290861690630c9595569061084990859085906004016120ee565b600060405180830381600087803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691506001600160e01b03198a16907fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d32135390600090a450505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806108fe57503330145b61091a5760405162461bcd60e51b815260040161019e906120a1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8181556040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109f05760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20656e747279506f696e7400000000604482015260640161019e565b6000610a0061014086018661210a565b610a0f91600491600091612150565b610a189161217a565b9050610a22610582565b6001015460e01b81166001600160e01b03191615610a7a5760405162461bcd60e51b81526020600482015260156024820152741ad95c9b995b0e881b5bd91948191a5cd8589b1959605a1b604482015260640161019e565b6000610a8586612275565b9050600080610a97606089018961210a565b610aa691600491600091612150565b610aaf9161217a565b90506001600160e01b03198416600003610b4757610acc88612275565b9250610adc61014089018961210a565b610aea916004908290612150565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610140840152610b2c610582565b60010154600160501b90046001600160a01b03169150610d59565b6001600160e01b03198416600160e01b03610c3d576000610b66610582565b6001600160e01b0319831660009081526002919091016020526040902060018101546001600160a01b03169350905082610bb957610ba2610582565b60010154600160501b90046001600160a01b031692505b610bc76101408a018a61210a565b610bd5916004908290612150565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101408501525460d081901b6001600160d01b031916600160301b90910460a01b65ffffffffffff60a01b16179450610d59565b6001600160e01b03198416600160e11b03610d4c57610c6061014089018961210a565b610c6f91602491601091612150565b610c7891612383565b60601c91503660008181610c9985610c946101408f018f61210a565b6114b3565b60405163064acaab60e11b8152949d50929750909550935091506001600160a01b03871690630c95955690610cd490879087906004016120ee565b600060405180830381600087803b158015610cee57600080fd5b505af1158015610d02573d6000803e3d6000fd5b5050505081818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061014088015250610d5992505050565b60019450505050506106ed565b8515610dab57604051600090339088908381818185875af1925050503d8060008114610da1576040519150601f19603f3d011682016040523d82523d6000602084013e610da6565b606091505b505050505b610e2785836001600160a01b0316633a871cdd868b8b6040518463ffffffff1660e01b8152600401610ddf939291906123b1565b6020604051808303816000875af1158015610dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e229190612088565b611864565b98975050505050505050565b604051631aab3f0d60e11b81523060048201526001600160c01b03821660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b09190612088565b604080516080810182526000808252602082018190529181018290526060810191909152610ef9610582565b6001600160e01b0319909216600090815260029290920160209081526040928390208351608081018552815465ffffffffffff8082168352600160301b820416938201939093526001600160a01b03600160601b909304831694810194909452600101541660608301525090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fdf5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20656e747279706f696e7400000000604482015260640161019e565b600060606001836001811115610ff757610ff76124a3565b036110465761103c8786868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ff92505050565b909250905061108d565b611087878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061193592505050565b90925090505b8161109a57805160208201fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d957503330145b6110f55760405162461bcd60e51b815260040161019e906120a1565b60006110ff610582565b60010154600160501b90046001600160a01b031690508361111e610582565b6001018054600160501b600160f01b031916600160501b6001600160a01b0393841602179055604051858216918316907fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c90600090a360405163064acaab60e11b81526001600160a01b03851690630c959556906111a290869086906004016120ee565b600060405180830381600087803b1580156111bc57600080fd5b505af11580156111d0573d6000803e3d6000fd5b5050505050505050565b60006111e4610582565b6001015460e01b919050565b60006111fa610582565b60010154640100000000900465ffffffffffff16919050565b604051631aab3f0d60e11b8152306004820152600060248201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906335567e1a90604401602060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190612088565b905090565b60006112b4610582565b6001810154909150600160501b90046001600160a01b0316156113195760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a20616c726561647920696e697469616c697a656400000000604482015260640161019e565b600181018054600160501b600160f01b031916600160501b6001600160a01b038716908102919091179091556040516000907fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c908290a360405163064acaab60e11b81526001600160a01b03851690630c959556906111a290869086906004016120ee565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113d457503330145b6113f05760405162461bcd60e51b815260040161019e906120a1565b806113f9610582565b600101805463ffffffff191660e09290921c9190911790554261141a610582565b60010160046101000a81548165ffffffffffff021916908365ffffffffffff16021790555050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff811660000361147e575065ffffffffffff5b604080516060810182526001600160a01b03909316835260d09490941c602083015265ffffffffffff16928101929092525090565b600036818181806114c860586038898b612150565b6114d1916124b9565b9050876058886114e184836124d7565b926114ee93929190612150565b9095509350600088886115028460586124d7565b9061150e8560786124d7565b9261151b93929190612150565b611524916124b9565b60001c905060006116057f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641768c8c8c60049060249261156493929190612150565b61156d916124b9565b60001c8d8d60249060389261158493929190612150565b61158d91612383565b60601c8b8b6040516115a09291906124ea565b6040519081900381206115ea95949392916020019485526001600160e01b031993909316602085015260408401919091526001600160a01b03166060830152608082015260a00190565b6040516020818303038152906040528051906020012061196d565b90506116ed611612610582565b60010154600160501b90046001600160a01b031663333daf92838d8d6116398960786124d7565b90886116468b60786124d7565b61165091906124d7565b9261165d93929190612150565b6040518463ffffffff1660e01b815260040161167b93929190612065565b602060405180830381865afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190612088565b60a06001600160601b038016901b8c8c6004906024926116de93929190612150565b6116e7916124b9565b16611864565b97508989836116fd8660786124d7565b61170791906124d7565b611712928290612150565b6040805160808101909152919650945080611731600a60048d8f612150565b61173a916124fa565b60d01c81526020016117506010600a8d8f612150565b611759916124fa565b60d01c815260200161176f603860248d8f612150565b61177891612383565b60601c815260200161178e602460108d8f612150565b61179791612383565b60601c90526117a4610582565b6001600160e01b03198d166000908152600291909101602090815260409182902083518154928501519385015165ffffffffffff9182166001600160601b031990941693909317600160301b9190941602929092176001600160601b0316600160601b6001600160a01b0392831602178255606090920151600190910180546001600160a01b03191691909216179055878a60588b61184387836124d7565b9261185093929190612150565b975097509750505050939792965093509350565b6000816001600160a01b0316836001600160a01b031614611887575060016105b0565b60a083811c9060d085811c9185901c9085901c65ffffffffffff80831690851610156118b1578193505b8065ffffffffffff168365ffffffffffff1611156118cd578092505b60d08365ffffffffffff16901b60a08565ffffffffffff16901b886001600160a01b0316171794505050505092915050565b60006060600080845160208601875af491503d604051602082018101604052818152816000602083013e80925050509250929050565b6000606060008084516020860187895af191503d604051602082018101604052818152816000602083013e8092505050935093915050565b60006105b061197a6119bb565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611a1457507f000000000000000000000000000000000000000000000000000000000000000046145b15611a3e57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000815180845260005b81811015611b0857602081850181015186830182015201611aec565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106ed6020830184611ae2565b6001600160a01b0381168114611b5057600080fd5b50565b8035611b5e81611b3b565b919050565b60008083601f840112611b7557600080fd5b5081356001600160401b03811115611b8c57600080fd5b602083019150836020828501011115611ba457600080fd5b9250929050565b600080600080600060808688031215611bc357600080fd5b8535611bce81611b3b565b94506020860135611bde81611b3b565b93506040860135925060608601356001600160401b03811115611c0057600080fd5b611c0c88828901611b63565b969995985093965092949392505050565b600080600060408486031215611c3257600080fd5b8335925060208401356001600160401b03811115611c4f57600080fd5b611c5b86828701611b63565b9497909650939450505050565b80356001600160e01b031981168114611b5e57600080fd5b803565ffffffffffff81168114611b5e57600080fd5b600080600080600080600060c0888a031215611cb157600080fd5b611cba88611c68565b96506020880135611cca81611b3b565b95506040880135611cda81611b3b565b9450611ce860608901611c80565b9350611cf660808901611c80565b925060a08801356001600160401b03811115611d1157600080fd5b611d1d8a828b01611b63565b989b979a50959850939692959293505050565b600060208284031215611d4257600080fd5b81356106ed81611b3b565b600080600060608486031215611d6257600080fd5b83356001600160401b03811115611d7857600080fd5b84016101608187031215611d8b57600080fd5b95602085013595506040909401359392505050565b600060208284031215611db257600080fd5b81356001600160c01b03811681146106ed57600080fd5b600060208284031215611ddb57600080fd5b6106ed82611c68565b600080600080600060808688031215611dfc57600080fd5b8535611e0781611b3b565b94506020860135935060408601356001600160401b03811115611e2957600080fd5b611e3588828901611b63565b909450925050606086013560028110611e4d57600080fd5b809150509295509295909350565b600080600060408486031215611e7057600080fd5b8335611e7b81611b3b565b925060208401356001600160401b03811115611c4f57600080fd5b60008083601f840112611ea857600080fd5b5081356001600160401b03811115611ebf57600080fd5b6020830191508360208260051b8501011115611ba457600080fd5b60008060008060008060008060a0898b031215611ef657600080fd5b8835611f0181611b3b565b97506020890135611f1181611b3b565b965060408901356001600160401b0380821115611f2d57600080fd5b611f398c838d01611e96565b909850965060608b0135915080821115611f5257600080fd5b611f5e8c838d01611e96565b909650945060808b0135915080821115611f7757600080fd5b50611f848b828c01611b63565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611fb157600080fd5b8635611fbc81611b3b565b95506020870135611fcc81611b3b565b9450604087013593506060870135925060808701356001600160401b03811115611ff557600080fd5b61200189828a01611b63565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b0576105b0612013565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b83815260406020820152600061207f60408301848661203c565b95945050505050565b60006020828403121561209a57600080fd5b5051919050565b6020808252602d908201527f6163636f756e743a206e6f742066726f6d20656e747279706f696e74206f722060408201526c37bbb732b91037b91039b2b63360991b606082015260800190565b60208152600061210260208301848661203c565b949350505050565b6000808335601e1984360301811261212157600080fd5b8301803591506001600160401b0382111561213b57600080fd5b602001915036819003821315611ba457600080fd5b6000808585111561216057600080fd5b8386111561216d57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156121a25780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b03811182821017156121e3576121e36121aa565b60405290565b600082601f8301126121fa57600080fd5b81356001600160401b0380821115612214576122146121aa565b604051601f8301601f19908116603f0116810190828211818310171561223c5761223c6121aa565b8160405283815286602085880101111561225557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000610160823603121561228857600080fd5b6122906121c0565b61229983611b53565b81526020830135602082015260408301356001600160401b03808211156122bf57600080fd5b6122cb368387016121e9565b604084015260608501359150808211156122e457600080fd5b6122f0368387016121e9565b60608401526080850135608084015260a085013560a084015260c085013560c084015260e085013560e0840152610100915081850135828401526101209150818501358181111561234057600080fd5b61234c368288016121e9565b83850152506101409150818501358181111561236757600080fd5b612373368288016121e9565b8385015250505080915050919050565b6001600160601b031981358181169160148510156121a25760149490940360031b84901b1690921692915050565b606081526123cb6060820185516001600160a01b03169052565b60208401516080820152600060408501516101608060a08501526123f36101c0850183611ae2565b91506060870151605f19808685030160c08701526124118483611ae2565b9350608089015160e087015260a08901519150610100828188015260c08a01519250610120838189015260e08b0151935061014084818a0152828c0151868a0152818c0151955083898803016101808a015261246d8787611ae2565b9650808c0151955050505080868503016101a0870152505061248f8282611ae2565b602085019690965250505060400152919050565b634e487b7160e01b600052602160045260246000fd5b803560208310156105b057600019602084900360031b1b1692915050565b808201808211156105b0576105b0612013565b8183823760009101908152919050565b6001600160d01b031981358181169160068510156121a25760069490940360031b84901b1690921692915050560000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789"; - bytes constant ECDSA_FACTORY_BYTECODE = - hex"60e060405234801561001057600080fd5b5060405161048338038061048383398101604081905261002f91610064565b6001600160a01b0392831660805290821660a0521660c0526100b1565b6001600160a01b038116811461006157600080fd5b50565b60008060006060848603121561007957600080fd5b83516100848161004c565b60208501519093506100958161004c565b60408501519092506100a68161004c565b809150509250925092565b60805160a05160c05161038a6100f9600039600060ca015260008181609001528181610188015261027201526000818160f101528181610153015261023d015261038a6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630d253d761461005c5780633a5381b51461008b5780635fbfb9cf146100b2578063b0d691fe146100c5578063bc10273e146100ec575b600080fd5b61006f61006a3660046102d5565b610113565b6040516001600160a01b03909116815260200160405180910390f35b61006f7f000000000000000000000000000000000000000000000000000000000000000081565b61006f6100c03660046102d5565b6101fd565b61006f7f000000000000000000000000000000000000000000000000000000000000000081565b61006f7f000000000000000000000000000000000000000000000000000000000000000081565b60408051606084901b6bffffffffffffffffffffffff19166020820152815160148183030181526034820192839052631bb12e6960e01b909252600091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631bb12e69906101b4907f00000000000000000000000000000000000000000000000000000000000000009085908890603801610301565b602060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610366565b949350505050565b60408051606084901b6bffffffffffffffffffffffff1916602082015281516014818303018152603482019283905263296601cd60e01b909252600091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063296601cd9061029e907f00000000000000000000000000000000000000000000000000000000000000009085908890603801610301565b6020604051808303816000875af11580156101d1573d6000803e3d6000fd5b6001600160a01b03811681146102d257600080fd5b50565b600080604083850312156102e857600080fd5b82356102f3816102bd565b946020939093013593505050565b60018060a01b038416815260006020606081840152845180606085015260005b8181101561033d57868101830151858201608001528201610321565b506000608082860101526080601f19601f83011685010192505050826040830152949350505050565b60006020828403121561037857600080fd5b8151610383816102bd565b9392505050560000000000000000000000005d006d3880645ec6e254e18c1f879dac9dd71a39000000000000000000000000180d6465f921c7e0dea0040107d342c87455fff50000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789"; - - function run() external { - address caller = 0x9775137314fE595c943712B0b336327dfa80aE8A; - vm.startBroadcast(caller); - DEPLOYER.call(FACTORY_BYTECODE); - require(EXPECTED_FACTORY.code.length != 0); - DEPLOYER.call(ECDSA_FACTORY_BYTECODE); - require(EXPECTED_ECDSA_FACTORY.code.length != 0); - vm.stopBroadcast(); - } -} diff --git a/script/deterministic/Kernel2_2.s.sol b/script/deterministic/Kernel2_2.s.sol deleted file mode 100644 index a2b41d29..00000000 --- a/script/deterministic/Kernel2_2.s.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.8.0; - -import "./DeterministicDeploy.s.sol"; - -library Kernel_2_2_Deploy { - address constant EXPECTED_KERNEL_2_2_ADDRESS = 0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5; - bytes constant KERNEL_2_2_CODE = - hex"000000000000000000000000000000000000000000000000000000000000000061014034620001b757601f620021e238819003918201601f19168301916001600160401b03831184841017620001bc57808492602094604052833981010312620001b757516001600160a01b0381168103620001b757306080524660a05260a062000069620001d2565b600681526005602082016512d95c9b995b60d21b815260206200008b620001d2565b838152019264181719171960d91b845251902091208160c0528060e052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83526020830152604082015246606082015230608082015220906101009182526101209081527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd96a010000000000000000000080600160f01b031982541617905560405190611fef9283620001f3843960805183611a6a015260a05183611a8d015260c05183611aff015260e05183611b2501525182611a490152518181816104db0152818161079a015281816108a701528181610a3201528181610b5a01528181610d5401528181610e7501528181610f740152818161109e01528181611147015261148e0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620001bc5760405256fe6080604052600436101561001d575b366110815761001b611ece565b005b60003560e01c806306fdde031461018d5780630b3dc35414610188578063150b7a02146101835780631626ba7e1461017e57806329f8b17414610179578063333daf921461017457806334fcd5be1461016f5780633659cfe61461016a5780633a871cdd146101655780633e1b08121461016057806351166ba01461015b578063519454471461015657806354fd4d501461015157806355b14f501461014c57806357b750471461014757806384b0196e1461014257806388e7fd061461013d578063b0d691fe14610138578063bc197c8114610133578063d087d2881461012e578063d1f5789414610129578063d5416221146101245763f23a6e610361000e57610fef565b610f5d565b610ec1565b610e42565b610db3565b610d3e565b610d09565b610c61565b610c2a565b610b44565b610af0565b6109eb565b610922565b61085e565b61081c565b610776565b610693565b61060e565b610466565b610413565b610386565b610307565b6102d3565b600091031261019d57565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101cb57604052565b6101a2565b606081019081106001600160401b038211176101cb57604052565b608081019081106001600160401b038211176101cb57604052565b604081019081106001600160401b038211176101cb57604052565b90601f801991011681019081106001600160401b038211176101cb57604052565b6040519061024f826101eb565b565b6040519061016082018281106001600160401b038211176101cb57604052565b6040519061027e82610206565b600682526512d95c9b995b60d21b6020830152565b919082519283825260005b8481106102bf575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161029e565b3461019d57600036600319011261019d576103036102ef610271565b604051918291602083526020830190610293565b0390f35b3461019d57600036600319011261019d576020600080516020611fcf8339815191525460501c6040519060018060a01b03168152f35b6001600160a01b0381160361019d57565b359061024f8261033d565b9181601f8401121561019d578235916001600160401b03831161019d576020838186019501011161019d57565b3461019d57608036600319011261019d576103a260043561033d565b6103ad60243561033d565b6064356001600160401b03811161019d576103cc903690600401610359565b5050604051630a85bd0160e11b8152602090f35b90604060031983011261019d5760043591602435906001600160401b03821161019d5761040f91600401610359565b9091565b3461019d57602061042c610426366103e0565b91611b5b565b6040516001600160e01b03199091168152f35b600435906001600160e01b03198216820361019d57565b65ffffffffffff81160361019d57565b60c036600319011261019d5761047a61043f565b602435906104878261033d565b604435906104948261033d565b6064356104a081610456565b608435936104ad85610456565b60a4356001600160401b03811161019d576104cc903690600401610359565b9590946001600160a01b0393337f00000000000000000000000000000000000000000000000000000000000000008616141580610604575b6105f25784926105396105659261052a61051c610242565b65ffffffffffff9094168452565b65ffffffffffff166020830152565b6001600160a01b03851660408201526001600160a01b038316606082015261056087611049565b61172b565b1693843b1561019d576040519063064acaab60e11b8252818061058f6000998a94600484016117de565b038183895af180156105ed576105d4575b5016906001600160e01b0319167fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d3213538480a480f35b806105e16105e7926101b8565b80610192565b386105a0565b611475565b604051637046c88d60e01b8152600490fd5b5030331415610504565b3461019d576020610627610621366103e0565b91611e13565b604051908152f35b9291926001600160401b0382116101cb5760405191610658601f8201601f191660200184610221565b82948184528183011161019d578281602093846000960137010152565b9080601f8301121561019d578160206106909335910161062f565b90565b60208060031936011261019d576001600160401b0360043581811161019d573660238201121561019d578060040135918083116101cb578260051b906040908151946106e187850187610221565b855285850191602480948601019436861161019d57848101935b86851061070b5761001b88611144565b843584811161019d5782016060602319823603011261019d57835191610730836101d0565b8782013561073d8161033d565b835260448201358b84015260648201359286841161019d576107678c94938a869536920101610675565b868201528152019401936106fb565b602036600319011261019d5760043561078e8161033d565b6001600160a01b0390337f00000000000000000000000000000000000000000000000000000000000000008316141580610812575b6105f257807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2005b50303314156107c3565b60031960603682011261019d57600435906001600160401b03821161019d5761016090823603011261019d576106276020916044359060243590600401611481565b3461019d57602036600319011261019d576004356001600160c01b0381169081900361019d57604051631aab3f0d60e11b815230600482015260248101919091526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105ed57610303916000916108f4575b506040519081529081906020820190565b610915915060203d811161091b575b61090d8183610221565b810190611396565b386108e3565b503d610903565b3461019d57602036600319011261019d5761030361096761094161043f565b60006060604051610951816101eb565b8281528260208201528260408201520152611049565b60405190610974826101eb565b805465ffffffffffff80821684528160301c16602084015260601c60408301526001808060a01b03910154166060820152604051918291829190916060608082019365ffffffffffff80825116845260208201511660208401528160018060a01b0391826040820151166040860152015116910152565b608036600319011261019d57600435610a038161033d565b6044356001600160401b03811161019d57610a22903690600401610675565b90606435600281101561019d57337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610ac5575b80610ab0575b6105f257610a75816110fa565b610a9e576000828193926020839451920190602435905af13d82803e15610a9a573d90f35b3d90fd5b6040516367ce775960e01b8152600490fd5b50610ac0610abc611c13565b1590565b610a68565b5030331415610a62565b60405190610adc82610206565b6005825264181719171960d91b6020830152565b3461019d57600036600319011261019d576103036102ef610acf565b90604060031983011261019d57600435610b258161033d565b91602435906001600160401b03821161019d5761040f91600401610359565b610b4d36610b0c565b90916001600160a01b03337f00000000000000000000000000000000000000000000000000000000000000008216141580610c20575b6105f25780600080516020611fcf8339815191525460501c1691610ba681611eff565b1692836040519360009586947fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c8680a3813b15610c1c578385610bfa819593829463064acaab60e11b8452600484016117de565b03925af180156105ed57610c0c575080f35b806105e1610c19926101b8565b80f35b8380fd5b5030331415610b83565b3461019d57600036600319011261019d576020600080516020611fcf8339815191525460e01b6040519063ffffffff60e01b168152f35b3461019d57600036600319011261019d57610cb7610c7d610271565b610c85610acf565b90604051928392600f60f81b8452610ca960209360e08587015260e0860190610293565b908482036040860152610293565b90466060840152306080840152600060a084015282820360c08401528060605192838152019160809160005b828110610cf257505050500390f35b835185528695509381019392810192600101610ce3565b3461019d57600036600319011261019d576020600080516020611fcf8339815191525465ffffffffffff60405191831c168152f35b3461019d57600036600319011261019d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9181601f8401121561019d578235916001600160401b03831161019d576020808501948460051b01011161019d57565b3461019d5760a036600319011261019d57610dcf60043561033d565b610dda60243561033d565b6001600160401b0360443581811161019d57610dfa903690600401610d83565b505060643581811161019d57610e14903690600401610d83565b505060843590811161019d57610e2e903690600401610359565b505060405163bc197c8160e01b8152602090f35b3461019d57600036600319011261019d57604051631aab3f0d60e11b8152306004820152600060248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105ed57610303916000916108f457506040519081529081906020820190565b610eca36610b0c565b600080516020611fcf83398151915254919290916001600160a01b03919060501c8216610f4c57610efa81611eff565b1691823b1561019d57610f2f926000928360405180968195829463064acaab60e11b84526020600485015260248401916117bd565b03925af180156105ed57610f3f57005b806105e161001b926101b8565b60405162dc149f60e41b8152600490fd5b602036600319011261019d57610f7161043f565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610fe5575b6105f257600080516020611fcf83398151915290815469ffffffffffff000000004260201b169160e01c9069ffffffffffffffffffff191617179055600080f35b5030331415610fa4565b3461019d5760a036600319011261019d5761100b60043561033d565b61101660243561033d565b6084356001600160401b03811161019d57611035903690600401610359565b505060405163f23a6e6160e01b8152602090f35b63ffffffff60e01b166000527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda602052604060002090565b600061109781356001600160e01b031916611049565b5460601c337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806110eb575b6105f257818091368280378136915af43d82803e15610a9a573d90f35b506110f4611c13565b156110ce565b6002111561110457565b634e487b7160e01b600052602160045260246000fd5b805182101561112e5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806111d1575b6105f25780519060005b82811061118d57505050565b60008061119a838561111a565b5180516001600160a01b03166020916040838201519101519283519301915af13d6000803e156111cc57600101611181565b3d6000fd5b506111dd610abc611c13565b611177565b9060041161019d5790600490565b909291928360041161019d57831161019d57600401916003190190565b9060241161019d5760100190601490565b9060581161019d5760380190602090565b9060241161019d5760040190602090565b9060381161019d5760240190601490565b90600a1161019d5760040190600690565b9060101161019d57600a0190600690565b9093929384831161019d57841161019d578101920390565b6001600160e01b031990358181169392600481106112a857505050565b60040360031b82901b16169150565b91906101608382031261019d576112cc610251565b926112d68161034e565b8452602081013560208501526040810135916001600160401b039283811161019d5781611304918401610675565b6040860152606082013583811161019d5781611321918401610675565b60608601526080820135608086015260a082013560a086015260c082013560c086015260e082013560e086015261010080830135908601526101208083013584811161019d5782611373918501610675565b90860152610140928383013590811161019d576113909201610675565b90830152565b9081602091031261019d575190565b606080825282516001600160a01b0316908201529193929160409161146b9060208101516080840152838101516113ea610160918260a08701526101c0860190610293565b9061145861140a606085015193605f1994858983030160c08a0152610293565b608085015160e088015260a085015192610100938489015260c08601519061012091828a015260e08701519461014095868b0152870151908901528501518488830301610180890152610293565b92015190848303016101a0850152610293565b9460208201520152565b6040513d6000823e3d90fd5b6001600160a01b039392917f00000000000000000000000000000000000000000000000000000000000000008516330361169f576004948535928361014481013501918760248401930135946114e06114da87866111e2565b9061128b565b926001600160e01b031980851691821561167c576114ff9036906112b7565b94611519600080516020611fcf8339815191525460e01b90565b1616156115315760405163fc2f51c560e01b81528a90fd5b97989697600160e01b810361162b575090602095966115bb61158961157061156b6114da87606460009901350160248782013591016111e2565b611049565b6001810154909a9081906001600160a01b0316986111f0565b995460d081901b6001600160d01b03191660709190911b65ffffffffffff60a01b1617995b8b61161d575b369161062f565b6101408501526115df604051998a9788968794633a871cdd60e01b865285016113a5565b0393165af19081156105ed57610690926000926115fd575b50611f4c565b61161691925060203d811161091b5761090d8183610221565b90386115f7565b348080808f335af1506115b4565b9095939190600160e11b0361166f576116656115bb946000936116606114da8a606460209c01350160248d82013591016111e2565b6117ef565b91999296916115ae565b5050505050505050600190565b9697505050505050506106909394508215611d47573434343486335af150611d47565b604051636b31ba1560e11b8152600490fd5b6bffffffffffffffffffffffff1990358181169392601481106116d357505050565b60140360031b82901b16169150565b3590602081106116f0575090565b6000199060200360031b1b1690565b6001600160d01b0319903581811693926006811061171c57505050565b60060360031b82901b16169150565b81516020830151604084015160309190911b6bffffffffffff0000000000001665ffffffffffff9290921691909117606091821b6bffffffffffffffffffffffff19161782559091015160019190910180546001600160a01b0319166001600160a01b0392909216919091179055565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9160206106909381815201916117bd565b91906117fb828261120d565b611804916116b1565b60601c93611812838361121e565b61181b916116e2565b605883016078820194858360580190611835918388611273565b61183e916116e2565b611848828761122f565b611851916116e2565b61185b8388611240565b611864916116b1565b60601c61187236878761062f565b8051602091820120604080517f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641769381019384526001600160e01b03198e169181019190915260608101949094526001600160a01b0392909216608084015260a080840192909252908252906118e860c082610221565b5190206118f490611a47565b9084019660788801611907918489611273565b9061191192611e13565b61191b828761122f565b6001600160a01b03199161192f91906116e2565b1661193991611f4c565b9660788688010196820360771901956119528382611251565b61195b916116ff565b60d01c926119698183611262565b611972916116ff565b60d01c916119808282611240565b611989916116b1565b60601c916119969161120d565b61199f916116b1565b60601c916119ab610242565b65ffffffffffff909516855265ffffffffffff1660208501526001600160a01b031660408401526001600160a01b031660608301526119e990611049565b906119f39161172b565b6001600160a01b03871691823b1561019d57611a29926000928360405180968195829463064acaab60e11b8452600484016117de565b03925af180156105ed57611a3a5750565b806105e161024f926101b8565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141615611ad4575b671901000000000000600052601a52603a526042601820906000603a52565b5060a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015220611ab5565b90611b669291611e13565b65ffffffffffff808260a01c16908115600114611bd1575b428360d01c11611bc15742911610611bb4576001600160a01b0316611ba857630b135d3f60e11b90565b6001600160e01b031990565b506001600160e01b031990565b506001600160e01b031992915050565b905080611b7e565b9081602091031261019d5751801515810361019d5790565b6001600160a01b0390911681526040602082018190526106909291019061179b565b611c1d3633611e7b565b611d4257611c366000356001600160e01b031916611049565b6001810154611c55906001600160a01b03165b6001600160a01b031690565b906001600160a01b03821615908115611d06575b8115611cdb575b5015611c7c5750600090565b60206040518092639ea9bd5960e01b82528180611c9d363360048401611bf1565b03915afa9081156105ed57600091611cb3575090565b610690915060203d8111611cd4575b611ccc8183610221565b810190611bd9565b503d611cc2565b54611cf5915065ffffffffffff165b65ffffffffffff1690565b65ffffffffffff4291161138611c70565b905065ffffffffffff611d26611cea835465ffffffffffff9060301c1690565b168015159081611d38575b5090611c69565b9050421138611d31565b600190565b9091611d5336836112b7565b610140928381013590601e198136030182121561019d5701938435946001600160401b03861161019d5760200193853603851361019d57611d9d6115b487611de5986020986111f0565b908301526000611dc7611c49600080516020611fcf8339815191525460501c60018060a01b031690565b9260405196879586948593633a871cdd60e01b8552600485016113a5565b03925af19081156105ed57600091611dfb575090565b610690915060203d811161091b5761090d8183610221565b600080516020611fcf833981519152546040805163199ed7c960e11b8152600481019390935260248301529092602092849260501c6001600160a01b03169183918291611e65916044840191906117bd565b03915afa9081156105ed57600091611dfb575090565b600080516020611fcf8339815191525460408051639ea9bd5960e01b81526001600160a01b039384166004820152602481019190915292602092849260501c169082908190611c9d90604483019061179b565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460408051338152346020820152a1565b600080516020611fcf83398151915280547fffff0000000000000000000000000000000000000000ffffffffffffffffffff1660509290921b600160501b600160f01b0316919091179055565b8082186001600160a01b031615600114611f67575050600190565b65ffffffffffff60a01b8181169265ffffffffffff60a01b1992831692811691908415611fc5575b81168015611fbe575b848110908518028085189414611fb6575b5081811190821802181790565b925038611fa9565b5080611f98565b93508093611f8f56fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd90000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789"; - address constant EXPECTED_KERNEL_LITE_2_2_ADDRESS = 0xbEdb61Be086F3f15eE911Cc9AB3EEa945DEbFa96; - bytes constant KERNEL_LITE_2_2_CODE = - hex"0000000000000000000000000000000000000000000000000000000000000000610160346200021357601f6200230b38819003918201601f19168301916001600160401b0383118484101762000218578084926040948552833981010312620002135780516001600160a01b039182821682036200021357602001519182168092036200021357306080524660a05260a06200007a6200022e565b600681526005602082016512d95c9b995b60d21b815260206200009c6200022e565b838152019264181719171960d91b845251902091208160c0528060e052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83526020830152604082015246606082015230608082015220916101009283526101209182527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd96a010000000000000000000080600160f01b03198254161790556101409081527fdea7fea882fba743201b2aeb1babf326b8944488db560784858525d123ee7e976001808060a01b0319825416179055604051916120bc93846200024f853960805184611b7c015260a05184611b9f015260c05184611c11015260e05184611c3701525183611b5b0152518281816104fb015281816107ba015281816108c701528181610a5201528181610b7301528181610d1201528181610e780152818161101c01528181611114015281816111c40152818161126d01526115c2015251818181610e160152610ed90152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620002185760405256fe6080604052600436101561001d575b366111a75761001b611e6b565b005b60003560e01c806306fdde03146101ad5780630b3dc354146101a8578063150b7a02146101a35780631626ba7e1461019e57806329f8b17414610199578063333daf921461019457806334fcd5be1461018f5780633659cfe61461018a5780633a871cdd146101855780633e1b08121461018057806351166ba01461017b578063519454471461017657806354fd4d501461017157806355b14f501461016c57806357b750471461016757806384b0196e1461016257806388e7fd061461015d578063b0d691fe14610158578063bc197c8114610153578063cdaea3ed1461014e578063d087d28814610149578063d1f5789414610144578063d54162211461013f578063f23a6e611461013a5763f2fde38b0361000e576110f1565b611097565b611005565b610ec4565b610e45565b610e00565b610d71565b610cfc565b610cc7565b610c1f565b610be8565b610b64565b610b10565b610a0b565b610942565b61087e565b61083c565b610796565b6106b3565b61062e565b610486565b610433565b6103a6565b610327565b6102f3565b60009103126101bd57565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101eb57604052565b6101c2565b606081019081106001600160401b038211176101eb57604052565b608081019081106001600160401b038211176101eb57604052565b604081019081106001600160401b038211176101eb57604052565b90601f801991011681019081106001600160401b038211176101eb57604052565b6040519061026f8261020b565b565b6040519061016082018281106001600160401b038211176101eb57604052565b6040519061029e82610226565b600682526512d95c9b995b60d21b6020830152565b919082519283825260005b8481106102df575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016102be565b346101bd5760003660031901126101bd5761032361030f610291565b6040519182916020835260208301906102b3565b0390f35b346101bd5760003660031901126101bd57602060008051602061207c8339815191525460501c6040519060018060a01b03168152f35b6001600160a01b038116036101bd57565b359061026f8261035d565b9181601f840112156101bd578235916001600160401b0383116101bd57602083818601950101116101bd57565b346101bd5760803660031901126101bd576103c260043561035d565b6103cd60243561035d565b6064356001600160401b0381116101bd576103ec903690600401610379565b5050604051630a85bd0160e11b8152602090f35b9060406003198301126101bd5760043591602435906001600160401b0382116101bd5761042f91600401610379565b9091565b346101bd57602061044c61044636610400565b91611c6d565b6040516001600160e01b03199091168152f35b600435906001600160e01b0319821682036101bd57565b65ffffffffffff8116036101bd57565b60c03660031901126101bd5761049a61045f565b602435906104a78261035d565b604435906104b48261035d565b6064356104c081610476565b608435936104cd85610476565b60a4356001600160401b0381116101bd576104ec903690600401610379565b9590946001600160a01b0393337f00000000000000000000000000000000000000000000000000000000000000008616141580610624575b6106125784926105596105859261054a61053c610262565b65ffffffffffff9094168452565b65ffffffffffff166020830152565b6001600160a01b03851660408201526001600160a01b03831660608201526105808761116f565b611869565b1693843b156101bd576040519063064acaab60e11b825281806105af6000998a94600484016118d9565b038183895af1801561060d576105f4575b5016906001600160e01b0319167fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d3213538480a480f35b80610601610607926101d8565b806101b2565b386105c0565b6115a9565b604051637046c88d60e01b8152600490fd5b5030331415610524565b346101bd57602061064761064136610400565b91611f94565b604051908152f35b9291926001600160401b0382116101eb5760405191610678601f8201601f191660200184610241565b8294818452818301116101bd578281602093846000960137010152565b9080601f830112156101bd578160206106b09335910161064f565b90565b6020806003193601126101bd576001600160401b036004358181116101bd57366023820112156101bd578060040135918083116101eb578260051b9060409081519461070187850187610241565b85528585019160248094860101943686116101bd57848101935b86851061072b5761001b8861126a565b84358481116101bd578201606060231982360301126101bd57835191610750836101f0565b8782013561075d8161035d565b835260448201358b8401526064820135928684116101bd576107878c94938a869536920101610695565b8682015281520194019361071b565b60203660031901126101bd576004356107ae8161035d565b6001600160a01b0390337f00000000000000000000000000000000000000000000000000000000000000008316141580610832575b61061257807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2005b50303314156107e3565b6003196060368201126101bd57600435906001600160401b0382116101bd576101609082360301126101bd5761064760209160443590602435906004016115b5565b346101bd5760203660031901126101bd576004356001600160c01b038116908190036101bd57604051631aab3f0d60e11b815230600482015260248101919091526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561060d5761032391600091610914575b506040519081529081906020820190565b610935915060203d811161093b575b61092d8183610241565b8101906114ca565b38610903565b503d610923565b346101bd5760203660031901126101bd5761032361098761096161045f565b600060606040516109718161020b565b828152826020820152826040820152015261116f565b604051906109948261020b565b805465ffffffffffff80821684528160301c16602084015260601c60408301526001808060a01b03910154166060820152604051918291829190916060608082019365ffffffffffff80825116845260208201511660208401528160018060a01b0391826040820151166040860152015116910152565b60803660031901126101bd57600435610a238161035d565b6044356001600160401b0381116101bd57610a42903690600401610695565b9060643560028110156101bd57337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610ae5575b80610ad0575b61061257610a9581611220565b610abe576000828193926020839451920190602435905af13d82803e15610aba573d90f35b3d90fd5b6040516367ce775960e01b8152600490fd5b50610ae0610adc611d3c565b1590565b610a88565b5030331415610a82565b60405190610afc82610226565b6005825264181719171960d91b6020830152565b346101bd5760003660031901126101bd5761032361030f610aef565b9060406003198301126101bd57600435610b458161035d565b91602435906001600160401b0382116101bd5761042f91600401610379565b610b6d36610b2c565b505050337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610bde575b6106125760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b6044820152606490fd5b5030331415610ba3565b346101bd5760003660031901126101bd57602060008051602061207c8339815191525460e01b6040519063ffffffff60e01b168152f35b346101bd5760003660031901126101bd57610c75610c3b610291565b610c43610aef565b90604051928392600f60f81b8452610c6760209360e08587015260e08601906102b3565b9084820360408601526102b3565b90466060840152306080840152600060a084015282820360c08401528060605192838152019160809160005b828110610cb057505050500390f35b835185528695509381019392810192600101610ca1565b346101bd5760003660031901126101bd57602060008051602061207c8339815191525465ffffffffffff60405191831c168152f35b346101bd5760003660031901126101bd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9181601f840112156101bd578235916001600160401b0383116101bd576020808501948460051b0101116101bd57565b346101bd5760a03660031901126101bd57610d8d60043561035d565b610d9860243561035d565b6001600160401b036044358181116101bd57610db8903690600401610d41565b50506064358181116101bd57610dd2903690600401610d41565b50506084359081116101bd57610dec903690600401610379565b505060405163bc197c8160e01b8152602090f35b346101bd5760003660031901126101bd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101bd5760003660031901126101bd57604051631aab3f0d60e11b8152306004820152600060248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561060d576103239160009161091457506040519081529081906020820190565b610ecd36610b2c565b916001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821690821603610fb55760008051602061209c8339815191525416610f6457610f30610f2a61001b93610f3693611308565b906117ef565b60601c90565b60008051602061209c83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b8152602060048201526024808201527f4b65726e656c4c69746545434453413a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f4b65726e656c4c69746545434453413a20696e76616c69642076616c6964617460448201526137b960f11b6064820152608490fd5b60203660031901126101bd5761101961045f565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614158061108d575b6106125760008051602061207c83398151915290815469ffffffffffff000000004260201b169160e01c9069ffffffffffffffffffff191617179055600080f35b503033141561104c565b346101bd5760a03660031901126101bd576110b360043561035d565b6110be60243561035d565b6084356001600160401b0381116101bd576110dd903690600401610379565b505060405163f23a6e6160e01b8152602090f35b60203660031901126101bd576004356111098161035d565b6001600160a01b03337f00000000000000000000000000000000000000000000000000000000000000008216141580611165575b6106125760008051602061209c83398151915280546001600160a01b03191691909216179055005b503033141561113d565b63ffffffff60e01b166000527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda602052604060002090565b60006111bd81356001600160e01b03191661116f565b5460601c337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580611211575b61061257818091368280378136915af43d82803e15610aba573d90f35b5061121a611d3c565b156111f4565b6002111561122a57565b634e487b7160e01b600052602160045260246000fd5b80518210156112545760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806112f7575b6106125780519060005b8281106112b357505050565b6000806112c08385611240565b5180516001600160a01b03166020916040838201519101519283519301915af13d6000803e156112f2576001016112a7565b3d6000fd5b50611303610adc611d3c565b61129d565b906014116101bd5790601490565b906004116101bd5790600490565b90929192836004116101bd5783116101bd57600401916003190190565b906024116101bd5760100190601490565b906058116101bd5760380190602090565b906024116101bd5760040190602090565b906038116101bd5760240190601490565b90600a116101bd5760040190600690565b906010116101bd57600a0190600690565b909392938483116101bd5784116101bd578101920390565b6001600160e01b031990358181169392600481106113dc57505050565b60040360031b82901b16169150565b9190610160838203126101bd57611400610271565b9261140a8161036e565b8452602081013560208501526040810135916001600160401b03928381116101bd5781611438918401610695565b604086015260608201358381116101bd5781611455918401610695565b60608601526080820135608086015260a082013560a086015260c082013560c086015260e082013560e08601526101008083013590860152610120808301358481116101bd57826114a7918501610695565b9086015261014092838301359081116101bd576114c49201610695565b90830152565b908160209103126101bd575190565b606080825282516001600160a01b0316908201529193929160409161159f90602081015160808401528381015161151e610160918260a08701526101c08601906102b3565b9061158c61153e606085015193605f1994858983030160c08a01526102b3565b608085015160e088015260a085015192610100938489015260c08601519061012091828a015260e08701519461014095868b01528701519089015285015184888303016101808901526102b3565b92015190848303016101a08501526102b3565b9460208201520152565b6040513d6000823e3d90fd5b6001600160a01b039392917f0000000000000000000000000000000000000000000000000000000000000000851633036117dd5760049485359283610144810135019187602484019301359461161461160e8786611316565b906113bf565b926001600160e01b03198085169182156117b0576116339036906113eb565b9461164d60008051602061207c8339815191525460e01b90565b1616156116655760405163fc2f51c560e01b81528a90fd5b97989697600160e01b810361175f575090602095966116ef6116bd6116a461169f61160e8760646000990135016024878201359101611316565b61116f565b6001810154909a9081906001600160a01b031698611324565b995460d081901b6001600160d01b03191660709190911b65ffffffffffff60a01b1617995b8b611751575b369161064f565b610140850152611713604051998a9788968794633a871cdd60e01b865285016114d9565b0393165af190811561060d576106b092600092611731575b50611ff9565b61174a91925060203d811161093b5761092d8183610241565b903861172b565b348080808f335af1506116e8565b9095939190600160e11b036117a3576117996116ef9460009361179461160e8a606460209c01350160248d8201359101611316565b611901565b91999296916116e2565b5050505050505050600190565b9750505050505050916106b0939450806117cb575b50611e9c565b3490349034903490335af150386117c5565b604051636b31ba1560e11b8152600490fd5b6bffffffffffffffffffffffff19903581811693926014811061181157505050565b60140360031b82901b16169150565b35906020811061182e575090565b6000199060200360031b1b1690565b6001600160d01b0319903581811693926006811061185a57505050565b60060360031b82901b16169150565b81516020830151604084015160309190911b6bffffffffffff0000000000001665ffffffffffff9290921691909117606091821b6bffffffffffffffffffffffff19161782559091015160019190910180546001600160a01b0319166001600160a01b0392909216919091179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b919061190d8282611341565b611916916117ef565b60601c936119248383611352565b61192d91611820565b6058830160788201948583605801906119479183886113a7565b61195091611820565b61195a8287611363565b61196391611820565b61196d8388611374565b611976916117ef565b60601c61198436878761064f565b8051602091820120604080517f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641769381019384526001600160e01b03198e169181019190915260608101949094526001600160a01b0392909216608084015260a080840192909252908252906119fa60c082610241565b519020611a0690611b59565b9084019660788801611a199184896113a7565b90611a2392611f94565b611a2d8287611363565b6001600160a01b031991611a419190611820565b16611a4b91611ff9565b966078868801019682036077190195611a648382611385565b611a6d9161183d565b60d01c92611a7b8183611396565b611a849161183d565b60d01c91611a928282611374565b611a9b916117ef565b60601c91611aa891611341565b611ab1916117ef565b60601c91611abd610262565b65ffffffffffff909516855265ffffffffffff1660208501526001600160a01b031660408401526001600160a01b03166060830152611afb9061116f565b90611b0591611869565b6001600160a01b03871691823b156101bd57611b3b926000928360405180968195829463064acaab60e11b8452600484016118d9565b03925af1801561060d57611b4c5750565b8061060161026f926101d8565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141615611be6575b671901000000000000600052601a52603a526042601820906000603a52565b5060a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015220611bc7565b90611c789291611f94565b65ffffffffffff808260a01c16908115600114611ce3575b428360d01c11611cd35742911610611cc6576001600160a01b0316611cba57630b135d3f60e11b90565b6001600160e01b031990565b506001600160e01b031990565b506001600160e01b031992915050565b905080611c90565b908160209103126101bd575180151581036101bd5790565b6001600160a01b0390911681526040602082018190528101829052606091806000848401376000828201840152601f01601f1916010190565b60008051602061209c833981519152546001600160a01b039081163314611e6557611d726000356001600160e01b03191661116f565b60018101546001600160a01b031691821615908115611e29575b8115611dfe575b5015611d9f5750600090565b60206040518092639ea9bd5960e01b82528180611dc0363360048401611d03565b03915afa90811561060d57600091611dd6575090565b6106b0915060203d8111611df7575b611def8183610241565b810190611ceb565b503d611de5565b54611e18915065ffffffffffff165b65ffffffffffff1690565b65ffffffffffff4291161138611d93565b905065ffffffffffff611e49611e0d835465ffffffffffff9060301c1690565b168015159081611e5b575b5090611d8c565b9050421138611e54565b50600190565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460408051338152346020820152a1565b90611ecc906020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9061014081013590601e19813603018212156101bd5701908135916001600160401b0383116101bd576020019180360383136101bd576116e881611f1392611f1995611324565b90611f45565b60008051602061209c833981519152546001600160a01b03908116911603611f4057600090565b600190565b6001608060006041602094969596604080519880519285526060810151851a88528781015182520151606052145afa51913d15611f86576000606052604052565b638baa579f6000526004601cfd5b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c600420611fcd9291611f139192369161064f565b60008051602061209c833981519152546001600160a01b03918216911614611ff457600190565b600090565b8082186001600160a01b031615600114612014575050600190565b65ffffffffffff60a01b8181169265ffffffffffff60a01b1992831692811691908415612072575b8116801561206b575b848110908518028085189414612063575b5081811190821802181790565b925038612056565b5080612045565b9350809361203c56fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9dea7fea882fba743201b2aeb1babf326b8944488db560784858525d123ee7e970000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789000000000000000000000000d9ab5096a832b9ce79914329daee236f8eea0390"; - - function deploy() internal returns (address, address) { - DeterministicDeploy.checkDeploy("Kernel 2.2", EXPECTED_KERNEL_2_2_ADDRESS, KERNEL_2_2_CODE); - DeterministicDeploy.checkDeploy("Kernel lite 2.2", EXPECTED_KERNEL_LITE_2_2_ADDRESS, KERNEL_LITE_2_2_CODE); - return (EXPECTED_KERNEL_2_2_ADDRESS, EXPECTED_KERNEL_LITE_2_2_ADDRESS); - } -} diff --git a/script/deterministic/Kernel2_3.s.sol b/script/deterministic/Kernel2_3.s.sol deleted file mode 100644 index fdac0b61..00000000 --- a/script/deterministic/Kernel2_3.s.sol +++ /dev/null @@ -1,19 +0,0 @@ -pragma solidity ^0.8.0; - -import "./DeterministicDeploy.s.sol"; - -library Kernel_2_3_Deploy { - address constant EXPECTED_KERNEL_2_3_ADDRESS = 0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab; - bytes constant KERNEL_2_3_CODE = - hex"000000000000000000000000000000000000000000000000000000000000000061014034620001be57601f6200238b38819003918201601f19168301916001600160401b03831184841017620001c357808492602094604052833981010312620001be57516001600160a01b0381168103620001be57306080524660a05260a062000069620001d9565b600681526005602082016512d95c9b995b60d21b815260206200008b620001d9565b838152019264302e322e3360d81b845251902091208160c0528060e052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83526020830152604082015246606082015230608082015220906101009182526101209081527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd96a010000000000000000000080600160f01b0319825416179055604051906121919283620001fa843960805183611b42015260a05183611b65015260c05183611bd7015260e05183611bfd01525182611b21015251818181610506015281816107c5015281816108d201528181610a5d01528181610b8501528181610d7f01528181610de901528181610f4d0152818161104c015281816111760152818161121f01526115660152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b03811183821017620001c35760405256fe6080604052600436101561001d575b366111595761001b612047565b005b60003560e01c806306fdde031461019d5780630b3dc35414610198578063150b7a02146101935780631626ba7e1461018e57806329f8b17414610189578063333daf921461018457806334fcd5be1461017f5780633659cfe61461017a5780633a871cdd146101755780633e1b08121461017057806351166ba01461016b578063519454471461016657806354fd4d501461016157806355b14f501461015c57806357b750471461015757806384b0196e1461015257806388e7fd061461014d578063b0d691fe14610148578063b68df16d14610143578063bc197c811461013e578063d087d28814610139578063d1f5789414610134578063d54162211461012f5763f23a6e610361000e576110c7565b611035565b610f99565b610f1a565b610e8b565b610dae565b610d69565b610d34565b610c8c565b610c55565b610b6f565b610b1b565b610a16565b61094d565b610889565b610847565b6107a1565b6106be565b610639565b610491565b61043e565b6103b1565b610332565b6102fe565b60009103126101ad57565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101db57604052565b6101b2565b606081019081106001600160401b038211176101db57604052565b608081019081106001600160401b038211176101db57604052565b604081019081106001600160401b038211176101db57604052565b60c081019081106001600160401b038211176101db57604052565b90601f801991011681019081106001600160401b038211176101db57604052565b6040519061027a826101fb565b565b6040519061016082018281106001600160401b038211176101db57604052565b604051906102a982610216565b600682526512d95c9b995b60d21b6020830152565b919082519283825260005b8481106102ea575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016102c9565b346101ad5760003660031901126101ad5761032e61031a61029c565b6040519182916020835260208301906102be565b0390f35b346101ad5760003660031901126101ad5760206000805160206121718339815191525460501c6040519060018060a01b03168152f35b6001600160a01b038116036101ad57565b359061027a82610368565b9181601f840112156101ad578235916001600160401b0383116101ad57602083818601950101116101ad57565b346101ad5760803660031901126101ad576103cd600435610368565b6103d8602435610368565b6064356001600160401b0381116101ad576103f7903690600401610384565b5050604051630a85bd0160e11b8152602090f35b9060406003198301126101ad5760043591602435906001600160401b0382116101ad5761043a91600401610384565b9091565b346101ad5760206104576104513661040b565b91611c33565b6040516001600160e01b03199091168152f35b600435906001600160e01b0319821682036101ad57565b65ffffffffffff8116036101ad57565b60c03660031901126101ad576104a561046a565b602435906104b282610368565b604435906104bf82610368565b6064356104cb81610481565b608435936104d885610481565b60a4356001600160401b0381116101ad576104f7903690600401610384565b9590946001600160a01b0393337f0000000000000000000000000000000000000000000000000000000000000000861614158061062f575b61061d5784926105646105909261055561054761026d565b65ffffffffffff9094168452565b65ffffffffffff166020830152565b6001600160a01b03851660408201526001600160a01b038316606082015261058b87611121565b611803565b1693843b156101ad576040519063064acaab60e11b825281806105ba6000998a94600484016118b6565b038183895af18015610618576105ff575b5016906001600160e01b0319167fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d3213538480a480f35b8061060c610612926101c8565b806101a2565b386105cb565b61154d565b604051637046c88d60e01b8152600490fd5b503033141561052f565b346101ad57602061065261064c3661040b565b91611f8c565b604051908152f35b9291926001600160401b0382116101db5760405191610683601f8201601f19166020018461024c565b8294818452818301116101ad578281602093846000960137010152565b9080601f830112156101ad578160206106bb9335910161065a565b90565b6020806003193601126101ad576001600160401b036004358181116101ad57366023820112156101ad578060040135918083116101db578260051b9060409081519461070c8785018761024c565b85528585019160248094860101943686116101ad57848101935b8685106107365761001b8861121c565b84358481116101ad578201606060231982360301126101ad5783519161075b836101e0565b8782013561076881610368565b835260448201358b8401526064820135928684116101ad576107928c94938a8695369201016106a0565b86820152815201940193610726565b60203660031901126101ad576004356107b981610368565b6001600160a01b0390337f0000000000000000000000000000000000000000000000000000000000000000831614158061083d575b61061d57807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2005b50303314156107ee565b6003196060368201126101ad57600435906001600160401b0382116101ad576101609082360301126101ad576106526020916044359060243590600401611559565b346101ad5760203660031901126101ad576004356001600160c01b038116908190036101ad57604051631aab3f0d60e11b815230600482015260248101919091526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106185761032e9160009161091f575b506040519081529081906020820190565b610940915060203d8111610946575b610938818361024c565b81019061146e565b3861090e565b503d61092e565b346101ad5760203660031901126101ad5761032e61099261096c61046a565b6000606060405161097c816101fb565b8281528260208201528260408201520152611121565b6040519061099f826101fb565b805465ffffffffffff80821684528160301c16602084015260601c60408301526001808060a01b03910154166060820152604051918291829190916060608082019365ffffffffffff80825116845260208201511660208401528160018060a01b0391826040820151166040860152015116910152565b60803660031901126101ad57600435610a2e81610368565b6044356001600160401b0381116101ad57610a4d9036906004016106a0565b9060643560028110156101ad57337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610af0575b80610adb575b61061d57610aa0816111d2565b610ac9576000828193926020839451920190602435905af13d82803e15610ac5573d90f35b3d90fd5b6040516367ce775960e01b8152600490fd5b50610aeb610ae7611d8c565b1590565b610a93565b5030331415610a8d565b60405190610b0782610216565b6005825264302e322e3360d81b6020830152565b346101ad5760003660031901126101ad5761032e61031a610afa565b9060406003198301126101ad57600435610b5081610368565b91602435906001600160401b0382116101ad5761043a91600401610384565b610b7836610b37565b90916001600160a01b03337f00000000000000000000000000000000000000000000000000000000000000008216141580610c4b575b61061d57806000805160206121718339815191525460501c1691610bd181612078565b1692836040519360009586947fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c8680a3813b15610c47578385610c25819593829463064acaab60e11b8452600484016118b6565b03925af1801561061857610c37575080f35b8061060c610c44926101c8565b80f35b8380fd5b5030331415610bae565b346101ad5760003660031901126101ad5760206000805160206121718339815191525460e01b6040519063ffffffff60e01b168152f35b346101ad5760003660031901126101ad57610ce2610ca861029c565b610cb0610afa565b90604051928392600f60f81b8452610cd460209360e08587015260e08601906102be565b9084820360408601526102be565b90466060840152306080840152600060a084015282820360c08401528060605192838152019160809160005b828110610d1d57505050500390f35b835185528695509381019392810192600101610d0e565b346101ad5760003660031901126101ad5760206000805160206121718339815191525465ffffffffffff60405191831c168152f35b346101ad5760003660031901126101ad576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60403660031901126101ad57600435610dc681610368565b6024356001600160401b0381116101ad57610de59036906004016106a0565b90337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610e51575b80610e40575b61061d5760008281939260208394519201905af43d82803e15610ac5573d90f35b50610e4c610ae7611d8c565b610e1f565b5030331415610e19565b9181601f840112156101ad578235916001600160401b0383116101ad576020808501948460051b0101116101ad57565b346101ad5760a03660031901126101ad57610ea7600435610368565b610eb2602435610368565b6001600160401b036044358181116101ad57610ed2903690600401610e5b565b50506064358181116101ad57610eec903690600401610e5b565b50506084359081116101ad57610f06903690600401610384565b505060405163bc197c8160e01b8152602090f35b346101ad5760003660031901126101ad57604051631aab3f0d60e11b8152306004820152600060248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106185761032e9160009161091f57506040519081529081906020820190565b610fa236610b37565b60008051602061217183398151915254919290916001600160a01b03919060501c821661102457610fd281612078565b1691823b156101ad57611007926000928360405180968195829463064acaab60e11b8452602060048501526024840191611895565b03925af180156106185761101757005b8061060c61001b926101c8565b60405162dc149f60e41b8152600490fd5b60203660031901126101ad5761104961046a565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806110bd575b61061d5760008051602061217183398151915290815469ffffffffffff000000004260201b169160e01c9069ffffffffffffffffffff191617179055600080f35b503033141561107c565b346101ad5760a03660031901126101ad576110e3600435610368565b6110ee602435610368565b6084356001600160401b0381116101ad5761110d903690600401610384565b505060405163f23a6e6160e01b8152602090f35b63ffffffff60e01b166000527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda602052604060002090565b600061116f81356001600160e01b031916611121565b5460601c337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806111c3575b61061d57818091368280378136915af43d82803e15610ac5573d90f35b506111cc611d8c565b156111a6565b600211156111dc57565b634e487b7160e01b600052602160045260246000fd5b80518210156112065760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806112a9575b61061d5780519060005b82811061126557505050565b60008061127283856111f2565b5180516001600160a01b03166020916040838201519101519283519301915af13d6000803e156112a457600101611259565b3d6000fd5b506112b5610ae7611d8c565b61124f565b906004116101ad5790600490565b90929192836004116101ad5783116101ad57600401916003190190565b906024116101ad5760100190601490565b906058116101ad5760380190602090565b906024116101ad5760040190602090565b906038116101ad5760240190601490565b90600a116101ad5760040190600690565b906010116101ad57600a0190600690565b909392938483116101ad5784116101ad578101920390565b6001600160e01b0319903581811693926004811061138057505050565b60040360031b82901b16169150565b9190610160838203126101ad576113a461027c565b926113ae81610379565b8452602081013560208501526040810135916001600160401b03928381116101ad57816113dc9184016106a0565b604086015260608201358381116101ad57816113f99184016106a0565b60608601526080820135608086015260a082013560a086015260c082013560c086015260e082013560e08601526101008083013590860152610120808301358481116101ad578261144b9185016106a0565b9086015261014092838301359081116101ad5761146892016106a0565b90830152565b908160209103126101ad575190565b606080825282516001600160a01b031690820152919392916040916115439060208101516080840152838101516114c2610160918260a08701526101c08601906102be565b906115306114e2606085015193605f1994858983030160c08a01526102be565b608085015160e088015260a085015192610100938489015260c08601519061012091828a015260e08701519461014095868b01528701519089015285015184888303016101808901526102be565b92015190848303016101a08501526102be565b9460208201520152565b6040513d6000823e3d90fd5b6001600160a01b039392917f000000000000000000000000000000000000000000000000000000000000000085163303611777576004948535928361014481013501918760248401930135946115b86115b287866112ba565b90611363565b926001600160e01b0319808516918215611754576115d790369061138f565b946115f16000805160206121718339815191525460e01b90565b1616156116095760405163fc2f51c560e01b81528a90fd5b97989697600160e01b8103611703575090602095966116936116616116486116436115b287606460009901350160248782013591016112ba565b611121565b6001810154909a9081906001600160a01b0316986112c8565b995460d081901b6001600160d01b03191660709190911b65ffffffffffff60a01b1617995b8b6116f5575b369161065a565b6101408501526116b7604051998a9788968794633a871cdd60e01b8652850161147d565b0393165af1908115610618576106bb926000926116d5575b506120ee565b6116ee91925060203d811161094657610938818361024c565b90386116cf565b348080808f335af15061168c565b9095939190600160e11b036117475761173d611693946000936117386115b28a606460209c01350160248d82013591016112ba565b6118c7565b9199929691611686565b5050505050505050600190565b9697505050505050506106bb9394508215611ec0573434343486335af150611ec0565b604051636b31ba1560e11b8152600490fd5b6bffffffffffffffffffffffff1990358181169392601481106117ab57505050565b60140360031b82901b16169150565b3590602081106117c8575090565b6000199060200360031b1b1690565b6001600160d01b031990358181169392600681106117f457505050565b60060360031b82901b16169150565b81516020830151604084015160309190911b6bffffffffffff0000000000001665ffffffffffff9290921691909117606091821b6bffffffffffffffffffffffff19161782559091015160019190910180546001600160a01b0319166001600160a01b0392909216919091179055565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9160206106bb938181520191611895565b91906118d382826112e5565b6118dc91611789565b60601c936118ea83836112f6565b6118f3916117ba565b60588301607882019485836058019061190d91838861134b565b611916916117ba565b6119208287611307565b611929916117ba565b6119338388611318565b61193c91611789565b60601c61194a36878761065a565b8051602091820120604080517f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641769381019384526001600160e01b03198e169181019190915260608101949094526001600160a01b0392909216608084015260a080840192909252908252906119c060c08261024c565b5190206119cc90611b1f565b90840196607888016119df91848961134b565b906119e992611f8c565b6119f38287611307565b6001600160a01b031991611a0791906117ba565b16611a11916120ee565b966078868801019682036077190195611a2a8382611329565b611a33916117d7565b60d01c92611a41818361133a565b611a4a916117d7565b60d01c91611a588282611318565b611a6191611789565b60601c91611a6e916112e5565b611a7791611789565b60601c91611a8361026d565b65ffffffffffff909516855265ffffffffffff1660208501526001600160a01b031660408401526001600160a01b03166060830152611ac190611121565b90611acb91611803565b6001600160a01b03871691823b156101ad57611b01926000928360405180968195829463064acaab60e11b8452600484016118b6565b03925af1801561061857611b125750565b8061060c61027a926101c8565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141615611bac575b671901000000000000600052601a52603a526042601820906000603a52565b5060a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015220611b8d565b91611cf291611cf793611cdc611cea611c4a61029c565b611c52610afa565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152611cb181610231565b51902092604051928391602083019586909160429261190160f01b8352600283015260228201520190565b03601f19810183528261024c565b519020611f8c565b6120c5565b9065ffffffffffff928342911611159283611d44575b505081611d32575b5015611d2657630b135d3f60e11b90565b6001600160e01b031990565b6001600160a01b031615905038611d15565b429116101591503880611d0d565b908160209103126101ad575180151581036101ad5790565b6001600160a01b0390911681526040602082018190526106bb92910190611873565b611d963633611ff4565b611ebb57611daf6000356001600160e01b031916611121565b6001810154611dce906001600160a01b03165b6001600160a01b031690565b906001600160a01b03821615908115611e7f575b8115611e54575b5015611df55750600090565b60206040518092639ea9bd5960e01b82528180611e16363360048401611d6a565b03915afa90811561061857600091611e2c575090565b6106bb915060203d8111611e4d575b611e45818361024c565b810190611d52565b503d611e3b565b54611e6e915065ffffffffffff165b65ffffffffffff1690565b65ffffffffffff4291161138611de9565b905065ffffffffffff611e9f611e63835465ffffffffffff9060301c1690565b168015159081611eb1575b5090611de2565b9050421138611eaa565b600190565b9091611ecc368361138f565b610140928381013590601e19813603018212156101ad5701938435946001600160401b0386116101ad576020019385360385136101ad57611f1661168c87611f5e986020986112c8565b908301526000611f40611dc26000805160206121718339815191525460501c60018060a01b031690565b9260405196879586948593633a871cdd60e01b85526004850161147d565b03925af190811561061857600091611f74575090565b6106bb915060203d811161094657610938818361024c565b600080516020612171833981519152546040805163199ed7c960e11b8152600481019390935260248301529092602092849260501c6001600160a01b03169183918291611fde91604484019190611895565b03915afa90811561061857600091611f74575090565b6000805160206121718339815191525460408051639ea9bd5960e01b81526001600160a01b039384166004820152602481019190915292602092849260501c169082908190611e16906044830190611873565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460408051338152346020820152a1565b60008051602061217183398151915280547fffff0000000000000000000000000000000000000000ffffffffffffffffffff1660509290921b600160501b600160f01b0316919091179055565b8065ffffffffffff91828160a01c169283156001146120e6575b5060d01c92565b9250386120df565b8082186001600160a01b031615600114612109575050600190565b65ffffffffffff60a01b8181169265ffffffffffff60a01b1992831692811691908415612167575b81168015612160575b848110908518028085189414612158575b5081811190821802181790565b92503861214b565b508061213a565b9350809361213156fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd90000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789"; - - address constant EXPECTED_KERNEL_LITE_2_3_ADDRESS = 0x482EC42E88a781485E1B6A4f07a0C5479d183291; - bytes constant KERNEL_LITE_2_3_CODE = - hex"0000000000000000000000000000000000000000000000000000000000000000610160346200021a57601f620024b438819003918201601f19168301916001600160401b038311848410176200021f5780849260409485528339810103126200021a5780516001600160a01b039182821682036200021a57602001519182168092036200021a57306080524660a05260a06200007a62000235565b600681526005602082016512d95c9b995b60d21b815260206200009c62000235565b838152019264302e322e3360d81b845251902091208160c0528060e052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83526020830152604082015246606082015230608082015220916101009283526101209182527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd96a010000000000000000000080600160f01b03198254161790556101409081527fdea7fea882fba743201b2aeb1babf326b8944488db560784858525d123ee7e976001808060a01b03198254161790556040519161225e938462000256853960805184611c54015260a05184611c77015260c05184611ce9015260e05184611d0f01525183611c33015251828181610526015281816107e5015281816108f201528181610a7d01528181610b9e01528181610d3d01528181610da701528181610f50015281816110f4015281816111ec0152818161129c01528181611345015261169a015251818181610eee0152610fb10152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b60408051919082016001600160401b038111838210176200021f5760405256fe6080604052600436101561001d575b3661127f5761001b611fe4565b005b60003560e01c806306fdde03146101bd5780630b3dc354146101b8578063150b7a02146101b35780631626ba7e146101ae57806329f8b174146101a9578063333daf92146101a457806334fcd5be1461019f5780633659cfe61461019a5780633a871cdd146101955780633e1b08121461019057806351166ba01461018b578063519454471461018657806354fd4d501461018157806355b14f501461017c57806357b750471461017757806384b0196e1461017257806388e7fd061461016d578063b0d691fe14610168578063b68df16d14610163578063bc197c811461015e578063cdaea3ed14610159578063d087d28814610154578063d1f578941461014f578063d54162211461014a578063f23a6e61146101455763f2fde38b0361000e576111c9565b61116f565b6110dd565b610f9c565b610f1d565b610ed8565b610e49565b610d6c565b610d27565b610cf2565b610c4a565b610c13565b610b8f565b610b3b565b610a36565b61096d565b6108a9565b610867565b6107c1565b6106de565b610659565b6104b1565b61045e565b6103d1565b610352565b61031e565b60009103126101cd57565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101fb57604052565b6101d2565b606081019081106001600160401b038211176101fb57604052565b608081019081106001600160401b038211176101fb57604052565b604081019081106001600160401b038211176101fb57604052565b60c081019081106001600160401b038211176101fb57604052565b90601f801991011681019081106001600160401b038211176101fb57604052565b6040519061029a8261021b565b565b6040519061016082018281106001600160401b038211176101fb57604052565b604051906102c982610236565b600682526512d95c9b995b60d21b6020830152565b919082519283825260005b84811061030a575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016102e9565b346101cd5760003660031901126101cd5761034e61033a6102bc565b6040519182916020835260208301906102de565b0390f35b346101cd5760003660031901126101cd57602060008051602061221e8339815191525460501c6040519060018060a01b03168152f35b6001600160a01b038116036101cd57565b359061029a82610388565b9181601f840112156101cd578235916001600160401b0383116101cd57602083818601950101116101cd57565b346101cd5760803660031901126101cd576103ed600435610388565b6103f8602435610388565b6064356001600160401b0381116101cd576104179036906004016103a4565b5050604051630a85bd0160e11b8152602090f35b9060406003198301126101cd5760043591602435906001600160401b0382116101cd5761045a916004016103a4565b9091565b346101cd5760206104776104713661042b565b91611d45565b6040516001600160e01b03199091168152f35b600435906001600160e01b0319821682036101cd57565b65ffffffffffff8116036101cd57565b60c03660031901126101cd576104c561048a565b602435906104d282610388565b604435906104df82610388565b6064356104eb816104a1565b608435936104f8856104a1565b60a4356001600160401b0381116101cd576105179036906004016103a4565b9590946001600160a01b0393337f0000000000000000000000000000000000000000000000000000000000000000861614158061064f575b61063d5784926105846105b09261057561056761028d565b65ffffffffffff9094168452565b65ffffffffffff166020830152565b6001600160a01b03851660408201526001600160a01b03831660608201526105ab87611247565b611941565b1693843b156101cd576040519063064acaab60e11b825281806105da6000998a94600484016119b1565b038183895af180156106385761061f575b5016906001600160e01b0319167fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d3213538480a480f35b8061062c610632926101e8565b806101c2565b386105eb565b611681565b604051637046c88d60e01b8152600490fd5b503033141561054f565b346101cd57602061067261066c3661042b565b91612136565b604051908152f35b9291926001600160401b0382116101fb57604051916106a3601f8201601f19166020018461026c565b8294818452818301116101cd578281602093846000960137010152565b9080601f830112156101cd578160206106db9335910161067a565b90565b6020806003193601126101cd576001600160401b036004358181116101cd57366023820112156101cd578060040135918083116101fb578260051b9060409081519461072c8785018761026c565b85528585019160248094860101943686116101cd57848101935b8685106107565761001b88611342565b84358481116101cd578201606060231982360301126101cd5783519161077b83610200565b8782013561078881610388565b835260448201358b8401526064820135928684116101cd576107b28c94938a8695369201016106c0565b86820152815201940193610746565b60203660031901126101cd576004356107d981610388565b6001600160a01b0390337f0000000000000000000000000000000000000000000000000000000000000000831614158061085d575b61063d57807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2005b503033141561080e565b6003196060368201126101cd57600435906001600160401b0382116101cd576101609082360301126101cd57610672602091604435906024359060040161168d565b346101cd5760203660031901126101cd576004356001600160c01b038116908190036101cd57604051631aab3f0d60e11b815230600482015260248101919091526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106385761034e9160009161093f575b506040519081529081906020820190565b610960915060203d8111610966575b610958818361026c565b8101906115a2565b3861092e565b503d61094e565b346101cd5760203660031901126101cd5761034e6109b261098c61048a565b6000606060405161099c8161021b565b8281528260208201528260408201520152611247565b604051906109bf8261021b565b805465ffffffffffff80821684528160301c16602084015260601c60408301526001808060a01b03910154166060820152604051918291829190916060608082019365ffffffffffff80825116845260208201511660208401528160018060a01b0391826040820151166040860152015116910152565b60803660031901126101cd57600435610a4e81610388565b6044356001600160401b0381116101cd57610a6d9036906004016106c0565b9060643560028110156101cd57337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610b10575b80610afb575b61063d57610ac0816112f8565b610ae9576000828193926020839451920190602435905af13d82803e15610ae5573d90f35b3d90fd5b6040516367ce775960e01b8152600490fd5b50610b0b610b07611eb5565b1590565b610ab3565b5030331415610aad565b60405190610b2782610236565b6005825264302e322e3360d81b6020830152565b346101cd5760003660031901126101cd5761034e61033a610b1a565b9060406003198301126101cd57600435610b7081610388565b91602435906001600160401b0382116101cd5761045a916004016103a4565b610b9836610b57565b505050337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610c09575b61063d5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b6044820152606490fd5b5030331415610bce565b346101cd5760003660031901126101cd57602060008051602061221e8339815191525460e01b6040519063ffffffff60e01b168152f35b346101cd5760003660031901126101cd57610ca0610c666102bc565b610c6e610b1a565b90604051928392600f60f81b8452610c9260209360e08587015260e08601906102de565b9084820360408601526102de565b90466060840152306080840152600060a084015282820360c08401528060605192838152019160809160005b828110610cdb57505050500390f35b835185528695509381019392810192600101610ccc565b346101cd5760003660031901126101cd57602060008051602061221e8339815191525465ffffffffffff60405191831c168152f35b346101cd5760003660031901126101cd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60403660031901126101cd57600435610d8481610388565b6024356001600160401b0381116101cd57610da39036906004016106c0565b90337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580610e0f575b80610dfe575b61063d5760008281939260208394519201905af43d82803e15610ae5573d90f35b50610e0a610b07611eb5565b610ddd565b5030331415610dd7565b9181601f840112156101cd578235916001600160401b0383116101cd576020808501948460051b0101116101cd57565b346101cd5760a03660031901126101cd57610e65600435610388565b610e70602435610388565b6001600160401b036044358181116101cd57610e90903690600401610e19565b50506064358181116101cd57610eaa903690600401610e19565b50506084359081116101cd57610ec49036906004016103a4565b505060405163bc197c8160e01b8152602090f35b346101cd5760003660031901126101cd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101cd5760003660031901126101cd57604051631aab3f0d60e11b8152306004820152600060248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106385761034e9160009161093f57506040519081529081906020820190565b610fa536610b57565b916001600160a01b03907f000000000000000000000000000000000000000000000000000000000000000082169082160361108d5760008051602061223e833981519152541661103c5761100861100261001b9361100e936113e0565b906118c7565b60601c90565b60008051602061223e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b8152602060048201526024808201527f4b65726e656c4c69746545434453413a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602260248201527f4b65726e656c4c69746545434453413a20696e76616c69642076616c6964617460448201526137b960f11b6064820152608490fd5b60203660031901126101cd576110f161048a565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580611165575b61063d5760008051602061221e83398151915290815469ffffffffffff000000004260201b169160e01c9069ffffffffffffffffffff191617179055600080f35b5030331415611124565b346101cd5760a03660031901126101cd5761118b600435610388565b611196602435610388565b6084356001600160401b0381116101cd576111b59036906004016103a4565b505060405163f23a6e6160e01b8152602090f35b60203660031901126101cd576004356111e181610388565b6001600160a01b03337f0000000000000000000000000000000000000000000000000000000000000000821614158061123d575b61063d5760008051602061223e83398151915280546001600160a01b03191691909216179055005b5030331415611215565b63ffffffff60e01b166000527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda602052604060002090565b600061129581356001600160e01b031916611247565b5460601c337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806112e9575b61063d57818091368280378136915af43d82803e15610ae5573d90f35b506112f2611eb5565b156112cc565b6002111561130257565b634e487b7160e01b600052602160045260246000fd5b805182101561132c5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806113cf575b61063d5780519060005b82811061138b57505050565b6000806113988385611318565b5180516001600160a01b03166020916040838201519101519283519301915af13d6000803e156113ca5760010161137f565b3d6000fd5b506113db610b07611eb5565b611375565b906014116101cd5790601490565b906004116101cd5790600490565b90929192836004116101cd5783116101cd57600401916003190190565b906024116101cd5760100190601490565b906058116101cd5760380190602090565b906024116101cd5760040190602090565b906038116101cd5760240190601490565b90600a116101cd5760040190600690565b906010116101cd57600a0190600690565b909392938483116101cd5784116101cd578101920390565b6001600160e01b031990358181169392600481106114b457505050565b60040360031b82901b16169150565b9190610160838203126101cd576114d861029c565b926114e281610399565b8452602081013560208501526040810135916001600160401b03928381116101cd57816115109184016106c0565b604086015260608201358381116101cd578161152d9184016106c0565b60608601526080820135608086015260a082013560a086015260c082013560c086015260e082013560e08601526101008083013590860152610120808301358481116101cd578261157f9185016106c0565b9086015261014092838301359081116101cd5761159c92016106c0565b90830152565b908160209103126101cd575190565b606080825282516001600160a01b031690820152919392916040916116779060208101516080840152838101516115f6610160918260a08701526101c08601906102de565b90611664611616606085015193605f1994858983030160c08a01526102de565b608085015160e088015260a085015192610100938489015260c08601519061012091828a015260e08701519461014095868b01528701519089015285015184888303016101808901526102de565b92015190848303016101a08501526102de565b9460208201520152565b6040513d6000823e3d90fd5b6001600160a01b039392917f0000000000000000000000000000000000000000000000000000000000000000851633036118b5576004948535928361014481013501918760248401930135946116ec6116e687866113ee565b90611497565b926001600160e01b03198085169182156118885761170b9036906114c3565b9461172560008051602061221e8339815191525460e01b90565b16161561173d5760405163fc2f51c560e01b81528a90fd5b97989697600160e01b8103611837575090602095966117c761179561177c6117776116e687606460009901350160248782013591016113ee565b611247565b6001810154909a9081906001600160a01b0316986113fc565b995460d081901b6001600160d01b03191660709190911b65ffffffffffff60a01b1617995b8b611829575b369161067a565b6101408501526117eb604051998a9788968794633a871cdd60e01b865285016115b1565b0393165af1908115610638576106db92600092611809575b5061219b565b61182291925060203d811161096657610958818361026c565b9038611803565b348080808f335af1506117c0565b9095939190600160e11b0361187b576118716117c79460009361186c6116e68a606460209c01350160248d82013591016113ee565b6119d9565b91999296916117ba565b5050505050505050600190565b9750505050505050916106db939450806118a3575b5061203e565b3490349034903490335af1503861189d565b604051636b31ba1560e11b8152600490fd5b6bffffffffffffffffffffffff1990358181169392601481106118e957505050565b60140360031b82901b16169150565b359060208110611906575090565b6000199060200360031b1b1690565b6001600160d01b0319903581811693926006811061193257505050565b60060360031b82901b16169150565b81516020830151604084015160309190911b6bffffffffffff0000000000001665ffffffffffff9290921691909117606091821b6bffffffffffffffffffffffff19161782559091015160019190910180546001600160a01b0319166001600160a01b0392909216919091179055565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b91906119e58282611419565b6119ee916118c7565b60601c936119fc838361142a565b611a05916118f8565b605883016078820194858360580190611a1f91838861147f565b611a28916118f8565b611a32828761143b565b611a3b916118f8565b611a45838861144c565b611a4e916118c7565b60601c611a5c36878761067a565b8051602091820120604080517f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641769381019384526001600160e01b03198e169181019190915260608101949094526001600160a01b0392909216608084015260a08084019290925290825290611ad260c08261026c565b519020611ade90611c31565b9084019660788801611af191848961147f565b90611afb92612136565b611b05828761143b565b6001600160a01b031991611b1991906118f8565b16611b239161219b565b966078868801019682036077190195611b3c838261145d565b611b4591611915565b60d01c92611b53818361146e565b611b5c91611915565b60d01c91611b6a828261144c565b611b73916118c7565b60601c91611b8091611419565b611b89916118c7565b60601c91611b9561028d565b65ffffffffffff909516855265ffffffffffff1660208501526001600160a01b031660408401526001600160a01b03166060830152611bd390611247565b90611bdd91611941565b6001600160a01b03871691823b156101cd57611c13926000928360405180968195829463064acaab60e11b8452600484016119b1565b03925af1801561063857611c245750565b8061062c61029a926101e8565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141615611cbe575b671901000000000000600052601a52603a526042601820906000603a52565b5060a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015220611c9f565b91611e0491611e0993611dee611dfc611d5c6102bc565b611d64610b1a565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152611dc381610251565b51902092604051928391602083019586909160429261190160f01b8352600283015260228201520190565b03601f19810183528261026c565b519020612136565b612015565b9065ffffffffffff928342911611159283611e56575b505081611e44575b5015611e3857630b135d3f60e11b90565b6001600160e01b031990565b6001600160a01b031615905038611e27565b429116101591503880611e1f565b908160209103126101cd575180151581036101cd5790565b6001600160a01b0390911681526040602082018190528101829052606091806000848401376000828201840152601f01601f1916010190565b60008051602061223e833981519152546001600160a01b039081163314611fde57611eeb6000356001600160e01b031916611247565b60018101546001600160a01b031691821615908115611fa2575b8115611f77575b5015611f185750600090565b60206040518092639ea9bd5960e01b82528180611f39363360048401611e7c565b03915afa90811561063857600091611f4f575090565b6106db915060203d8111611f70575b611f68818361026c565b810190611e64565b503d611f5e565b54611f91915065ffffffffffff165b65ffffffffffff1690565b65ffffffffffff4291161138611f0c565b905065ffffffffffff611fc2611f86835465ffffffffffff9060301c1690565b168015159081611fd4575b5090611f05565b9050421138611fcd565b50600190565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460408051338152346020820152a1565b8065ffffffffffff91828160a01c16928315600114612036575b5060d01c92565b92503861202f565b9061206e906020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9061014081013590601e19813603018212156101cd5701908135916001600160401b0383116101cd576020019180360383136101cd576117c0816120b5926120bb956113fc565b906120e7565b60008051602061223e833981519152546001600160a01b039081169116036120e257600090565b600190565b6001608060006041602094969596604080519880519285526060810151851a88528781015182520151606052145afa51913d15612128576000606052604052565b638baa579f6000526004601cfd5b6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042061216f92916120b59192369161067a565b60008051602061223e833981519152546001600160a01b0391821691161461219657600190565b600090565b8082186001600160a01b0316156001146121b6575050600190565b65ffffffffffff60a01b8181169265ffffffffffff60a01b1992831692811691908415612214575b8116801561220d575b848110908518028085189414612205575b5081811190821802181790565b9250386121f8565b50806121e7565b935080936121de56fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9dea7fea882fba743201b2aeb1babf326b8944488db560784858525d123ee7e970000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789000000000000000000000000d9ab5096a832b9ce79914329daee236f8eea0390"; - - function deploy() internal returns (address, address) { - DeterministicDeploy.checkDeploy("Kernel 2.3", EXPECTED_KERNEL_2_3_ADDRESS, KERNEL_2_3_CODE); - DeterministicDeploy.checkDeploy("Kernel Lite 2.3", EXPECTED_KERNEL_LITE_2_3_ADDRESS, KERNEL_LITE_2_3_CODE); - return (EXPECTED_KERNEL_2_3_ADDRESS, EXPECTED_KERNEL_LITE_2_3_ADDRESS); - } -} diff --git a/script/deterministic/SessionKey.s.sol b/script/deterministic/SessionKey.s.sol deleted file mode 100644 index 157c855f..00000000 --- a/script/deterministic/SessionKey.s.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity ^0.8.0; - -import "./DeterministicDeploy.s.sol"; - -library SessionKeyDeploy { - address constant EXPECTED_SESSIONKEY_ADDRESS = 0xB8E3c4bEaACAd06f6092793012DA4a8cB23D6123; - bytes constant SESSIONKEY_CODE = - hex"0000000000000000000000000000000000000000000000000000000000000000608080604052346100165761156e908161001c8239f35b600080fdfe60806040908082526004908136101561001757600080fd5b600092833560e01c9182630c9595561461034d57508163333daf921461031a5781633a871cdd146102d657816346585db21461027d57816352721fdd146102005781637ecebe00146101b8578382638fc925aa1461010b575081639ea9bd59146100bd575063dbba225d1461008b57600080fd5b346100b95760203660031901126100b957356001600160801b03811681036100b9576100b6906105d7565b80f35b5080fd5b905082346101085781600319360112610108576100d8610533565b50602435906001600160401b03821161010857506100f990369084016104eb565b50505163d623472560e01b8152fd5b80fd5b8091846020600319360112610170578035906001600160401b0382116101b357610137913691016104eb565b9091906014810361017457601411610170576002913560601c835260016020528083203384526020528220828155826001820155015580f35b5050fd5b9192506010820361019457506010116100b9576100b6903560801c6105d7565b6100b692506001600160801b03915033845283602052832054166105d7565b505050fd5b8390346100b95760203660031901126100b9579081906001600160a01b036101de610533565b1681528060205220548151906001600160801b038116825260801c6020820152f35b8390346100b957806003193601126100b9578060a09261021e610533565b61022661051d565b90600180871b03809116835260016020528383209116825260205220908154916002600182015491015491805193845265ffffffffffff80831660208601528260301c169084015260601c60608301526080820152f35b919050346102d257816003193601126102d25791819261029b61051d565b9035825260026020528282209060018060a01b03168252602052205481519065ffffffffffff90818116835260301c166020820152f35b8280fd5b91905060031992606084360112610108578135936001600160401b0385116100b95761016090853603011261010857506020926103139101610934565b9051908152f35b90508234610108578160031936011261010857602435906001600160401b03821161010857506100f990369084016104eb565b8492509060203660031901126102d2576001600160401b039184358381116104e35761037c90369087016104eb565b806014116104e757806034116104e75780603a116104e7578084116104e757806054116104e7576074116104e35760548101359360a08301908111838210176104d0579060029184526014810135835260208301603482013560d01c815284840190603a83013560d01c825261046160608601918785013560601c835260808701948986523560601c8a526001602052878a20338b52602052878a2096518755600187019365ffffffffffff8092511665ffffffffffff198654161785555116839065ffffffffffff60301b82549160301b169065ffffffffffff60301b1916179055565b516bffffffffffffffffffffffff82549181199060601b16911617905551910155826020528220908154916001600160801b038084168181146104bd576100b69596506001011680936001600160801b03191617905514610580565b634e487b7160e01b865260118752602486fd5b634e487b7160e01b865260418752602486fd5b8480fd5b8580fd5b9181601f84011215610518578235916001600160401b038311610518576020838186019501011161051857565b600080fd5b602435906001600160a01b038216820361051857565b600435906001600160a01b038216820361051857565b90601f801991011681019081106001600160401b0382111761056a57604052565b634e487b7160e01b600052604160045260246000fd5b1561058757565b60405162461bcd60e51b815260206004820152602260248201527f53657373696f6e4b657956616c696461746f723a20696e76616c6964206e6f6e604482015261636560f01b6064820152608490fd5b600033815280602052604080822054916105ff6001600160801b0385169360801c8411610580565b3381528060205220916001600160801b03199060801b16179055565b903590601e198136030182121561051857018035906001600160401b0382116105185760200191813603831361051857565b356001600160a01b03811681036105185790565b1561066857565b60405162461bcd60e51b8152602060048201526024808201527f53657373696f6e4b657956616c696461746f723a20746172676574206d69736d6044820152630c2e8c6d60e31b6064820152608490fd5b156106c057565b60405162461bcd60e51b815260206004820152602960248201527f53657373696f6e4b657956616c696461746f723a2076616c7565206c696d697460448201526808195e18d95959195960ba1b6064820152608490fd5b1561071e57565b60405162461bcd60e51b815260206004820152603360248201527f53657373696f6e4b657956616c696461746f723a207065726d697373696f6e206044820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b6064820152608490fd5b3563ffffffff811681036105185790565b359065ffffffffffff8216820361051857565b602091828252610120820190803563ffffffff81168091036105185784840152808401356001600160a01b038116949085900361051857604094858501528482013563ffffffff60e01b811680910361051857606090818601528083013560808601526080830135601e1984360301811215610518578301918083359301966001600160401b03841161051857828402360388136105185792919082610100968760a08a01525261014087019793600080925b8584106108a3575050505050505061089c60e065ffffffffffff928361087e60a08301610790565b1660c08701528361089160c08301610790565b168287015201610790565b1691015290565b909192939495998a358152818b013560068110156108da57828201528a840135848201528501998501959493600101929190610856565b8380fd5b9092916001600160401b03841161056a578360051b604051926020809461090782850182610549565b809781520191810192831161051857905b8282106109255750505050565b81358152908301908301610918565b6101408101610943818361061b565b601411610518573560601c90600082815260019360209085825260408084203385528352808420936002850180548286528383205460801c1015610d0b578886019687548060601c8b8114600014610c8757506109a461012087018761061b565b905015610c34575b875415610c10575060608501926109c3848761061b565b6004939193116100b95782356001600160e01b031916635194544760e01b8103610b7057506109f2908761061b565b6055959195116100b9576055850135850190605582019560758101350197610a1a828261061b565b6024116104e357610a53929190610a4e9060106001600160a01b03610a416075890161064d565b1691013560601c14610661565b61061b565b6044939193116101085750610a9685610ae994610a82610acc9795602460b5610a9b97013591013511156106b9565b604481013501602460048201359101611388565b610717565b54610aa58461077f565b855188810192835260e09190911b6001600160e01b03191660208301529283906024830190565b0392610ae0601f1994858101835282610549565b51902083610ed8565b96549465ffffffffffff9687871680898b1610610b66575b50610b2f610b4393610b4897969593610b2393549651938491820195866107a3565b03908101835282610549565b5190209236906075605582013591016108de565b610d64565b15610b5f57610b5c945060301c1691610dbb565b90565b5050505090565b9850610b2f610b01565b94509450949650945050631a7e6adf60e19896981b14600014610c0657610b97818561061b565b6055116102d25790816055610baf930135019461061b565b605592919211610108575090816075610be19493013501916075605584013593019160756055830135920190876110f7565b919091610bff575065ffffffffffff610b5c935460301c1691610dbb565b9250505090565b5050505091505090565b98975050505050505050610b5c925065ffffffffffff808360301c16921690610dbb565b845162461bcd60e51b815260048101889052602660248201527f53657373696f6e4b657956616c696461746f723a207061796d6173746572206e6044820152651bdd081cd95d60d21b6064820152608490fd5b80610c93575b506109ac565b610ca161012088018861061b565b6014116104e7573560601c03610cb75738610c8d565b845162461bcd60e51b815260048101889052602760248201527f53657373696f6e4b657956616c696461746f723a207061796d6173746572206d6044820152660d2e6dac2e8c6d60cb1b6064820152608490fd5b825162461bcd60e51b815260048101869052602c60248201527f53657373696f6e4b657956616c696461746f723a2073657373696f6e206b657960448201526b081b9bdd08195b98589b195960a21b6064820152608490fd5b919091805180610d75575b50501490565b91906020908180820191600595861b0101925b81518111851b90815282825191185281604060002091019383851015610daf579390610d88565b50925050503880610d6f565b919091600435610144810135016024356020526000907b19457468657265756d205369676e6564204d6573736167653a0a33328252603c6004206040908151608081018181106001600160401b03821117610eb15783526041815260208101933660798201116104e75785604160209486600195836038608097018b3784606182015281519981519386526060820151861a89525182520151606052145afa51923d15610ea457606052526001600160a01b03908116911603610e9d5760d09190911b6001600160d01b03191660a09190911b65ffffffffffff60a01b161790565b5050600190565b638baa579f90526004601cfd5b634e487b7160e01b86526041600452602486fd5b3565ffffffffffff811681036105185790565b9065ffffffffffff60a0830160c0840182610ef282610ec5565b16610ff15750610f0360e091610ec5565b935b019181610f1184610ec5565b16610f1d575b50505090565b60009081526002602052604081203382526020526040812090600183835460301c160190838211610fdd575081546bffffffffffff000000000000191660309190911b65ffffffffffff60301b16178155610f7f9082905460301c1692610ec5565b1610610f8d57388080610f17565b60405162461bcd60e51b815260206004820152602260248201527f53657373696f6e4b657956616c696461746f723a2072756e7320657863656564604482015261195960f21b6064820152608490fd5b634e487b7160e01b81526011600452602490fd5b939082610ffd82610ec5565b161561107957600084815260026020526040812033825260205260408120918483549781891692831515600014611060575061103890610ec5565b160190848211610fdd5750908360e0939216955b65ffffffffffff1916868516179055610f05565b91505060e0949392506110739150610ec5565b9561104c565b60405162461bcd60e51b815260206004820152602b60248201527f53657373696f6e4b657956616c696461746f723a20696e76616c69642065786560448201526a637574696f6e2072756c6560a81b6064820152608490fd5b60001981146110e15760010190565b634e487b7160e01b600052601160045260246000fd5b94959391909160009560018060a01b03166000526001968760205260406000203360005260205260406000209365ffffffffffff89860154169560005b6004808401358401013581101561134857600483013583013681900360821901600583901b909101602401351215610518578181101561132a5760fe19863603018160051b870135121561051857611217610a9661120860248460051b600488013588010101356004870135870101606460248201916111e56111b68461064d565b8d6111d2602060018060a01b03928c60051b810135010161064d565b6001600160a01b03909216911614610661565b61120160608d8960051b810135010135604483013511156106b9565b019061061b565b8460051b8a01358a0191611388565b61127e600288015461125f61126d6112368560051b8b01358b0161077f565b604080516020810195865260e09290921b6001600160e01b031916908201529182906044820190565b03601f198101835282610549565b5190208260051b8801358801610ed8565b65ffffffffffff891665ffffffffffff821611611340575b508381101561132a578060051b850135601e19863603018112156105185785018035906001600160401b03821161051857602001908060051b360382136105185761130a91610b438a54918a6040516112ff8161125f60208201948b60051b81013501856107a3565b5190209336916108de565b1561131d57611318906110d2565b611134565b5095989750505050505050565b634e487b7160e01b600052603260045260246000fd5b975038611296565b505050505050509250565b903590601e198136030182121561051857018035906001600160401b0382116105185760200191606082023603831361051857565b600490828211610518576040908185013563ffffffff60e01b80821680920361051857823516036115645760005b608086016113c48188611353565b9050821015611558576113d79087611353565b821015611543576060820201803580860180871161152e57602480830180921161151b57508710610518578301850135602082013560068110156105185780158061150e575b1561143057505050505050505050600090565b6001811480611501575b1561144d57505050505050505050600090565b60028114806114f4575b1561146a57505050505050505050600090565b60038114806114e8575b1561148757505050505050505050600090565b868114806114dc575b156114a357505050505050505050600090565b600586911492836114cf575b5050506114c4576114bf906110d2565b6113b6565b505050505050600090565b01351490503884816114af565b50858301358211611490565b50858301358210611474565b5085830135821015611457565b508583013582111561143a565b508583013582141561141d565b634e487b7160e01b600090815260118952fd5b601187634e487b7160e01b6000525260246000fd5b603285634e487b7160e01b6000525260246000fd5b50505050505050600190565b505050505060009056"; - - function deploy() internal returns (address) { - DeterministicDeploy.checkDeploy("SessionKey", EXPECTED_SESSIONKEY_ADDRESS, SESSIONKEY_CODE); - return EXPECTED_SESSIONKEY_ADDRESS; - } -} diff --git a/src/Kernel.sol b/src/Kernel.sol index 55d5d658..cb84314f 100644 --- a/src/Kernel.sol +++ b/src/Kernel.sol @@ -1,201 +1,218 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -// Importing external libraries and contracts +import {PackedUserOperation} from "./interfaces/PackedUserOperation.sol"; +import {IAccount, ValidationData, ValidAfter, ValidUntil, parseValidationData} from "./interfaces/IAccount.sol"; +import {IEntryPoint} from "./interfaces/IEntryPoint.sol"; +import {IAccountExecute} from "./interfaces/IAccountExecute.sol"; +import {IERC7579Account} from "./interfaces/IERC7579Account.sol"; +import {ModuleLib} from "./utils/ModuleLib.sol"; +import { + ValidationManager, + ValidationMode, + ValidationId, + ValidatorLib, + ValidationType, + PermissionId, + PassFlag, + SKIP_SIGNATURE +} from "./core/ValidationManager.sol"; +import {HookManager} from "./core/HookManager.sol"; +import {ExecutorManager} from "./core/ExecutorManager.sol"; +import {SelectorManager} from "./core/SelectorManager.sol"; +import {IModule, IValidator, IHook, IExecutor, IFallback, IPolicy, ISigner} from "./interfaces/IERC7579Modules.sol"; import {EIP712} from "solady/utils/EIP712.sol"; -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {Compatibility} from "./abstract/Compatibility.sol"; -import {KernelStorage} from "./abstract/KernelStorage.sol"; -import {_intersectValidationData} from "./utils/KernelHelper.sol"; -import {IKernelValidator} from "./interfaces/IKernelValidator.sol"; - +import {ExecLib, ExecMode, CallType, ExecType, ExecModeSelector, ExecModePayload} from "./utils/ExecLib.sol"; import { - KERNEL_NAME, - KERNEL_VERSION, - VALIDATOR_APPROVED_STRUCT_HASH, - KERNEL_STORAGE_SLOT_1, - SIG_VALIDATION_FAILED -} from "./common/Constants.sol"; -import {Operation} from "./common/Enums.sol"; -import {WalletKernelStorage, Call, ExecutionDetail} from "./common/Structs.sol"; -import {ValidationData, ValidAfter, ValidUntil, parseValidationData, packValidationData} from "./common/Types.sol"; - -/// @title Kernel -/// @author taek -/// @notice wallet kernel for extensible wallet functionality -contract Kernel is EIP712, Compatibility, KernelStorage { - /// @dev Selector of the `DisabledMode()` error, to be used in assembly, 'bytes4(keccak256(bytes("DisabledMode()")))', same as DisabledMode.selector() - uint256 private constant _DISABLED_MODE_SELECTOR = 0xfc2f51c5; - bytes32 internal constant EIP712_DOMAIN_TYPEHASH = - 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f; - - /// @dev Current kernel name and version - string public constant name = KERNEL_NAME; - string public constant version = KERNEL_VERSION; - - /// @dev Sets up the EIP712 and KernelStorage with the provided entry point - constructor(IEntryPoint _entryPoint) KernelStorage(_entryPoint) {} - - /// @notice Accepts incoming Ether transactions and calls from the EntryPoint contract - /// @dev This function will delegate any call to the appropriate executor based on the function signature. - fallback() external payable { - bytes4 sig = msg.sig; - address executor = getKernelStorage().execution[sig].executor; - if (msg.sender != address(entryPoint) && !_checkCaller()) { - revert NotAuthorizedCaller(); + CALLTYPE_SINGLE, + CALLTYPE_DELEGATECALL, + ERC1967_IMPLEMENTATION_SLOT, + VALIDATION_TYPE_ROOT, + VALIDATION_TYPE_VALIDATOR, + VALIDATION_TYPE_PERMISSION, + MODULE_TYPE_VALIDATOR, + MODULE_TYPE_EXECUTOR, + MODULE_TYPE_FALLBACK, + MODULE_TYPE_HOOK, + MODULE_TYPE_POLICY, + MODULE_TYPE_SIGNER, + EXECTYPE_TRY, + EXECTYPE_DEFAULT, + EXEC_MODE_DEFAULT, + CALLTYPE_DELEGATECALL, + CALLTYPE_SINGLE, + CALLTYPE_BATCH, + CALLTYPE_STATIC +} from "./types/Constants.sol"; + +contract Kernel is IAccount, IAccountExecute, IERC7579Account, ValidationManager { + error ExecutionReverted(); + error InvalidExecutor(); + error InvalidFallback(); + error InvalidCallType(); + error OnlyExecuteUserOp(); + error InvalidModuleType(); + error InvalidCaller(); + error InvalidSelector(); + + event Received(address sender, uint256 amount); + event Upgraded(address indexed implementation); + + IEntryPoint public immutable entrypoint; + + // NOTE : when eip 1153 has been enabled, this can be transient storage + mapping(bytes32 userOpHash => IHook) internal executionHook; + + constructor(IEntryPoint _entrypoint) { + entrypoint = _entrypoint; + _validationStorage().rootValidator = ValidationId.wrap(bytes21(abi.encodePacked(hex"deadbeef"))); + } + + modifier onlyEntryPoint() { + if (msg.sender != address(entrypoint)) { + revert InvalidCaller(); } - assembly { - calldatacopy(0, 0, calldatasize()) - let result := delegatecall(gas(), executor, 0, calldatasize(), 0, 0) - returndatacopy(0, 0, returndatasize()) - switch result - case 0 { revert(0, returndatasize()) } - default { return(0, returndatasize()) } + _; + } + + modifier onlyEntryPointOrSelf() { + if (msg.sender != address(entrypoint) && msg.sender != address(this)) { + revert InvalidCaller(); } + _; } - /// @notice Executes a function call to an external contract - /// @param to The address of the target contract - /// @param value The amount of Ether to send - /// @param data The call data to be sent - /// @dev operation is deprecated param, use executeBatch for batched transaction - function execute(address to, uint256 value, bytes memory data, Operation _operation) external payable { - if (msg.sender != address(entryPoint) && msg.sender != address(this) && !_checkCaller()) { - revert NotAuthorizedCaller(); + modifier onlyEntryPointOrSelfOrRoot() { + IValidator validator = ValidatorLib.getValidator(_validationStorage().rootValidator); + if ( + msg.sender != address(entrypoint) && msg.sender != address(this) // do rootValidator hook + ) { + if (validator.isModuleType(4)) { + bytes memory ret = IHook(address(validator)).preCheck(msg.sender, msg.value, msg.data); + _; + IHook(address(validator)).postCheck(ret, true, hex""); // TODO don't support try catch hook here + } else { + revert InvalidCaller(); + } + } else { + _; } - if (_operation != Operation.Call) { - revert DeprecatedOperation(); + } + + function initialize(ValidationId _rootValidator, IHook hook, bytes calldata validatorData, bytes calldata hookData) + external + { + ValidationStorage storage vs = _validationStorage(); + require(ValidationId.unwrap(vs.rootValidator) == bytes21(0), "already initialized"); + if (ValidationId.unwrap(_rootValidator) == bytes21(0)) { + revert InvalidValidator(); } - assembly { - let success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0) - returndatacopy(0, 0, returndatasize()) - switch success - case 0 { revert(0, returndatasize()) } - default { return(0, returndatasize()) } + ValidationType vType = ValidatorLib.getType(_rootValidator); + if (vType != VALIDATION_TYPE_VALIDATOR && vType != VALIDATION_TYPE_PERMISSION) { + revert InvalidValidationType(); } + _setRootValidator(_rootValidator); + ValidationConfig memory config = ValidationConfig({nonce: uint32(1), hook: hook}); + vs.currentNonce = 1; + _installValidation(_rootValidator, config, validatorData, hookData); } - /// @notice Executes a function call to an external contract with delegatecall - /// @param to The address of the target contract - /// @param data The call data to be sent - function executeDelegateCall(address to, bytes memory data) external payable { - if (msg.sender != address(entryPoint) && msg.sender != address(this) && !_checkCaller()) { - revert NotAuthorizedCaller(); - } + function upgradeTo(address _newImplementation) external payable onlyEntryPointOrSelfOrRoot { assembly { - let success := delegatecall(gas(), to, add(data, 0x20), mload(data), 0, 0) - returndatacopy(0, 0, returndatasize()) - switch success - case 0 { revert(0, returndatasize()) } - default { return(0, returndatasize()) } + sstore(ERC1967_IMPLEMENTATION_SLOT, _newImplementation) } + emit Upgraded(_newImplementation); } - /// @notice Executes a function call to an external contract batched - /// @param calls The calls to be executed, in order - /// @dev operation deprecated param, use executeBatch for batched transaction - function executeBatch(Call[] memory calls) external payable { - if (msg.sender != address(entryPoint) && !_checkCaller()) { - revert NotAuthorizedCaller(); + function _domainNameAndVersion() internal pure override returns (string memory name, string memory version) { + name = "Kernel"; + version = "0.3.0-beta"; + } + + receive() external payable { + emit Received(msg.sender, msg.value); + } + + fallback() external payable { + SelectorConfig memory config = _selectorConfig(msg.sig); + bool success; + bytes memory result; + if (address(config.hook) == address(0)) { + revert InvalidSelector(); + } else { + // action installed + bytes memory context; + if (address(config.hook) != address(1)) { + context = _doPreHook(config.hook, msg.value, msg.data); + } + // execute action + if (config.callType == CALLTYPE_SINGLE) { + (success, result) = ExecLib.doFallback2771Call(config.target); + } else if (config.callType == CALLTYPE_DELEGATECALL) { + (success, result) = ExecLib.executeDelegatecall(config.target, msg.data); + } else { + revert NotSupportedCallType(); + } + if (address(config.hook) != address(1)) { + _doPostHook(config.hook, context, success, result); + } } - uint256 len = calls.length; - for (uint256 i = 0; i < len;) { - Call memory call = calls[i]; - address to = call.to; - uint256 value = call.value; - bytes memory data = call.data; + if (!success) { assembly { - let success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0) - switch success - case 0 { - returndatacopy(0, 0, returndatasize()) - revert(0, returndatasize()) - } - default { i := add(i, 1) } + revert(add(result, 0x20), mload(result)) + } + } else { + assembly { + return(add(result, 0x20), mload(result)) } } } - /// @notice Validates a user operation based on its mode - /// @dev This function will validate user operation and be called by EntryPoint - /// @param _userOp The user operation to be validated - /// @param userOpHash The hash of the user operation - /// @param missingAccountFunds The funds needed to be reimbursed - /// @return validationData The data used for validation - function validateUserOp(UserOperation calldata _userOp, bytes32 userOpHash, uint256 missingAccountFunds) + // validation part + function validateUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 missingAccountFunds) external payable - virtual + override + onlyEntryPoint returns (ValidationData validationData) { - if (msg.sender != address(entryPoint)) { - revert NotEntryPoint(); + ValidationStorage storage vs = _validationStorage(); + // ONLY ENTRYPOINT + // Major change for v2 => v3 + // 1. instead of packing 4 bytes prefix to userOp.signature to determine the mode, v3 uses userOp.nonce's first 2 bytes to check the mode + // 2. instead of packing 20 bytes in userOp.signature for enable mode to provide the validator address, v3 uses userOp.nonce[2:22] + // 3. In v2, only 1 plugin validator(aside from root validator) can access the selector. + // In v3, you can use more than 1 plugin to use the exact selector, you need to specify the validator address in userOp.nonce[2:22] to use the validator + + (ValidationMode vMode, ValidationType vType, ValidationId vId) = ValidatorLib.decodeNonce(userOp.nonce); + if (vType == VALIDATION_TYPE_ROOT) { + vId = vs.rootValidator; } - bytes calldata userOpSignature; - uint256 userOpEndOffset; - assembly { - // Store the userOpSignature offset - userOpEndOffset := add(calldataload(0x04), 0x24) - // Extract the user op signature from the calldata (but keep it in the calldata, just extract offset & length) - userOpSignature.offset := add(calldataload(add(userOpEndOffset, 0x120)), userOpEndOffset) - userOpSignature.length := calldataload(sub(userOpSignature.offset, 0x20)) + validationData = _doValidation(vMode, vId, userOp, userOpHash); + ValidationConfig memory vc = vs.validationConfig[vId]; + // allow when nonce is not revoked or vType is sudo + if (vType != VALIDATION_TYPE_ROOT && vc.nonce < vs.validNonceFrom) { + revert InvalidNonce(); } - // mode based signature - bytes4 mode = bytes4(userOpSignature[0:4]); // mode == 00..00 use validators - // mode == 0x00000000 use sudo validator - if (mode == 0x00000000) { - assembly { - if missingAccountFunds { - pop(call(gas(), caller(), missingAccountFunds, callvalue(), callvalue(), callvalue(), callvalue())) - //ignore failure (its EntryPoint's job to verify, not account.) - } - } - // short circuit here for default validator - return _validateUserOp(_userOp, userOpHash, missingAccountFunds); + IHook execHook = vc.hook; + if (address(execHook) == address(0)) { + revert InvalidValidator(); } + executionHook[userOpHash] = execHook; - // Check if the kernel is disabled, if that's the case, it's only accepting userOperation with sudo mode - assembly ("memory-safe") { - // Extract the disabled mode from the storage slot - let isKernelDisabled := shl(224, sload(KERNEL_STORAGE_SLOT_1)) - // If we got a non-zero disabled mode, and non zero mode, then revert - if and(isKernelDisabled, mode) { - mstore(0x00, _DISABLED_MODE_SELECTOR) - revert(0x1c, 0x04) + if (address(execHook) == address(1)) { + // does not require hook + if (vType != VALIDATION_TYPE_ROOT && !vs.allowedSelectors[vId][bytes4(userOp.callData[0:4])]) { + revert InvalidValidator(); } - } - - // The validator that will be used - IKernelValidator validator; - - // mode == 0x00000001 use given validator - // mode == 0x00000002 enable validator - if (mode == 0x00000001) { - bytes calldata userOpCallData; - assembly { - userOpCallData.offset := add(calldataload(add(userOpEndOffset, 0x40)), userOpEndOffset) - userOpCallData.length := calldataload(sub(userOpCallData.offset, 0x20)) + } else { + // requires hook + if (vType != VALIDATION_TYPE_ROOT && !vs.allowedSelectors[vId][bytes4(userOp.callData[4:8])]) { + revert InvalidValidator(); } - ExecutionDetail storage detail = getKernelStorage().execution[bytes4(userOpCallData[0:4])]; - validator = detail.validator; - userOpSignature = userOpSignature[4:]; - validationData = packValidationData(detail.validAfter, detail.validUntil); - } else if (mode == 0x00000002) { - bytes calldata userOpCallData; - assembly { - userOpCallData.offset := add(calldataload(add(userOpEndOffset, 0x40)), userOpEndOffset) - userOpCallData.length := calldataload(sub(userOpCallData.offset, 0x20)) + if (bytes4(userOp.callData[0:4]) != this.executeUserOp.selector) { + revert OnlyExecuteUserOp(); } - // use given validator - // userOpSignature[4:10] = validAfter, - // userOpSignature[10:16] = validUntil, - // userOpSignature[16:36] = validator address, - (validator, validationData, userOpSignature) = - _approveValidator(bytes4(userOpCallData[0:4]), userOpSignature); - } else { - return SIG_VALIDATION_FAILED; } assembly { @@ -204,202 +221,273 @@ contract Kernel is EIP712, Compatibility, KernelStorage { //ignore failure (its EntryPoint's job to verify, not account.) } } + } - // Replicate the userOp from memory to calldata, to update it's signature (since with mode 1 & 2 the signatre can be updated) - UserOperation memory userOp = _userOp; - userOp.signature = userOpSignature; + // --- Execution --- + function executeUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash) + external + payable + override + onlyEntryPoint + { + bytes memory context; + IHook hook = executionHook[userOpHash]; + if (address(hook) != address(1)) { + // removed 4bytes selector + context = _doPreHook(hook, msg.value, userOp.callData[4:]); + } + (bool success, bytes memory ret) = ExecLib.executeDelegatecall(address(this), userOp.callData[4:]); + if (address(hook) != address(1)) { + _doPostHook(hook, context, success, ret); + } else if (!success) { + revert ExecutionReverted(); + } + } - // Get the validator data from the designated signer - validationData = - _intersectValidationData(validationData, validator.validateUserOp(userOp, userOpHash, missingAccountFunds)); - return validationData; + function executeFromExecutor(ExecMode execMode, bytes calldata executionCalldata) + external + payable + returns (bytes[] memory returnData) + { + // no modifier needed, checking if msg.sender is registered executor will replace the modifier + IHook hook = _executorConfig(IExecutor(msg.sender)).hook; + if (address(hook) == address(0)) { + revert InvalidExecutor(); + } + bytes memory context; + if (address(hook) != address(1)) { + context = _doPreHook(hook, msg.value, msg.data); + } + returnData = ExecLib.execute(execMode, executionCalldata); + if (address(hook) != address(1)) { + _doPostHook(hook, context, true, abi.encode(returnData)); + } } - /// @dev This function will approve a new validator for the current kernel - /// @param sig The signature of the userOp asking for a validator approval - /// @param signature The signature of the userOp asking for a validator approval - function _approveValidator(bytes4 sig, bytes calldata signature) - internal - returns (IKernelValidator validator, ValidationData validationData, bytes calldata validationSig) + function execute(ExecMode execMode, bytes calldata executionCalldata) external payable onlyEntryPointOrSelfOrRoot { + ExecLib.execute(execMode, executionCalldata); + } + + function isValidSignature(bytes32 hash, bytes calldata signature) external view override returns (bytes4) { + ValidationStorage storage vs = _validationStorage(); + (ValidationId vId, bytes calldata sig) = ValidatorLib.decodeSignature(signature); + if (ValidatorLib.getType(vId) == VALIDATION_TYPE_ROOT) { + vId = vs.rootValidator; + } + if (address(vs.validationConfig[vId].hook) == address(0)) { + revert InvalidValidator(); + } + if (ValidatorLib.getType(vId) == VALIDATION_TYPE_VALIDATOR) { + IValidator validator = ValidatorLib.getValidator(vId); + return validator.isValidSignatureWithSender(msg.sender, _toWrappedHash(hash), sig); + } else { + PermissionId pId = ValidatorLib.getPermissionId(vId); + PassFlag permissionFlag = vs.permissionConfig[pId].permissionFlag; + if (PassFlag.unwrap(permissionFlag) & PassFlag.unwrap(SKIP_SIGNATURE) != 0) { + revert PermissionNotAlllowedForSignature(); + } + return _checkPermissionSignature(pId, msg.sender, hash, sig); + } + } + + function installModule(uint256 moduleType, address module, bytes calldata initData) + external + payable + override + onlyEntryPointOrSelfOrRoot { - unchecked { - validator = IKernelValidator(address(bytes20(signature[16:36]))); - uint256 cursor = 88; - uint256 length = uint256(bytes32(signature[56:88])); // this is enableDataLength - bytes calldata enableData; + if (moduleType == MODULE_TYPE_VALIDATOR) { + ValidationStorage storage vs = _validationStorage(); + ValidationId vId = ValidatorLib.validatorToIdentifier(IValidator(module)); + ValidationConfig memory config = + ValidationConfig({nonce: vs.currentNonce, hook: IHook(address(bytes20(initData[0:20])))}); + bytes calldata validatorData; + bytes calldata hookData; assembly { - enableData.offset := add(signature.offset, cursor) - enableData.length := length - cursor := add(cursor, length) // 88 + enableDataLength + validatorData.offset := add(add(initData.offset, 52), calldataload(add(initData.offset, 20))) + validatorData.length := calldataload(sub(validatorData.offset, 32)) + hookData.offset := add(add(initData.offset, 52), calldataload(add(initData.offset, 52))) + hookData.length := calldataload(sub(hookData.offset, 32)) } - length = uint256(bytes32(signature[cursor:cursor + 32])); // this is enableSigLength + _installValidation(vId, config, validatorData, hookData); + //_installHook(config.hook, hookData); hook install is handled inside installvalidation + } else if (moduleType == MODULE_TYPE_EXECUTOR) { + bytes calldata executorData; + bytes calldata hookData; assembly { - cursor := add(cursor, 32) + executorData.offset := add(add(initData.offset, 52), calldataload(add(initData.offset, 20))) + executorData.length := calldataload(sub(executorData.offset, 32)) + hookData.offset := add(add(initData.offset, 52), calldataload(add(initData.offset, 52))) + hookData.length := calldataload(sub(hookData.offset, 32)) } - bytes32 enableDigest = _hashTypedData( - keccak256( - abi.encode( - VALIDATOR_APPROVED_STRUCT_HASH, - bytes4(sig), - uint256(bytes32(signature[4:36])), - address(bytes20(signature[36:56])), - keccak256(enableData) - ) - ) - ); - validationData = _intersectValidationData( - _validateSignature(address(this), enableDigest, enableDigest, signature[cursor:cursor + length]), - ValidationData.wrap( - uint256(bytes32(signature[4:36])) - & 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 - ) - ); + IHook hook = IHook(address(bytes20(initData[0:20]))); + _installExecutor(IExecutor(module), executorData, hook); + _installHook(hook, hookData); + } else if (moduleType == MODULE_TYPE_FALLBACK) { + bytes calldata selectorData; + bytes calldata hookData; assembly { - cursor := add(cursor, length) - validationSig.offset := add(signature.offset, cursor) - validationSig.length := sub(signature.length, cursor) + selectorData.offset := add(add(initData.offset, 56), calldataload(add(initData.offset, 24))) + selectorData.length := calldataload(sub(selectorData.offset, 32)) + hookData.offset := add(add(initData.offset, 56), calldataload(add(initData.offset, 56))) + hookData.length := calldataload(sub(hookData.offset, 32)) } - getKernelStorage().execution[sig] = ExecutionDetail({ - validAfter: ValidAfter.wrap(uint48(bytes6(signature[4:10]))), - validUntil: ValidUntil.wrap(uint48(bytes6(signature[10:16]))), - executor: address(bytes20(signature[36:56])), - validator: IKernelValidator(address(bytes20(signature[16:36]))) - }); - validator.enable(enableData); + _installSelector(bytes4(initData[0:4]), module, IHook(address(bytes20(initData[4:24]))), selectorData); + _installHook(IHook(address(bytes20(initData[4:24]))), hookData); + } else if (moduleType == MODULE_TYPE_HOOK) { + // force call onInstall for hook + // NOTE: for hook, kernel does not support independant hook install, + // hook is expected to be paired with proper validator/executor/selector + IHook(module).onInstall(initData); + } else if (moduleType == MODULE_TYPE_POLICY) { + // force call onInstall for policy + // NOTE: for policy, kernel does not support independant policy install, + // policy is expected to be paired with proper permissionId + // to "ADD" permission, use "installValidations()" function + IPolicy(module).onInstall(initData); + } else if (moduleType == MODULE_TYPE_SIGNER) { + // force call onInstall for signer + // NOTE: for signer, kernel does not support independant signer install, + // signer is expected to be paired with proper permissionId + // to "ADD" permission, use "installValidations()" function + ISigner(module).onInstall(initData); + } else { + revert InvalidModuleType(); } } - /// @dev Validates a signature for the given kernel - /// @param hash The hash of the data that was signed - /// @param signature The signature to be validated - function validateSignature(bytes32 hash, bytes calldata signature) public view returns (ValidationData) { - return _validateSignature(msg.sender, hash, hash, signature); + function installValidations( + ValidationId[] calldata vIds, + ValidationConfig[] memory configs, + bytes[] calldata validationData, + bytes[] calldata hookData + ) external payable onlyEntryPointOrSelfOrRoot { + _installValidations(vIds, configs, validationData, hookData); } - /// @dev Get the current name & version of the kernel, used for the EIP-712 domain separator - function _domainNameAndVersion() internal pure override returns (string memory, string memory) { - return (name, version); + function uninstallValidation(ValidationId vId, bytes calldata deinitData, bytes calldata hookDeinitData) + external + payable + onlyEntryPointOrSelfOrRoot + { + IHook hook = _uninstallValidation(vId, deinitData); + _uninstallHook(hook, hookDeinitData); } - /// @dev Get an EIP-712 compliant domain separator - function _domainSeparator() internal view override returns (bytes32) { - // Obtain the name and version from the _domainNameAndVersion function. - (string memory _name, string memory _version) = _domainNameAndVersion(); - bytes32 nameHash = keccak256(bytes(_name)); - bytes32 versionHash = keccak256(bytes(_version)); - - // Use the proxy address for the EIP-712 domain separator. - address proxyAddress = address(this); - - // Construct the domain separator with name, version, chainId, and proxy address. - bytes32 typeHash = EIP712_DOMAIN_TYPEHASH; - return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, proxyAddress)); + function invalidateNonce(uint32 nonce) external payable onlyEntryPointOrSelfOrRoot { + _invalidateNonce(nonce); } - /// @notice Checks if a signature is valid - /// @dev This function checks if a signature is valid based on the hash of the data signed. - /// @param hash The hash of the data that was signed - /// @param signature The signature to be validated - /// @return The magic value 0x1626ba7e if the signature is valid, otherwise returns 0xffffffff. - function isValidSignature(bytes32 hash, bytes calldata signature) public view returns (bytes4) { - // Include the proxy address in the domain separator - bytes32 domainSeparator = _domainSeparator(); - - // Recreate the signed message hash with the correct domain separator - bytes32 signedMessageHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, hash)); - - ValidationData validationData = _validateSignature(msg.sender, signedMessageHash, hash, signature); - (ValidAfter validAfter, ValidUntil validUntil, address result) = parseValidationData(validationData); - - // Check if the signature is valid within the specified time frame and the result is successful - if ( - ValidAfter.unwrap(validAfter) <= block.timestamp && ValidUntil.unwrap(validUntil) >= block.timestamp - && result == address(0) - ) { - // If all checks pass, return the ERC1271 magic value for a valid signature - return 0x1626ba7e; + function uninstallModule(uint256 moduleType, address module, bytes calldata deInitData) + external + payable + override + onlyEntryPointOrSelfOrRoot + { + if (moduleType == 1) { + ValidationId vId = ValidatorLib.validatorToIdentifier(IValidator(module)); + _uninstallValidation(vId, deInitData); + } else if (moduleType == 2) { + _uninstallExecutor(IExecutor(module), deInitData); + } else if (moduleType == 3) { + bytes4 selector = bytes4(deInitData[0:4]); + _uninstallSelector(selector, deInitData[4:]); + } else if (moduleType == 4) { + ValidationId vId = _validationStorage().rootValidator; + if (_validationStorage().validationConfig[vId].hook == IHook(module)) { + // when root validator hook is being removed + // remove hook on root validator to prevent kernel from being locked + _validationStorage().validationConfig[vId].hook = IHook(address(1)); + } + // force call onInstall for hook + // NOTE: for hook, kernel does not support independant hook install, + // hook is expected to be paired with proper validator/executor/selector + ModuleLib.uninstallModule(module, deInitData); + } else if (moduleType == 5) { + ValidationId rootValidator = _validationStorage().rootValidator; + bytes32 permissionId = bytes32(deInitData[0:32]); + if (ValidatorLib.getType(rootValidator) == VALIDATION_TYPE_PERMISSION) { + if (permissionId == bytes32(PermissionId.unwrap(ValidatorLib.getPermissionId(rootValidator)))) { + revert RootValidatorCannotBeRemoved(); + } + } + // force call onInstall for policy + // NOTE: for policy, kernel does not support independant policy install, + // policy is expected to be paired with proper permissionId + // to "REMOVE" permission, use "uninstallValidation()" function + ModuleLib.uninstallModule(module, deInitData); + } else if (moduleType == 6) { + ValidationId rootValidator = _validationStorage().rootValidator; + bytes32 permissionId = bytes32(deInitData[0:32]); + if (ValidatorLib.getType(rootValidator) == VALIDATION_TYPE_PERMISSION) { + if (permissionId == bytes32(PermissionId.unwrap(ValidatorLib.getPermissionId(rootValidator)))) { + revert RootValidatorCannotBeRemoved(); + } + } + // force call onInstall for signer + // NOTE: for signer, kernel does not support independant signer install, + // signer is expected to be paired with proper permissionId + // to "REMOVE" permission, use "uninstallValidation()" function + ModuleLib.uninstallModule(module, deInitData); } else { - // If any check fails, return the failure magic value - return 0xffffffff; + revert InvalidModuleType(); } } - /// @dev Check if the current caller is authorized or no to perform the call - /// @return True if the caller is authorized, otherwise false - function _checkCaller() internal returns (bool) { - if (_validCaller(msg.sender, msg.data)) { + function supportsModule(uint256 moduleTypeId) external pure override returns (bool) { + if (moduleTypeId < 7) { return true; - } - bytes4 sig = msg.sig; - ExecutionDetail storage detail = getKernelStorage().execution[sig]; - if ( - address(detail.validator) == address(0) - || (ValidUntil.unwrap(detail.validUntil) != 0 && ValidUntil.unwrap(detail.validUntil) < block.timestamp) - || ValidAfter.unwrap(detail.validAfter) > block.timestamp - ) { - return false; } else { - return detail.validator.validCaller(msg.sender, msg.data); + return false; } } - /// @dev This function will validate user operation and be called by EntryPoint - /// @param _op The user operation to be validated - /// @param _opHash The hash of the user operation - /// @param _missingFunds The funds needed to be reimbursed - function _validateUserOp(UserOperation calldata _op, bytes32 _opHash, uint256 _missingFunds) - internal - virtual - returns (ValidationData) + function isModuleInstalled(uint256 moduleType, address module, bytes calldata additionalContext) + external + view + override + returns (bool) { - // Replace the user op in memory to update the signature - UserOperation memory op = _op; - // Remove the validation mode flag from the signature - op.signature = _op.signature[4:]; - - IKernelValidator validator; - assembly { - validator := shr(80, sload(KERNEL_STORAGE_SLOT_1)) + if (moduleType == MODULE_TYPE_VALIDATOR) { + return _validationStorage().validationConfig[ValidatorLib.validatorToIdentifier(IValidator(module))].hook + != IHook(address(0)); + } else if (moduleType == MODULE_TYPE_EXECUTOR) { + return address(_executorConfig(IExecutor(module)).hook) != address(0); + } else if (moduleType == MODULE_TYPE_FALLBACK) { + return _selectorConfig(bytes4(additionalContext[0:4])).target == module; + } else { + return false; } - return IKernelValidator(validator).validateUserOp(op, _opHash, _missingFunds); } - /// @dev This function will validate a signature for the given kernel - /// @param _hash The hash of the data that was signed - /// @param _signature The signature to be validated - /// @return The magic value 0x1626ba7e if the signature is valid, otherwise returns 0xffffffff. - function _validateSignature(address _requestor, bytes32 _hash, bytes32 _rawHash, bytes calldata _signature) - internal - view - virtual - returns (ValidationData) - { - address validator; - assembly { - validator := shr(80, sload(KERNEL_STORAGE_SLOT_1)) - } - // 20 bytes added at the end of the signature to store the address of the caller - (bool success, bytes memory res) = validator.staticcall( - abi.encodePacked( - abi.encodeWithSelector(IKernelValidator.validateSignature.selector, _hash, _signature), - _rawHash, - _requestor - ) - ); - require(success, "Kernel::_validateSignature: failed to validate signature"); - return abi.decode(res, (ValidationData)); + function accountId() external pure override returns (string memory accountImplementationId) { + return "kernel.advanced.v0.3.0-beta"; } - /// @dev Check if the given caller is valid for the given data - /// @param _caller The caller to be checked - /// @param _data The data to be checked - /// @return True if the caller is valid, otherwise false - function _validCaller(address _caller, bytes calldata _data) internal virtual returns (bool) { - address validator; - assembly { - // Load the validator from the storage slot - validator := shr(80, sload(KERNEL_STORAGE_SLOT_1)) + function supportsExecutionMode(ExecMode mode) external pure override returns (bool) { + (CallType callType, ExecType execType, ExecModeSelector selector, ExecModePayload payload) = + ExecLib.decode(mode); + if ( + callType != CALLTYPE_BATCH && callType != CALLTYPE_SINGLE && callType != CALLTYPE_DELEGATECALL + && callType != CALLTYPE_STATIC + ) { + return false; + } + + if ( + ExecType.unwrap(execType) != ExecType.unwrap(EXECTYPE_TRY) + && ExecType.unwrap(execType) != ExecType.unwrap(EXECTYPE_DEFAULT) + ) { + return false; + } + + if (ExecModeSelector.unwrap(selector) != ExecModeSelector.unwrap(EXEC_MODE_DEFAULT)) { + return false; + } + + if (ExecModePayload.unwrap(payload) != bytes22(0)) { + return false; } - return IKernelValidator(validator).validCaller(_caller, _data); + return true; } } diff --git a/src/abstract/Compatibility.sol b/src/abstract/Compatibility.sol deleted file mode 100644 index 0361d99c..00000000 --- a/src/abstract/Compatibility.sol +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -abstract contract Compatibility { - event Received(address sender, uint256 amount); - - receive() external payable { - emit Received(msg.sender, msg.value); - } - - function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { - return this.onERC721Received.selector; - } - - function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { - return this.onERC1155Received.selector; - } - - function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) - external - pure - returns (bytes4) - { - return this.onERC1155BatchReceived.selector; - } -} diff --git a/src/abstract/KernelStorage.sol b/src/abstract/KernelStorage.sol deleted file mode 100644 index fb968ebf..00000000 --- a/src/abstract/KernelStorage.sol +++ /dev/null @@ -1,130 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -// Importing necessary interfaces -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {IKernel} from "../interfaces/IKernel.sol"; -import {KERNEL_STORAGE_SLOT, KERNEL_STORAGE_SLOT_1, IMPLEMENTATION_SLOT} from "../common/Constants.sol"; -import {ExecutionDetail, WalletKernelStorage} from "../common/Structs.sol"; -import {ValidUntil, ValidAfter} from "../common/Types.sol"; - -/// @title Kernel Storage Contract -/// @author taek -/// @notice This contract serves as the storage module for the Kernel contract. -/// @dev This contract should only be used by the main Kernel contract. -abstract contract KernelStorage is IKernel { - IEntryPoint public immutable entryPoint; // The entry point of the contract - - // Modifier to check if the function is called by the entry point, the contract itself or the owner - modifier onlyFromEntryPointOrSelf() { - if (msg.sender != address(entryPoint) && msg.sender != address(this)) { - revert NotAuthorizedCaller(); - } - _; - } - - /// @param _entryPoint The address of the EntryPoint contract - /// @dev Sets up the EntryPoint contract address - constructor(IEntryPoint _entryPoint) { - entryPoint = _entryPoint; - getKernelStorage().defaultValidator = IKernelValidator(address(1)); - } - - // Function to initialize the wallet kernel - function initialize(IKernelValidator _defaultValidator, bytes calldata _data) external payable override { - _setInitialData(_defaultValidator, _data); - } - - // Function to get the wallet kernel storage - function getKernelStorage() internal pure returns (WalletKernelStorage storage ws) { - assembly { - ws.slot := KERNEL_STORAGE_SLOT - } - } - - // Function to upgrade the contract to a new implementation - function upgradeTo(address _newImplementation) external payable override onlyFromEntryPointOrSelf { - assembly { - sstore(IMPLEMENTATION_SLOT, _newImplementation) - } - emit Upgraded(_newImplementation); - } - - // Functions to get the nonce from the entry point - function getNonce() external view virtual returns (uint256) { - return entryPoint.getNonce(address(this), 0); - } - - function getNonce(uint192 key) external view virtual returns (uint256) { - return entryPoint.getNonce(address(this), key); - } - - // query storage - function getDefaultValidator() external view override returns (IKernelValidator validator) { - assembly { - validator := shr(80, sload(KERNEL_STORAGE_SLOT_1)) - } - } - - function getDisabledMode() external view override returns (bytes4 disabled) { - assembly { - disabled := shl(224, sload(KERNEL_STORAGE_SLOT_1)) - } - } - - function getLastDisabledTime() external view override returns (uint48) { - return getKernelStorage().lastDisabledTime; - } - - function getExecution(bytes4 _selector) external view override returns (ExecutionDetail memory) { - return getKernelStorage().execution[_selector]; - } - - function setExecution( - bytes4 _selector, - address _executor, - IKernelValidator _validator, - ValidUntil _validUntil, - ValidAfter _validAfter, - bytes calldata _enableData - ) external payable override onlyFromEntryPointOrSelf { - getKernelStorage().execution[_selector] = ExecutionDetail({ - executor: _executor, - validator: _validator, - validUntil: _validUntil, - validAfter: _validAfter - }); - _validator.enable(_enableData); - emit ExecutionChanged(_selector, _executor, address(_validator)); - } - - function setDefaultValidator(IKernelValidator _defaultValidator, bytes calldata _data) - external - payable - virtual - onlyFromEntryPointOrSelf - { - IKernelValidator oldValidator = getKernelStorage().defaultValidator; - getKernelStorage().defaultValidator = _defaultValidator; - emit DefaultValidatorChanged(address(oldValidator), address(_defaultValidator)); - _defaultValidator.enable(_data); - } - - function disableMode(bytes4 _disableFlag) external payable override onlyFromEntryPointOrSelf { - getKernelStorage().disabledMode = _disableFlag; - getKernelStorage().lastDisabledTime = uint48(block.timestamp); - } - - function _setInitialData(IKernelValidator _defaultValidator, bytes calldata _data) internal virtual { - address validator; - assembly { - validator := shr(80, sload(KERNEL_STORAGE_SLOT_1)) - } - if (address(validator) != address(0)) { - revert AlreadyInitialized(); - } - getKernelStorage().defaultValidator = _defaultValidator; - _defaultValidator.enable(_data); - } -} diff --git a/src/common/Constants.sol b/src/common/Constants.sol deleted file mode 100644 index a8de9076..00000000 --- a/src/common/Constants.sol +++ /dev/null @@ -1,27 +0,0 @@ -pragma solidity ^0.8.0; - -import {ValidationData} from "./Types.sol"; - -// Constants for kernel metadata -string constant KERNEL_NAME = "Kernel"; -string constant KERNEL_VERSION = "0.2.4"; - -// ERC4337 constants -uint256 constant SIG_VALIDATION_FAILED_UINT = 1; -ValidationData constant SIG_VALIDATION_FAILED = ValidationData.wrap(SIG_VALIDATION_FAILED_UINT); - -// STRUCT_HASH - -/// @dev Struct hash for the ValidatorApproved struct -> keccak256("ValidatorApproved(bytes4 sig,uint256 validatorData,address executor,bytes enableData)") -bytes32 constant VALIDATOR_APPROVED_STRUCT_HASH = 0x3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee964176; - -/* -------------------------------------------------------------------------- */ -/* Storage slots */ -/* -------------------------------------------------------------------------- */ - -/// @dev Storage slot for the kernel storage -bytes32 constant KERNEL_STORAGE_SLOT = 0x439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd8; -/// @dev Storage pointer inside the kernel storage, with 1 offset, to access directly disblaedMode, disabled date and default validator -bytes32 constant KERNEL_STORAGE_SLOT_1 = 0x439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9; -/// @dev Storage slot for the logic implementation address -bytes32 constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; diff --git a/src/common/Enums.sol b/src/common/Enums.sol deleted file mode 100644 index 4a3668aa..00000000 --- a/src/common/Enums.sol +++ /dev/null @@ -1,15 +0,0 @@ -pragma solidity ^0.8.0; - -enum Operation { - Call, - DelegateCall -} - -enum ParamCondition { - EQUAL, - GREATER_THAN, - LESS_THAN, - GREATER_THAN_OR_EQUAL, - LESS_THAN_OR_EQUAL, - NOT_EQUAL -} diff --git a/src/common/Structs.sol b/src/common/Structs.sol deleted file mode 100644 index ab957155..00000000 --- a/src/common/Structs.sol +++ /dev/null @@ -1,69 +0,0 @@ -pragma solidity ^0.8.0; - -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {ParamCondition, Operation} from "./Enums.sol"; -import {ValidAfter, ValidUntil} from "./Types.sol"; - -// Defining a struct for execution details -struct ExecutionDetail { - ValidAfter validAfter; // Until what time is this execution valid - ValidUntil validUntil; // After what time is this execution valid - address executor; // Who is the executor of this execution - IKernelValidator validator; // The validator for this execution -} - -struct Call { - address to; - uint256 value; - bytes data; -} - -// Defining a struct for wallet kernel storage -struct WalletKernelStorage { - bytes32 __deprecated; // A deprecated field - bytes4 disabledMode; // Mode which is currently disabled - uint48 lastDisabledTime; // Last time when a mode was disabled - IKernelValidator defaultValidator; // Default validator for the wallet - mapping(bytes4 => ExecutionDetail) execution; // Mapping of function selectors to execution details -} - -// Param Rule for session key -struct Nonces { - uint128 lastNonce; - uint128 invalidNonce; -} - -struct ParamRule { - uint256 offset; - ParamCondition condition; - bytes32 param; -} - -struct ExecutionRule { - ValidAfter validAfter; // 48 bits - uint48 interval; // 48 bits - uint48 runs; // 48 bits -} - -struct ExecutionStatus { - ValidAfter validAfter; // 48 bits - uint48 runs; // 48 bits -} - -struct Permission { - uint32 index; - address target; - bytes4 sig; - uint256 valueLimit; - ParamRule[] rules; - ExecutionRule executionRule; - Operation operation; -} - -struct SessionData { - bytes32 merkleRoot; - ValidAfter validAfter; - ValidUntil validUntil; - address paymaster; // address(0) means accept userOp without paymaster, address(1) means reject userOp with paymaster, other address means accept userOp with paymaster with the address - uint256 nonce; -} diff --git a/src/common/Types.sol b/src/common/Types.sol deleted file mode 100644 index 81ef36f4..00000000 --- a/src/common/Types.sol +++ /dev/null @@ -1,36 +0,0 @@ -pragma solidity ^0.8.9; - -type ValidAfter is uint48; - -type ValidUntil is uint48; - -type ValidationData is uint256; - -function packValidationData(ValidAfter validAfter, ValidUntil validUntil) pure returns (ValidationData) { - return ValidationData.wrap( - uint256(ValidAfter.unwrap(validAfter)) << 208 | uint256(ValidUntil.unwrap(validUntil)) << 160 - ); -} - -function packValidationData(address aggregator, ValidAfter validAfter, ValidUntil validUntil) - pure - returns (ValidationData) -{ - return ValidationData.wrap( - uint256(ValidAfter.unwrap(validAfter)) << 208 | uint256(ValidUntil.unwrap(validUntil)) << 160 - | uint160(aggregator) - ); -} - -function parseValidationData(ValidationData validationData) - pure - returns (ValidAfter validAfter, ValidUntil validUntil, address result) -{ - assembly { - result := validationData - validUntil := and(shr(160, validationData), 0xffffffffffff) - switch iszero(validUntil) - case 1 { validUntil := 0xffffffffffff } - validAfter := shr(208, validationData) - } -} diff --git a/src/core/ExecutorManager.sol b/src/core/ExecutorManager.sol new file mode 100644 index 00000000..074ec723 --- /dev/null +++ b/src/core/ExecutorManager.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import {IHook, IExecutor} from "../interfaces/IERC7579Modules.sol"; +import {ModuleLib} from "../utils/ModuleLib.sol"; +import {EXECUTOR_MANAGER_STORAGE_SLOT} from "../types/Constants.sol"; + +abstract contract ExecutorManager { + struct ExecutorConfig { + IHook hook; // address(1) : hook not required, address(0) : validator not installed + } + + struct ExecutorStorage { + mapping(IExecutor => ExecutorConfig) executorConfig; + } + + function executorConfig(IExecutor executor) external view returns (ExecutorConfig memory) { + return _executorConfig(executor); + } + + function _executorConfig(IExecutor executor) internal view returns (ExecutorConfig storage config) { + ExecutorStorage storage es; + bytes32 slot = EXECUTOR_MANAGER_STORAGE_SLOT; + assembly { + es.slot := slot + } + config = es.executorConfig[executor]; + } + + function _installExecutor(IExecutor executor, bytes calldata executorData, IHook hook) internal { + if (address(hook) == address(0)) { + hook = IHook(address(1)); + } + ExecutorConfig storage config = _executorConfig(executor); + config.hook = hook; + executor.onInstall(executorData); + } + + function _installExecutorWithoutInit(IExecutor executor, IHook hook) internal { + if (address(hook) == address(0)) { + hook = IHook(address(1)); + } + ExecutorConfig storage config = _executorConfig(executor); + config.hook = hook; + } + + function _uninstallExecutor(IExecutor executor, bytes calldata executorData) internal returns (IHook hook) { + ExecutorConfig storage config = _executorConfig(executor); + hook = config.hook; + config.hook = IHook(address(0)); + ModuleLib.uninstallModule(address(executor), executorData); + } +} diff --git a/src/core/HookManager.sol b/src/core/HookManager.sol new file mode 100644 index 00000000..f622f515 --- /dev/null +++ b/src/core/HookManager.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import {IHook} from "../interfaces/IERC7579Modules.sol"; +import {ModuleLib} from "../utils/ModuleLib.sol"; + +abstract contract HookManager { + // NOTE: currently, all install/uninstall calls onInstall/onUninstall + // I assume this does not pose any security risks, but there should be a way to branch if hook needs call to onInstall/onUninstall + // --- Hook --- + // Hook is activated on these scenarios + // - on 4337 flow, userOp.calldata starts with executeUserOp.selector && validator requires hook + // - executeFromExecutor() is invoked and executor requires hook + // - when fallback function has been invoked and fallback requires hook => native functions will not invoke hook + function _doPreHook(IHook hook, uint256 value, bytes calldata callData) internal returns (bytes memory context) { + context = hook.preCheck(msg.sender, value, callData); + } + + function _doPostHook(IHook hook, bytes memory context, bool success, bytes memory result) internal { + // bool success, + // bytes memory result + hook.postCheck(context, success, result); + } + + // @notice if hook is not initialized before, kernel will call hook.onInstall no matter what flag it shows, with hookData[1:] + // @param hookData is encoded into (1bytes flag + actual hookdata) flag is for identifying if the hook has to be initialized or not + function _installHook(IHook hook, bytes calldata hookData) internal { + if (address(hook) == address(0) || address(hook) == address(1)) { + return; + } + if (!hook.isInitialized(address(this))) { + // if hook is not installed, it should call onInstall + hook.onInstall(hookData[1:]); + return; + } + if (bytes1(hookData[0]) == bytes1(0xff)) { + // 0xff means you want to explicitly call install hook + hook.onInstall(hookData[1:]); + } + } + + // @param hookData encoded as (1bytes flag + actual hookdata) flag is for identifying if the hook has to be initialized or not + function _uninstallHook(IHook hook, bytes calldata hookData) internal { + if (address(hook) == address(0) || address(hook) == address(1)) { + return; + } + if (bytes1(hookData[0]) == bytes1(0xff)) { + // 0xff means you want to call uninstall hook + ModuleLib.uninstallModule(address(hook), hookData[1:]); + } + } +} diff --git a/src/core/SelectorManager.sol b/src/core/SelectorManager.sol new file mode 100644 index 00000000..e5a09e92 --- /dev/null +++ b/src/core/SelectorManager.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import {IHook, IFallback, IModule} from "../interfaces/IERC7579Modules.sol"; +import {CallType} from "../utils/ExecLib.sol"; +import {SELECTOR_MANAGER_STORAGE_SLOT, CALLTYPE_DELEGATECALL, CALLTYPE_SINGLE} from "../types/Constants.sol"; +import {ModuleLib} from "../utils/ModuleLib.sol"; + +abstract contract SelectorManager { + error NotSupportedCallType(); + + struct SelectorConfig { + IHook hook; // 20 bytes for hook address + address target; // 20 bytes target will be fallback module, called with call + CallType callType; + } + + struct SelectorStorage { + mapping(bytes4 => SelectorConfig) selectorConfig; + } + + function selectorConfig(bytes4 selector) external view returns (SelectorConfig memory) { + return _selectorConfig(selector); + } + + function _selectorConfig(bytes4 selector) internal view returns (SelectorConfig storage config) { + config = _selectorStorage().selectorConfig[selector]; + } + + function _selectorStorage() internal pure returns (SelectorStorage storage ss) { + bytes32 slot = SELECTOR_MANAGER_STORAGE_SLOT; + assembly { + ss.slot := slot + } + } + + function _installSelector(bytes4 selector, address target, IHook hook, bytes calldata selectorData) internal { + if (address(hook) == address(0)) { + hook = IHook(address(1)); + } + SelectorConfig storage ss = _selectorConfig(selector); + // we are going to install only through call/delegatecall + CallType callType = CallType.wrap(bytes1(selectorData[0])); + if (callType == CALLTYPE_SINGLE) { + IModule(target).onInstall(selectorData[1:]); + } else if (callType != CALLTYPE_DELEGATECALL) { + // NOTE : we are not going to call onInstall for delegatecall, and we support only CALL & DELEGATECALL + revert NotSupportedCallType(); + } + ss.hook = hook; + ss.target = target; + ss.callType = callType; + } + + function _uninstallSelector(bytes4 selector, bytes calldata selectorDeinitData) internal returns (IHook hook) { + SelectorConfig storage ss = _selectorConfig(selector); + hook = ss.hook; + ss.hook = IHook(address(0)); + ModuleLib.uninstallModule(ss.target, selectorDeinitData); + ss.target = address(0); + ss.callType = CallType.wrap(bytes1(0xff)); + } +} diff --git a/src/core/ValidationManager.sol b/src/core/ValidationManager.sol new file mode 100644 index 00000000..a00e1f08 --- /dev/null +++ b/src/core/ValidationManager.sol @@ -0,0 +1,585 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IValidator, IModule, IExecutor, IHook, IPolicy, ISigner, IFallback} from "../interfaces/IERC7579Modules.sol"; +import {PackedUserOperation} from "../interfaces/PackedUserOperation.sol"; +import {SelectorManager} from "./SelectorManager.sol"; +import {HookManager} from "./HookManager.sol"; +import {ExecutorManager} from "./ExecutorManager.sol"; +import {ValidationData, ValidAfter, ValidUntil, parseValidationData} from "../interfaces/IAccount.sol"; +import {IAccountExecute} from "../interfaces/IAccountExecute.sol"; +import {EIP712} from "solady/utils/EIP712.sol"; +import {ModuleLib} from "../utils/ModuleLib.sol"; +import { + ValidationId, + PolicyData, + ValidationMode, + ValidationType, + ValidatorLib, + PassFlag +} from "../utils/ValidationTypeLib.sol"; + +import {CallType} from "../utils/ExecLib.sol"; +import {CALLTYPE_SINGLE} from "../types/Constants.sol"; + +import {PermissionId, getValidationResult} from "../types/Types.sol"; +import {_intersectValidationData} from "../utils/KernelValidationResult.sol"; + +import { + VALIDATION_MODE_DEFAULT, + VALIDATION_MODE_ENABLE, + VALIDATION_TYPE_ROOT, + VALIDATION_TYPE_VALIDATOR, + VALIDATION_TYPE_PERMISSION, + SKIP_USEROP, + SKIP_SIGNATURE, + VALIDATION_MANAGER_STORAGE_SLOT, + MAX_NONCE_INCREMENT_SIZE, + ENABLE_TYPE_HASH, + KERNEL_WRAPPER_TYPE_HASH +} from "../types/Constants.sol"; + +abstract contract ValidationManager is EIP712, SelectorManager, HookManager, ExecutorManager { + event RootValidatorUpdated(ValidationId rootValidator); + event ValidatorInstalled(IValidator validator, uint32 nonce); + event PermissionInstalled(PermissionId permission, uint32 nonce); + event NonceInvalidated(uint32 nonce); + event ValidatorUninstalled(IValidator validator); + event PermissionUninstalled(PermissionId permission); + event SelectorSet(bytes4 selector, ValidationId vId, bool allowed); + + error InvalidMode(); + error InvalidValidator(); + error InvalidSignature(); + error EnableNotApproved(); + error PolicySignatureOrderError(); + error SignerPrefixNotPresent(); + error PolicyDataTooLarge(); + error InvalidValidationType(); + error InvalidNonce(); + error PolicyFailed(uint256 i); + error PermissionNotAlllowedForUserOp(); + error PermissionNotAlllowedForSignature(); + error PermissionDataLengthMismatch(); + error NonceInvalidationError(); + error RootValidatorCannotBeRemoved(); + + // erc7579 plugins + struct ValidationConfig { + uint32 nonce; // 4 bytes + IHook hook; // 20 bytes address(1) : hook not required, address(0) : validator not installed + } + + struct PermissionConfig { + PassFlag permissionFlag; + ISigner signer; + PolicyData[] policyData; + } + + struct ValidationStorage { + ValidationId rootValidator; + uint32 currentNonce; + uint32 validNonceFrom; + mapping(ValidationId => ValidationConfig) validationConfig; + mapping(ValidationId => mapping(bytes4 => bool)) allowedSelectors; + // validation = validator | permission + // validator == 1 validator + // permission == 1 signer + N policies + mapping(PermissionId => PermissionConfig) permissionConfig; + } + + function rootValidator() external view returns (ValidationId) { + return _validationStorage().rootValidator; + } + + function currentNonce() external view returns (uint32) { + return _validationStorage().currentNonce; + } + + function validNonceFrom() external view returns (uint32) { + return _validationStorage().validNonceFrom; + } + + function isAllowedSelector(ValidationId vId, bytes4 selector) external view returns (bool) { + return _validationStorage().allowedSelectors[vId][selector]; + } + + function validationConfig(ValidationId vId) external view returns (ValidationConfig memory) { + return _validationStorage().validationConfig[vId]; + } + + function permissionConfig(PermissionId pId) external view returns (PermissionConfig memory) { + return (_validationStorage().permissionConfig[pId]); + } + + function _validationStorage() internal pure returns (ValidationStorage storage state) { + assembly { + state.slot := VALIDATION_MANAGER_STORAGE_SLOT + } + } + + function _setRootValidator(ValidationId _rootValidator) internal { + ValidationStorage storage vs = _validationStorage(); + vs.rootValidator = _rootValidator; + emit RootValidatorUpdated(_rootValidator); + } + + function _invalidateNonce(uint32 nonce) internal { + ValidationStorage storage state = _validationStorage(); + if (state.currentNonce + MAX_NONCE_INCREMENT_SIZE < nonce) { + revert NonceInvalidationError(); + } + if (nonce <= state.validNonceFrom) { + revert InvalidNonce(); + } + state.validNonceFrom = nonce; + if (state.currentNonce < state.validNonceFrom) { + state.currentNonce = state.validNonceFrom; + } + } + + // allow installing multiple validators with same nonce + function _installValidations( + ValidationId[] calldata validators, + ValidationConfig[] memory configs, + bytes[] calldata validatorData, + bytes[] calldata hookData + ) internal { + unchecked { + for (uint256 i = 0; i < validators.length; i++) { + _installValidation(validators[i], configs[i], validatorData[i], hookData[i]); + } + } + } + + function _setSelector(ValidationId vId, bytes4 selector, bool allowed) internal { + ValidationStorage storage state = _validationStorage(); + state.allowedSelectors[vId][selector] = allowed; + emit SelectorSet(selector, vId, allowed); + } + + // for uninstall, we support uninstall for validator mode by calling onUninstall + // but for permission mode, we do it naively by setting hook to address(0). + // it is more recommended to use a nonce revoke to make sure the validator has been revoked + // also, we are not calling hook.onInstall here + function _uninstallValidation(ValidationId vId, bytes calldata validatorData) internal returns (IHook hook) { + ValidationStorage storage state = _validationStorage(); + if (vId == state.rootValidator) { + revert RootValidatorCannotBeRemoved(); + } + hook = state.validationConfig[vId].hook; + state.validationConfig[vId].hook = IHook(address(0)); + ValidationType vType = ValidatorLib.getType(vId); + if (vType == VALIDATION_TYPE_VALIDATOR) { + IValidator validator = ValidatorLib.getValidator(vId); + ModuleLib.uninstallModule(address(validator), validatorData); + } else if (vType == VALIDATION_TYPE_PERMISSION) { + PermissionId permission = ValidatorLib.getPermissionId(vId); + _uninstallPermission(permission, validatorData); + } else { + revert InvalidValidationType(); + } + } + + function _uninstallPermission(PermissionId pId, bytes calldata data) internal { + bytes[] calldata permissionDisableData; + assembly { + permissionDisableData.offset := add(add(data.offset, 32), calldataload(data.offset)) + permissionDisableData.length := calldataload(sub(permissionDisableData.offset, 32)) + } + PermissionConfig storage config = _validationStorage().permissionConfig[pId]; + unchecked { + if (permissionDisableData.length != config.policyData.length + 1) { + revert PermissionDataLengthMismatch(); + } + PolicyData[] storage policyData = config.policyData; + for (uint256 i = 0; i < policyData.length; i++) { + (, IPolicy policy) = ValidatorLib.decodePolicyData(policyData[i]); + ModuleLib.uninstallModule( + address(policy), abi.encodePacked(bytes32(PermissionId.unwrap(pId)), permissionDisableData[i]) + ); + } + delete _validationStorage().permissionConfig[pId].policyData; + ModuleLib.uninstallModule( + address(config.signer), + abi.encodePacked( + bytes32(PermissionId.unwrap(pId)), permissionDisableData[permissionDisableData.length - 1] + ) + ); + } + config.signer = ISigner(address(0)); + config.permissionFlag = PassFlag.wrap(bytes2(0)); + } + + function _installValidation( + ValidationId vId, + ValidationConfig memory config, + bytes calldata validatorData, + bytes calldata hookData + ) internal { + ValidationStorage storage state = _validationStorage(); + if (state.validationConfig[vId].nonce == state.currentNonce) { + // only increase currentNonce when vId's currentNonce is same + unchecked { + state.currentNonce++; + } + } + if (config.hook == IHook(address(0))) { + config.hook = IHook(address(1)); + } + if (state.currentNonce != config.nonce || state.validationConfig[vId].nonce >= config.nonce) { + revert InvalidNonce(); + } + state.validationConfig[vId] = config; + if (config.hook != IHook(address(1))) { + _installHook(config.hook, hookData); + } + ValidationType vType = ValidatorLib.getType(vId); + if (vType == VALIDATION_TYPE_VALIDATOR) { + IValidator validator = ValidatorLib.getValidator(vId); + validator.onInstall(validatorData); + } else if (vType == VALIDATION_TYPE_PERMISSION) { + PermissionId permission = ValidatorLib.getPermissionId(vId); + _installPermission(permission, validatorData); + } else { + revert InvalidValidationType(); + } + } + + function _installPermission(PermissionId permission, bytes calldata data) internal { + ValidationStorage storage state = _validationStorage(); + bytes[] calldata permissionEnableData; + assembly { + permissionEnableData.offset := add(add(data.offset, 32), calldataload(data.offset)) + permissionEnableData.length := calldataload(sub(permissionEnableData.offset, 32)) + } + // allow up to 0xfe, 0xff is dedicated for signer + if (permissionEnableData.length > 254 || permissionEnableData.length == 0) { + revert PolicyDataTooLarge(); + } + + // clean up the policyData + if (state.permissionConfig[permission].policyData.length > 0) { + delete state.permissionConfig[permission].policyData; + } + unchecked { + for (uint256 i = 0; i < permissionEnableData.length - 1; i++) { + state.permissionConfig[permission].policyData.push( + PolicyData.wrap(bytes22(permissionEnableData[i][0:22])) + ); + IPolicy(address(bytes20(permissionEnableData[i][2:22]))).onInstall( + abi.encodePacked(bytes32(PermissionId.unwrap(permission)), permissionEnableData[i][22:]) + ); + } + // last permission data will be signer + ISigner signer = ISigner(address(bytes20(permissionEnableData[permissionEnableData.length - 1][2:22]))); + state.permissionConfig[permission].signer = signer; + state.permissionConfig[permission].permissionFlag = + PassFlag.wrap(bytes2(permissionEnableData[permissionEnableData.length - 1][0:2])); + signer.onInstall( + abi.encodePacked( + bytes32(PermissionId.unwrap(permission)), permissionEnableData[permissionEnableData.length - 1][22:] + ) + ); + } + } + + function _doValidation(ValidationMode vMode, ValidationId vId, PackedUserOperation calldata op, bytes32 userOpHash) + internal + returns (ValidationData validationData) + { + ValidationStorage storage state = _validationStorage(); + PackedUserOperation memory userOp = op; + bytes calldata userOpSig = op.signature; + unchecked { + if (vMode == VALIDATION_MODE_ENABLE) { + (validationData, userOpSig) = _enableMode(vId, op.signature); + userOp.signature = userOpSig; + } + + ValidationType vType = ValidatorLib.getType(vId); + if (vType == VALIDATION_TYPE_VALIDATOR) { + validationData = _intersectValidationData( + validationData, + ValidationData.wrap(ValidatorLib.getValidator(vId).validateUserOp(userOp, userOpHash)) + ); + } else { + PermissionId pId = ValidatorLib.getPermissionId(vId); + if (PassFlag.unwrap(state.permissionConfig[pId].permissionFlag) & PassFlag.unwrap(SKIP_USEROP) != 0) { + revert PermissionNotAlllowedForUserOp(); + } + (ValidationData policyCheck, ISigner signer) = _checkUserOpPolicy(pId, userOp, userOpSig); + validationData = _intersectValidationData(validationData, policyCheck); + validationData = _intersectValidationData( + validationData, + ValidationData.wrap( + signer.checkUserOpSignature(bytes32(PermissionId.unwrap(pId)), userOp, userOpHash) + ) + ); + } + } + } + + function _enableMode(ValidationId vId, bytes calldata packedData) + internal + returns (ValidationData validationData, bytes calldata userOpSig) + { + validationData = _enableValidationWithSig(vId, packedData); + + assembly { + userOpSig.offset := add(add(packedData.offset, 52), calldataload(add(packedData.offset, 148))) + userOpSig.length := calldataload(sub(userOpSig.offset, 32)) + } + + return (validationData, userOpSig); + } + + function _enableValidationWithSig(ValidationId vId, bytes calldata packedData) + internal + returns (ValidationData validationData) + { + bytes calldata enableSig; + ( + ValidationConfig memory config, + bytes calldata validatorData, + bytes calldata hookData, + bytes calldata selectorData, + bytes32 digest + ) = _enableDigest(vId, packedData); + assembly { + enableSig.offset := add(add(packedData.offset, 52), calldataload(add(packedData.offset, 116))) + enableSig.length := calldataload(sub(enableSig.offset, 32)) + } + validationData = _checkEnableSig(digest, enableSig); + _installValidation(vId, config, validatorData, hookData); + _configureSelector(selectorData); + _setSelector(vId, bytes4(selectorData[0:4]), true); + } + + function _checkEnableSig(bytes32 digest, bytes calldata enableSig) + internal + view + returns (ValidationData validationData) + { + ValidationStorage storage state = _validationStorage(); + ValidationType vType = ValidatorLib.getType(state.rootValidator); + bytes4 result; + if (vType == VALIDATION_TYPE_VALIDATOR) { + IValidator validator = ValidatorLib.getValidator(state.rootValidator); + result = validator.isValidSignatureWithSender(address(this), digest, enableSig); + } else if (vType == VALIDATION_TYPE_PERMISSION) { + PermissionId pId = ValidatorLib.getPermissionId(state.rootValidator); + ISigner signer; + (signer, validationData, enableSig) = _checkSignaturePolicy(pId, address(this), digest, enableSig); + result = signer.checkSignature(bytes32(PermissionId.unwrap(pId)), address(this), digest, enableSig); + } else { + revert InvalidValidationType(); + } + if (result != 0x1626ba7e) { + revert EnableNotApproved(); + } + } + + function _configureSelector(bytes calldata selectorData) internal { + bytes4 selector = bytes4(selectorData[0:4]); + if (selectorData.length >= 4) { + if (selectorData.length >= 44) { + // install selector with hook and target contract + bytes calldata selectorInitData; + bytes calldata hookInitData; + IModule selectorModule = IModule(address(bytes20(selectorData[4:24]))); + assembly { + selectorInitData.offset := + add(add(selectorData.offset, 76), calldataload(add(selectorData.offset, 44))) + selectorInitData.length := calldataload(sub(selectorInitData.offset, 32)) + hookInitData.offset := add(add(selectorData.offset, 76), calldataload(add(selectorData.offset, 76))) + hookInitData.length := calldataload(sub(hookInitData.offset, 32)) + } + if (CallType.wrap(bytes1(selectorInitData[0])) == CALLTYPE_SINGLE && selectorModule.isModuleType(2)) { + // also adds as executor when fallback module is also a executor + bytes calldata executorHookData; + assembly { + executorHookData.offset := + add(add(selectorData.offset, 76), calldataload(add(selectorData.offset, 108))) + executorHookData.length := calldataload(sub(executorHookData.offset, 32)) + } + IHook executorHook = IHook(address(bytes20(executorHookData[0:20]))); + // if module is also executor, install as executor + _installExecutorWithoutInit(IExecutor(address(selectorModule)), executorHook); + _installHook(executorHook, executorHookData[20:]); + } + _installSelector( + selector, address(selectorModule), IHook(address(bytes20(selectorData[24:44]))), selectorInitData + ); + _installHook(IHook(address(bytes20(selectorData[24:44]))), hookInitData); + } else { + // set without install + require(selectorData.length == 4, "Invalid selectorData"); + } + } + } + + function _enableDigest(ValidationId vId, bytes calldata packedData) + internal + view + returns ( + ValidationConfig memory config, + bytes calldata validatorData, + bytes calldata hookData, + bytes calldata selectorData, + bytes32 digest + ) + { + ValidationStorage storage state = _validationStorage(); + config.hook = IHook(address(bytes20(packedData[0:20]))); + config.nonce = state.currentNonce; + + assembly { + validatorData.offset := add(add(packedData.offset, 52), calldataload(add(packedData.offset, 20))) + validatorData.length := calldataload(sub(validatorData.offset, 32)) + hookData.offset := add(add(packedData.offset, 52), calldataload(add(packedData.offset, 52))) + hookData.length := calldataload(sub(hookData.offset, 32)) + selectorData.offset := add(add(packedData.offset, 52), calldataload(add(packedData.offset, 84))) + selectorData.length := calldataload(sub(selectorData.offset, 32)) + } + digest = _hashTypedData( + keccak256( + abi.encode( + ENABLE_TYPE_HASH, + ValidationId.unwrap(vId), + state.currentNonce, + config.hook, + keccak256(validatorData), + keccak256(hookData), + keccak256(selectorData) + ) + ) + ); + } + + struct PermissionSigMemory { + uint8 idx; + uint256 length; + ValidationData validationData; + PermissionId permission; + PassFlag flag; + IPolicy policy; + bytes permSig; + address caller; + bytes32 digest; + } + + function _checkUserOpPolicy(PermissionId pId, PackedUserOperation memory userOp, bytes calldata userOpSig) + internal + returns (ValidationData validationData, ISigner signer) + { + ValidationStorage storage state = _validationStorage(); + PolicyData[] storage policyData = state.permissionConfig[pId].policyData; + unchecked { + for (uint256 i = 0; i < policyData.length; i++) { + (PassFlag flag, IPolicy policy) = ValidatorLib.decodePolicyData(policyData[i]); + uint8 idx = uint8(bytes1(userOpSig[0])); + if (idx == i) { + // we are using uint64 length + uint256 length = uint64(bytes8(userOpSig[1:9])); + userOp.signature = userOpSig[9:9 + length]; + userOpSig = userOpSig[9 + length:]; + } else if (idx < i) { + // signature is not in order + revert PolicySignatureOrderError(); + } else { + userOp.signature = ""; + } + if (PassFlag.unwrap(flag) & PassFlag.unwrap(SKIP_USEROP) == 0) { + ValidationData vd = + ValidationData.wrap(policy.checkUserOpPolicy(bytes32(PermissionId.unwrap(pId)), userOp)); + address result = getValidationResult(vd); + if (result != address(0)) { + revert PolicyFailed(i); + } + validationData = _intersectValidationData(validationData, vd); + } + } + if (uint8(bytes1(userOpSig[0])) != 255) { + revert SignerPrefixNotPresent(); + } + userOp.signature = userOpSig[1:]; + return (validationData, state.permissionConfig[pId].signer); + } + } + + function _checkSignaturePolicy(PermissionId pId, address caller, bytes32 digest, bytes calldata sig) + internal + view + returns (ISigner, ValidationData, bytes calldata) + { + ValidationStorage storage state = _validationStorage(); + PermissionSigMemory memory mSig; + mSig.permission = pId; + mSig.caller = caller; + mSig.digest = digest; + _checkPermissionPolicy(mSig, state, sig); + if (uint8(bytes1(sig[0])) != 255) { + revert SignerPrefixNotPresent(); + } + sig = sig[1:]; + return (state.permissionConfig[mSig.permission].signer, mSig.validationData, sig); + } + + function _checkPermissionPolicy( + PermissionSigMemory memory mSig, + ValidationStorage storage state, + bytes calldata sig + ) internal view { + PolicyData[] storage policyData = state.permissionConfig[mSig.permission].policyData; + unchecked { + for (uint256 i = 0; i < policyData.length; i++) { + (mSig.flag, mSig.policy) = ValidatorLib.decodePolicyData(policyData[i]); + mSig.idx = uint8(bytes1(sig[0])); + if (mSig.idx == i) { + // we are using uint64 length + mSig.length = uint64(bytes8(sig[1:9])); + mSig.permSig = sig[9:9 + mSig.length]; + sig = sig[9 + mSig.length:]; + } else if (mSig.idx < i) { + // signature is not in order + revert PolicySignatureOrderError(); + } else { + mSig.permSig = sig[0:0]; + } + + if (PassFlag.unwrap(mSig.flag) & PassFlag.unwrap(SKIP_SIGNATURE) == 0) { + ValidationData vd = ValidationData.wrap( + mSig.policy.checkSignaturePolicy( + bytes32(PermissionId.unwrap(mSig.permission)), mSig.caller, mSig.digest, mSig.permSig + ) + ); + address result = getValidationResult(vd); + if (result != address(0)) { + revert PolicyFailed(i); + } + + mSig.validationData = _intersectValidationData(mSig.validationData, vd); + } + } + } + } + + function _checkPermissionSignature(PermissionId pId, address caller, bytes32 hash, bytes calldata sig) + internal + view + returns (bytes4) + { + (ISigner signer, ValidationData valdiationData, bytes calldata validatorSig) = + _checkSignaturePolicy(pId, caller, hash, sig); + (ValidAfter validAfter, ValidUntil validUntil,) = parseValidationData(ValidationData.unwrap(valdiationData)); + if (block.timestamp < ValidAfter.unwrap(validAfter) || block.timestamp > ValidUntil.unwrap(validUntil)) { + return 0xffffffff; + } + return signer.checkSignature(bytes32(PermissionId.unwrap(pId)), caller, _toWrappedHash(hash), validatorSig); + } + + function _toWrappedHash(bytes32 hash) internal view returns (bytes32) { + return _hashTypedData(keccak256(abi.encode(KERNEL_WRAPPER_TYPE_HASH, hash))); + } +} diff --git a/src/executor/KillSwitchAction.sol b/src/executor/KillSwitchAction.sol deleted file mode 100644 index 3273dec5..00000000 --- a/src/executor/KillSwitchAction.sol +++ /dev/null @@ -1,38 +0,0 @@ -pragma solidity ^0.8.18; - -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {KillSwitchValidator} from "../validator/KillSwitchValidator.sol"; -import {WalletKernelStorage} from "../common/Structs.sol"; - -contract KillSwitchAction { - KillSwitchValidator public immutable killSwitchValidator; - - constructor(KillSwitchValidator _killswitchValidator) { - killSwitchValidator = _killswitchValidator; - } - - // Function to get the wallet kernel storage - function getKernelStorage() internal pure returns (WalletKernelStorage storage ws) { - bytes32 storagePosition = bytes32(uint256(keccak256("zerodev.kernel")) - 1); - assembly { - ws.slot := storagePosition - } - } - - function toggleKillSwitch() external { - WalletKernelStorage storage ws = getKernelStorage(); - if (address(ws.defaultValidator) != address(killSwitchValidator)) { - // this means it is not activated - ws.defaultValidator = killSwitchValidator; - getKernelStorage().disabledMode = bytes4(0xffffffff); - getKernelStorage().lastDisabledTime = uint48(block.timestamp); - } else { - (, IKernelValidator prevValidator,, bytes4 prevDisableMode) = - killSwitchValidator.killSwitchValidatorStorage(address(this)); - // this means it is activated - ws.defaultValidator = prevValidator; - getKernelStorage().disabledMode = prevDisableMode; - killSwitchValidator.disable(bytes("")); - } - } -} diff --git a/src/executor/RecoveryAction.sol b/src/executor/RecoveryAction.sol deleted file mode 100644 index cc043117..00000000 --- a/src/executor/RecoveryAction.sol +++ /dev/null @@ -1,9 +0,0 @@ -pragma solidity ^0.8.0; - -import "src/interfaces/IKernelValidator.sol"; - -contract RecoveryAction { - function doRecovery(address _validator, bytes calldata _data) external { - IKernelValidator(_validator).enable(_data); - } -} diff --git a/src/executor/TokenActions.sol b/src/executor/TokenActions.sol deleted file mode 100644 index f4956355..00000000 --- a/src/executor/TokenActions.sol +++ /dev/null @@ -1,21 +0,0 @@ -pragma solidity ^0.8.0; - -import {ERC20} from "solady/tokens/ERC20.sol"; -import {ERC721} from "solady/tokens/ERC721.sol"; -import {ERC1155} from "solady/tokens/ERC1155.sol"; - -contract TokenActions { - function transferERC20Action(address _token, uint256 _amount, address _to) external { - ERC20(_token).transfer(_to, _amount); - } - - function transferERC721Action(address _token, uint256 _id, address _to) external { - ERC721(_token).transferFrom(address(this), _to, _id); - } - - function transferERC1155Action(address _token, uint256 _id, address _to, uint256 amount, bytes calldata data) - external - { - ERC1155(_token).safeTransferFrom(address(this), _to, _id, amount, data); - } -} diff --git a/src/factory/FactoryStaker.sol b/src/factory/FactoryStaker.sol new file mode 100644 index 00000000..9df7fac7 --- /dev/null +++ b/src/factory/FactoryStaker.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "./KernelFactory.sol"; +import "../interfaces/IEntryPoint.sol"; +import "solady/auth/Ownable.sol"; + +contract FactoryStaker is Ownable { + mapping(KernelFactory => bool) public approved; + + error NotApprovedFactory(); + + constructor(address _owner) { + _initializeOwner(_owner); + } + + function deployWithFactory(KernelFactory factory, bytes calldata createData, bytes32 salt) + external + payable + returns (address) + { + if (!approved[factory]) { + revert NotApprovedFactory(); + } + return factory.createAccount(createData, salt); + } + + function approveFactory(KernelFactory factory, bool approval) external payable onlyOwner { + approved[factory] = approval; + } + + function stake(IEntryPoint entryPoint, uint32 unstakeDelay) external payable onlyOwner { + entryPoint.addStake{value: msg.value}(unstakeDelay); + } + + function unlockStake(IEntryPoint entryPoint) external payable onlyOwner { + entryPoint.unlockStake(); + } + + function withdrawStake(IEntryPoint entryPoint, address payable recipient) external payable onlyOwner { + entryPoint.withdrawStake(recipient); + } +} diff --git a/src/factory/KernelFactory.sol b/src/factory/KernelFactory.sol index a88dd775..d0ee899c 100644 --- a/src/factory/KernelFactory.sol +++ b/src/factory/KernelFactory.sol @@ -1,61 +1,33 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {AdminLessERC1967Factory} from "./AdminLessERC1967Factory.sol"; -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import {Ownable} from "solady/auth/Ownable.sol"; - -contract KernelFactory is AdminLessERC1967Factory, Ownable { - /// Error throwned when an implementation isn't allowed - error ImplementationNotAllowed(); - - /// @dev The entry point contract. - IEntryPoint public entryPoint; - - /// @dev Check if an implementation is allowed. - mapping(address implementation => bool isAllowed) public isAllowedImplementation; - - constructor(address _owner, IEntryPoint _entryPoint) { - _initializeOwner(_owner); - entryPoint = _entryPoint; - } - function setImplementation(address _implementation, bool _allow) external onlyOwner { - isAllowedImplementation[_implementation] = _allow; - } +pragma solidity ^0.8.0; - function setEntryPoint(IEntryPoint _entryPoint) external onlyOwner { - entryPoint = _entryPoint; - } +import {LibClone} from "solady/utils/LibClone.sol"; - function createAccount(address _implementation, bytes calldata _data, uint256 _index) - external - payable - returns (address proxy) - { - // Ensure that the implementation contract is allowed - if (!isAllowedImplementation[_implementation]) revert ImplementationNotAllowed(); - // Create the salt for the account - bytes32 salt = bytes32(uint256(keccak256(abi.encodePacked(_data, _index))) & type(uint96).max); - // Deploy the proxy and return it's address - proxy = deployDeterministicAndCall(_implementation, salt, _data); - } +contract KernelFactory { + error InitializeError(); - function getAccountAddress(bytes calldata _data, uint256 _index) public view returns (address) { - bytes32 salt = bytes32(uint256(keccak256(abi.encodePacked(_data, _index))) & type(uint96).max); - return predictDeterministicAddress(salt); - } + address public immutable implementation; - // stake functions - function addStake(uint32 unstakeDelaySec) external payable onlyOwner { - entryPoint.addStake{value: msg.value}(unstakeDelaySec); + constructor(address _impl) { + implementation = _impl; } - function unlockStake() external onlyOwner { - entryPoint.unlockStake(); + function createAccount(bytes calldata data, bytes32 salt) public payable returns (address) { + bytes32 actualSalt = keccak256(abi.encodePacked(data, salt)); + (bool alreadyDeployed, address account) = + LibClone.createDeterministicERC1967(msg.value, implementation, actualSalt); + if (!alreadyDeployed) { + (bool success,) = account.call(data); + if (!success) { + revert InitializeError(); + } + } + return account; } - function withdrawStake(address payable withdrawAddress) external onlyOwner { - entryPoint.withdrawStake(withdrawAddress); + function getAddress(bytes calldata data, bytes32 salt) public view virtual returns (address) { + bytes32 actualSalt = keccak256(abi.encodePacked(data, salt)); + return LibClone.predictDeterministicAddressERC1967(implementation, actualSalt, address(this)); } } diff --git a/src/interfaces/IAccount.sol b/src/interfaces/IAccount.sol new file mode 100644 index 00000000..44662e6e --- /dev/null +++ b/src/interfaces/IAccount.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.5; + +import "./PackedUserOperation.sol"; +import "../types/Types.sol"; + +interface IAccount { + /** + * Validate user's signature and nonce + * the entryPoint will make the call to the recipient only if this validation call returns successfully. + * signature failure should be reported by returning SIG_VALIDATION_FAILED (1). + * This allows making a "simulation call" without a valid signature + * Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure. + * + * @dev Must validate caller is the entryPoint. + * Must validate the signature and nonce + * @param userOp - The operation that is about to be executed. + * @param userOpHash - Hash of the user's request data. can be used as the basis for signature. + * @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint. + * This is the minimum amount to transfer to the sender(entryPoint) to be + * able to make the call. The excess is left as a deposit in the entrypoint + * for future calls. Can be withdrawn anytime using "entryPoint.withdrawTo()". + * In case there is a paymaster in the request (or the current deposit is high + * enough), this value will be zero. + * @return validationData - Packaged ValidationData structure. use `_packValidationData` and + * `_unpackValidationData` to encode and decode. + * <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, + * otherwise, an address of an "authorizer" contract. + * <6-byte> validUntil - Last timestamp this operation is valid. 0 for "indefinite" + * <6-byte> validAfter - First timestamp this operation is valid + * If an account doesn't use time-range, it is enough to + * return SIG_VALIDATION_FAILED value (1) for signature failure. + * Note that the validation code cannot use block.timestamp (or block.number) directly. + */ + function validateUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 missingAccountFunds) + external + payable + returns (ValidationData validationData); +} diff --git a/src/interfaces/IAccountExecute.sol b/src/interfaces/IAccountExecute.sol new file mode 100644 index 00000000..40e3c48e --- /dev/null +++ b/src/interfaces/IAccountExecute.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.5; + +import "./PackedUserOperation.sol"; + +interface IAccountExecute { + /** + * Account may implement this execute method. + * passing this methodSig at the beginning of callData will cause the entryPoint to pass the full UserOp (and hash) + * to the account. + * The account should skip the methodSig, and use the callData (and optionally, other UserOp fields) + * + * @param userOp - The operation that was just validated. + * @param userOpHash - Hash of the user's request data. + */ + function executeUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash) external payable; +} diff --git a/src/interfaces/IAggregator.sol b/src/interfaces/IAggregator.sol new file mode 100644 index 00000000..66ca5f35 --- /dev/null +++ b/src/interfaces/IAggregator.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.5; + +import "./PackedUserOperation.sol"; + +/** + * Aggregated Signatures validator. + */ +interface IAggregator { + /** + * Validate aggregated signature. + * Revert if the aggregated signature does not match the given list of operations. + * @param userOps - Array of UserOperations to validate the signature for. + * @param signature - The aggregated signature. + */ + function validateSignatures(PackedUserOperation[] calldata userOps, bytes calldata signature) external view; + + /** + * Validate signature of a single userOp. + * This method should be called by bundler after EntryPointSimulation.simulateValidation() returns + * the aggregator this account uses. + * First it validates the signature over the userOp. Then it returns data to be used when creating the handleOps. + * @param userOp - The userOperation received from the user. + * @return sigForUserOp - The value to put into the signature field of the userOp when calling handleOps. + * (usually empty, unless account and aggregator support some kind of "multisig". + */ + function validateUserOpSignature(PackedUserOperation calldata userOp) + external + view + returns (bytes memory sigForUserOp); + + /** + * Aggregate multiple signatures into a single value. + * This method is called off-chain to calculate the signature to pass with handleOps() + * bundler MAY use optimized custom code perform this aggregation. + * @param userOps - Array of UserOperations to collect the signatures from. + * @return aggregatedSignature - The aggregated signature. + */ + function aggregateSignatures(PackedUserOperation[] calldata userOps) + external + view + returns (bytes memory aggregatedSignature); +} diff --git a/src/interfaces/IERC7579Account.sol b/src/interfaces/IERC7579Account.sol new file mode 100644 index 00000000..2b409949 --- /dev/null +++ b/src/interfaces/IERC7579Account.sol @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.21; + +import {CallType, ExecType, ExecMode} from "../utils/ExecLib.sol"; +import {PackedUserOperation} from "./PackedUserOperation.sol"; + +struct Execution { + address target; + uint256 value; + bytes callData; +} + +interface IERC7579Account { + event ModuleInstalled(uint256 moduleTypeId, address module); + event ModuleUninstalled(uint256 moduleTypeId, address module); + + /** + * @dev Executes a transaction on behalf of the account. + * This function is intended to be called by ERC-4337 EntryPoint.sol + * @dev Ensure adequate authorization control: i.e. onlyEntryPointOrSelf + * + * @dev MSA MUST implement this function signature. + * If a mode is requested that is not supported by the Account, it MUST revert + * @param mode The encoded execution mode of the transaction. See ModeLib.sol for details + * @param executionCalldata The encoded execution call data + */ + function execute(ExecMode mode, bytes calldata executionCalldata) external payable; + + /** + * @dev Executes a transaction on behalf of the account. + * This function is intended to be called by Executor Modules + * @dev Ensure adequate authorization control: i.e. onlyExecutorModule + * + * @dev MSA MUST implement this function signature. + * If a mode is requested that is not supported by the Account, it MUST revert + * @param mode The encoded execution mode of the transaction. See ModeLib.sol for details + * @param executionCalldata The encoded execution call data + */ + function executeFromExecutor(ExecMode mode, bytes calldata executionCalldata) + external + payable + returns (bytes[] memory returnData); + + /** + * @dev ERC-1271 isValidSignature + * This function is intended to be used to validate a smart account signature + * and may forward the call to a validator module + * + * @param hash The hash of the data that is signed + * @param data The data that is signed + */ + function isValidSignature(bytes32 hash, bytes calldata data) external view returns (bytes4); + + /** + * @dev installs a Module of a certain type on the smart account + * @dev Implement Authorization control of your chosing + * @param moduleTypeId the module type ID according the ERC-7579 spec + * @param module the module address + * @param initData arbitrary data that may be required on the module during `onInstall` + * initialization. + */ + function installModule(uint256 moduleTypeId, address module, bytes calldata initData) external payable; + + /** + * @dev uninstalls a Module of a certain type on the smart account + * @dev Implement Authorization control of your chosing + * @param moduleTypeId the module type ID according the ERC-7579 spec + * @param module the module address + * @param deInitData arbitrary data that may be required on the module during `onUninstall` + * de-initialization. + */ + function uninstallModule(uint256 moduleTypeId, address module, bytes calldata deInitData) external payable; + + /** + * Function to check if the account supports a certain CallType or ExecType (see ModeLib.sol) + * @param encodedMode the encoded mode + */ + function supportsExecutionMode(ExecMode encodedMode) external view returns (bool); + + /** + * Function to check if the account supports installation of a certain module type Id + * @param moduleTypeId the module type ID according the ERC-7579 spec + */ + function supportsModule(uint256 moduleTypeId) external view returns (bool); + + /** + * Function to check if the account has a certain module installed + * @param moduleTypeId the module type ID according the ERC-7579 spec + * Note: keep in mind that some contracts can be multiple module types at the same time. It + * thus may be necessary to query multiple module types + * @param module the module address + * @param additionalContext additional context data that the smart account may interpret to + * identifiy conditions under which the module is installed. + * usually this is not necessary, but for some special hooks that + * are stored in mappings, this param might be needed + */ + function isModuleInstalled(uint256 moduleTypeId, address module, bytes calldata additionalContext) + external + view + returns (bool); + + /** + * @dev Returns the account id of the smart account + * @return accountImplementationId the account id of the smart account + * the accountId should be structured like so: + * "vendorname.accountname.semver" + */ + function accountId() external view returns (string memory accountImplementationId); +} diff --git a/src/interfaces/IERC7579Modules.sol b/src/interfaces/IERC7579Modules.sol new file mode 100644 index 00000000..58c1fda2 --- /dev/null +++ b/src/interfaces/IERC7579Modules.sol @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.21; + +import {PackedUserOperation} from "./PackedUserOperation.sol"; + +interface IModule { + error AlreadyInitialized(address smartAccount); + error NotInitialized(address smartAccount); + + /** + * @dev This function is called by the smart account during installation of the module + * @param data arbitrary data that may be required on the module during `onInstall` + * initialization + * + * MUST revert on error (i.e. if module is already enabled) + */ + function onInstall(bytes calldata data) external payable; + + /** + * @dev This function is called by the smart account during uninstallation of the module + * @param data arbitrary data that may be required on the module during `onUninstall` + * de-initialization + * + * MUST revert on error + */ + function onUninstall(bytes calldata data) external payable; + + /** + * @dev Returns boolean value if module is a certain type + * @param moduleTypeId the module type ID according the ERC-7579 spec + * + * MUST return true if the module is of the given type and false otherwise + */ + function isModuleType(uint256 moduleTypeId) external view returns (bool); + + /** + * @dev Returns if the module was already initialized for a provided smartaccount + */ + function isInitialized(address smartAccount) external view returns (bool); +} + +interface IValidator is IModule { + error InvalidTargetAddress(address target); + + /** + * @dev Validates a transaction on behalf of the account. + * This function is intended to be called by the MSA during the ERC-4337 validaton phase + * Note: solely relying on bytes32 hash and signature is not suffcient for some + * validation implementations (i.e. SessionKeys often need access to userOp.calldata) + * @param userOp The user operation to be validated. The userOp MUST NOT contain any metadata. + * The MSA MUST clean up the userOp before sending it to the validator. + * @param userOpHash The hash of the user operation to be validated + * @return return value according to ERC-4337 + */ + function validateUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash) + external + payable + returns (uint256); + + /** + * Validator can be used for ERC-1271 validation + */ + function isValidSignatureWithSender(address sender, bytes32 hash, bytes calldata data) + external + view + returns (bytes4); +} + +interface IExecutor is IModule {} + +interface IHook is IModule { + /** + * @dev Called by the smart account before execution + * @param msgSender the address that called the smart account + * @param value the value that was sent to the smart account + * @param msgData the data that was sent to the smart account + * + * MAY return arbitrary data in the `hookData` return value + */ + function preCheck(address msgSender, uint256 value, bytes calldata msgData) + external + payable + returns (bytes memory hookData); + + /** + * @dev Called by the smart account after execution + * @param hookData the data that was returned by the `preCheck` function + * @param executionSuccess whether the execution(s) was (were) successful + * @param executionReturn the return/revert data of the execution(s) + * + * MAY validate the `hookData` to validate transaction context of the `preCheck` function + */ + function postCheck(bytes calldata hookData, bool executionSuccess, bytes calldata executionReturn) + external + payable; +} + +interface IFallback is IModule {} + +interface IPolicy is IModule { + function checkUserOpPolicy(bytes32 id, PackedUserOperation calldata userOp) external payable returns (uint256); + function checkSignaturePolicy(bytes32 id, address sender, bytes32 hash, bytes calldata sig) + external + view + returns (uint256); +} + +interface ISigner is IModule { + function checkUserOpSignature(bytes32 id, PackedUserOperation calldata userOp, bytes32 userOpHash) + external + payable + returns (uint256); + function checkSignature(bytes32 id, address sender, bytes32 hash, bytes calldata sig) + external + view + returns (bytes4); +} diff --git a/src/interfaces/IEntryPoint.sol b/src/interfaces/IEntryPoint.sol new file mode 100644 index 00000000..ccc5b965 --- /dev/null +++ b/src/interfaces/IEntryPoint.sol @@ -0,0 +1,193 @@ +// SPDX-License-Identifier: GPL-3.0 +/** + * Account-Abstraction (EIP-4337) singleton EntryPoint implementation. + * Only one instance required on each chain. + * + */ +pragma solidity >=0.7.5; + +/* solhint-disable avoid-low-level-calls */ +/* solhint-disable no-inline-assembly */ +/* solhint-disable reason-string */ + +import "./PackedUserOperation.sol"; +import "./IStakeManager.sol"; +import "./IAggregator.sol"; +import "./INonceManager.sol"; + +interface IEntryPoint is IStakeManager, INonceManager { + /** + * + * An event emitted after each successful request. + * @param userOpHash - Unique identifier for the request (hash its entire content, except signature). + * @param sender - The account that generates this request. + * @param paymaster - If non-null, the paymaster that pays for this request. + * @param nonce - The nonce value from the request. + * @param success - True if the sender transaction succeeded, false if reverted. + * @param actualGasCost - Actual amount paid (by account or paymaster) for this UserOperation. + * @param actualGasUsed - Total gas used by this UserOperation (including preVerification, creation, + * validation and execution). + */ + event UserOperationEvent( + bytes32 indexed userOpHash, + address indexed sender, + address indexed paymaster, + uint256 nonce, + bool success, + uint256 actualGasCost, + uint256 actualGasUsed + ); + + /** + * Account "sender" was deployed. + * @param userOpHash - The userOp that deployed this account. UserOperationEvent will follow. + * @param sender - The account that is deployed + * @param factory - The factory used to deploy this account (in the initCode) + * @param paymaster - The paymaster used by this UserOp + */ + event AccountDeployed(bytes32 indexed userOpHash, address indexed sender, address factory, address paymaster); + + /** + * An event emitted if the UserOperation "callData" reverted with non-zero length. + * @param userOpHash - The request unique identifier. + * @param sender - The sender of this request. + * @param nonce - The nonce used in the request. + * @param revertReason - The return bytes from the (reverted) call to "callData". + */ + event UserOperationRevertReason( + bytes32 indexed userOpHash, address indexed sender, uint256 nonce, bytes revertReason + ); + + /** + * An event emitted if the UserOperation Paymaster's "postOp" call reverted with non-zero length. + * @param userOpHash - The request unique identifier. + * @param sender - The sender of this request. + * @param nonce - The nonce used in the request. + * @param revertReason - The return bytes from the (reverted) call to "callData". + */ + event PostOpRevertReason(bytes32 indexed userOpHash, address indexed sender, uint256 nonce, bytes revertReason); + + /** + * An event emitted by handleOps(), before starting the execution loop. + * Any event emitted before this event, is part of the validation. + */ + event BeforeExecution(); + + /** + * Signature aggregator used by the following UserOperationEvents within this bundle. + * @param aggregator - The aggregator used for the following UserOperationEvents. + */ + event SignatureAggregatorChanged(address indexed aggregator); + + /** + * A custom revert error of handleOps, to identify the offending op. + * Should be caught in off-chain handleOps simulation and not happen on-chain. + * Useful for mitigating DoS attempts against batchers or for troubleshooting of factory/account/paymaster reverts. + * NOTE: If simulateValidation passes successfully, there should be no reason for handleOps to fail on it. + * @param opIndex - Index into the array of ops to the failed one (in simulateValidation, this is always zero). + * @param reason - Revert reason. The string starts with a unique code "AAmn", + * where "m" is "1" for factory, "2" for account and "3" for paymaster issues, + * so a failure can be attributed to the correct entity. + */ + error FailedOp(uint256 opIndex, string reason); + + /** + * A custom revert error of handleOps, to report a revert by account or paymaster. + * @param opIndex - Index into the array of ops to the failed one (in simulateValidation, this is always zero). + * @param reason - Revert reason. see FailedOp(uint256,string), above + * @param inner - data from inner cought revert reason + * @dev note that inner is truncated to 2048 bytes + */ + error FailedOpWithRevert(uint256 opIndex, string reason, bytes inner); + + error PostOpReverted(bytes returnData); + + /** + * Error case when a signature aggregator fails to verify the aggregated signature it had created. + * @param aggregator The aggregator that failed to verify the signature + */ + error SignatureValidationFailed(address aggregator); + + // Return value of getSenderAddress. + error SenderAddressResult(address sender); + + // UserOps handled, per aggregator. + struct UserOpsPerAggregator { + PackedUserOperation[] userOps; + // Aggregator address + IAggregator aggregator; + // Aggregated signature + bytes signature; + } + + /** + * Execute a batch of UserOperations. + * No signature aggregator is used. + * If any account requires an aggregator (that is, it returned an aggregator when + * performing simulateValidation), then handleAggregatedOps() must be used instead. + * @param ops - The operations to execute. + * @param beneficiary - The address to receive the fees. + */ + function handleOps(PackedUserOperation[] calldata ops, address payable beneficiary) external; + + /** + * Execute a batch of UserOperation with Aggregators + * @param opsPerAggregator - The operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts). + * @param beneficiary - The address to receive the fees. + */ + function handleAggregatedOps(UserOpsPerAggregator[] calldata opsPerAggregator, address payable beneficiary) + external; + + /** + * Generate a request Id - unique identifier for this request. + * The request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid. + * @param userOp - The user operation to generate the request ID for. + * @return hash the hash of this UserOperation + */ + function getUserOpHash(PackedUserOperation calldata userOp) external view returns (bytes32); + + /** + * Gas and return values during simulation. + * @param preOpGas - The gas used for validation (including preValidationGas) + * @param prefund - The required prefund for this operation + * @param accountValidationData - returned validationData from account. + * @param paymasterValidationData - return validationData from paymaster. + * @param paymasterContext - Returned by validatePaymasterUserOp (to be passed into postOp) + */ + struct ReturnInfo { + uint256 preOpGas; + uint256 prefund; + uint256 accountValidationData; + uint256 paymasterValidationData; + bytes paymasterContext; + } + + /** + * Returned aggregated signature info: + * The aggregator returned by the account, and its current stake. + */ + struct AggregatorStakeInfo { + address aggregator; + StakeInfo stakeInfo; + } + + /** + * Get counterfactual sender address. + * Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. + * This method always revert, and returns the address in SenderAddressResult error + * @param initCode - The constructor code to be passed into the UserOperation. + */ + function getSenderAddress(bytes memory initCode) external; + + error DelegateAndRevert(bool success, bytes ret); + + /** + * Helper method for dry-run testing. + * @dev calling this method, the EntryPoint will make a delegatecall to the given data, and report (via revert) the result. + * The method always revert, so is only useful off-chain for dry run calls, in cases where state-override to replace + * actual EntryPoint code is less convenient. + * @param target a target contract to make a delegatecall from entrypoint + * @param data data to pass to target in a delegatecall + */ + function delegateAndRevert(address target, bytes calldata data) external; +} diff --git a/src/interfaces/IEntryPointSimulations.sol b/src/interfaces/IEntryPointSimulations.sol new file mode 100644 index 00000000..282011e9 --- /dev/null +++ b/src/interfaces/IEntryPointSimulations.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.5; + +import "./PackedUserOperation.sol"; +import "./IEntryPoint.sol"; + +interface IEntryPointSimulations is IEntryPoint { + // Return value of simulateHandleOp. + struct ExecutionResult { + uint256 preOpGas; + uint256 paid; + uint256 accountValidationData; + uint256 paymasterValidationData; + bool targetSuccess; + bytes targetResult; + } + + /** + * Successful result from simulateValidation. + * If the account returns a signature aggregator the "aggregatorInfo" struct is filled in as well. + * @param returnInfo Gas and time-range returned values + * @param senderInfo Stake information about the sender + * @param factoryInfo Stake information about the factory (if any) + * @param paymasterInfo Stake information about the paymaster (if any) + * @param aggregatorInfo Signature aggregation info (if the account requires signature aggregator) + * Bundler MUST use it to verify the signature, or reject the UserOperation. + */ + struct ValidationResult { + ReturnInfo returnInfo; + StakeInfo senderInfo; + StakeInfo factoryInfo; + StakeInfo paymasterInfo; + AggregatorStakeInfo aggregatorInfo; + } + + /** + * Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp. + * @dev The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage + * outside the account's data. + * @param userOp - The user operation to validate. + * @return the validation result structure + */ + function simulateValidation(PackedUserOperation calldata userOp) external returns (ValidationResult memory); + + /** + * Simulate full execution of a UserOperation (including both validation and target execution) + * It performs full validation of the UserOperation, but ignores signature error. + * An optional target address is called after the userop succeeds, + * and its value is returned (before the entire call is reverted). + * Note that in order to collect the the success/failure of the target call, it must be executed + * with trace enabled to track the emitted events. + * @param op The UserOperation to simulate. + * @param target - If nonzero, a target address to call after userop simulation. If called, + * the targetSuccess and targetResult are set to the return from that call. + * @param targetCallData - CallData to pass to target address. + * @return the execution result structure + */ + function simulateHandleOp(PackedUserOperation calldata op, address target, bytes calldata targetCallData) + external + returns (ExecutionResult memory); +} diff --git a/src/interfaces/IKernel.sol b/src/interfaces/IKernel.sol deleted file mode 100644 index ec0b98d6..00000000 --- a/src/interfaces/IKernel.sol +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -import {IKernelValidator} from "./IKernelValidator.sol"; -import {ExecutionDetail, Call} from "../common/Structs.sol"; -import {ValidationData, ValidUntil, ValidAfter} from "../common/Types.sol"; -import {Operation} from "../common/Enums.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; - -interface IKernel { - // Event declarations - event Upgraded(address indexed newImplementation); - - event DefaultValidatorChanged(address indexed oldValidator, address indexed newValidator); - - event ExecutionChanged(bytes4 indexed selector, address indexed executor, address indexed validator); - - // Error declarations - error NotAuthorizedCaller(); - - error AlreadyInitialized(); - - error NotEntryPoint(); - - error DisabledMode(); - - error DeprecatedOperation(); - - function initialize(IKernelValidator _validator, bytes calldata _data) external payable; - - function upgradeTo(address _newImplementation) external payable; - - function getNonce() external view returns (uint256); - - function getNonce(uint192 key) external view returns (uint256); - - function getDefaultValidator() external view returns (IKernelValidator); - - function getDisabledMode() external view returns (bytes4 disabled); - - function getLastDisabledTime() external view returns (uint48); - - /// @notice Returns the execution details for a specific function signature - /// @dev This function can be used to get execution details for a specific function signature - /// @param _selector The function signature - /// @return ExecutionDetail struct containing the execution details - function getExecution(bytes4 _selector) external view returns (ExecutionDetail memory); - - /// @notice Changes the execution details for a specific function selector - /// @dev This function can only be called from the EntryPoint contract, the contract owner, or itself - /// @param _selector The selector of the function for which execution details are being set - /// @param _executor The executor to be associated with the function selector - /// @param _validator The validator contract that will be responsible for validating operations associated with this function selector - /// @param _validUntil The timestamp until which the execution details are valid - /// @param _validAfter The timestamp after which the execution details are valid - function setExecution( - bytes4 _selector, - address _executor, - IKernelValidator _validator, - ValidUntil _validUntil, - ValidAfter _validAfter, - bytes calldata _enableData - ) external payable; - - function setDefaultValidator(IKernelValidator _defaultValidator, bytes calldata _data) external payable; - - /// @notice Updates the disabled mode - /// @dev This function can be used to update the disabled mode - /// @param _disableFlag The new disabled mode - function disableMode(bytes4 _disableFlag) external payable; - - /// @notice Executes a function call to an external contract - /// @dev The type of operation (call or delegatecall) is specified as an argument. - /// @param to The address of the target contract - /// @param value The amount of Ether to send - /// @param data The call data to be sent - /// operation deprecated operation type, usere executeBatch for batch operation - function execute(address to, uint256 value, bytes memory data, Operation) external payable; - - function executeBatch(Call[] memory calls) external payable; - - function executeDelegateCall(address to, bytes memory data) external payable; - - /// @notice Validates a user operation based on its mode - /// @dev This function will validate user operation and be called by EntryPoint - /// @param userOp The user operation to be validated - /// @param userOpHash The hash of the user operation - /// @param missingAccountFunds The funds needed to be reimbursed - /// @return validationData The data used for validation - function validateUserOp(UserOperation memory userOp, bytes32 userOpHash, uint256 missingAccountFunds) - external - payable - returns (ValidationData validationData); -} diff --git a/src/interfaces/IKernelValidator.sol b/src/interfaces/IKernelValidator.sol deleted file mode 100644 index 4544c92b..00000000 --- a/src/interfaces/IKernelValidator.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import "../common/Types.sol"; - -interface IKernelValidator { - error NotImplemented(); - - function enable(bytes calldata _data) external payable; - - function disable(bytes calldata _data) external payable; - - function validateUserOp(UserOperation calldata userOp, bytes32 userOpHash, uint256 missingFunds) - external - payable - returns (ValidationData); - - function validateSignature(bytes32 hash, bytes calldata signature) external view returns (ValidationData); - - function validCaller(address caller, bytes calldata data) external view returns (bool); -} - -// 3 modes -// 1. default mode, use preset validator for the kernel -// 2. enable mode, enable a new validator for given action and use it for current userOp -// 3. sudo mode, use default plugin for current userOp diff --git a/src/interfaces/INonceManager.sol b/src/interfaces/INonceManager.sol new file mode 100644 index 00000000..2a5a2725 --- /dev/null +++ b/src/interfaces/INonceManager.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.5; + +interface INonceManager { + /** + * Return the next nonce for this sender. + * Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) + * But UserOp with different keys can come with arbitrary order. + * + * @param sender the account address + * @param key the high 192 bit of the nonce + * @return nonce a full nonce to pass for next UserOp with this sender. + */ + function getNonce(address sender, uint192 key) external view returns (uint256 nonce); + + /** + * Manually increment the nonce of the sender. + * This method is exposed just for completeness.. + * Account does NOT need to call it, neither during validation, nor elsewhere, + * as the EntryPoint will update the nonce regardless. + * Possible use-case is call it with various keys to "initialize" their nonces to one, so that future + * UserOperations will not pay extra for the first transaction with a given key. + */ + function incrementNonce(uint192 key) external; +} diff --git a/src/interfaces/IPaymaster.sol b/src/interfaces/IPaymaster.sol new file mode 100644 index 00000000..04a91685 --- /dev/null +++ b/src/interfaces/IPaymaster.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.5; + +import "./PackedUserOperation.sol"; + +/** + * The interface exposed by a paymaster contract, who agrees to pay the gas for user's operations. + * A paymaster must hold a stake to cover the required entrypoint stake and also the gas for the transaction. + */ +interface IPaymaster { + enum PostOpMode { + // User op succeeded. + opSucceeded, + // User op reverted. Still has to pay for gas. + opReverted, + // Only used internally in the EntryPoint (cleanup after postOp reverts). Never calling paymaster with this value + postOpReverted + } + + /** + * Payment validation: check if paymaster agrees to pay. + * Must verify sender is the entryPoint. + * Revert to reject this request. + * Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted). + * The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns. + * @param userOp - The user operation. + * @param userOpHash - Hash of the user's request data. + * @param maxCost - The maximum cost of this transaction (based on maximum gas and gas price from userOp). + * @return context - Value to send to a postOp. Zero length to signify postOp is not required. + * @return validationData - Signature and time-range of this operation, encoded the same as the return + * value of validateUserOperation. + * <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, + * other values are invalid for paymaster. + * <6-byte> validUntil - last timestamp this operation is valid. 0 for "indefinite" + * <6-byte> validAfter - first timestamp this operation is valid + * Note that the validation code cannot use block.timestamp (or block.number) directly. + */ + function validatePaymasterUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 maxCost) + external + returns (bytes memory context, uint256 validationData); + + /** + * Post-operation handler. + * Must verify sender is the entryPoint. + * @param mode - Enum with the following options: + * opSucceeded - User operation succeeded. + * opReverted - User op reverted. The paymaster still has to pay for gas. + * postOpReverted - never passed in a call to postOp(). + * @param context - The context value returned by validatePaymasterUserOp + * @param actualGasCost - Actual gas used so far (without this postOp call). + * @param actualUserOpFeePerGas - the gas price this UserOp pays. This value is based on the UserOp's maxFeePerGas + * and maxPriorityFee (and basefee) + * It is not the same as tx.gasprice, which is what the bundler pays. + */ + function postOp(PostOpMode mode, bytes calldata context, uint256 actualGasCost, uint256 actualUserOpFeePerGas) + external; +} diff --git a/src/interfaces/IStakeManager.sol b/src/interfaces/IStakeManager.sol new file mode 100644 index 00000000..01612d9c --- /dev/null +++ b/src/interfaces/IStakeManager.sol @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: GPL-3.0-only +pragma solidity >=0.7.5; + +/** + * Manage deposits and stakes. + * Deposit is just a balance used to pay for UserOperations (either by a paymaster or an account). + * Stake is value locked for at least "unstakeDelay" by the staked entity. + */ +interface IStakeManager { + event Deposited(address indexed account, uint256 totalDeposit); + + event Withdrawn(address indexed account, address withdrawAddress, uint256 amount); + + // Emitted when stake or unstake delay are modified. + event StakeLocked(address indexed account, uint256 totalStaked, uint256 unstakeDelaySec); + + // Emitted once a stake is scheduled for withdrawal. + event StakeUnlocked(address indexed account, uint256 withdrawTime); + + event StakeWithdrawn(address indexed account, address withdrawAddress, uint256 amount); + + /** + * @param deposit - The entity's deposit. + * @param staked - True if this entity is staked. + * @param stake - Actual amount of ether staked for this entity. + * @param unstakeDelaySec - Minimum delay to withdraw the stake. + * @param withdrawTime - First block timestamp where 'withdrawStake' will be callable, or zero if already locked. + * @dev Sizes were chosen so that deposit fits into one cell (used during handleOp) + * and the rest fit into a 2nd cell (used during stake/unstake) + * - 112 bit allows for 10^15 eth + * - 48 bit for full timestamp + * - 32 bit allows 150 years for unstake delay + */ + struct DepositInfo { + uint256 deposit; + bool staked; + uint112 stake; + uint32 unstakeDelaySec; + uint48 withdrawTime; + } + + // API struct used by getStakeInfo and simulateValidation. + struct StakeInfo { + uint256 stake; + uint256 unstakeDelaySec; + } + + /** + * Get deposit info. + * @param account - The account to query. + * @return info - Full deposit information of given account. + */ + function getDepositInfo(address account) external view returns (DepositInfo memory info); + + /** + * Get account balance. + * @param account - The account to query. + * @return - The deposit (for gas payment) of the account. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * Add to the deposit of the given account. + * @param account - The account to add to. + */ + function depositTo(address account) external payable; + + /** + * Add to the account's stake - amount and delay + * any pending unstake is first cancelled. + * @param _unstakeDelaySec - The new lock duration before the deposit can be withdrawn. + */ + function addStake(uint32 _unstakeDelaySec) external payable; + + /** + * Attempt to unlock the stake. + * The value can be withdrawn (using withdrawStake) after the unstake delay. + */ + function unlockStake() external; + + /** + * Withdraw from the (unlocked) stake. + * Must first call unlockStake and wait for the unstakeDelay to pass. + * @param withdrawAddress - The address to send withdrawn value. + */ + function withdrawStake(address payable withdrawAddress) external; + + /** + * Withdraw from the deposit. + * @param withdrawAddress - The address to send withdrawn value. + * @param withdrawAmount - The amount to withdraw. + */ + function withdrawTo(address payable withdrawAddress, uint256 withdrawAmount) external; +} diff --git a/src/interfaces/PackedUserOperation.sol b/src/interfaces/PackedUserOperation.sol new file mode 100644 index 00000000..7d455b27 --- /dev/null +++ b/src/interfaces/PackedUserOperation.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.5; + +/** + * User Operation struct + * @param sender - The sender account of this request. + * @param nonce - Unique value the sender uses to verify it is not a replay. + * @param initCode - If set, the account contract will be created by this constructor/ + * @param callData - The method call to execute on this account. + * @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call. + * @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid. + * Covers batch overhead. + * @param gasFees - packed gas fields maxFeePerGas and maxPriorityFeePerGas - Same as EIP-1559 gas parameter. + * @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specific extra data + * The paymaster will pay for the transaction instead of the sender. + * @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID. + */ +struct PackedUserOperation { + address sender; + uint256 nonce; + bytes initCode; + bytes callData; + bytes32 accountGasLimits; + uint256 preVerificationGas; + bytes32 gasFees; //maxPriorityFee and maxFeePerGas; + bytes paymasterAndData; + bytes signature; +} diff --git a/src/lite/KernelLiteECDSA.sol b/src/lite/KernelLiteECDSA.sol deleted file mode 100644 index ee42efe1..00000000 --- a/src/lite/KernelLiteECDSA.sol +++ /dev/null @@ -1,94 +0,0 @@ -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {Kernel} from "../Kernel.sol"; -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {ValidationData} from "../common/Types.sol"; -import {SIG_VALIDATION_FAILED, KERNEL_STORAGE_SLOT_1} from "../common/Constants.sol"; -import {ExecutionDetail} from "../common/Structs.sol"; -import {packValidationData} from "../common/Types.sol"; -import {_intersectValidationData} from "../utils/KernelHelper.sol"; - -struct KernelLiteECDSAStorage { - address owner; -} - -/// @title KernelLiteECDSA Contract -/// @dev A lite version of the Kernel contract which only uses ECDSA signatures for validation -contract KernelLiteECDSA is Kernel { - error InvalidAccess(); - error InvalidValidator(); - - address public immutable KERNEL_ECDSA_VALIDATOR; - - /// @dev The storage slot for this contract - bytes32 private constant KERNEL_LITE_ECDSA_STORAGE_SLOT = - 0xdea7fea882fba743201b2aeb1babf326b8944488db560784858525d123ee7e97; // keccak256(abi.encodePacked("zerodev.kernel.lite.ecdsa")) - 1 - - constructor(IEntryPoint _entryPoint, IKernelValidator _ecdsaValidator) Kernel(_entryPoint) { - KERNEL_ECDSA_VALIDATOR = address(_ecdsaValidator); - getKernelLiteECDSAStorage().owner = address(1); // set owner to non-zero address to prevent initialization - } - - /// @dev Transfer the ownership of this current kernel - function transferOwnership(address _newOwner) external payable onlyFromEntryPointOrSelf { - getKernelLiteECDSAStorage().owner = _newOwner; - } - - // FOR KERNEL USAGE - function getKernelLiteECDSAStorage() internal pure returns (KernelLiteECDSAStorage storage s) { - assembly { - s.slot := KERNEL_LITE_ECDSA_STORAGE_SLOT - } - } - - /// @dev Set the initial data for this kernel (setup ecdsa signer address) - function _setInitialData(IKernelValidator _validator, bytes calldata _data) internal override { - // Ensure the validator is valid - if (address(_validator) != KERNEL_ECDSA_VALIDATOR) revert InvalidValidator(); - // Ensure the account isn't already initialized - if (getKernelLiteECDSAStorage().owner != address(0)) revert AlreadyInitialized(); - - address owner = address(bytes20(_data[0:20])); - getKernelLiteECDSAStorage().owner = owner; - } - - /// @dev Validate a user operation - function _validateUserOp(UserOperation calldata _op, bytes32 _opHash, uint256) - internal - view - override - returns (ValidationData) - { - address signed = ECDSA.recover(ECDSA.toEthSignedMessageHash(_opHash), _op.signature[4:]); // note that first 4 bytes are for modes - if (signed != getKernelLiteECDSAStorage().owner) { - return SIG_VALIDATION_FAILED; - } - return ValidationData.wrap(0); - } - - /// @dev Validate a signature - function _validateSignature(address, /*_requestor*/ bytes32 _hash, bytes32, /*_rawHash*/ bytes calldata _signature) - internal - view - override - returns (ValidationData) - { - address signed = ECDSA.recover(ECDSA.toEthSignedMessageHash(_hash), _signature); - if (signed == getKernelLiteECDSAStorage().owner) { - return ValidationData.wrap(0); - } - return SIG_VALIDATION_FAILED; - } - - /// @dev Check if the caller is valid - function _validCaller(address _caller, bytes calldata) internal view override returns (bool) { - return _caller == getKernelLiteECDSAStorage().owner; - } - - function setDefaultValidator(IKernelValidator, bytes calldata) external payable override onlyFromEntryPointOrSelf { - revert("not implemented"); - } -} diff --git a/src/mock/MockAction.sol b/src/mock/MockAction.sol new file mode 100644 index 00000000..dd31e1dc --- /dev/null +++ b/src/mock/MockAction.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +contract MockAction { + event MockActionEvent(address here); + + function onInstall(bytes calldata data) external payable {} + + function onUninstall(bytes calldata data) external payable {} + + function isModuleType(uint256 moduleTypeId) external view returns (bool) {} + + function isInitialized(address smartAccount) external view returns (bool) {} + + function doSomething() external { + emit MockActionEvent(address(this)); + } +} diff --git a/src/mock/MockExecutor.sol b/src/mock/MockExecutor.sol new file mode 100644 index 00000000..7f286e37 --- /dev/null +++ b/src/mock/MockExecutor.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IExecutor} from "../interfaces/IERC7579Modules.sol"; +import {IERC7579Account, ExecMode} from "../interfaces/IERC7579Account.sol"; + +contract MockExecutor is IExecutor { + mapping(address => bytes) public data; + + function onInstall(bytes calldata _data) external payable override { + data[msg.sender] = _data; + } + + function onUninstall(bytes calldata) external payable override { + delete data[msg.sender]; + } + + function isModuleType(uint256 moduleTypeId) external pure override returns (bool) { + return moduleTypeId == 2; + } + + function isInitialized(address smartAccount) external view override returns (bool) { + return data[smartAccount].length > 0; + } + + function sudoDoExec(IERC7579Account account, ExecMode mode, bytes calldata executionCalldata) external payable { + account.executeFromExecutor(mode, executionCalldata); + } +} diff --git a/src/mock/MockFallback.sol b/src/mock/MockFallback.sol new file mode 100644 index 00000000..f8fc4231 --- /dev/null +++ b/src/mock/MockFallback.sol @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IERC7579Account} from "../interfaces/IERC7579Account.sol"; +import {IFallback} from "../interfaces/IERC7579Modules.sol"; +import {CallType, ExecType, ExecMode, ExecLib} from "../utils/ExecLib.sol"; +import {EXEC_MODE_DEFAULT} from "../types/Constants.sol"; + +contract Callee { + address public lastCaller; + + function calleeTest() external { + lastCaller = msg.sender; + } +} + +contract MockFallback is IFallback { + mapping(address => bytes) public data; + + uint256 public valueStored; + + bool isExecutor; + + Callee public callee; + + constructor() { + callee = new Callee(); + } + + function setExecutorMode(bool _isExecutor) external payable { + isExecutor = _isExecutor; + } + + function onInstall(bytes calldata _data) external payable override { + data[msg.sender] = _data; + } + + function onUninstall(bytes calldata) external payable override { + delete data[msg.sender]; + } + + function isModuleType(uint256 moduleTypeId) external view override returns (bool) { + return moduleTypeId == 3 || (isExecutor && moduleTypeId == 2); + } + + function isInitialized(address smartAccount) external view override returns (bool) { + return data[smartAccount].length > 0; + } + + function fallbackFunction(uint256 v) external pure returns (uint256) { + return v * v; + } + + function getData() external view returns (bytes memory) { + return data[msg.sender]; + } + + function getCaller() external pure returns (address) { + return address(bytes20(msg.data[msg.data.length - 20:])); + } + + function setData(uint256 value) external { + valueStored = value; + if (isExecutor) { + IERC7579Account(msg.sender).executeFromExecutor( + ExecLib.encodeSimpleSingle(), + ExecLib.encodeSingle(address(callee), 0, abi.encodeWithSelector(Callee.calleeTest.selector)) + ); + } + } +} diff --git a/src/mock/MockHook.sol b/src/mock/MockHook.sol new file mode 100644 index 00000000..7acaadac --- /dev/null +++ b/src/mock/MockHook.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IHook} from "../interfaces/IERC7579Modules.sol"; + +contract MockHook is IHook { + mapping(address => bytes) public data; + mapping(address => bytes) public preHookData; + mapping(address => bytes) public postHookData; + + function onInstall(bytes calldata _data) external payable override { + data[msg.sender] = _data; + } + + function onUninstall(bytes calldata) external payable override { + delete data[msg.sender]; + } + + function isModuleType(uint256 moduleTypeId) external pure override returns (bool) { + return moduleTypeId == 1; + } + + function isInitialized(address smartAccount) external view override returns (bool) { + return data[smartAccount].length > 0; + } + + function preCheck(address msgSender, uint256 value, bytes calldata msgData) + external + payable + override + returns (bytes memory hookData) + { + preHookData[msg.sender] = abi.encodePacked(msgSender, msgData); + return data[msg.sender]; + } + + function postCheck(bytes calldata hookData, bool success, bytes memory res) external payable override { + postHookData[msg.sender] = hookData; + } +} diff --git a/src/mock/MockPolicy.sol b/src/mock/MockPolicy.sol new file mode 100644 index 00000000..a4a9fdd8 --- /dev/null +++ b/src/mock/MockPolicy.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import {IPolicy} from "../interfaces/IERC7579Modules.sol"; +import {PackedUserOperation} from "../interfaces/PackedUserOperation.sol"; +import "forge-std/console.sol"; + +contract MockPolicy is IPolicy { + mapping(address => mapping(bytes32 => bool)) public pass; + mapping(address => bytes) public installData; + mapping(address => mapping(bytes32 => bytes)) public sig; + + function onInstall(bytes calldata data) external payable override { + installData[msg.sender] = data; + } + + function onUninstall(bytes calldata) external payable override {} + + function sudoSetValidSig(address _wallet, bytes32 _id, bytes calldata _sig) external payable { + sig[_wallet][_id] = _sig; + } + + function sudoSetPass(address _wallet, bytes32 _id, bool _pass) external payable { + pass[_wallet][_id] = _pass; + } + + function isModuleType(uint256 moduleTypeId) external pure override returns (bool) { + return moduleTypeId == 5; + } + + function isInitialized(address smartAccount) external view override returns (bool) { + return installData[smartAccount].length > 0; + } + + function checkUserOpPolicy(bytes32 id, PackedUserOperation calldata userOp) + external + payable + override + returns (uint256) + { + return keccak256(userOp.signature) == keccak256(sig[msg.sender][id]) ? 0 : 1; + } + + function checkSignaturePolicy(bytes32 id, address, bytes32, bytes calldata) + external + view + override + returns (uint256) + { + return pass[msg.sender][id] ? 0 : 1; + } +} diff --git a/src/mock/MockSigner.sol b/src/mock/MockSigner.sol new file mode 100644 index 00000000..f082a330 --- /dev/null +++ b/src/mock/MockSigner.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../interfaces/IERC7579Modules.sol"; + +contract MockSigner is ISigner { + mapping(address wallet => bytes) public data; + mapping(address => mapping(bytes32 => bytes)) public sig; + mapping(address => mapping(bytes32 => bool)) public pass; + + function sudoSetValidSig(address _wallet, bytes32 _id, bytes calldata _sig) external payable { + sig[_wallet][_id] = _sig; + } + + function sudoSetPass(address _wallet, bytes32 _id, bool _flag) external payable { + pass[_wallet][_id] = _flag; + } + + function onInstall(bytes calldata _data) external payable override { + data[msg.sender] = _data; + } + + function onUninstall(bytes calldata) external payable override {} + + function isModuleType(uint256 moduleTypeId) external pure override returns (bool) { + if (moduleTypeId == 7) { + return true; + } else { + return false; + } + } + + function isInitialized(address smartAccount) external view override returns (bool) { + return data[smartAccount].length > 0; + } + + function checkUserOpSignature(bytes32 id, PackedUserOperation calldata userOp, bytes32) + external + payable + override + returns (uint256) + { + return keccak256(userOp.signature) == keccak256(sig[msg.sender][id]) ? 0 : 1; + } + + function checkSignature(bytes32 id, address, bytes32, bytes calldata) external view override returns (bytes4) { + if (pass[msg.sender][id] == true) { + return 0x1626ba7e; + } else { + return 0xffffffff; + } + } +} diff --git a/src/mock/MockValidator.sol b/src/mock/MockValidator.sol new file mode 100644 index 00000000..7e221212 --- /dev/null +++ b/src/mock/MockValidator.sol @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "../interfaces/IERC7579Modules.sol"; + +contract MockValidator is IValidator, IHook { + mapping(address => bool) public initialized; + bool public success; + uint256 public count; + + mapping(address => bytes) public validatorData; + mapping(bytes32 => bool) public validSig; + + bool public isHook; + + function setHook(bool _isHook) external { + isHook = _isHook; + } + + function sudoSetSuccess(bool _success) external { + success = _success; + } + + function sudoSetValidSig(bytes calldata sig) external { + validSig[keccak256(sig)] = true; + } + + function onInstall(bytes calldata data) external payable { + initialized[msg.sender] = true; + validatorData[msg.sender] = data; + } + + function onUninstall(bytes calldata data) external payable { + initialized[msg.sender] = false; + validatorData[msg.sender] = data; + } + + function isModuleType(uint256 typeID) external pure returns (bool) { + return typeID == 1; + } + + /** + * @dev Returns if the module was already initialized for a provided smartaccount + */ + function isInitialized(address smartAccount) external view returns (bool) { + return initialized[smartAccount]; + } + + function validateUserOp(PackedUserOperation calldata, bytes32) external payable returns (uint256) { + count++; + + if (success) { + return 0; + } else { + return 1; + } + } + + function isValidSignatureWithSender(address, bytes32, bytes calldata sig) external view returns (bytes4) { + if (validSig[keccak256(sig)] == true) { + return 0x1626ba7e; + } else { + return 0xffffffff; + } + } + + function preCheck(address msgSender, uint256 value, bytes calldata msgData) + external + payable + returns (bytes memory hookData) + { + return hex""; + } + + function postCheck(bytes calldata hookData, bool executionSuccess, bytes calldata executionReturn) + external + payable + { + return; + } +} diff --git a/src/mock/TestCallee.sol b/src/mock/TestCallee.sol deleted file mode 100644 index d23830f2..00000000 --- a/src/mock/TestCallee.sol +++ /dev/null @@ -1,39 +0,0 @@ -pragma solidity ^0.8.0; - -contract TestCallee { - uint256 public result; - address public caller; - uint256 public sent; - bytes public message; - - receive() external payable {} - - fallback() external payable { - message = msg.data; - sent = msg.value; - caller = msg.sender; - } - - function test_ignore() external {} - - function addTester(uint256 a, uint256 b) external payable { - result = a + b + msg.value; - } - - function transferErc20Tester(address token, address to, uint256 amount) external { - (bool success, bytes memory data) = token.call(abi.encodeWithSignature("transfer(address,uint256)", to, amount)); - require(success, string(data)); - } - - function returnLong() external payable returns (string memory) { - return - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent nec nunc sed nisi sollicitudin suscipit at at nulla. Aenean porttitor tellus felis, dapibus lacinia elit ullamcorper id. Ut dapibus efficitur neque posuere varius. Aenean in sem ac dolor accumsan egestas ut sit amet arcu. Vestibulum nunc urna, imperdiet ut enim eu, venenatis placerat mi. Aliquam a nibh a augue sollicitudin rutrum. Donec eleifend semper elit eu facilisis."; - } - - function returnLongBytes() external payable returns (bytes memory) { - return - hex"0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; - } - - function notThis() external {} -} diff --git a/src/mock/TestCounter.sol b/src/mock/TestCounter.sol deleted file mode 100644 index 9288084a..00000000 --- a/src/mock/TestCounter.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -contract TestCounter { - uint256 public counter; - - function test_ignore() public {} - - function increment() public { - counter += 1; - } -} diff --git a/src/mock/TestERC1155.sol b/src/mock/TestERC1155.sol deleted file mode 100644 index 3646fe69..00000000 --- a/src/mock/TestERC1155.sol +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "solady/tokens/ERC1155.sol"; - -contract TestERC1155 is ERC1155 { - function test_ignore() public {} - - function uri(uint256) public pure override returns (string memory) { - return "https://example.com"; - } - - function mint(address to, uint256 id, uint256 amount, bytes memory data) public { - _mint(to, id, amount, data); - } - - function batchMint(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public { - _batchMint(to, ids, amounts, data); - } -} diff --git a/src/mock/TestERC20.sol b/src/mock/TestERC20.sol deleted file mode 100644 index 7390bd79..00000000 --- a/src/mock/TestERC20.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "solady/tokens/ERC20.sol"; - -contract TestERC20 is ERC20 { - constructor() ERC20() {} - - function test_ignore() public {} - - function name() public pure override returns (string memory) { - return "TestERC20"; - } - - function symbol() public pure override returns (string memory) { - return "TST"; - } - - function mint(address _to, uint256 _amount) external { - _mint(_to, _amount); - } -} diff --git a/src/mock/TestERC721.sol b/src/mock/TestERC721.sol deleted file mode 100644 index 703433f8..00000000 --- a/src/mock/TestERC721.sol +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "solady/tokens/ERC721.sol"; - -contract TestERC721 is ERC721 { - constructor() ERC721() {} - - function test_ignore() public {} - - function name() public pure override returns (string memory) { - return "TestERC721"; - } - - function symbol() public pure override returns (string memory) { - return "TEST"; - } - - function tokenURI(uint256) public pure override returns (string memory) { - return ""; - } - - function mint(address _to, uint256 _id) external { - _mint(_to, _id); - } - - function safeMint(address _to, uint256 _id) external { - _safeMint(_to, _id); - } -} diff --git a/src/mock/TestExecutor.sol b/src/mock/TestExecutor.sol deleted file mode 100644 index 72650740..00000000 --- a/src/mock/TestExecutor.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -contract TestExecutor { - event TestExecutorDoNothing(); - - function test_ignore() public {} - - function doNothing() external { - // do nothing - emit TestExecutorDoNothing(); - } -} diff --git a/src/mock/TestKernel.sol b/src/mock/TestKernel.sol deleted file mode 100644 index 48a04ad1..00000000 --- a/src/mock/TestKernel.sol +++ /dev/null @@ -1,16 +0,0 @@ -pragma solidity ^0.8.0; - -import "../Kernel.sol"; - -contract TestKernel is Kernel { - constructor(IEntryPoint _entryPoint) Kernel(_entryPoint) {} - - function test_ignore() public {} - - function sudoInitialize(IKernelValidator _defaultValidator, bytes calldata _data) external payable { - WalletKernelStorage storage ws = getKernelStorage(); - ws.defaultValidator = _defaultValidator; - emit DefaultValidatorChanged(address(0), address(_defaultValidator)); - _defaultValidator.enable(_data); - } -} diff --git a/src/mock/TestPaymaster.sol b/src/mock/TestPaymaster.sol deleted file mode 100644 index 672335d4..00000000 --- a/src/mock/TestPaymaster.sol +++ /dev/null @@ -1,20 +0,0 @@ -pragma solidity ^0.8.0; - -import "I4337/interfaces/IPaymaster.sol"; - -contract TestPaymaster is IPaymaster { - function test_ignore() external {} - - function validatePaymasterUserOp(UserOperation calldata, bytes32, uint256) - external - pure - override - returns (bytes memory context, uint256 validationData) - { - return ("", 0); - } - - function postOp(PostOpMode, bytes calldata, uint256) external pure { - revert(""); - } -} diff --git a/src/mock/TestValidator.sol b/src/mock/TestValidator.sol deleted file mode 100644 index dad5d27e..00000000 --- a/src/mock/TestValidator.sol +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "../interfaces/IKernelValidator.sol"; -import "../common/Types.sol"; -import "../utils/KernelHelper.sol"; -import "../common/Constants.sol"; - -contract TestValidator is IKernelValidator { - event TestValidateUserOp(bytes32 indexed opHash); - event TestEnable(bytes data); - event TestDisable(bytes data); - - mapping(address kernel => address) public caller; - - ValidationData public data; - - function test_ignore() public {} - - function sudoSetCaller(address _kernel, address _caller) external { - caller[_kernel] = _caller; - } - - function setData(bool success, uint48 validAfter, uint48 validUntil) external { - data = success - ? packValidationData(ValidAfter.wrap(validAfter), ValidUntil.wrap(validUntil)) - : SIG_VALIDATION_FAILED; - } - - function validateSignature(bytes32, bytes calldata) external view override returns (ValidationData) { - return data; - } - - function validateUserOp(UserOperation calldata, bytes32 userOpHash, uint256) - external - payable - override - returns (ValidationData) - { - emit TestValidateUserOp(userOpHash); - return ValidationData.wrap(0); - } - - function enable(bytes calldata _data) external payable override { - emit TestEnable(_data); - } - - function disable(bytes calldata _data) external payable override { - emit TestDisable(_data); - } - - function validCaller(address _caller, bytes calldata) external view override returns (bool) { - return _caller == caller[msg.sender]; - } -} diff --git a/src/sdk/ModuleStorageLib.sol b/src/sdk/ModuleStorageLib.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/ModuleStorageLib.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/ActionTestBase.sol b/src/sdk/TestBase/ActionTestBase.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/TestBase/ActionTestBase.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/ExecutorTestBase.sol b/src/sdk/TestBase/ExecutorTestBase.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/TestBase/ExecutorTestBase.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/FallbackTestBase.sol b/src/sdk/TestBase/FallbackTestBase.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/TestBase/FallbackTestBase.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/HookTestBase.sol b/src/sdk/TestBase/HookTestBase.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/TestBase/HookTestBase.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/KernelTestBase.sol b/src/sdk/TestBase/KernelTestBase.sol new file mode 100644 index 00000000..6c0d334d --- /dev/null +++ b/src/sdk/TestBase/KernelTestBase.sol @@ -0,0 +1,877 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "src/Kernel.sol"; +import "src/factory/KernelFactory.sol"; +import "src/factory/FactoryStaker.sol"; +import "forge-std/Test.sol"; +import "src/mock/MockValidator.sol"; +import "src/mock/MockPolicy.sol"; +import "src/mock/MockSigner.sol"; +import "src/mock/MockAction.sol"; +import "src/mock/MockHook.sol"; +import "src/mock/MockExecutor.sol"; +import "src/mock/MockFallback.sol"; +import "src/core/ValidationManager.sol"; +import "./erc4337Util.sol"; + +contract MockCallee { + uint256 public value; + + function setValue(uint256 _value) public { + value = _value; + } +} + +abstract contract KernelTestBase is Test { + address stakerOwner; + Kernel kernel; + KernelFactory factory; + FactoryStaker staker; + IEntryPoint entrypoint; + ValidationId rootValidation; + + struct RootValidationConfig { + IHook hook; + bytes validatorData; + bytes hookData; + } + + RootValidationConfig rootValidationConfig; + MockValidator mockValidator; + MockCallee callee; + MockHook mockHook; + MockFallback mockFallback; + MockExecutor mockExecutor; + + IValidator enabledValidator; + EnableValidatorConfig validationConfig; + + struct EnableValidatorConfig { + IHook hook; + bytes hookData; + bytes validatorData; + } + + PermissionId enabledPermission; + EnablePermissionConfig permissionConfig; + + struct EnablePermissionConfig { + IHook hook; + bytes hookData; + IPolicy[] policies; + bytes[] policyData; + ISigner signer; + bytes signerData; + } + + modifier whenInitialized() { + address deployed = factory.createAccount(initData(), bytes32(0)); + assertEq(deployed, address(kernel)); + assertEq(kernel.currentNonce(), 1); + assertEq(ValidationId.unwrap(kernel.rootValidator()), ValidationId.unwrap(rootValidation)); + _; + } + + modifier whenValidatorEnabled(bool useFallback, bool isExecutor) { + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_VALIDATOR, + useFallback, + isExecutor, + encodeExecute(address(callee), 0, abi.encodeWithSelector(callee.setValue.selector, 123)), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + _; + } + + modifier whenPermissionEnabled(bool useFallback, bool isExecutor) { + _; + } + + function needEnable(ValidationType vType) internal view returns (bool) { + if (vType == VALIDATION_TYPE_VALIDATOR) { + if ( + address(kernel.validationConfig(ValidatorLib.validatorToIdentifier(enabledValidator)).hook) + == address(0) + ) { + return true; + } + return false; + } else if (vType == VALIDATION_TYPE_PERMISSION) { + return address(kernel.validationConfig(ValidatorLib.permissionToIdentifier(enabledPermission)).hook) + == address(0); + } else if (vType == VALIDATION_TYPE_ROOT) { + return false; + } else { + revert("Invalid validation type"); + } + } + + function encodeNonce(ValidationType vType, bool enable) internal view returns (uint256 nonce) { + uint192 nonceKey = 0; + if (vType == VALIDATION_TYPE_ROOT) { + nonceKey = 0; + } else if (vType == VALIDATION_TYPE_VALIDATOR) { + ValidationMode mode = VALIDATION_MODE_DEFAULT; + if (enable) { + mode = VALIDATION_MODE_ENABLE; + } + nonceKey = ValidatorLib.encodeAsNonceKey( + ValidationMode.unwrap(mode), + ValidationType.unwrap(vType), + bytes20(address(enabledValidator)), + 0 // parallel key + ); + } else if (vType == VALIDATION_TYPE_PERMISSION) { + ValidationMode mode = VALIDATION_MODE_DEFAULT; + if (enable) { + mode = VALIDATION_MODE_ENABLE; + } + nonceKey = ValidatorLib.encodeAsNonceKey( + ValidationMode.unwrap(VALIDATION_MODE_ENABLE), + ValidationType.unwrap(vType), + bytes20(PermissionId.unwrap(enabledPermission)), // permission id + 0 + ); + } else { + revert("Invalid validation type"); + } + return entrypoint.getNonce(address(kernel), nonceKey); + } + + function getEnableDigest(ValidationType vType, bool overrideValidation, bytes memory selectorData) + internal + view + returns (bytes32) + { + uint32 nonce = kernel.currentNonce(); + if (overrideValidation) { + nonce = nonce + 1; + } + ValidationId vId; + IHook hook; + bytes memory validatorData; + bytes memory hookData; + if (vType == VALIDATION_TYPE_VALIDATOR) { + vId = ValidatorLib.validatorToIdentifier(enabledValidator); + hook = validationConfig.hook; + validatorData = validationConfig.validatorData; + hookData = validationConfig.hookData; + } else if (vType == VALIDATION_TYPE_PERMISSION) { + vId = ValidatorLib.permissionToIdentifier(enabledPermission); + hook = permissionConfig.hook; + validatorData = encodePermissionsEnableData(); + hookData = permissionConfig.hookData; + } else { + revert("Invalid validation type"); + } + + bytes32 hash = keccak256( + abi.encode( + keccak256( + "Enable(bytes21 validationId,uint32 nonce,address hook,bytes validatorData,bytes hookData,bytes selectorData)" + ), + ValidationId.unwrap(vId), + uint256(nonce), + hook, + keccak256(validatorData), + keccak256(abi.encodePacked(hex"ff", hookData)), + keccak256(selectorData) + ) + ); + + bytes32 digest = keccak256( + abi.encodePacked("\x19\x01", _buildDomainSeparator("Kernel", "0.3.0-beta", address(kernel)), hash) + ); + + return digest; + } + + function encodeSelectorData(bool isFallback, bool isExecutor) internal view returns (bytes memory) { + if (isFallback && isExecutor) { + return abi.encodePacked( + MockFallback.setData.selector, + address(mockFallback), + address(1), + abi.encode(abi.encodePacked(hex"00", "MockFallbackInit"), hex"", abi.encodePacked(address(0))) // TODO add executor hook test + ); + } else if (isFallback) { + return abi.encodePacked( + MockFallback.setData.selector, + address(mockFallback), + address(1), + abi.encode(abi.encodePacked(hex"00", "MockFallbackInit"), hex"") + ); + } else if (!isFallback && !isExecutor) { + return abi.encodePacked(Kernel.execute.selector); + } else { + revert("Invalid selector data"); + } + } + + function getValidationId(ValidationType vType) internal view returns (ValidationId) { + if (vType == VALIDATION_TYPE_VALIDATOR) { + return ValidatorLib.validatorToIdentifier(enabledValidator); + } else if (vType == VALIDATION_TYPE_PERMISSION) { + return ValidatorLib.permissionToIdentifier(enabledPermission); + } else { + revert("Invalid validation type"); + } + } + + function getEnableSignature( + ValidationType vType, + bytes32 digest, + bytes memory selectorData, + PackedUserOperation memory op, + bool successEnable, + bool successUserOp + ) internal returns (bytes memory) { + bytes memory enableSig = _rootSignDigest(digest, successEnable); + bytes memory userOpSig = _signUserOp(vType, op, successUserOp); + IHook hook; + bytes memory validatorData; + bytes memory hookData; + if (vType == VALIDATION_TYPE_VALIDATOR) { + hook = validationConfig.hook; + validatorData = validationConfig.validatorData; + hookData = validationConfig.hookData; + } else if (vType == VALIDATION_TYPE_PERMISSION) { + hook = permissionConfig.hook; + validatorData = encodePermissionsEnableData(); + hookData = permissionConfig.hookData; + } else { + revert("Invalid validation type"); + } + return encodeEnableSignature( + hook, validatorData, abi.encodePacked(hex"ff", hookData), selectorData, enableSig, userOpSig + ); + } + + function _prepareUserOp( + ValidationType vType, + bool isFallback, + bool isExecutor, + bytes memory callData, + bool successEnable, + bool successUserOp + ) internal returns (PackedUserOperation memory op) { + if (isFallback && isExecutor) { + mockFallback.setExecutorMode(true); + } + bool enable = needEnable(vType); + op = PackedUserOperation({ + sender: address(kernel), + nonce: encodeNonce(vType, enable), + initCode: address(kernel).code.length == 0 + ? abi.encodePacked( + address(staker), abi.encodeWithSelector(staker.deployWithFactory.selector, factory, initData(), bytes32(0)) + ) + : abi.encodePacked(hex""), + callData: callData, + accountGasLimits: bytes32(abi.encodePacked(uint128(1000000), uint128(1000000))), // TODO make this dynamic + preVerificationGas: 1000000, + gasFees: bytes32(abi.encodePacked(uint128(1), uint128(1))), + paymasterAndData: hex"", // TODO have paymaster test cases + signature: hex"" + }); + if (enable) { + bytes memory selectorData = encodeSelectorData(isFallback, isExecutor); + bytes32 digest = getEnableDigest(vType, false, selectorData); + op.signature = getEnableSignature(vType, digest, selectorData, op, successEnable, successUserOp); + } else { + op.signature = _signUserOp(vType, op, successUserOp); + } + } + + function setUp() public { + enabledPermission = PermissionId.wrap(bytes4(0xdeadbeef)); + entrypoint = IEntryPoint(EntryPointLib.deploy()); + Kernel impl = new Kernel(entrypoint); + factory = new KernelFactory(address(impl)); + callee = new MockCallee(); + mockHook = new MockHook(); + mockFallback = new MockFallback(); + mockExecutor = new MockExecutor(); + _setRootValidationConfig(); + _setEnableValidatorConfig(); + _setEnablePermissionConfig(); + kernel = Kernel(payable(factory.getAddress(initData(), bytes32(0)))); + stakerOwner = makeAddr("StakerOwner"); + staker = new FactoryStaker(stakerOwner); + vm.startPrank(stakerOwner); + staker.approveFactory(factory, true); + vm.stopPrank(); + } + + function testDeployWithFactory() external { + vm.deal(address(kernel), 1e18); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp(VALIDATION_TYPE_ROOT, false, false, hex"", true, true); + // _prepareRootUserOp(hex"", true); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + } + + function initData() internal view returns (bytes memory) { + return abi.encodeWithSelector( + Kernel.initialize.selector, + rootValidation, + rootValidationConfig.hook, + rootValidationConfig.validatorData, + rootValidationConfig.hookData + ); + } + + function encodeEnableSignature( + IHook hook, + bytes memory validatorData, + bytes memory hookData, + bytes memory selectorData, + bytes memory enableSig, + bytes memory userOpSig + ) internal pure returns (bytes memory) { + return abi.encodePacked( + abi.encodePacked(hook), abi.encode(validatorData, hookData, selectorData, enableSig, userOpSig) + ); + } + + // things to override on test + function _setRootValidationConfig() internal virtual { + mockValidator = new MockValidator(); + rootValidation = ValidatorLib.validatorToIdentifier(mockValidator); + } + + function _setEnableValidatorConfig() internal virtual { + enabledValidator = new MockValidator(); + } + + function _setEnablePermissionConfig() internal virtual { + IPolicy[] memory policies = new IPolicy[](2); + MockPolicy mockPolicy = new MockPolicy(); + MockPolicy mockPolicy2 = new MockPolicy(); + policies[0] = mockPolicy; + policies[1] = mockPolicy2; + bytes[] memory policyData = new bytes[](2); + policyData[0] = "policy1"; + policyData[1] = "policy2"; + MockSigner mockSigner = new MockSigner(); + + permissionConfig.policies = policies; + permissionConfig.signer = mockSigner; + permissionConfig.policyData = policyData; + permissionConfig.signerData = "signer"; + } + + // root validator cases + function _rootValidatorSuccessCheck() internal virtual { + assertEq(123, callee.value()); + } + + function _rootValidatorFailureCheck() internal virtual { + assertEq(0, callee.value()); + } + + function _rootSignDigest(bytes32 digest, bool success) internal virtual returns (bytes memory data) { + if (success) { + data = "enableSig"; + mockValidator.sudoSetValidSig(data); + } else { + data = "failEnableSig"; + } + } + + function _signUserOp(ValidationType vType, PackedUserOperation memory op, bool success) + internal + virtual + returns (bytes memory data) + { + if (vType == VALIDATION_TYPE_VALIDATOR) { + return _validatorSignUserOp(op, success); + } else if (vType == VALIDATION_TYPE_PERMISSION) { + return _permissionSignUserOp(op, success); + } else if (vType == VALIDATION_TYPE_ROOT) { + return _rootSignUserOp(op, success); + } + revert("Invalid validation type"); + } + + function _rootSignUserOp(PackedUserOperation memory op, bool success) internal virtual returns (bytes memory) { + mockValidator.sudoSetSuccess(success); + return success ? abi.encodePacked("success") : abi.encodePacked("failure"); + } + + function _validatorSignUserOp(PackedUserOperation memory, bool success) + internal + virtual + returns (bytes memory data) + { + MockValidator(address(enabledValidator)).sudoSetSuccess(success); + if (success) { + return "userOpSig"; + } else { + return "failUserOpSig"; + } + } + + function _validatorSignDigest(bytes32 digest, bool success) internal virtual returns (bytes memory data) { + if (success) { + data = "enableSig"; + MockValidator(address(enabledValidator)).sudoSetValidSig(data); + } else { + data = "failEnableSig"; + } + } + + function _permissionSignUserOp(PackedUserOperation memory op, bool success) + internal + virtual + returns (bytes memory data) + { + MockPolicy(address(permissionConfig.policies[0])).sudoSetValidSig( + address(kernel), bytes32(PermissionId.unwrap(enabledPermission)), "policy1" + ); + MockPolicy(address(permissionConfig.policies[1])).sudoSetValidSig( + address(kernel), bytes32(PermissionId.unwrap(enabledPermission)), "policy2" + ); + MockSigner(address(permissionConfig.signer)).sudoSetValidSig( + address(kernel), + bytes32(PermissionId.unwrap(enabledPermission)), + success ? abi.encodePacked("userOpSig") : abi.encodePacked("NO") + ); + bytes[] memory sigs = _getPolicyAndSignerSig(op, success); + for (uint8 i = 0; i < sigs.length - 1; i++) { + if (sigs[i].length > 0) { + data = abi.encodePacked(data, bytes1(i), bytes8(uint64(sigs[i].length)), sigs[i]); + } + } + data = abi.encodePacked(data, bytes1(0xff), sigs[sigs.length - 1]); + } + + function _permissionSignDigest(bytes32 digest, bool success) internal virtual returns (bytes memory data) { + MockPolicy(address(permissionConfig.policies[0])).sudoSetPass( + address(kernel), bytes32(PermissionId.unwrap(enabledPermission)), true + ); + MockPolicy(address(permissionConfig.policies[1])).sudoSetPass( + address(kernel), bytes32(PermissionId.unwrap(enabledPermission)), true + ); + MockSigner(address(permissionConfig.signer)).sudoSetPass( + address(kernel), bytes32(PermissionId.unwrap(enabledPermission)), success + ); + return "hello world"; + } + + function _getPolicyAndSignerSig(PackedUserOperation memory op, bool success) + internal + returns (bytes[] memory data) + { + data = new bytes[](3); + data[0] = "policy1"; + data[1] = "policy2"; + data[2] = "userOpSig"; + } + + // --- Root validator cases, no need to enable --- + function testRootValidateUser(bool success) external whenInitialized { + vm.deal(address(kernel), 1e18); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_ROOT, + false, + false, + encodeExecute(address(callee), 0, abi.encodeWithSelector(callee.setValue.selector, 123)), + true, + success + ); + if (!success) { + vm.expectRevert(abi.encodeWithSelector(IEntryPoint.FailedOp.selector, 0, "AA24 signature error")); + } + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + if (success) { + _rootValidatorSuccessCheck(); + } + } + + function _buildDomainSeparator(string memory name, string memory version, address verifyingContract) + internal + view + returns (bytes32) + { + bytes32 hashedName = keccak256(bytes(name)); + bytes32 hashedVersion = keccak256(bytes(version)); + bytes32 typeHash = + keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"); + + return keccak256(abi.encode(typeHash, hashedName, hashedVersion, block.chainid, address(verifyingContract))); + } + + function encodeExecute(address _to, uint256 _amount, bytes memory _data) internal view returns (bytes memory) { + return abi.encodeWithSelector( + kernel.execute.selector, ExecLib.encodeSimpleSingle(), ExecLib.encodeSingle(_to, _amount, _data) + ); + } + + function testInvalidateNonce(uint32 nonce) external whenInitialized { + uint32 kernelNonce = kernel.currentNonce(); + bytes memory errorMsg; + if (nonce < kernelNonce) { + errorMsg = abi.encodeWithSelector(ValidationManager.InvalidNonce.selector); + } else if (nonce > kernelNonce + MAX_NONCE_INCREMENT_SIZE) { + errorMsg = abi.encodeWithSelector(ValidationManager.NonceInvalidationError.selector); + } + if (errorMsg.length > 0) { + vm.expectRevert(errorMsg); + } + vm.prank(address(kernel)); + kernel.invalidateNonce(nonce); + if (errorMsg.length > 0) { + assertEq(kernel.currentNonce(), kernelNonce); + } else { + assertEq(kernel.currentNonce(), nonce); + assertEq(kernel.validNonceFrom(), nonce); + } + } + + function testValidateUserOpWithEnable( + ValidationType vType, + bool useFallback, + bool isExecutor, + bool enableSuccess, + bool userOpSuccess + ) external whenInitialized { + vm.assume(vType == VALIDATION_TYPE_VALIDATOR || vType == VALIDATION_TYPE_PERMISSION); + if (useFallback == false && isExecutor == true) { + isExecutor = false; + } + vm.deal(address(kernel), 1e18); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + vType, + useFallback, + isExecutor, + useFallback + ? abi.encodeWithSelector(MockFallback.setData.selector, 123456) + : encodeExecute(address(callee), 0, abi.encodeWithSelector(callee.setValue.selector, 123)), + enableSuccess, + userOpSuccess + ); + if (!enableSuccess) { + vm.expectRevert( + abi.encodeWithSelector( + IEntryPoint.FailedOpWithRevert.selector, + 0, + "AA23 reverted", + abi.encodePacked(ValidationManager.EnableNotApproved.selector) + ) + ); + } else if (!userOpSuccess) { + vm.expectRevert(abi.encodeWithSelector(IEntryPoint.FailedOp.selector, 0, "AA24 signature error")); + } + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + if (enableSuccess && userOpSuccess) { + ValidationManager.ValidationConfig memory config = kernel.validationConfig(getValidationId(vType)); + assertEq(config.nonce, 1); + assertEq(address(config.hook), address(1)); + assertEq(kernel.currentNonce(), 1); + if (vType == VALIDATION_TYPE_PERMISSION) { + ValidationManager.PermissionConfig memory pConfig = kernel.permissionConfig(enabledPermission); + pConfig.signer = permissionConfig.signer; + } + if (useFallback) { + assertEq(kernel.isAllowedSelector(getValidationId(vType), MockFallback.setData.selector), true); + assertEq(mockFallback.valueStored(), 123456); + Callee callee1 = mockFallback.callee(); + if (isExecutor) { + assertEq(callee1.lastCaller(), address(kernel)); + } else { + assertEq(callee1.lastCaller(), address(0)); + } + } else { + assertEq(kernel.isAllowedSelector(getValidationId(vType), Kernel.execute.selector), true); + assertEq(callee.value(), 123); + } + } + } + + function encodePermissionsEnableData() internal view returns (bytes memory) { + bytes[] memory permissions = new bytes[](permissionConfig.policies.length + 1); + for (uint256 i = 0; i < permissions.length - 1; i++) { + permissions[i] = abi.encodePacked( + PolicyData.unwrap(ValidatorLib.encodePolicyData(false, false, address(permissionConfig.policies[i]))), + permissionConfig.policyData[i] + ); + } + permissions[permissions.length - 1] = abi.encodePacked( + PolicyData.unwrap(ValidatorLib.encodePolicyData(false, false, address(permissionConfig.signer))), + permissionConfig.signerData + ); + return abi.encode(permissions); + } + + function _installAction(bool withHook) internal { + vm.deal(address(kernel), 1e18); + MockAction mockAction = new MockAction(); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_ROOT, + false, + false, + abi.encodeWithSelector( + kernel.installModule.selector, + 3, + address(mockAction), + abi.encodePacked( + MockAction.doSomething.selector, + withHook ? address(mockHook) : address(0), + withHook + ? abi.encode(hex"ff", abi.encodePacked(bytes1(0xff), "hookData")) + : abi.encode(hex"ff", hex"") + ) + ), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + } + + function testActionInstall(bool withHook) external whenInitialized { + _installAction(withHook); + SelectorManager.SelectorConfig memory config = kernel.selectorConfig(MockAction.doSomething.selector); + assertEq(address(config.hook), withHook ? address(mockHook) : address(1)); + vm.expectEmit(address(kernel)); + emit MockAction.MockActionEvent(address(kernel)); + MockAction(address(kernel)).doSomething(); + if (withHook) { + assertEq(mockHook.data(address(kernel)), abi.encodePacked("hookData")); + assertEq( + mockHook.preHookData(address(kernel)), abi.encodePacked(address(this), MockAction.doSomething.selector) + ); + assertEq(mockHook.postHookData(address(kernel)), abi.encodePacked("hookData")); + } + } + + function testActionUninstall(bool withHook) external whenInitialized { + _installAction(withHook); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_ROOT, + false, + false, + abi.encodeWithSelector( + kernel.uninstallModule.selector, + 3, + address(mockFallback), + abi.encodePacked(MockAction.doSomething.selector) + ), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + + SelectorManager.SelectorConfig memory config = kernel.selectorConfig(MockAction.doSomething.selector); + assertEq(address(config.hook), address(0)); + assertEq(address(config.target), address(0)); + } + + function _installFallback(bool withHook) internal { + vm.deal(address(kernel), 1e18); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_ROOT, + false, + false, + abi.encodeWithSelector( + kernel.installModule.selector, + 3, + address(mockFallback), + abi.encodePacked( + MockFallback.fallbackFunction.selector, + withHook ? address(mockHook) : address(0), + withHook + ? abi.encode(abi.encodePacked(hex"00", "fallbackData"), abi.encodePacked(bytes1(0xff), "hookData")) + : abi.encode(abi.encodePacked(hex"00", "fallbackData"), abi.encodePacked("")) + ) + ), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + } + + function testFallbackInstall(bool withHook) external whenInitialized { + _installFallback(withHook); + assertEq(mockFallback.data(address(kernel)), abi.encodePacked("fallbackData")); + + SelectorManager.SelectorConfig memory config = kernel.selectorConfig(MockFallback.fallbackFunction.selector); + assertEq(address(config.hook), withHook ? address(mockHook) : address(1)); + assertEq(address(config.target), address(mockFallback)); + + (bool success, bytes memory result) = + address(kernel).call(abi.encodeWithSelector(MockFallback.fallbackFunction.selector, uint256(10))); + assertTrue(success); + (uint256 res) = abi.decode(result, (uint256)); + assertEq(res, 100); + if (withHook) { + assertEq(mockHook.data(address(kernel)), abi.encodePacked("hookData")); + assertEq( + mockHook.preHookData(address(kernel)), + abi.encodePacked(address(this), MockFallback.fallbackFunction.selector, uint256(10)) + ); + assertEq(mockHook.postHookData(address(kernel)), abi.encodePacked("hookData")); + } + } + + function testFallbackUninstall(bool withHook) external whenInitialized { + _installFallback(withHook); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_ROOT, + false, + false, + abi.encodeWithSelector( + kernel.uninstallModule.selector, + 3, + address(mockFallback), + abi.encodePacked(MockFallback.fallbackFunction.selector) + ), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + SelectorManager.SelectorConfig memory config = kernel.selectorConfig(MockFallback.fallbackFunction.selector); + assertEq(address(config.hook), address(0)); + assertEq(address(config.target), address(0)); + } + + function _installExecutor(bool withHook) internal { + vm.deal(address(kernel), 1e18); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_ROOT, + false, + false, + abi.encodeWithSelector( + kernel.installModule.selector, + 2, + address(mockExecutor), + abi.encodePacked( + withHook ? address(mockHook) : address(0), + withHook + ? abi.encode(abi.encodePacked("executorData"), abi.encodePacked(bytes1(0xff), "hookData")) + : abi.encode(abi.encodePacked("executorData"), abi.encodePacked("")) + ) + ), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + } + + function testExecutorInstall(bool withHook) external whenInitialized { + _installExecutor(withHook); + assertEq(mockExecutor.data(address(kernel)), abi.encodePacked("executorData")); + ExecutorManager.ExecutorConfig memory config = kernel.executorConfig(mockExecutor); + assertEq(address(config.hook), withHook ? address(mockHook) : address(1)); + + ExecMode mode = ExecLib.encodeSimpleSingle(); + bytes memory data = + ExecLib.encodeSingle(address(callee), 0, abi.encodeWithSelector(MockCallee.setValue.selector, 123)); + mockExecutor.sudoDoExec(IERC7579Account(kernel), mode, data); + assertEq(callee.value(), 123); + if (withHook) { + assertEq(mockHook.data(address(kernel)), abi.encodePacked("hookData")); + assertEq(mockHook.data(address(kernel)), abi.encodePacked("hookData")); + } + } + + function testExecutorUninstall(bool withHook) external whenInitialized { + _installExecutor(withHook); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_ROOT, + false, + false, + abi.encodeWithSelector(kernel.uninstallModule.selector, 2, address(mockExecutor), hex""), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + ExecutorManager.ExecutorConfig memory config = kernel.executorConfig(mockExecutor); + assertEq(address(config.hook), address(0)); + vm.expectRevert(abi.encodeWithSelector(Kernel.InvalidExecutor.selector)); + vm.startPrank(address(mockExecutor)); + kernel.executeFromExecutor( + ExecLib.encodeSimpleSingle(), + ExecLib.encodeSingle(address(callee), 0, abi.encodeWithSelector(MockCallee.setValue.selector, 123)) + ); + vm.stopPrank(); + } + + function testSignatureRoot(bytes32 hash) external whenInitialized { + bytes32 wrappedHash = keccak256(abi.encode(keccak256("Kernel(bytes32 hash)"), hash)); + bytes32 digest = keccak256( + abi.encodePacked("\x19\x01", _buildDomainSeparator("Kernel", "0.3.0-beta", address(kernel)), wrappedHash) + ); + bytes memory sig = _rootSignDigest(digest, true); + sig = abi.encodePacked(hex"00", sig); + bytes4 res = kernel.isValidSignature(hash, sig); + assertEq(res, bytes4(0x1626ba7e)); + } + + function testSignatureValidator(bytes32 hash) external whenInitialized { + vm.deal(address(kernel), 1e18); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_VALIDATOR, + false, + false, + encodeExecute(address(callee), 0, abi.encodeWithSelector(callee.setValue.selector, 123)), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + ValidationManager.ValidationConfig memory config = + kernel.validationConfig(ValidatorLib.validatorToIdentifier(enabledValidator)); + assertEq(config.nonce, 1); + assertEq(address(config.hook), address(1)); + assertEq(kernel.currentNonce(), 1); + + bytes32 wrappedHash = keccak256(abi.encode(keccak256("Kernel(bytes32 hash)"), hash)); + bytes32 digest = keccak256( + abi.encodePacked("\x19\x01", _buildDomainSeparator("Kernel", "0.3.0-beta", address(kernel)), wrappedHash) + ); + bytes memory sig = _validatorSignDigest(digest, true); + sig = abi.encodePacked(hex"01", address(enabledValidator), sig); + bytes4 res = kernel.isValidSignature(hash, sig); + assertEq(res, bytes4(0x1626ba7e)); + } + + function testSignaturePermission(bytes32 hash) external whenInitialized { + vm.deal(address(kernel), 1e18); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareUserOp( + VALIDATION_TYPE_PERMISSION, + false, + false, + encodeExecute(address(callee), 0, abi.encodeWithSelector(callee.setValue.selector, 123)), + true, + true + ); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + assertEq(kernel.currentNonce(), 1); + assertEq( + MockSigner(address(permissionConfig.signer)).data(address(kernel)), + abi.encodePacked(bytes32(bytes4(0xdeadbeef)), "signer") + ); + bytes32 wrappedHash = keccak256(abi.encode(keccak256("Kernel(bytes32 hash)"), hash)); + bytes32 digest = keccak256( + abi.encodePacked("\x19\x01", _buildDomainSeparator("Kernel", "0.3.0-beta", address(kernel)), wrappedHash) + ); + bytes memory sig = _permissionSignDigest(digest, true); + sig = abi.encodePacked(hex"02", PermissionId.unwrap(enabledPermission), hex"ff", sig); + bytes4 res = kernel.isValidSignature(hash, sig); + assertEq(res, bytes4(0x1626ba7e)); + } +} diff --git a/src/sdk/TestBase/PolicyTestBase.sol b/src/sdk/TestBase/PolicyTestBase.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/TestBase/PolicyTestBase.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/SignerTestBase.sol b/src/sdk/TestBase/SignerTestBase.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/TestBase/SignerTestBase.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/ValidatorTestBase.sol b/src/sdk/TestBase/ValidatorTestBase.sol new file mode 100644 index 00000000..15a8c0d1 --- /dev/null +++ b/src/sdk/TestBase/ValidatorTestBase.sol @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; diff --git a/src/sdk/TestBase/erc4337Util.sol b/src/sdk/TestBase/erc4337Util.sol new file mode 100644 index 00000000..cb829f07 --- /dev/null +++ b/src/sdk/TestBase/erc4337Util.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +library EntryPointLib { + function deploy() internal returns (address) { + (bool success,) = DEPLOY_PROXY.call(ENTRYPOINT_0_7_BYTECODE); + require(success || ENTRYPOINT_0_7_ADDR.code.length > 0, "entrypoint not deployed"); + return ENTRYPOINT_0_7_ADDR; + } +} + +address constant ENTRYPOINT_0_7_ADDR = 0x0000000071727De22E5E9d8BAf0edAc6f37da032; +address constant DEPLOY_PROXY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; +bytes constant ENTRYPOINT_0_7_BYTECODE = + hex"90d8084deab30c2a37c45e8d47f49f2f7965183cb6990a98943ef94940681de360a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003f2b833903906000f080156200006057608052604051613ea39081620000888239608051818181610d22015261324b0152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612748565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae5780630396cb60146116765780630bd28e3b146115fa5780631b2e01b814611566578063205c2878146113d157806322cdde4c1461136b57806335567e1a146112b35780635287ce12146111a557806370a0823114611140578063765e827f14610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063dbed18e0146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61229f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612317565b906101b86129bd565b60009160005b82811061056f57506101d08493612588565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613ba7565b6001600255005b6102a261025582848a612796565b73ffffffffffffffffffffffffffffffffffffffff6102766020830161282a565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127d6565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61269d565b9261265a565b5191613597565b90612409565b99612416565b950191906102a7565b6020610309828789612796565b61031f61031682806127d6565b9390920161282a565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c61265a565b516103728b898b61269d565b856129f6565b9290613dd7565b9116840361050a576104a5576103958491613dd7565b9116610440576103b5576103aa600191612416565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612796565b9361058585806127d6565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa82840161282a565b1697600192838a1461076657896105da575b5050505060019293949550906105d191612409565b939291016101be565b8060406105e892019061284b565b918a3b1561019c57929391906040519485937f2dd8113300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8560009803016024860152612709565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121bd565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181121561019c57836107538793858394016128ec565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61229f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e8612450565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61229f565b612748565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122c2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a360000000000000000000000000000000000000000000000000000000084528560048501526024840191612709565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121ed565b8101906126dd565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61229f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122c2565b90816040519283928337810184815203915af4610e39612450565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123c6565b0390fd5b3461019c57610e9036612317565b610e9b9291926129bd565b610ea483612588565b60005b848110610f1c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610eec576102408585613ba7565b909193600190610f12610f0087898761269d565b610f0a888661265a565b519088613597565b0194019190610edb565b610f47610f40610f2e8385979561265a565b51610f3a84898761269d565b846129f6565b9190613dd7565b73ffffffffffffffffffffffffffffffffffffffff929183166110db5761107657610f7190613dd7565b911661101157610f8657600101929092610ea7565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61118c61229f565b1660005260006020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161229f565b6000608060405161120181612155565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612155565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61229f565b73ffffffffffffffffffffffffffffffffffffffff6113096122f0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761012090823603011261019c576113c9602091600401612480565b604051908152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761140861229f565b60243590336000526000602052604060002090815491828411611508576000808573ffffffffffffffffffffffffffffffffffffffff8295839561144c848a612443565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af16114a2612450565b50156114aa57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761159d61229f565b73ffffffffffffffffffffffffffffffffffffffff6115ba6122f0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c5733600052600160205260406000209060005260205260406000206116728154612416565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c5733600052600081526040600020928215611950576001840154908160781c1683106118f2576116f86dffffffffffffffffffffffffffff9182349160081c16612409565b93841561189457818511611836579065ffffffffffff61180592546040519061172082612155565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f60fc6b6e0000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f915074d80000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612268565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c0811261019c5761014060405191611b9e83612155565b1261019c5760405192611bb0846121a0565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e08201526101243561010082015261014435610120820152825261016435848301526101843560408301526101a43560608301526101c43560808301526101e43590811161019c57611c7c9036906004016122c2565b905a3033036120f7578351606081015195603f5a0260061c61271060a0840151890101116120ce5760009681519182611ff0575b5050505090611cca915a9003608085015101923691612268565b925a90600094845193611cdc85613ccc565b9173ffffffffffffffffffffffffffffffffffffffff60e0870151168015600014611ea957505073ffffffffffffffffffffffffffffffffffffffff855116935b5a9003019360a06060820151910151016080860151850390818111611e95575b50508302604085015192818410600014611dce5750506003811015611da157600203611d79576113c99293508093611d7481613d65565b613cf6565b5050507fdeadaa51000000000000000000000000000000000000000000000000000000008152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b81611dde92979396940390613c98565b506003841015611e6857507f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f60808683015192519473ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a46113c9565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6064919003600a0204909301928780611d3d565b8095918051611eba575b5050611d1d565b6003861015611fc1576002860315611eb35760a088015190823b1561019c57600091611f2491836040519586809581947f7c627b210000000000000000000000000000000000000000000000000000000083528d60048401526080602484015260848301906123c6565b8b8b0260448301528b60648301520393f19081611fad575b50611fa65787893d610800808211611f9e575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123c6565b905083611f4f565b8980611eb3565b611fb89199506121bd565b6000978a611f3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938c73ffffffffffffffffffffffffffffffffffffffff885116910192f115612023575b808080611cb0565b611cca929195503d6108008082116120c6575b5060405190888183010160405280825260008983013e805161205f575b5050600194909161201b565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20188870151918973ffffffffffffffffffffffffffffffffffffffff8551169401516120bc604051928392835260408d84015260408301906123c6565b0390a38680612053565b905088612036565b877fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761217157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157604052565b6060810190811067ffffffffffffffff82111761217157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122748261222e565b9161228260405193846121ed565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123b65750506000910152565b81810151838201526020016123a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612402815180928187528780880191016123a3565b0116010190565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561247b573d906124618261222e565b9161246f60405193846121ed565b82523d6000602084013e565b606090565b604061248e8183018361284b565b90818351918237206124a3606084018461284b565b90818451918237209260c06124bb60e083018361284b565b908186519182372091845195602087019473ffffffffffffffffffffffffffffffffffffffff833516865260208301358789015260608801526080870152608081013560a087015260a081013582870152013560e08501526101009081850152835261012083019167ffffffffffffffff918484108385111761217157838252845190206101408501908152306101608601524661018086015260608452936101a00191821183831017612171575251902090565b67ffffffffffffffff81116121715760051b60200190565b9061259282612570565b6040906125a260405191826121ed565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125d08295612570565b019160005b8381106125e25750505050565b60209082516125f081612155565b83516125fb816121a0565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125d5565b805182101561266e5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561266e5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff61278a3485613c98565b936040519485521692a2565b919081101561266e5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61012091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129626129476129ba9561299b93855260208601356020860152612937604087018761289c565b9091806040880152860191612709565b612954606086018661289c565b908583036060870152612709565b6080840135608084015260a084013560a084015260c084013560c084015261298d60e085018561289c565b9084830360e0860152612709565b916129ac610100918281019061289c565b929091818503910152612709565b90565b60028054146129cc5760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b926000905a93805194843573ffffffffffffffffffffffffffffffffffffffff811680910361019c5786526020850135602087015260808501356fffffffffffffffffffffffffffffffff90818116606089015260801c604088015260a086013560c088015260c086013590811661010088015260801c610120870152612a8060e086018661284b565b801561357b576034811061351d578060141161019c578060241161019c5760341161019c57602481013560801c60a0880152601481013560801c60808801523560601c60e08701525b612ad285612480565b60208301526040860151946effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117116134bf57604087015160608801510160808801510160a08801510160c0880151016101008801510296835173ffffffffffffffffffffffffffffffffffffffff81511690612b66604085018561284b565b806131e4575b505060e0015173ffffffffffffffffffffffffffffffffffffffff1690600082156131ac575b6020612bd7918b828a01516000868a604051978896879586937f19822f7c00000000000000000000000000000000000000000000000000000000855260048501613db5565b0393f160009181613178575b50612c8b573d8c610800808311612c83575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612bf5565b9a92939495969798999a91156130f2575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cee84612416565b9055160361308d575a8503116130285773ffffffffffffffffffffffffffffffffffffffff60e0606093015116612d42575b509060a09184959697986040608096015260608601520135905a900301910152565b969550505a9683519773ffffffffffffffffffffffffffffffffffffffff60e08a01511680600052600060205260406000208054848110612fc3576080612dcd9a9b9c600093878094039055015192602089015183604051809d819582947f52b7512c0000000000000000000000000000000000000000000000000000000084528c60048501613db5565b039286f1978860009160009a612f36575b50612e86573d8b610800808311612e7e575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612df0565b9991929394959697989998925a900311612eab57509096959094939291906080612d20565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d6974000000000000000000000000000000000000000000000000006084820152fd5b915098503d90816000823e612f4b82826121ed565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f868361222e565b93612f9460405195866121ed565b838552820160208483850101011161019c57602092612fba9184808701918501016123a3565b01519838612dde565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b600052600060205260406000208054808c11613113578b9003905538612c9c565b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116131a4575b81613194602093836121ed565b8101031261019c57519038612be3565b3d9150613187565b508060005260006020526040600020548a81116000146131d75750612bd7602060005b915050612b92565b6020612bd7918c036131cf565b833b61345a57604088510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161323260248201898b612709565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db75760009161343b575b5073ffffffffffffffffffffffffffffffffffffffff811680156133d6578503613371573b1561330c5760141161019c5773ffffffffffffffffffffffffffffffffffffffff9183887fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060e0958787602086015195510151168251913560601c82526020820152a391612b6c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848e604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848f604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613454915060203d602011610db057610da181836121ed565b3861327c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e087015260006080870152600060a0870152612ac9565b9092915a906060810151916040928351967fffffffff00000000000000000000000000000000000000000000000000000000886135d7606084018461284b565b600060038211613b9f575b7f8dd7712f0000000000000000000000000000000000000000000000000000000094168403613a445750505061379d6000926136b292602088015161363a8a5193849360208501528b602485015260648401906128ec565b90604483015203906136727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121ed565b61379189519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123c6565b613760604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152876123c6565b039081018352826121ed565b6020918183809351910182305af1600051988652156137bf575b505050505050565b909192939495965060003d8214613a3a575b7fdeaddead00000000000000000000000000000000000000000000000000000000810361385b57608487878051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa510000000000000000000000000000000000000000000000000000000091929395949650146000146138c55750506138a961389e6138b8935a90612443565b608085015190612409565b9083015183611d748295613d65565b905b3880808080806137b7565b909261395290828601518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479273ffffffffffffffffffffffffffffffffffffffff9580878551169401516139483d610800808211613a32575b508a519084818301018c5280825260008583013e8a805194859485528401528a8301906123c6565b0390a35a90612443565b916139636080860193845190612409565b926000905a94829488519761397789613ccc565b948260e08b0151168015600014613a1857505050875116955b5a9003019560a06060820151910151019051860390818111613a04575b5050840290850151928184106000146139de57505080611e68575090816139d89293611d7481613d65565b906138ba565b6139ee9082849397950390613c98565b50611e68575090826139ff92613cf6565b6139d8565b6064919003600a02049094019338806139ad565b90919892509751613a2a575b50613990565b955038613a24565b905038613920565b8181803e516137d1565b613b97945082935090613a8c917e42dc53000000000000000000000000000000000000000000000000000000006020613b6b9501526102006024860152610224850191612709565b613b3a604484018860806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152846123c6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886121ed565b60008761379d565b5081356135e2565b73ffffffffffffffffffffffffffffffffffffffff168015613c3a57600080809381935af1613bd4612450565b5015613bdc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613cc66040600020918254612409565b80915590565b610120610100820151910151808214613cf257480180821015613ced575090565b905090565b5090565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519473ffffffffffffffffffffffffffffffffffffffff946020868851169660e089015116970151916040519283526000602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208073ffffffffffffffffffffffffffffffffffffffff855116940151604051908152a3565b613dcd604092959493956060835260608301906128ec565b9460208201520152565b8015613e6457600060408051613dec816121d1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613e5c575b60d01c92825191613e37836121d1565b8583528460208401521691829101524211908115613e5457509091565b905042109091565b839150613e27565b5060009060009056fea2646970667358221220b094fd69f04977ae9458e5ba422d01cd2d20dbcfca0992ff37f19aa07deec25464736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea26469706673582212207adef8895ad3393b02fab10a111d85ea80ff35366aa43995f4ea20e67f29200664736f6c63430008170033"; diff --git a/src/sdk/moduleBase/PolicyBase.sol b/src/sdk/moduleBase/PolicyBase.sol new file mode 100644 index 00000000..d57e034f --- /dev/null +++ b/src/sdk/moduleBase/PolicyBase.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IPolicy} from "../../interfaces/IERC7579Modules.sol"; +import {PackedUserOperation} from "../../interfaces/PackedUserOperation.sol"; + +abstract contract PolicyBase is IPolicy { + function onInstall(bytes calldata data) external payable { + bytes32 id = bytes32(data[0:32]); + bytes calldata _data = data[32:]; + _policyOninstall(id, _data); + } + + function onUninstall(bytes calldata data) external payable { + bytes32 id = bytes32(data[0:32]); + bytes calldata _data = data[32:]; + _policyOnUninstall(id, _data); + } + + function isModuleType(uint256 id) external pure returns (bool) { + return id == 5; + } + + function isInitialized(address) external view virtual returns (bool); // TODO : not sure if this is the right way to do it + function checkUserOpPolicy(bytes32 id, PackedUserOperation calldata userOp) + external + payable + virtual + returns (uint256); + function checkSignaturePolicy(bytes32 id, address sender, bytes32 hash, bytes calldata sig) + external + view + virtual + returns (uint256); + + function _policyOninstall(bytes32 id, bytes calldata _data) internal virtual; + function _policyOnUninstall(bytes32 id, bytes calldata _data) internal virtual; +} diff --git a/src/sdk/moduleBase/SignerBase.sol b/src/sdk/moduleBase/SignerBase.sol new file mode 100644 index 00000000..026dad3a --- /dev/null +++ b/src/sdk/moduleBase/SignerBase.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {ISigner} from "../../interfaces/IERC7579Modules.sol"; +import {PackedUserOperation} from "../../interfaces/PackedUserOperation.sol"; + +abstract contract SignerBase is ISigner { + function onInstall(bytes calldata data) external payable { + bytes32 id = bytes32(data[0:32]); + bytes calldata _data = data[32:]; + _signerOninstall(id, _data); + } + + function onUninstall(bytes calldata data) external payable { + bytes32 id = bytes32(data[0:32]); + bytes calldata _data = data[32:]; + _signerOnUninstall(id, _data); + } + + function isModuleType(uint256 id) external pure returns (bool) { + return id == 6; + } + + function isInitialized(address) external view virtual returns (bool); // TODO : not sure if this is the right way to do it + function checkUserOpSignature(bytes32 id, PackedUserOperation calldata userOp, bytes32 userOpHash) + external + payable + virtual + returns (uint256); + function checkSignature(bytes32 id, address sender, bytes32 hash, bytes calldata sig) + external + view + virtual + returns (bytes4); + + function _signerOninstall(bytes32 id, bytes calldata _data) internal virtual; + function _signerOnUninstall(bytes32 id, bytes calldata _data) internal virtual; +} diff --git a/src/types/Constants.sol b/src/types/Constants.sol new file mode 100644 index 00000000..f96080e6 --- /dev/null +++ b/src/types/Constants.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import {CallType, ExecType, ExecModeSelector} from "./Types.sol"; +import {PassFlag, ValidationMode, ValidationType} from "./Types.sol"; +import {ValidationData} from "./Types.sol"; + +// --- ERC7579 calltypes --- +// Default CallType +CallType constant CALLTYPE_SINGLE = CallType.wrap(0x00); +// Batched CallType +CallType constant CALLTYPE_BATCH = CallType.wrap(0x01); +CallType constant CALLTYPE_STATIC = CallType.wrap(0xFE); +// @dev Implementing delegatecall is OPTIONAL! +// implement delegatecall with extreme care. +CallType constant CALLTYPE_DELEGATECALL = CallType.wrap(0xFF); + +// --- ERC7579 exectypes --- +// @dev default behavior is to revert on failure +// To allow very simple accounts to use mode encoding, the default behavior is to revert on failure +// Since this is value 0x00, no additional encoding is required for simple accounts +ExecType constant EXECTYPE_DEFAULT = ExecType.wrap(0x00); +// @dev account may elect to change execution behavior. For example "try exec" / "allow fail" +ExecType constant EXECTYPE_TRY = ExecType.wrap(0x01); + +// --- ERC7579 mode selector --- +ExecModeSelector constant EXEC_MODE_DEFAULT = ExecModeSelector.wrap(bytes4(0x00000000)); + +// --- Kernel permission skip flags --- +PassFlag constant SKIP_USEROP = PassFlag.wrap(0x0001); +PassFlag constant SKIP_SIGNATURE = PassFlag.wrap(0x0002); + +// --- Kernel validation modes --- +ValidationMode constant VALIDATION_MODE_DEFAULT = ValidationMode.wrap(0x00); +ValidationMode constant VALIDATION_MODE_ENABLE = ValidationMode.wrap(0x01); +ValidationMode constant VALIDATION_MODE_INSTALL = ValidationMode.wrap(0x02); + +// --- Kernel validation types --- +ValidationType constant VALIDATION_TYPE_ROOT = ValidationType.wrap(0x00); +ValidationType constant VALIDATION_TYPE_VALIDATOR = ValidationType.wrap(0x01); +ValidationType constant VALIDATION_TYPE_PERMISSION = ValidationType.wrap(0x02); + +// --- storage slots --- +// bytes32(uint256(keccak256('kernel.v3.selector')) - 1) +bytes32 constant SELECTOR_MANAGER_STORAGE_SLOT = 0x7c341349a4360fdd5d5bc07e69f325dc6aaea3eb018b3e0ea7e53cc0bb0d6f3b; +// bytes32(uint256(keccak256('kernel.v3.executor')) - 1) +bytes32 constant EXECUTOR_MANAGER_STORAGE_SLOT = 0x1bbee3173dbdc223633258c9f337a0fff8115f206d302bea0ed3eac003b68b86; +// bytes32(uint256(keccak256('kernel.v3.hook')) - 1) +bytes32 constant HOOK_MANAGER_STORAGE_SLOT = 0x4605d5f70bb605094b2e761eccdc27bed9a362d8612792676bf3fb9b12832ffc; +// bytes32(uint256(keccak256('kernel.v3.validation')) - 1) +bytes32 constant VALIDATION_MANAGER_STORAGE_SLOT = 0x7bcaa2ced2a71450ed5a9a1b4848e8e5206dbc3f06011e595f7f55428cc6f84f; +bytes32 constant ERC1967_IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + +// --- Kernel validation nonce incremental size limit --- +uint32 constant MAX_NONCE_INCREMENT_SIZE = 10; + +// -- EIP712 type hash --- +bytes32 constant ENABLE_TYPE_HASH = 0xb17ab1224aca0d4255ef8161acaf2ac121b8faa32a4b2258c912cc5f8308c505; +bytes32 constant KERNEL_WRAPPER_TYPE_HASH = 0x1547321c374afde8a591d972a084b071c594c275e36724931ff96c25f2999c83; + +// --- ERC constants --- +// ERC4337 constants +uint256 constant SIG_VALIDATION_FAILED_UINT = 1; +uint256 constant SIG_VALIDATION_SUCCESS_UINT = 0; +ValidationData constant SIG_VALIDATION_FAILED = ValidationData.wrap(SIG_VALIDATION_FAILED_UINT); + +// ERC-1271 constants +bytes4 constant ERC1271_MAGICVALUE = 0x1626ba7e; +bytes4 constant ERC1271_INVALID = 0xffffffff; + +uint256 constant MODULE_TYPE_VALIDATOR = 1; +uint256 constant MODULE_TYPE_EXECUTOR = 2; +uint256 constant MODULE_TYPE_FALLBACK = 3; +uint256 constant MODULE_TYPE_HOOK = 4; +uint256 constant MODULE_TYPE_POLICY = 5; +uint256 constant MODULE_TYPE_SIGNER = 6; diff --git a/src/types/Structs.sol b/src/types/Structs.sol new file mode 100644 index 00000000..263fcbd4 --- /dev/null +++ b/src/types/Structs.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.23; + +struct Execution { + address target; + uint256 value; + bytes callData; +} diff --git a/src/types/Types.sol b/src/types/Types.sol new file mode 100644 index 00000000..788faadf --- /dev/null +++ b/src/types/Types.sol @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.23; + +// Custom type for improved developer experience +type ExecMode is bytes32; + +type CallType is bytes1; + +type ExecType is bytes1; + +type ExecModeSelector is bytes4; + +type ExecModePayload is bytes22; + +using {eqModeSelector as ==} for ExecModeSelector global; +using {eqCallType as ==} for CallType global; +using {notEqCallType as !=} for CallType global; +using {eqExecType as ==} for ExecType global; + +function eqCallType(CallType a, CallType b) pure returns (bool) { + return CallType.unwrap(a) == CallType.unwrap(b); +} + +function notEqCallType(CallType a, CallType b) pure returns (bool) { + return CallType.unwrap(a) != CallType.unwrap(b); +} + +function eqExecType(ExecType a, ExecType b) pure returns (bool) { + return ExecType.unwrap(a) == ExecType.unwrap(b); +} + +function eqModeSelector(ExecModeSelector a, ExecModeSelector b) pure returns (bool) { + return ExecModeSelector.unwrap(a) == ExecModeSelector.unwrap(b); +} + +type ValidationMode is bytes1; + +type ValidationId is bytes21; + +type ValidationType is bytes1; + +type PermissionId is bytes4; + +type PolicyData is bytes22; // 2bytes for flag on skip, 20 bytes for validator address + +type PassFlag is bytes2; + +using {vModeEqual as ==} for ValidationMode global; +using {vTypeEqual as ==} for ValidationType global; +using {vIdentifierEqual as ==} for ValidationId global; +using {vModeNotEqual as !=} for ValidationMode global; +using {vTypeNotEqual as !=} for ValidationType global; +using {vIdentifierNotEqual as !=} for ValidationId global; + +// nonce = uint192(key) + nonce +// key = mode + (vtype + validationDataWithoutType) + 2bytes parallelNonceKey +// key = 0x00 + 0x00 + 0x000 .. 00 + 0x0000 +// key = 0x00 + 0x01 + 0x1234...ff + 0x0000 +// key = 0x00 + 0x02 + ( ) + 0x000 + +function vModeEqual(ValidationMode a, ValidationMode b) pure returns (bool) { + return ValidationMode.unwrap(a) == ValidationMode.unwrap(b); +} + +function vModeNotEqual(ValidationMode a, ValidationMode b) pure returns (bool) { + return ValidationMode.unwrap(a) != ValidationMode.unwrap(b); +} + +function vTypeEqual(ValidationType a, ValidationType b) pure returns (bool) { + return ValidationType.unwrap(a) == ValidationType.unwrap(b); +} + +function vTypeNotEqual(ValidationType a, ValidationType b) pure returns (bool) { + return ValidationType.unwrap(a) != ValidationType.unwrap(b); +} + +function vIdentifierEqual(ValidationId a, ValidationId b) pure returns (bool) { + return ValidationId.unwrap(a) == ValidationId.unwrap(b); +} + +function vIdentifierNotEqual(ValidationId a, ValidationId b) pure returns (bool) { + return ValidationId.unwrap(a) != ValidationId.unwrap(b); +} + +type ValidationData is uint256; + +type ValidAfter is uint48; + +type ValidUntil is uint48; + +function getValidationResult(ValidationData validationData) pure returns (address result) { + assembly { + result := validationData + } +} + +function packValidationData(ValidAfter validAfter, ValidUntil validUntil) pure returns (uint256) { + return uint256(ValidAfter.unwrap(validAfter)) << 208 | uint256(ValidUntil.unwrap(validUntil)) << 160; +} + +function parseValidationData(uint256 validationData) + pure + returns (ValidAfter validAfter, ValidUntil validUntil, address result) +{ + assembly { + result := validationData + validUntil := and(shr(160, validationData), 0xffffffffffff) + switch iszero(validUntil) + case 1 { validUntil := 0xffffffffffff } + validAfter := shr(208, validationData) + } +} diff --git a/src/utils/ERC4337Utils.sol b/src/utils/ERC4337Utils.sol deleted file mode 100644 index bd607848..00000000 --- a/src/utils/ERC4337Utils.sol +++ /dev/null @@ -1,71 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import "solady/utils/ECDSA.sol"; -import {Vm} from "forge-std/Test.sol"; - -library ERC4337Utils { - function test() public {} - - function fillUserOp(IEntryPoint _entryPoint, address _sender, bytes memory _data) - internal - view - returns (UserOperation memory op) - { - op.sender = _sender; - op.nonce = _entryPoint.getNonce(_sender, 0); - op.callData = _data; - op.callGasLimit = 10000000; - op.verificationGasLimit = 10000000; - op.preVerificationGas = 50000; - op.maxFeePerGas = 50000; - op.maxPriorityFeePerGas = 1; - } - - function signUserOpHash(IEntryPoint _entryPoint, Vm _vm, uint256 _key, UserOperation memory _op) - internal - view - returns (bytes memory signature) - { - bytes32 hash = _entryPoint.getUserOpHash(_op); - (uint8 v, bytes32 r, bytes32 s) = _vm.sign(_key, ECDSA.toEthSignedMessageHash(hash)); - signature = abi.encodePacked(r, s, v); - } - - // computes the hash of a permit - function getStructHash( - bytes4 sig, - uint48 validUntil, - uint48 validAfter, - address validator, - address executor, - bytes memory enableData - ) internal pure returns (bytes32) { - return keccak256( - abi.encode( - keccak256("ValidatorApproved(bytes4 sig,uint256 validatorData,address executor,bytes enableData)"), - bytes4(sig), - uint256( - uint256(uint160(validator)) | (uint256(validAfter) << 160) | (uint256(validUntil) << (48 + 160)) - ), - executor, - keccak256(enableData) - ) - ); - } - - function _buildDomainSeparator(string memory name, string memory version, address verifyingContract) - internal - view - returns (bytes32) - { - bytes32 hashedName = keccak256(bytes(name)); - bytes32 hashedVersion = keccak256(bytes(version)); - bytes32 typeHash = - keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"); - - return keccak256(abi.encode(typeHash, hashedName, hashedVersion, block.chainid, address(verifyingContract))); - } -} diff --git a/src/utils/ExecLib.sol b/src/utils/ExecLib.sol new file mode 100644 index 00000000..631ca0b8 --- /dev/null +++ b/src/utils/ExecLib.sol @@ -0,0 +1,261 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.23; + +import {ExecMode, CallType, ExecType, ExecModeSelector, ExecModePayload} from "../types/Types.sol"; +import { + CALLTYPE_SINGLE, + CALLTYPE_BATCH, + EXECTYPE_DEFAULT, + EXEC_MODE_DEFAULT, + EXECTYPE_TRY, + CALLTYPE_DELEGATECALL +} from "../types/Constants.sol"; +import {Execution} from "../types/Structs.sol"; + +/** + * @dev ExecLib is a helper library for execution + */ +library ExecLib { + error ExecutionFailed(); + + event TryExecuteUnsuccessful(uint256 batchExecutionindex, bytes result); + + function execute(ExecMode execMode, bytes calldata executionCalldata) + internal + returns (bytes[] memory returnData) + { + (CallType callType, ExecType execType,,) = decode(execMode); + + // check if calltype is batch or single + if (callType == CALLTYPE_BATCH) { + // destructure executionCallData according to batched exec + Execution[] calldata executions = decodeBatch(executionCalldata); + // check if execType is revert or try + if (execType == EXECTYPE_DEFAULT) returnData = execute(executions); + else if (execType == EXECTYPE_TRY) returnData = tryExecute(executions); + else revert("Unsupported"); + } else if (callType == CALLTYPE_SINGLE) { + // destructure executionCallData according to single exec + (address target, uint256 value, bytes calldata callData) = decodeSingle(executionCalldata); + returnData = new bytes[](1); + bool success; + // check if execType is revert or try + if (execType == EXECTYPE_DEFAULT) { + returnData[0] = execute(target, value, callData); + } else if (execType == EXECTYPE_TRY) { + (success, returnData[0]) = tryExecute(target, value, callData); + if (!success) emit TryExecuteUnsuccessful(0, returnData[0]); + } else { + revert("Unsupported"); + } + } else if (callType == CALLTYPE_DELEGATECALL) { + address delegate = address(bytes20(executionCalldata[0:20])); + bytes calldata callData = executionCalldata[20:]; + executeDelegatecall(delegate, callData); + } else { + revert("Unsupported"); + } + } + + function execute(Execution[] calldata executions) internal returns (bytes[] memory result) { + uint256 length = executions.length; + result = new bytes[](length); + + for (uint256 i; i < length; i++) { + Execution calldata _exec = executions[i]; + result[i] = execute(_exec.target, _exec.value, _exec.callData); + } + } + + function tryExecute(Execution[] calldata executions) internal returns (bytes[] memory result) { + uint256 length = executions.length; + result = new bytes[](length); + + for (uint256 i; i < length; i++) { + Execution calldata _exec = executions[i]; + bool success; + (success, result[i]) = tryExecute(_exec.target, _exec.value, _exec.callData); + if (!success) emit TryExecuteUnsuccessful(i, result[i]); + } + } + + function execute(address target, uint256 value, bytes calldata callData) internal returns (bytes memory result) { + /// @solidity memory-safe-assembly + assembly { + result := mload(0x40) + calldatacopy(result, callData.offset, callData.length) + if iszero(call(gas(), target, value, result, callData.length, codesize(), 0x00)) { + // Bubble up the revert if the call reverts. + returndatacopy(result, 0x00, returndatasize()) + revert(result, returndatasize()) + } + mstore(result, returndatasize()) // Store the length. + let o := add(result, 0x20) + returndatacopy(o, 0x00, returndatasize()) // Copy the returndata. + mstore(0x40, add(o, returndatasize())) // Allocate the memory. + } + } + + function tryExecute(address target, uint256 value, bytes calldata callData) + internal + returns (bool success, bytes memory result) + { + /// @solidity memory-safe-assembly + assembly { + result := mload(0x40) + calldatacopy(result, callData.offset, callData.length) + success := call(gas(), target, value, result, callData.length, codesize(), 0x00) + mstore(result, returndatasize()) // Store the length. + let o := add(result, 0x20) + returndatacopy(o, 0x00, returndatasize()) // Copy the returndata. + mstore(0x40, add(o, returndatasize())) // Allocate the memory. + } + } + + /// @dev Execute a delegatecall with `delegate` on this account. + function executeDelegatecall(address delegate, bytes calldata callData) + internal + returns (bool success, bytes memory result) + { + /// @solidity memory-safe-assembly + assembly { + result := mload(0x40) + calldatacopy(result, callData.offset, callData.length) + // Forwards the `data` to `delegate` via delegatecall. + success := delegatecall(gas(), delegate, result, callData.length, codesize(), 0x00) + mstore(result, returndatasize()) // Store the length. + let o := add(result, 0x20) + returndatacopy(o, 0x00, returndatasize()) // Copy the returndata. + mstore(0x40, add(o, returndatasize())) // Allocate the memory. + } + } + + function decode(ExecMode mode) + internal + pure + returns (CallType _calltype, ExecType _execType, ExecModeSelector _modeSelector, ExecModePayload _modePayload) + { + assembly { + _calltype := mode + _execType := shl(8, mode) + _modeSelector := shl(48, mode) + _modePayload := shl(80, mode) + } + } + + function encode(CallType callType, ExecType execType, ExecModeSelector mode, ExecModePayload payload) + internal + pure + returns (ExecMode) + { + return ExecMode.wrap( + bytes32(abi.encodePacked(callType, execType, bytes4(0), ExecModeSelector.unwrap(mode), payload)) + ); + } + + function encodeSimpleBatch() internal pure returns (ExecMode mode) { + mode = encode(CALLTYPE_BATCH, EXECTYPE_DEFAULT, EXEC_MODE_DEFAULT, ExecModePayload.wrap(0x00)); + } + + function encodeSimpleSingle() internal pure returns (ExecMode mode) { + mode = encode(CALLTYPE_SINGLE, EXECTYPE_DEFAULT, EXEC_MODE_DEFAULT, ExecModePayload.wrap(0x00)); + } + + function getCallType(ExecMode mode) internal pure returns (CallType calltype) { + assembly { + calltype := mode + } + } + + function decodeBatch(bytes calldata callData) internal pure returns (Execution[] calldata executionBatch) { + /* + * Batch Call Calldata Layout + * Offset (in bytes) | Length (in bytes) | Contents + * 0x0 | 0x4 | bytes4 function selector + * 0x4 | - | + abi.encode(IERC7579Execution.Execution[]) + */ + // solhint-disable-next-line no-inline-assembly + assembly ("memory-safe") { + let dataPointer := add(callData.offset, calldataload(callData.offset)) + + // Extract the ERC7579 Executions + executionBatch.offset := add(dataPointer, 32) + executionBatch.length := calldataload(dataPointer) + } + } + + function encodeBatch(Execution[] memory executions) internal pure returns (bytes memory callData) { + callData = abi.encode(executions); + } + + function decodeSingle(bytes calldata executionCalldata) + internal + pure + returns (address target, uint256 value, bytes calldata callData) + { + target = address(bytes20(executionCalldata[0:20])); + value = uint256(bytes32(executionCalldata[20:52])); + callData = executionCalldata[52:]; + } + + function encodeSingle(address target, uint256 value, bytes memory callData) + internal + pure + returns (bytes memory userOpCalldata) + { + userOpCalldata = abi.encodePacked(target, value, callData); + } + + function doFallback2771Static(address fallbackHandler) internal view returns (bool success, bytes memory result) { + assembly { + function allocate(length) -> pos { + pos := mload(0x40) + mstore(0x40, add(pos, length)) + } + + let calldataPtr := allocate(calldatasize()) + calldatacopy(calldataPtr, 0, calldatasize()) + + // The msg.sender address is shifted to the left by 12 bytes to remove the padding + // Then the address without padding is stored right after the calldata + let senderPtr := allocate(20) + mstore(senderPtr, shl(96, caller())) + + // Add 20 bytes for the address appended add the end + success := staticcall(gas(), fallbackHandler, calldataPtr, add(calldatasize(), 20), 0, 0) + + result := mload(0x40) + mstore(result, returndatasize()) // Store the length. + let o := add(result, 0x20) + returndatacopy(o, 0x00, returndatasize()) // Copy the returndata. + mstore(0x40, add(o, returndatasize())) // Allocate the memory. + } + } + + function doFallback2771Call(address target) internal returns (bool success, bytes memory result) { + assembly { + function allocate(length) -> pos { + pos := mload(0x40) + mstore(0x40, add(pos, length)) + } + + let calldataPtr := allocate(calldatasize()) + calldatacopy(calldataPtr, 0, calldatasize()) + + // The msg.sender address is shifted to the left by 12 bytes to remove the padding + // Then the address without padding is stored right after the calldata + let senderPtr := allocate(20) + mstore(senderPtr, shl(96, caller())) + + // Add 20 bytes for the address appended add the end + success := call(gas(), target, 0, calldataPtr, add(calldatasize(), 20), 0, 0) + + result := mload(0x40) + mstore(result, returndatasize()) // Store the length. + let o := add(result, 0x20) + returndatacopy(o, 0x00, returndatasize()) // Copy the returndata. + mstore(0x40, add(o, returndatasize())) // Allocate the memory. + } + } +} diff --git a/src/utils/KernelTestBase.sol b/src/utils/KernelTestBase.sol deleted file mode 100644 index 04d62eb2..00000000 --- a/src/utils/KernelTestBase.sol +++ /dev/null @@ -1,503 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import {ENTRYPOINT_0_6_ADDRESS, ENTRYPOINT_0_6_BYTECODE} from "I4337/artifacts/EntryPoint_0_6.sol"; -import {CREATOR_0_6_BYTECODE, CREATOR_0_6_ADDRESS} from "I4337/artifacts/EntryPoint_0_6.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {Kernel} from "../Kernel.sol"; -import {Operation} from "../common/Enums.sol"; -import {Compatibility} from "../abstract/Compatibility.sol"; -import {IKernel} from "../interfaces/IKernel.sol"; -import {KernelFactory} from "../factory/KernelFactory.sol"; -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; - -import {Call, ExecutionDetail} from "../common/Structs.sol"; -import {ValidationData, ValidUntil, ValidAfter} from "../common/Types.sol"; -import {KERNEL_VERSION, KERNEL_NAME} from "../common/Constants.sol"; -import {ECDSA} from "solady/utils/ECDSA.sol"; - -import {ERC4337Utils} from "./ERC4337Utils.sol"; -import {Test} from "forge-std/Test.sol"; -import {console} from "forge-std/console.sol"; -import {TestValidator} from "../mock/TestValidator.sol"; -import {TestExecutor} from "../mock/TestExecutor.sol"; -import {TestERC721} from "../mock/TestERC721.sol"; -import {TestERC1155} from "../mock/TestERC1155.sol"; -import {TestCallee} from "../mock/TestCallee.sol"; - -using ERC4337Utils for IEntryPoint; - -abstract contract KernelTestBase is Test { - // to support 0.8.19 - // also, weird error came up when i did Compatibility.Received - event Received(address sender, uint256 amount); - event UserOperationEvent( - bytes32 indexed userOpHash, - address indexed sender, - address indexed paymaster, - uint256 nonce, - bool success, - uint256 actualGasCost, - uint256 actualGasUsed - ); - event Upgraded(address indexed newImplementation); - - Kernel kernel; - Kernel kernelImpl; - KernelFactory factory; - IEntryPoint entryPoint; - IKernelValidator defaultValidator; - address owner; - uint256 ownerKey; - address payable beneficiary; - address factoryOwner; - - bytes4 executionSig; - ExecutionDetail executionDetail; - - function _initialize() internal { - (owner, ownerKey) = makeAddrAndKey("owner"); - (factoryOwner,) = makeAddrAndKey("factoryOwner"); - beneficiary = payable(address(makeAddr("beneficiary"))); - vm.etch(ENTRYPOINT_0_6_ADDRESS, ENTRYPOINT_0_6_BYTECODE); - entryPoint = IEntryPoint(payable(ENTRYPOINT_0_6_ADDRESS)); - vm.etch(CREATOR_0_6_ADDRESS, CREATOR_0_6_BYTECODE); - kernelImpl = new Kernel(entryPoint); - factory = new KernelFactory(factoryOwner, entryPoint); - vm.startPrank(factoryOwner); - factory.setImplementation(address(kernelImpl), true); - vm.stopPrank(); - } - - function _setExecutionDetail() internal virtual; - - function getEnableData() internal view virtual returns (bytes memory); - - function getValidatorSignature(UserOperation memory op) internal view virtual returns (bytes memory); - - function getOwners() internal virtual returns (address[] memory _owners); - - function getInitializeData() internal view virtual returns (bytes memory); - - function signUserOp(UserOperation memory op) internal view virtual returns (bytes memory); - - function getWrongSignature(UserOperation memory op) internal view virtual returns (bytes memory); - - function signHash(bytes32 hash) internal view virtual returns (bytes memory); - - function getWrongSignature(bytes32 hash) internal view virtual returns (bytes memory); - - function test_default_validator_enable() external virtual; - - function test_default_validator_disable() external virtual; - - function test_external_call_execute_success() external virtual { - address[] memory validCallers = getOwners(); - for (uint256 i = 0; i < validCallers.length; i++) { - vm.prank(validCallers[i]); - kernel.execute(validCallers[i], 0, "", Operation.Call); - } - } - - function test_external_call_execute_delegatecall_success() external virtual { - address[] memory validCallers = getOwners(); - for (uint256 i = 0; i < validCallers.length; i++) { - vm.prank(validCallers[i]); - kernel.executeDelegateCall(validCallers[i], ""); - } - } - - function test_external_call_execute_delegatecall_fail() external virtual { - address[] memory validCallers = getOwners(); - for (uint256 i = 0; i < validCallers.length; i++) { - vm.prank(address(uint160(validCallers[i]) + 1)); - vm.expectRevert(); - kernel.executeDelegateCall(validCallers[i], ""); - } - } - - function test_external_call_execute_delegatecall_option_fail() external { - address[] memory validCallers = getOwners(); - for (uint256 i = 0; i < validCallers.length; i++) { - vm.prank(validCallers[i]); - vm.expectRevert(); - kernel.execute(validCallers[i], 0, "", Operation.DelegateCall); - } - } - - function test_external_call_execute_fail() external { - address[] memory validCallers = getOwners(); - for (uint256 i = 0; i < validCallers.length; i++) { - vm.prank(address(uint160(validCallers[i]) + 1)); - vm.expectRevert(); - kernel.execute(validCallers[i], 0, "", Operation.Call); - } - } - - function test_external_call_batch_execute_success() external virtual { - TestCallee callee = new TestCallee(); - Call[] memory calls = new Call[](3); - calls[0] = Call(owner, 0, ""); - calls[1] = Call(address(callee), 0, abi.encodeWithSelector(callee.returnLong.selector)); - calls[2] = Call(address(callee), 0, abi.encode("HelloWorld")); - vm.prank(owner); - kernel.executeBatch(calls); - assertEq(callee.caller(), address(kernel)); - assertEq(callee.sent(), 0); - assertEq(keccak256(callee.message()), keccak256(abi.encode("HelloWorld"))); - calls = new Call[](3); - calls[0] = Call(owner, 0, ""); - calls[1] = Call(address(callee), 0, abi.encodeWithSelector(callee.returnLongBytes.selector)); - calls[2] = Call(address(callee), 0, abi.encode("HelloWorld")); - assertEq(callee.caller(), address(kernel)); - assertEq(callee.sent(), 0); - assertEq(keccak256(callee.message()), keccak256(abi.encode("HelloWorld"))); - - vm.prank(owner); - kernel.executeBatch(calls); - } - - function test_external_call_batch_execute_fail() external { - Call[] memory calls = new Call[](1); - calls[0] = Call(owner, 0, ""); - vm.prank(address(uint160(owner) - 1)); - vm.expectRevert(); - kernel.executeBatch(calls); - } - - function test_get_nonce() external { - assertEq(kernel.getNonce(), entryPoint.getNonce(address(kernel), 0)); - assertEq(kernel.getNonce(100), entryPoint.getNonce(address(kernel), 100)); - } - - function test_get_nonce(uint192 key) external { - assertEq(kernel.getNonce(key), entryPoint.getNonce(address(kernel), key)); - } - - function test_eip712() external { - (bytes1 fields, string memory name, string memory version,, address verifyingContract, bytes32 salt,) = - kernel.eip712Domain(); - assertEq(fields, bytes1(hex"0f")); - assertEq(name, KERNEL_NAME); - assertEq(version, KERNEL_VERSION); - assertEq(verifyingContract, address(kernel)); - assertEq(salt, bytes32(0)); - } - - function test_upgrade() external { - vm.startPrank(address(entryPoint)); - vm.expectEmit(true, false, false, false, address(kernel)); - emit Upgraded(address(0xdeadbeef)); - kernel.upgradeTo(address(0xdeadbeef)); - } - - function test_external_call_default() external virtual { - vm.startPrank(owner); - (bool success,) = address(kernel).call(abi.encodePacked("Hello world")); - assertEq(success, true); - } - - function test_initialize() external { - factory.createAccount(address(kernelImpl), getInitializeData(), 1); - } - - function test_initialize_twice() external { - (bool success,) = address(kernel).call(getInitializeData()); - assertEq(success, false); - } - - function test_should_return_address_if_deployed() external { - address proxy = factory.createAccount(address(kernelImpl), getInitializeData(), 0); - assertEq(proxy, address(kernel)); - } - - function test_validate_signature() external virtual { - Kernel kernel2 = Kernel(payable(factory.createAccount(address(kernelImpl), getInitializeData(), 3))); - string memory message = "hello world"; - bytes32 hash = ECDSA.toEthSignedMessageHash(bytes(message)); - bytes32 digest = keccak256( - abi.encodePacked( - "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), hash - ) - ); - bytes memory sig = signHash(digest); - vm.startPrank(makeAddr("app")); - assertEq(kernel.isValidSignature(hash, sig), Kernel.isValidSignature.selector); - assertEq(kernel2.isValidSignature(hash, sig), bytes4(0xffffffff)); - vm.stopPrank(); - } - - function test_fail_validate_wrongsignature() external virtual { - bytes32 hash = keccak256(abi.encodePacked("hello world")); - bytes memory sig = getWrongSignature(hash); - vm.startPrank(makeAddr("app")); - assertEq(kernel.isValidSignature(hash, sig), bytes4(0xffffffff)); - vm.stopPrank(); - } - - function test_fail_validate_not_activate() external virtual { - TestValidator newDefaultValidator = new TestValidator(); - vm.startPrank(address(entryPoint)); - kernel.setDefaultValidator(newDefaultValidator, ""); - vm.stopPrank(); - - newDefaultValidator.setData(false, 0, 0); - - vm.warp(100000); - - vm.startPrank(makeAddr("app")); - bytes32 hash = keccak256(abi.encodePacked("hello world")); - assertEq(kernel.isValidSignature(hash, ""), bytes4(0xffffffff)); - newDefaultValidator.setData(true, uint48(block.timestamp + 1000), uint48(0)); - assertEq(kernel.isValidSignature(hash, ""), bytes4(0xffffffff)); - newDefaultValidator.setData(true, uint48(0), uint48(block.timestamp - 1000)); - assertEq(kernel.isValidSignature(hash, ""), bytes4(0xffffffff)); - vm.stopPrank(); - } - - function test_should_emit_event_on_receive() external { - vm.expectEmit(address(kernel)); - emit Received(address(this), 1000); - (bool success,) = address(kernel).call{value: 1000}(""); - assertEq(success, true); - } - - function test_should_receive_erc721() external { - TestERC721 token = new TestERC721(); - token.safeMint(address(kernel), 1); - } - - function test_should_receive_erc1155() external { - TestERC1155 token = new TestERC1155(); - token.mint(address(kernel), 1, 1000, ""); - } - - function test_should_receive_erc1155_batch() external { - TestERC1155 token = new TestERC1155(); - uint256[] memory ids = new uint256[](2); - ids[0] = 1; - ids[1] = 2; - uint256[] memory amounts = new uint256[](2); - amounts[0] = 1000; - amounts[1] = 1000; - token.batchMint(address(kernel), ids, amounts, ""); - } - - function test_set_default_validator() external virtual { - TestValidator newDefaultValidator = new TestValidator(); - bytes memory empty; - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector(IKernel.setDefaultValidator.selector, address(newDefaultValidator), empty) - ); - performUserOperationWithSig(op); - assertEq(address(IKernel(address(kernel)).getDefaultValidator()), address(newDefaultValidator)); - } - - function test_disable_mode() external { - vm.warp(1000); - bytes memory empty; - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector(IKernel.disableMode.selector, bytes4(0x00000001), address(0), empty) - ); - performUserOperationWithSig(op); - assertEq(uint256(bytes32(IKernel(address(kernel)).getDisabledMode())), 1 << 224); - assertEq(uint256(IKernel(address(kernel)).getLastDisabledTime()), block.timestamp); - } - - function test_set_execution() external { - TestValidator newValidator = new TestValidator(); - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.setExecution.selector, - bytes4(0xdeadbeef), - address(0xdead), - address(newValidator), - uint48(0), - uint48(0), - bytes("") - ) - ); - performUserOperationWithSig(op); - ExecutionDetail memory execution = IKernel(address(kernel)).getExecution(bytes4(0xdeadbeef)); - assertEq(execution.executor, address(0xdead)); - assertEq(address(execution.validator), address(newValidator)); - assertEq(uint256(ValidUntil.unwrap(execution.validUntil)), uint256(0)); - assertEq(uint256(ValidAfter.unwrap(execution.validAfter)), uint256(0)); - } - - function test_external_call_execution() external virtual { - TestValidator newValidator = new TestValidator(); - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.setExecution.selector, - bytes4(0xdeadbeef), - address(0xdead), - address(newValidator), - uint48(0), - uint48(0), - bytes("") - ) - ); - performUserOperationWithSig(op); - ExecutionDetail memory execution = IKernel(address(kernel)).getExecution(bytes4(0xdeadbeef)); - assertEq(execution.executor, address(0xdead)); - assertEq(address(execution.validator), address(newValidator)); - assertEq(uint256(ValidUntil.unwrap(execution.validUntil)), uint256(0)); - assertEq(uint256(ValidAfter.unwrap(execution.validAfter)), uint256(0)); - - address randomAddr = makeAddr("random"); - newValidator.sudoSetCaller(address(kernel), randomAddr); - vm.startPrank(randomAddr); - (bool success,) = address(kernel).call(abi.encodePacked(bytes4(0xdeadbeef))); - assertEq(success, true); - vm.stopPrank(); - - address notAllowed = makeAddr("notAllowed"); - vm.startPrank(notAllowed); - (bool success2,) = address(kernel).call(abi.encodePacked(bytes4(0xdeadbeef))); - assertEq(success2, false); - vm.stopPrank(); - } - - function test_revert_when_mode_disabled() external { - vm.warp(1000); - bytes memory empty; - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector(IKernel.disableMode.selector, bytes4(0x00000001), address(0), empty) - ); - performUserOperationWithSig(op); - - // try to run with mode 0x00000001 - op = buildUserOperation(abi.encodeWithSelector(IKernel.disableMode.selector, bytes4(0x00000001))); - op.signature = abi.encodePacked(bytes4(0x00000001), entryPoint.signUserOpHash(vm, ownerKey, op)); - vm.expectRevert( - abi.encodeWithSelector(IEntryPoint.FailedOp.selector, 0, string.concat("AA23 reverted (or OOG)")) - ); - performUserOperation(op); - } - - // validate user op - function test_validateUserOp_fail_not_entryPoint() external { - UserOperation memory op = buildUserOperation(abi.encodeWithSelector(TestExecutor.doNothing.selector)); - vm.expectRevert(IKernel.NotEntryPoint.selector); - kernel.validateUserOp(op, bytes32(hex"deadbeef"), uint256(100)); - } - - function test_validateUserOp_fail_invalid_mode() external { - UserOperation memory op = buildUserOperation(abi.encodeWithSelector(TestExecutor.doNothing.selector)); - op.signature = hex"00000003"; - vm.prank(address(entryPoint)); - ValidationData res = kernel.validateUserOp(op, bytes32(hex"deadbeef"), uint256(100)); - assertEq(ValidationData.unwrap(res), 1); - } - - function test_sudo() external { - UserOperation memory op = buildUserOperation(abi.encodeWithSelector(TestExecutor.doNothing.selector)); - performUserOperationWithSig(op); - } - - function test_sudo_wrongSig() external { - UserOperation memory op = buildUserOperation(abi.encodeWithSelector(TestExecutor.doNothing.selector)); - op.signature = getWrongSignature(op); - vm.expectRevert(); - performUserOperation(op); - } - - // mode 2 tests - function test_mode_2() public { - UserOperation memory op = buildUserOperation(abi.encodePacked(executionSig)); - - op.signature = buildEnableSignature( - op, executionSig, uint48(0), uint48(0), executionDetail.validator, executionDetail.executor - ); - vm.expectEmit(true, true, true, false, address(entryPoint)); - emit UserOperationEvent(entryPoint.getUserOpHash(op), address(kernel), address(0), op.nonce, false, 0, 0); - performUserOperation(op); - } - - function buildEnableSignature( - UserOperation memory op, - bytes4 selector, - uint48 validAfter, - uint48 validUntil, - IKernelValidator validator, - address executor - ) internal view returns (bytes memory sig) { - require(address(executionDetail.validator) != address(0), "execution detail not set"); - bytes memory enableData = getEnableData(); - bytes32 digest = getTypedDataHash(selector, validAfter, validUntil, address(validator), executor, enableData); - bytes memory enableSig = signHash(digest); - sig = getValidatorSignature(op); - sig = abi.encodePacked( - bytes4(0x00000002), - validAfter, - validUntil, - address(validator), - executor, - uint256(enableData.length), - enableData, - enableSig.length, - enableSig, - sig - ); - } - - function test_enable_then_mode_1() public { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.setExecution.selector, - executionSig, - executionDetail.executor, - executionDetail.validator, - ValidUntil.wrap(0), - ValidAfter.wrap(0), - getEnableData() - ) - ); - performUserOperationWithSig(op); - op = buildUserOperation(abi.encodeWithSelector(executionSig)); - op.signature = abi.encodePacked(bytes4(0x00000001), getValidatorSignature(op)); - performUserOperation(op); - } - - function _setAddress() internal { - kernel = Kernel(payable(address(factory.createAccount(address(kernelImpl), getInitializeData(), 0)))); - vm.deal(address(kernel), 1e30); - } - - // computes the hash of the fully encoded EIP-712 message for the domain, which can be used to recover the signer - function getTypedDataHash( - bytes4 sig, - uint48 validUntil, - uint48 validAfter, - address validator, - address executor, - bytes memory enableData - ) public view returns (bytes32) { - return keccak256( - abi.encodePacked( - "\x19\x01", - ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), - ERC4337Utils.getStructHash(sig, validUntil, validAfter, validator, executor, enableData) - ) - ); - } - - function buildUserOperation(bytes memory callData) internal view returns (UserOperation memory op) { - return entryPoint.fillUserOp(address(kernel), callData); - } - - function performUserOperationWithSig(UserOperation memory op) internal { - op.signature = signUserOp(op); - UserOperation[] memory ops = new UserOperation[](1); - ops[0] = op; - entryPoint.handleOps(ops, beneficiary); - } - - function performUserOperation(UserOperation memory op) internal { - UserOperation[] memory ops = new UserOperation[](1); - ops[0] = op; - entryPoint.handleOps(ops, beneficiary); - } -} diff --git a/src/utils/KernelHelper.sol b/src/utils/KernelValidationResult.sol similarity index 93% rename from src/utils/KernelHelper.sol rename to src/utils/KernelValidationResult.sol index 6c6d3e47..91a1b6df 100644 --- a/src/utils/KernelHelper.sol +++ b/src/utils/KernelValidationResult.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import {SIG_VALIDATION_FAILED_UINT} from "../common/Constants.sol"; -import {ValidationData} from "../common/Types.sol"; +import {SIG_VALIDATION_FAILED_UINT} from "../types/Constants.sol"; +import {ValidationData, getValidationResult} from "../types/Types.sol"; function _intersectValidationData(ValidationData a, ValidationData b) pure returns (ValidationData validationData) { assembly { diff --git a/src/utils/ModuleLib.sol b/src/utils/ModuleLib.sol new file mode 100644 index 00000000..3c390676 --- /dev/null +++ b/src/utils/ModuleLib.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import {ExcessivelySafeCall} from "ExcessivelySafeCall/ExcessivelySafeCall.sol"; +import {IModule} from "../interfaces/IERC7579Modules.sol"; + +library ModuleLib { + event ModuleUninstallResult(address module, bool result); + + function uninstallModule(address module, bytes memory deinitData) internal returns (bool result) { + (result,) = ExcessivelySafeCall.excessivelySafeCall( + module, gasleft(), 0, 0, abi.encodeWithSelector(IModule.onUninstall.selector, deinitData) + ); + emit ModuleUninstallResult(module, result); + } +} diff --git a/src/utils/P256VerifierWrapper.sol b/src/utils/P256VerifierWrapper.sol deleted file mode 100644 index bc6340ac..00000000 --- a/src/utils/P256VerifierWrapper.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {FCL_ecdsa} from "FreshCryptoLib/FCL_ecdsa.sol"; - -/// @title P256VerifierWrapper -/// @author rdubois-crypto -/// @author KONFeature -/// @notice Wrapper arround the P256Verifier contract of @rdubois-crypto, using it to accept EIP-7212 compliant verification (p256 pre-compiled curve) -/// @dev This lib is only a wrapper around the P256Verifier contract. -/// It will call the verifySignature function of the P256Verifier contract. -/// Once the RIP-7212 will be deployed and effective, this contract will be useless. -/// Tracker on polygon: PR: https://github.com/maticnetwork/bor/pull/1069 -/// Now waiting on the Napoli hardfork to be deployed -contract P256VerifierWrapper { - /** - * Precompiles don't use a function signature. The first byte of callldata - * is the first byte of an input argument. In this case: - * - * input[ 0: 32] = signed data hash - * input[ 32: 64] = signature r - * input[ 64: 96] = signature s - * input[ 96:128] = public key x - * input[128:160] = public key y - * - * result[ 0: 32] = 0x00..00 (invalid) or 0x00..01 (valid) - * - * For details, see https://eips.ethereum.org/EIPS/eip-7212 - */ - fallback(bytes calldata input) external returns (bytes memory) { - if (input.length != 160) { - return abi.encodePacked(uint256(0)); - } - - bytes32 hash = bytes32(input[0:32]); - uint256 r = uint256(bytes32(input[32:64])); - uint256 s = uint256(bytes32(input[64:96])); - uint256 x = uint256(bytes32(input[96:128])); - uint256 y = uint256(bytes32(input[128:160])); - - uint256 ret = FCL_ecdsa.ecdsa_verify(hash, r, s, x, y) ? 1 : 0; - - return abi.encodePacked(ret); - } -} diff --git a/src/utils/ValidationTypeLib.sol b/src/utils/ValidationTypeLib.sol new file mode 100644 index 00000000..8f4f9710 --- /dev/null +++ b/src/utils/ValidationTypeLib.sol @@ -0,0 +1,154 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import {IValidator, IPolicy} from "../interfaces/IERC7579Modules.sol"; +import {PassFlag, ValidationType, ValidationId, ValidationMode, PolicyData, PermissionId} from "../types/Types.sol"; +import {VALIDATION_TYPE_PERMISSION} from "../types/Constants.sol"; + +library ValidatorLib { + function encodeFlag(bool skipUserOp, bool skipSignature) internal pure returns (PassFlag flag) { + assembly { + if skipUserOp { flag := 0x0001000000000000000000000000000000000000000000000000000000000000 } + if skipSignature { flag := or(flag, 0x0002000000000000000000000000000000000000000000000000000000000000) } + } + } + + function encodePolicyData(bool skipUserOp, bool skipSig, address policy) internal pure returns (PolicyData data) { + assembly { + if skipUserOp { data := 0x0001000000000000000000000000000000000000000000000000000000000000 } + if skipSig { data := or(data, 0x0002000000000000000000000000000000000000000000000000000000000000) } + data := or(data, shl(80, policy)) + } + } + + function encodePermissionAsNonce(bytes1 mode, bytes4 permissionId, uint16 nonceKey, uint64 nonce) + internal + pure + returns (uint256 res) + { + return encodeAsNonce( + mode, ValidationType.unwrap(VALIDATION_TYPE_PERMISSION), bytes20(permissionId), nonceKey, nonce + ); + } + + function encodeAsNonce(bytes1 mode, bytes1 vType, bytes20 ValidationIdWithoutType, uint16 nonceKey, uint64 nonce) + internal + pure + returns (uint256 res) + { + assembly { + res := nonce + res := or(res, shl(64, nonceKey)) + res := or(res, shr(16, ValidationIdWithoutType)) + res := or(res, shr(8, vType)) + res := or(res, mode) + } + } + + function encodeAsNonceKey(bytes1 mode, bytes1 vType, bytes20 ValidationIdWithoutType, uint16 nonceKey) + internal + pure + returns (uint192 res) + { + assembly { + res := or(nonceKey, shr(80, ValidationIdWithoutType)) + res := or(res, shr(72, vType)) + res := or(res, shr(64, mode)) + } + } + + function decodeNonce(uint256 nonce) + internal + pure + returns (ValidationMode mode, ValidationType vType, ValidationId identifier) + { + // 2bytes mode (1byte currentMode, 1byte type) + // 21bytes identifier + // 1byte mode | 1byte type | 20bytes identifierWithoutType | 2byte nonceKey | 8byte nonce == 32bytes + assembly { + mode := nonce + vType := shl(8, nonce) + identifier := shl(8, nonce) + switch shr(248, identifier) + case 0x0000000000000000000000000000000000000000000000000000000000000002 { + identifier := and(identifier, 0xffffffffff000000000000000000000000000000000000000000000000000000) + } + } + } + + function decodeSignature(bytes calldata signature) internal pure returns (ValidationId vId, bytes calldata sig) { + assembly { + vId := calldataload(signature.offset) + switch shr(248, vId) + case 0 { + // sudo mode + vId := 0x00 + sig.offset := add(signature.offset, 1) + sig.length := sub(signature.length, 1) + } + case 1 { + // validator mode + sig.offset := add(signature.offset, 21) + sig.length := sub(signature.length, 21) + } + case 2 { + vId := and(vId, 0xffffffffff000000000000000000000000000000000000000000000000000000) + sig.offset := add(signature.offset, 5) + sig.length := sub(signature.length, 5) + } + default { revert(0x00, 0x00) } + } + } + + function decodePolicyData(PolicyData data) internal pure returns (PassFlag flag, IPolicy policy) { + assembly { + flag := data + policy := shr(80, data) + } + } + + function validatorToIdentifier(IValidator validator) internal pure returns (ValidationId vId) { + assembly { + vId := 0x0100000000000000000000000000000000000000000000000000000000000000 + vId := or(vId, shl(88, validator)) + } + } + + function getType(ValidationId validator) internal pure returns (ValidationType vType) { + assembly { + vType := validator + } + } + + function getValidator(ValidationId validator) internal pure returns (IValidator v) { + assembly { + v := shr(88, validator) + } + } + + function getPermissionId(ValidationId validator) internal pure returns (PermissionId id) { + assembly { + id := shl(8, validator) + } + } + + function permissionToIdentifier(PermissionId permissionId) internal pure returns (ValidationId vId) { + assembly { + vId := 0x0200000000000000000000000000000000000000000000000000000000000000 + vId := or(vId, shr(8, permissionId)) + } + } + + function getPolicy(PolicyData data) internal pure returns (IPolicy vId) { + assembly { + vId := shr(80, data) + } + } + + function getPermissionSkip(PolicyData data) internal pure returns (PassFlag flag) { + assembly { + flag := data + } + } +} diff --git a/src/validator/ECDSATypedValidator.sol b/src/validator/ECDSATypedValidator.sol deleted file mode 100644 index f2dea0c3..00000000 --- a/src/validator/ECDSATypedValidator.sol +++ /dev/null @@ -1,125 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {EIP712} from "solady/utils/EIP712.sol"; -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {ValidationData} from "../common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "../common/Constants.sol"; - -struct ECDSATypedValidatorStorage { - address owner; -} - -/// @author @KONFeature -/// @title ECDSATypedValidator -/// @notice This validator uses the ECDSA curve to validate signatures. -/// @notice It's using EIP-712 format signature to validate user operations signature & classic signature -contract ECDSATypedValidator is IKernelValidator, EIP712 { - /// @notice The type hash used for kernel user op validation - bytes32 constant USER_OP_TYPEHASH = keccak256("AllowUserOp(address owner,address kernelWallet,bytes32 userOpHash)"); - /// @notice The type hash used for kernel signature validation - bytes32 constant SIGNATURE_TYPEHASH = keccak256("KernelSignature(address owner,address kernelWallet,bytes32 hash)"); - - /// @notice Emitted when the owner of a kernel is changed. - event OwnerChanged(address indexed kernel, address newOwner); - - /* -------------------------------------------------------------------------- */ - /* Storage */ - /* -------------------------------------------------------------------------- */ - - /// @notice The validator storage of a kernel. - mapping(address kernel => ECDSATypedValidatorStorage validatorStorage) private ecdsaValidatorStorage; - - /* -------------------------------------------------------------------------- */ - /* EIP-712 Methods */ - /* -------------------------------------------------------------------------- */ - - /// @dev Get the current name & version of the validator, used for the EIP-712 domain separator from Solady - function _domainNameAndVersion() internal pure override returns (string memory, string memory) { - return ("Kernel:ECDSATypedValidator", "1.0.0"); - } - - /// @dev Tell to solady that the current name & version of the validator won't change, so no need to recompute the eip-712 domain separator - function _domainNameAndVersionMayChange() internal pure override returns (bool) { - return false; - } - - /// @dev Export the current domain seperator - function getDomainSeperator() public view returns (bytes32) { - return _domainSeparator(); - } - - /* -------------------------------------------------------------------------- */ - /* Kernel validator Methods */ - /* -------------------------------------------------------------------------- */ - - /// @dev Enable this validator for a given `kernel` (msg.sender) - function enable(bytes calldata _data) external payable override { - address owner = address(bytes20(_data[0:20])); - ecdsaValidatorStorage[msg.sender].owner = owner; - emit OwnerChanged(msg.sender, owner); - } - - /// @dev Disable this validator for a given `kernel` (msg.sender) - function disable(bytes calldata) external payable override { - delete ecdsaValidatorStorage[msg.sender]; - } - - /// @dev Validate a `_userOp` using a EIP-712 signature, signed by the owner of the kernel account who is the `_userOp` sender - function validateUserOp(UserOperation calldata _userOp, bytes32 _userOpHash, uint256) - external - payable - override - returns (ValidationData validationData) - { - // Get the owner for the given kernel account - address owner = ecdsaValidatorStorage[_userOp.sender].owner; - - // Build the full message hash to check against - bytes32 typedDataHash = - _hashTypedData(keccak256(abi.encode(USER_OP_TYPEHASH, owner, _userOp.sender, _userOpHash))); - - // Validate the typed data hash signature - if (owner == ECDSA.recover(typedDataHash, _userOp.signature)) { - // If that worked, return a valid validation data - return ValidationData.wrap(0); - } - - // If not, return a failed validation data - return SIG_VALIDATION_FAILED; - } - - /// @dev Validate a `_signature` of the `_hash` ofor the given `kernel` (msg.sender) - function validateSignature(bytes32 _hash, bytes calldata signature) public view override returns (ValidationData) { - // Get the owner for the given kernel account - address owner = ecdsaValidatorStorage[msg.sender].owner; - - // Build the full message hash to check against - bytes32 typedDataHash = _hashTypedData(keccak256(abi.encode(SIGNATURE_TYPEHASH, owner, msg.sender, _hash))); - - // Validate the typed data hash signature - if (owner == ECDSA.recover(typedDataHash, signature)) { - // If that worked, return a valid validation data - return ValidationData.wrap(0); - } - - // If not, return a failed validation data - return SIG_VALIDATION_FAILED; - } - - /// @dev Check if the caller is a valid signer for this kernel account - function validCaller(address _caller, bytes calldata) external view override returns (bool) { - return ecdsaValidatorStorage[msg.sender].owner == _caller; - } - - /* -------------------------------------------------------------------------- */ - /* Public view methods */ - /* -------------------------------------------------------------------------- */ - - /// @dev Get the owner of a given `kernel` - function getOwner(address _kernel) public view returns (address) { - return ecdsaValidatorStorage[_kernel].owner; - } -} diff --git a/src/validator/ECDSAValidator.sol b/src/validator/ECDSAValidator.sol index 9eeabf6e..00e6aca5 100644 --- a/src/validator/ECDSAValidator.sol +++ b/src/validator/ECDSAValidator.sol @@ -2,62 +2,97 @@ pragma solidity ^0.8.0; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; import {ECDSA} from "solady/utils/ECDSA.sol"; -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {ValidationData} from "../common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "../common/Constants.sol"; +import {IValidator, IHook} from "../interfaces/IERC7579Modules.sol"; +import {PackedUserOperation} from "../interfaces/PackedUserOperation.sol"; +import { + SIG_VALIDATION_SUCCESS_UINT, + SIG_VALIDATION_FAILED_UINT, + MODULE_TYPE_VALIDATOR, + MODULE_TYPE_HOOK, + ERC1271_MAGICVALUE, + ERC1271_INVALID +} from "../types/Constants.sol"; struct ECDSAValidatorStorage { address owner; } -contract ECDSAValidator is IKernelValidator { - event OwnerChanged(address indexed kernel, address indexed oldOwner, address indexed newOwner); +contract ECDSAValidator is IValidator, IHook { + event OwnerRegistered(address indexed kernel, address indexed owner); mapping(address => ECDSAValidatorStorage) public ecdsaValidatorStorage; - function disable(bytes calldata) external payable override { + function onInstall(bytes calldata _data) external payable override { + if (_isInitialized(msg.sender)) revert AlreadyInitialized(msg.sender); + address owner = address(bytes20(_data[0:20])); + ecdsaValidatorStorage[msg.sender].owner = owner; + emit OwnerRegistered(msg.sender, owner); + } + + function onUninstall(bytes calldata) external payable override { + if (!_isInitialized(msg.sender)) revert NotInitialized(msg.sender); delete ecdsaValidatorStorage[msg.sender]; } - function enable(bytes calldata _data) external payable override { - address owner = address(bytes20(_data[0:20])); - address oldOwner = ecdsaValidatorStorage[msg.sender].owner; - ecdsaValidatorStorage[msg.sender].owner = owner; - emit OwnerChanged(msg.sender, oldOwner, owner); + function isModuleType(uint256 typeID) external pure override returns (bool) { + return typeID == MODULE_TYPE_VALIDATOR || typeID == MODULE_TYPE_HOOK; + } + + function isInitialized(address smartAccount) external view override returns (bool) { + return _isInitialized(smartAccount); + } + + function _isInitialized(address smartAccount) internal view returns (bool) { + return ecdsaValidatorStorage[smartAccount].owner != address(0); } - function validateUserOp(UserOperation calldata _userOp, bytes32 _userOpHash, uint256) + function validateUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash) external payable override - returns (ValidationData validationData) + returns (uint256) { - address owner = ecdsaValidatorStorage[_userOp.sender].owner; - bytes32 hash = ECDSA.toEthSignedMessageHash(_userOpHash); - if (owner == ECDSA.recover(hash, _userOp.signature)) { - return ValidationData.wrap(0); + address owner = ecdsaValidatorStorage[msg.sender].owner; + bytes calldata sig = userOp.signature; + if (owner == ECDSA.recover(userOpHash, sig)) { + return SIG_VALIDATION_SUCCESS_UINT; } - if (owner != ECDSA.recover(_userOpHash, _userOp.signature)) { - return SIG_VALIDATION_FAILED; + bytes32 ethHash = ECDSA.toEthSignedMessageHash(userOpHash); + address recovered = ECDSA.recover(ethHash, sig); + if (owner != recovered) { + return SIG_VALIDATION_FAILED_UINT; } + return SIG_VALIDATION_SUCCESS_UINT; } - function validateSignature(bytes32 hash, bytes calldata signature) public view override returns (ValidationData) { + function isValidSignatureWithSender(address, bytes32 hash, bytes calldata sig) + external + view + override + returns (bytes4) + { address owner = ecdsaValidatorStorage[msg.sender].owner; - if (owner == ECDSA.recover(hash, signature)) { - return ValidationData.wrap(0); + if (owner == ECDSA.recover(hash, sig)) { + return ERC1271_MAGICVALUE; } bytes32 ethHash = ECDSA.toEthSignedMessageHash(hash); - address recovered = ECDSA.recover(ethHash, signature); + address recovered = ECDSA.recover(ethHash, sig); if (owner != recovered) { - return SIG_VALIDATION_FAILED; + return ERC1271_INVALID; } - return ValidationData.wrap(0); + return ERC1271_MAGICVALUE; } - function validCaller(address _caller, bytes calldata) external view override returns (bool) { - return ecdsaValidatorStorage[msg.sender].owner == _caller; + function preCheck(address msgSender, uint256 value, bytes calldata) + external + payable + override + returns (bytes memory) + { + require(msgSender == ecdsaValidatorStorage[msg.sender].owner, "ECDSAValidator: sender is not owner"); + return hex""; } + + function postCheck(bytes calldata hookData, bool success, bytes calldata res) external payable override {} } diff --git a/src/validator/ERC165SessionKeyValidator.sol b/src/validator/ERC165SessionKeyValidator.sol deleted file mode 100644 index 4f381001..00000000 --- a/src/validator/ERC165SessionKeyValidator.sol +++ /dev/null @@ -1,68 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {ValidAfter, ValidUntil, ValidationData, packValidationData} from "../common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "../common/Constants.sol"; - -// idea, we can make this merkle root -struct ERC165SessionKeyStorage { - bool enabled; - bytes4 selector; - bytes4 interfaceId; - ValidAfter validAfter; - ValidUntil validUntil; - uint32 addressOffset; -} - -interface IERC165 { - function supportsInterface(bytes4 interfaceId) external view returns (bool); -} - -contract ERC165SessionKeyValidator is IKernelValidator { - mapping(address sessionKey => mapping(address kernel => ERC165SessionKeyStorage)) public sessionKeys; - - function enable(bytes calldata _data) external payable { - address sessionKey = address(bytes20(_data[0:20])); - bytes4 interfaceId = bytes4(_data[20:24]); - bytes4 selector = bytes4(_data[24:28]); - ValidAfter validAfter = ValidAfter.wrap(uint48(bytes6(_data[28:34]))); - ValidUntil validUntil = ValidUntil.wrap(uint48(bytes6(_data[34:40]))); - uint32 addressOffset = uint32(bytes4(_data[40:44])); - sessionKeys[sessionKey][msg.sender] = - ERC165SessionKeyStorage(true, selector, interfaceId, validAfter, validUntil, addressOffset); - } - - function disable(bytes calldata _data) external payable { - address sessionKey = address(bytes20(_data[0:20])); - - delete sessionKeys[sessionKey][msg.sender]; - } - - function validateSignature(bytes32, bytes calldata) external pure override returns (ValidationData) { - revert NotImplemented(); - } - - function validateUserOp(UserOperation calldata _userOp, bytes32 _userOpHash, uint256) - external - payable - returns (ValidationData) - { - bytes32 hash = ECDSA.toEthSignedMessageHash(_userOpHash); - address recovered = ECDSA.recover(hash, _userOp.signature); - ERC165SessionKeyStorage storage sessionKey = sessionKeys[recovered][_userOp.sender]; - if (!sessionKey.enabled) { - return SIG_VALIDATION_FAILED; - } - require(bytes4(_userOp.callData[0:4]) == sessionKey.selector, "not supported selector"); - address token = address(bytes20(_userOp.callData[sessionKey.addressOffset:sessionKey.addressOffset + 20])); - require(IERC165(token).supportsInterface(sessionKey.interfaceId), "does not support interface"); - return packValidationData(sessionKey.validAfter, sessionKey.validUntil); - } - - function validCaller(address, bytes calldata) external view override returns (bool) { - revert NotImplemented(); - } -} diff --git a/src/validator/KillSwitchValidator.sol b/src/validator/KillSwitchValidator.sol deleted file mode 100644 index 13b279e9..00000000 --- a/src/validator/KillSwitchValidator.sol +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {IKernel} from "../interfaces/IKernel.sol"; -import {_intersectValidationData} from "../utils/KernelHelper.sol"; -import {WalletKernelStorage, ExecutionDetail} from "../common/Structs.sol"; -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {ValidationData, ValidAfter, ValidUntil, packValidationData, parseValidationData} from "../common/Types.sol"; -import {KillSwitchAction} from "../executor/KillSwitchAction.sol"; -import {SIG_VALIDATION_FAILED} from "../common/Constants.sol"; - -struct KillSwitchValidatorStorage { - address guardian; - IKernelValidator validator; - ValidAfter pausedUntil; - bytes4 disableMode; -} - -contract KillSwitchValidator is IKernelValidator { - mapping(address => KillSwitchValidatorStorage) public killSwitchValidatorStorage; - - function enable(bytes calldata enableData) external payable override { - killSwitchValidatorStorage[msg.sender].guardian = address(bytes20(enableData[0:20])); - } - - function disable(bytes calldata) external payable override { - delete killSwitchValidatorStorage[msg.sender]; - } - - function validateSignature(bytes32, bytes calldata) external pure override returns (ValidationData) { - revert NotImplemented(); - } - - function validateUserOp(UserOperation calldata _userOp, bytes32 _userOpHash, uint256) - external - payable - override - returns (ValidationData) - { - KillSwitchValidatorStorage storage validatorStorage = killSwitchValidatorStorage[msg.sender]; // should use msg.sender to prevent others from changing storage - ValidAfter pausedUntil = validatorStorage.pausedUntil; - ValidationData validationData; - if (address(validatorStorage.validator) != address(0)) { - // check for validator at first - try validatorStorage.validator.validateUserOp(_userOp, _userOpHash, 0) returns (ValidationData res) { - validationData = res; - } catch { - validationData = SIG_VALIDATION_FAILED; - } - (,, address result) = parseValidationData(validationData); - if (result != address(1)) { - // if signature verification has not been failed, return with the result - ValidationData delayedData = packValidationData(pausedUntil, ValidUntil.wrap(0)); - return _intersectValidationData(validationData, delayedData); - } else if (bytes4(_userOp.callData[0:4]) == KillSwitchAction.toggleKillSwitch.selector) { - bytes32 hash = ECDSA.toEthSignedMessageHash(_userOpHash); - address recovered = ECDSA.recover(hash, _userOp.signature); - if (validatorStorage.guardian == recovered) { - return packValidationData(ValidAfter.wrap(0), ValidUntil.wrap(0)); - } - } - } - if (_userOp.signature.length == 71) { - // save data to this storage - validatorStorage.pausedUntil = ValidAfter.wrap(uint48(bytes6(_userOp.signature[0:6]))); - validatorStorage.validator = IKernel(msg.sender).getDefaultValidator(); - validatorStorage.disableMode = IKernel(msg.sender).getDisabledMode(); - bytes32 hash = ECDSA.toEthSignedMessageHash(keccak256(bytes.concat(_userOp.signature[0:6], _userOpHash))); - address recovered = ECDSA.recover(hash, _userOp.signature[6:]); - if (validatorStorage.guardian != recovered) { - return SIG_VALIDATION_FAILED; - } - return packValidationData(pausedUntil, ValidUntil.wrap(0)); - } else { - return SIG_VALIDATION_FAILED; - } - } - - function validCaller(address, bytes calldata) external view override returns (bool) { - revert NotImplemented(); - } -} diff --git a/src/validator/SessionKeyValidator.sol b/src/validator/SessionKeyValidator.sol deleted file mode 100644 index fe876192..00000000 --- a/src/validator/SessionKeyValidator.sol +++ /dev/null @@ -1,311 +0,0 @@ -pragma solidity ^0.8.0; - -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {MerkleProofLib} from "solady/utils/MerkleProofLib.sol"; - -import {IKernelValidator} from "../interfaces/IKernelValidator.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; - -import {SIG_VALIDATION_FAILED} from "../common/Constants.sol"; -import {ParamCondition, Operation} from "../common/Enums.sol"; -import {ParamRule, SessionData, Permission, Call, ExecutionRule, ExecutionStatus, Nonces} from "../common/Structs.sol"; -import "../common/Types.sol"; - -import {Kernel} from "../Kernel.sol"; - -contract SessionKeyValidator is IKernelValidator { - mapping(address kernel => Nonces) public nonces; - mapping(address sessionKey => mapping(address kernel => SessionData)) public sessionData; - mapping(bytes32 permissionKey => mapping(address kernel => ExecutionStatus)) public executionStatus; - - function enable(bytes calldata _data) external payable { - address sessionKey = address(bytes20(_data[0:20])); - bytes32 merkleRoot = bytes32(_data[20:52]); - ValidAfter validAfter = ValidAfter.wrap(uint48(bytes6(_data[52:58]))); - ValidUntil validUntil = ValidUntil.wrap(uint48(bytes6(_data[58:64]))); - address paymaster = address(bytes20(_data[64:84])); - uint256 nonce = uint256(bytes32(_data[84:116])); - sessionData[sessionKey][msg.sender] = SessionData(merkleRoot, validAfter, validUntil, paymaster, nonce); - require(nonce == ++nonces[msg.sender].lastNonce, "SessionKeyValidator: invalid nonce"); - } - - function invalidateNonce(uint128 nonce) public { - require(nonce > nonces[msg.sender].invalidNonce, "SessionKeyValidator: invalid nonce"); - nonces[msg.sender].invalidNonce = nonce; - if (nonces[msg.sender].lastNonce < nonce) { - nonces[msg.sender].lastNonce = nonce; - } - } - - function disable(bytes calldata _data) external payable { - // invalidate specific sessionKey - if (_data.length == 20) { - address sessionKey = address(bytes20(_data[0:20])); - delete sessionData[sessionKey][msg.sender]; - } else if (_data.length == 16) { - // invalidate all sessionKeys before specific nonce - invalidateNonce(uint128(bytes16(_data[0:16]))); - } else { - // invalidate all sessionKeys - invalidateNonce(nonces[msg.sender].lastNonce); - } - } - - function _verifyPaymaster(UserOperation calldata userOp, SessionData storage session) internal view { - // to make this fully work with paymaster service, prepack the address of paymaster up front - if (session.paymaster == address(1)) { - // any paymaster - require(userOp.paymasterAndData.length != 0, "SessionKeyValidator: paymaster not set"); - } else if (session.paymaster != address(0)) { - // specific paymaster - require( - address(bytes20(userOp.paymasterAndData[0:20])) == session.paymaster, - "SessionKeyValidator: paymaster mismatch" - ); - } - } - - function _verifyUserOpHash(address _sessionKey, ValidAfter validAfter, ValidUntil validUntil) - internal - view - returns (ValidationData) - { - bytes32 userOpHash; - assembly { - // 0x00 ~ 0x04 : sig - // 0x04 ~ 0x24 : userOp.offset - // 0x24 ~ 0x44 : userOpHash - userOpHash := calldataload(0x24) - } - bytes calldata signature; - assembly { - //0x00 ~ 0x04 : selector - //0x04 ~ 0x24 : userOp.offset - //0x24 ~ 0x44 : userOpHash - //0x44 ~ 0x64 : missingAccountFund - //[userOp.offset + 0x04] - //0x00 ~ 0x20 : sender - //0x20 ~ 0x40 : nonce - //0x40 ~ 0x60 : initCode - //0x60 ~ 0x80 : callData - //0x80 ~ 0xa0 : callGasLimit - //0xa0 ~ 0xc0 : verificationGasLimit - //0xc0 ~ 0xe0 : preVerificationGas - //0xe0 ~ 0x100 : maxFeePerGas - //0x100 ~ 0x120 : maxPriorityFeePerGas - //0x120 ~ 0x140 : paymasterAndData - //0x140 ~ 0x160 : signatureOffset - //[signatureOffset + userOp.offset + 0x04] - //[0x00 ~ 0x20] : length - //[0x20 ~] : signature - let userOpOffset := add(calldataload(0x04), 0x04) - let signatureOffset := add(calldataload(add(userOpOffset, 0x140)), add(userOpOffset, 0x34)) - signature.offset := signatureOffset - signature.length := 0x41 - } - if (_sessionKey != ECDSA.recover(ECDSA.toEthSignedMessageHash(userOpHash), signature)) { - return SIG_VALIDATION_FAILED; - } - return packValidationData(validAfter, validUntil); - } - - // to parse batch execute permissions - function _getPermissions(bytes calldata _sig) internal pure returns (Permission[] calldata permissions) { - assembly { - permissions.offset := add(add(_sig.offset, 0x20), calldataload(_sig.offset)) - permissions.length := calldataload(add(_sig.offset, calldataload(_sig.offset))) - } - } - - function _getProofs(bytes calldata _sig) internal pure returns (bytes32[][] calldata proofs) { - assembly { - proofs.length := calldataload(add(_sig.offset, calldataload(add(_sig.offset, 0x20)))) - proofs.offset := add(add(_sig.offset, 0x20), calldataload(add(_sig.offset, 0x20))) - } - } - - // to parse single execute permission - function _getPermission(bytes calldata _sig) - internal - pure - returns (Permission calldata permission, bytes32[] calldata merkleProof) - { - assembly { - permission := add(_sig.offset, calldataload(_sig.offset)) - merkleProof.length := calldataload(add(_sig.offset, calldataload(add(_sig.offset, 0x20)))) - merkleProof.offset := add(add(_sig.offset, 0x20), calldataload(add(_sig.offset, 0x20))) - } - } - - function validateUserOp(UserOperation calldata userOp, bytes32, uint256) - external - payable - returns (ValidationData) - { - // userOp.signature = signer + signature + permission + merkleProof - address sessionKey = address(bytes20(userOp.signature[0:20])); - SessionData storage session = sessionData[sessionKey][msg.sender]; - // nonce starts from 1 - require(session.nonce > nonces[msg.sender].invalidNonce, "SessionKeyValidator: session key not enabled"); - _verifyPaymaster(userOp, session); - - // NOTE: although this is allowed in smart contract, it is guided not to use this feature in most usecases - // instead of setting sudo approval to sessionKey, please set specific permission to sessionKey - if (session.merkleRoot == bytes32(0)) { - return _verifyUserOpHash(sessionKey, session.validAfter, session.validUntil); - } - - bytes calldata callData = userOp.callData; - if ( - bytes4(callData[0:4]) == Kernel.execute.selector - || bytes4(callData[0:4]) == Kernel.executeDelegateCall.selector - ) { - (Permission calldata permission, bytes32[] calldata merkleProof) = _getPermission(userOp.signature[85:]); - (ValidAfter validAfter, bool verifyFailed) = _verifyParam(sessionKey, callData, permission, merkleProof); - if (verifyFailed) { - return SIG_VALIDATION_FAILED; - } - return _verifyUserOpHash(sessionKey, validAfter, session.validUntil); - } else if (bytes4(callData[0:4]) == Kernel.executeBatch.selector) { - Permission[] calldata permissions = _getPermissions(userOp.signature[85:]); - bytes32[][] calldata merkleProof = _getProofs(userOp.signature[85:]); - (ValidAfter validAfter, bool verifyFailed) = _verifyParams(sessionKey, callData, permissions, merkleProof); - if (verifyFailed) { - return SIG_VALIDATION_FAILED; - } - return _verifyUserOpHash(sessionKey, validAfter, session.validUntil); - } else { - return SIG_VALIDATION_FAILED; - } - } - - function _updateValidAfter(Permission calldata permission, bytes32 permissionKey) - internal - returns (ValidAfter validAfter) - { - if (permission.executionRule.interval == 0) { - // no need to update validAfter - validAfter = permission.executionRule.validAfter; - } else { - require( - ValidAfter.unwrap(permission.executionRule.validAfter) != 0, - "SessionKeyValidator: invalid execution rule" - ); - // should update validAfter for executionStatus - ExecutionStatus storage status = executionStatus[permissionKey][msg.sender]; - if (ValidAfter.unwrap(status.validAfter) != 0) { - validAfter = ValidAfter.wrap(ValidAfter.unwrap(status.validAfter) + permission.executionRule.interval); - } else { - validAfter = permission.executionRule.validAfter; - } - status.validAfter = validAfter; - } - // update runs - if (permission.executionRule.runs != 0) { - ExecutionStatus storage status = executionStatus[permissionKey][msg.sender]; - status.runs += 1; - require(status.runs <= permission.executionRule.runs, "SessionKeyValidator: runs exceeded"); - } - return validAfter; - } - - function _verifyParams( - address sessionKey, - bytes calldata callData, - Permission[] calldata _permissions, - bytes32[][] calldata _merkleProof - ) internal returns (ValidAfter maxValidAfter, bool verifyFailed) { - Call[] calldata calls; - assembly { - calls.offset := add(add(callData.offset, 0x24), calldataload(add(callData.offset, 4))) - calls.length := calldataload(add(add(callData.offset, 4), calldataload(add(callData.offset, 4)))) - } - uint256 i = 0; - SessionData storage session = sessionData[sessionKey][msg.sender]; - maxValidAfter = session.validAfter; - for (i = 0; i < calls.length; i++) { - Call calldata call = calls[i]; - Permission calldata permission = _permissions[i]; - require( - permission.target == address(0) || call.to == permission.target, "SessionKeyValidator: target mismatch" - ); - require(uint256(bytes32(call.value)) <= permission.valueLimit, "SessionKeyValidator: value limit exceeded"); - require(verifyPermission(call.data, permission), "SessionKeyValidator: permission verification failed"); - ValidAfter validAfter = - _updateValidAfter(permission, keccak256(abi.encodePacked(session.nonce, permission.index))); - if (ValidAfter.unwrap(validAfter) > ValidAfter.unwrap(maxValidAfter)) { - maxValidAfter = validAfter; - } - if (!MerkleProofLib.verify(_merkleProof[i], session.merkleRoot, keccak256(abi.encode(permission)))) { - return (maxValidAfter, true); - } - } - } - - function _verifyParam( - address sessionKey, - bytes calldata callData, - Permission calldata _permission, - bytes32[] calldata _merkleProof - ) internal returns (ValidAfter validAfter, bool verifyFailed) { - SessionData storage session = sessionData[sessionKey][msg.sender]; - bool isExecute = bytes4(callData[0:4]) == Kernel.execute.selector; - require( - _permission.target == address(0) || address(bytes20(callData[16:36])) == _permission.target, - "SessionKeyValidator: target mismatch" - ); - if (isExecute) { - require( - uint256(bytes32(callData[36:68])) <= _permission.valueLimit, "SessionKeyValidator: value limit exceeded" - ); - } else { - require(_permission.operation == Operation.DelegateCall, "SessionKeyValidator: operation mismatch"); - } - bytes calldata data; - uint8 dataParamOffset = isExecute ? 0x44 : 0x24; - assembly { - let dataOffset := add(add(callData.offset, 0x04), calldataload(add(callData.offset, dataParamOffset))) - let length := calldataload(dataOffset) - data.offset := add(dataOffset, 32) - data.length := length - } - require(verifyPermission(data, _permission), "SessionKeyValidator: permission verification failed"); - validAfter = _updateValidAfter(_permission, keccak256(abi.encodePacked(session.nonce, _permission.index))); - if (ValidAfter.unwrap(validAfter) < ValidAfter.unwrap(session.validAfter)) { - validAfter = session.validAfter; - } - if (!MerkleProofLib.verify(_merkleProof, session.merkleRoot, keccak256(abi.encode(_permission)))) { - return (validAfter, true); - } - } - - function verifyPermission(bytes calldata data, Permission calldata permission) internal pure returns (bool) { - if (bytes4(data[0:4]) != permission.sig) return false; - for (uint256 i = 0; i < permission.rules.length; i++) { - ParamRule calldata rule = permission.rules[i]; - bytes32 param = bytes32(data[4 + rule.offset:4 + rule.offset + 32]); - if (rule.condition == ParamCondition.EQUAL && param != rule.param) { - return false; - } else if (rule.condition == ParamCondition.GREATER_THAN && param <= rule.param) { - return false; - } else if (rule.condition == ParamCondition.LESS_THAN && param >= rule.param) { - return false; - } else if (rule.condition == ParamCondition.GREATER_THAN_OR_EQUAL && param < rule.param) { - return false; - } else if (rule.condition == ParamCondition.LESS_THAN_OR_EQUAL && param > rule.param) { - return false; - } else if (rule.condition == ParamCondition.NOT_EQUAL && param == rule.param) { - return false; - } - } - return true; - } - - function validCaller(address, bytes calldata) external view returns (bool) { - revert NotImplemented(); - } - - function validateSignature(bytes32, bytes calldata) external pure returns (ValidationData) { - revert NotImplemented(); - } -} diff --git a/src/validator/WeightedECDSAValidator.sol b/src/validator/WeightedECDSAValidator.sol index 47921c7c..5189d31d 100644 --- a/src/validator/WeightedECDSAValidator.sol +++ b/src/validator/WeightedECDSAValidator.sol @@ -1,11 +1,19 @@ +// SPDX-License-Identifier: MIT + pragma solidity ^0.8.0; -import "src/common/Types.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; +import "src/types/Types.sol"; import {ECDSA} from "solady/utils/ECDSA.sol"; import {EIP712} from "solady/utils/EIP712.sol"; -import {IKernelValidator} from "src/interfaces/IKernelValidator.sol"; -import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; +import {PackedUserOperation} from "../interfaces/PackedUserOperation.sol"; +import {IValidator} from "../interfaces/IERC7579Modules.sol"; +import { + ERC1271_MAGICVALUE, + ERC1271_INVALID, + SIG_VALIDATION_FAILED_UINT, + MODULE_TYPE_VALIDATOR, + MODULE_TYPE_HOOK +} from "../types/Constants.sol"; struct WeightedECDSAValidatorStorage { uint24 totalWeight; @@ -40,7 +48,7 @@ struct VoteStorage { VoteStatus status; } -contract WeightedECDSAValidator is EIP712, IKernelValidator { +contract WeightedECDSAValidator is EIP712, IValidator { mapping(address kernel => WeightedECDSAValidatorStorage) public weightedStorage; mapping(address guardian => mapping(address kernel => GuardianStorage)) public guardian; mapping(bytes32 callDataAndNonceHash => mapping(address kernel => ProposalStorage)) public proposalStatus; @@ -51,45 +59,34 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { event GuardianRemoved(address indexed guardian, address indexed kernel); function _domainNameAndVersion() internal pure override returns (string memory, string memory) { - return ("WeightedECDSAValidator", "0.0.3"); + return ("WeightedECDSAValidator", "0.0.2"); } - function _addGuardians(address[] memory _guardians, uint24[] memory _weights, address _kernel) internal { - uint24 totalWeight = weightedStorage[_kernel].totalWeight; + function onInstall(bytes calldata _data) external payable override { + (address[] memory _guardians, uint24[] memory _weights, uint24 _threshold, uint48 _delay) = + abi.decode(_data, (address[], uint24[], uint24, uint48)); require(_guardians.length == _weights.length, "Length mismatch"); - uint160 prevGuardian = uint160(weightedStorage[_kernel].firstGuardian); + if (_isInitialized(msg.sender)) revert AlreadyInitialized(msg.sender); + weightedStorage[msg.sender].firstGuardian = msg.sender; for (uint256 i = 0; i < _guardians.length; i++) { - require(_guardians[i] != _kernel, "Guardian cannot be self"); + require(_guardians[i] != msg.sender, "Guardian cannot be self"); require(_guardians[i] != address(0), "Guardian cannot be 0"); require(_weights[i] != 0, "Weight cannot be 0"); - require(guardian[_guardians[i]][_kernel].weight == 0, "Guardian already enabled"); - require(uint160(_guardians[i]) < prevGuardian, "Guardians not sorted"); - guardian[_guardians[i]][_kernel] = - GuardianStorage({weight: _weights[i], nextGuardian: weightedStorage[_kernel].firstGuardian}); - weightedStorage[_kernel].firstGuardian = _guardians[i]; - totalWeight += _weights[i]; - prevGuardian = uint160(_guardians[i]); - emit GuardianAdded(_guardians[i], _kernel, _weights[i]); + require(guardian[_guardians[i]][msg.sender].weight == 0, "Guardian already enabled"); + guardian[_guardians[i]][msg.sender] = + GuardianStorage({weight: _weights[i], nextGuardian: weightedStorage[msg.sender].firstGuardian}); + weightedStorage[msg.sender].firstGuardian = _guardians[i]; + weightedStorage[msg.sender].totalWeight += _weights[i]; + emit GuardianAdded(_guardians[i], msg.sender, _weights[i]); } - weightedStorage[_kernel].totalWeight = totalWeight; - } - - function enable(bytes calldata _data) external payable override { - (address[] memory _guardians, uint24[] memory _weights, uint24 _threshold, uint48 _delay) = - abi.decode(_data, (address[], uint24[], uint24, uint48)); - require(_guardians.length == _weights.length, "Length mismatch"); - require(weightedStorage[msg.sender].totalWeight == 0, "Already enabled"); - weightedStorage[msg.sender].firstGuardian = address(uint160(type(uint160).max)); - _addGuardians(_guardians, _weights, msg.sender); weightedStorage[msg.sender].delay = _delay; weightedStorage[msg.sender].threshold = _threshold; - require(_threshold <= weightedStorage[msg.sender].totalWeight, "Threshold too high"); } - function disable(bytes calldata) external payable override { - require(weightedStorage[msg.sender].totalWeight != 0, "Not enabled"); + function onUninstall(bytes calldata) external payable override { + if (!_isInitialized(msg.sender)) revert NotInitialized(msg.sender); address currentGuardian = weightedStorage[msg.sender].firstGuardian; - while (currentGuardian != address(uint160(type(uint160).max))) { + while (currentGuardian != msg.sender) { address nextGuardian = guardian[currentGuardian][msg.sender].nextGuardian; emit GuardianRemoved(currentGuardian, msg.sender); delete guardian[currentGuardian][msg.sender]; @@ -98,11 +95,23 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { delete weightedStorage[msg.sender]; } + function isModuleType(uint256 moduleTypeId) external pure returns (bool) { + return moduleTypeId == MODULE_TYPE_VALIDATOR; + } + + function isInitialized(address smartAccount) external view returns (bool) { + return _isInitialized(smartAccount); + } + + function _isInitialized(address smartAccount) internal view returns (bool) { + return weightedStorage[smartAccount].totalWeight != 0; + } + function renew(address[] calldata _guardians, uint24[] calldata _weights, uint24 _threshold, uint48 _delay) external payable { - require(weightedStorage[msg.sender].totalWeight != 0, "Not enabled"); + if (!_isInitialized(msg.sender)) revert NotInitialized(msg.sender); address currentGuardian = weightedStorage[msg.sender].firstGuardian; while (currentGuardian != msg.sender) { address nextGuardian = guardian[currentGuardian][msg.sender].nextGuardian; @@ -112,13 +121,23 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { } delete weightedStorage[msg.sender]; require(_guardians.length == _weights.length, "Length mismatch"); - weightedStorage[msg.sender].firstGuardian = _guardians[0]; - _addGuardians(_guardians, _weights, msg.sender); + weightedStorage[msg.sender].firstGuardian = msg.sender; + for (uint256 i = 0; i < _guardians.length; i++) { + require(_guardians[i] != msg.sender, "Guardian cannot be self"); + require(_guardians[i] != address(0), "Guardian cannot be 0"); + require(_weights[i] != 0, "Weight cannot be 0"); + require(guardian[_guardians[i]][msg.sender].weight == 0, "Guardian already enabled"); + guardian[_guardians[i]][msg.sender] = + GuardianStorage({weight: _weights[i], nextGuardian: weightedStorage[msg.sender].firstGuardian}); + weightedStorage[msg.sender].firstGuardian = _guardians[i]; + weightedStorage[msg.sender].totalWeight += _weights[i]; + emit GuardianAdded(_guardians[i], msg.sender, _weights[i]); + } weightedStorage[msg.sender].delay = _delay; weightedStorage[msg.sender].threshold = _threshold; } - function approve(bytes32 _callDataAndNonceHash, address _kernel) external { + function approve(bytes32 _callDataAndNonceHash, address _kernel) external payable { require(guardian[msg.sender][_kernel].weight != 0, "Guardian not enabled"); require(weightedStorage[_kernel].threshold != 0, "Kernel not enabled"); ProposalStorage storage proposal = proposalStatus[_callDataAndNonceHash][_kernel]; @@ -133,7 +152,7 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { } } - function approveWithSig(bytes32 _callDataAndNonceHash, address _kernel, bytes calldata sigs) external { + function approveWithSig(bytes32 _callDataAndNonceHash, address _kernel, bytes calldata sigs) external payable { uint256 sigCount = sigs.length / 65; require(weightedStorage[_kernel].threshold != 0, "Kernel not enabled"); ProposalStorage storage proposal = proposalStatus[_callDataAndNonceHash][_kernel]; @@ -157,7 +176,7 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { } } - function veto(bytes32 _callDataAndNonceHash) external { + function veto(bytes32 _callDataAndNonceHash) external payable { ProposalStorage storage proposal = proposalStatus[_callDataAndNonceHash][msg.sender]; require( proposal.status == ProposalStatus.Ongoing || proposal.status == ProposalStatus.Approved, @@ -166,23 +185,24 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { proposal.status = ProposalStatus.Rejected; } - function validateUserOp(UserOperation calldata userOp, bytes32 userOpHash, uint256) + function validateUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash) external payable - returns (ValidationData validationData) + override + returns (uint256) { bytes32 callDataAndNonceHash = keccak256(abi.encode(userOp.sender, userOp.callData, userOp.nonce)); ProposalStorage storage proposal = proposalStatus[callDataAndNonceHash][msg.sender]; WeightedECDSAValidatorStorage storage strg = weightedStorage[msg.sender]; if (strg.threshold == 0) { - return SIG_VALIDATION_FAILED; + return SIG_VALIDATION_FAILED_UINT; } (uint256 totalWeight, bool passed) = getApproval(msg.sender, callDataAndNonceHash); uint256 threshold = strg.threshold; if (proposal.status == ProposalStatus.Ongoing && !passed) { if (strg.delay != 0) { // if delay > 0, only allow proposal to be approved before execution - return SIG_VALIDATION_FAILED; + return SIG_VALIDATION_FAILED_UINT; } bytes calldata sig = userOp.signature; // parse sig with 65 bytes @@ -222,18 +242,13 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { return packValidationData(ValidAfter.wrap(0), ValidUntil.wrap(0)); } } else if (proposal.status == ProposalStatus.Approved || passed) { - if (userOp.paymasterAndData.length == 0 || address(bytes20(userOp.paymasterAndData[0:20])) == address(0)) { - address signer = ECDSA.recover(ECDSA.toEthSignedMessageHash(userOpHash), userOp.signature); - if (guardian[signer][msg.sender].weight != 0) { - proposal.status = ProposalStatus.Executed; - return packValidationData(proposal.validAfter, ValidUntil.wrap(0)); - } - } else { + address signer = ECDSA.recover(ECDSA.toEthSignedMessageHash(userOpHash), userOp.signature); + if (guardian[signer][msg.sender].weight != 0) { proposal.status = ProposalStatus.Executed; return packValidationData(proposal.validAfter, ValidUntil.wrap(0)); } } - return SIG_VALIDATION_FAILED; + return SIG_VALIDATION_FAILED_UINT; } function getApproval(address kernel, bytes32 hash) public view returns (uint256 approvals, bool passed) { @@ -247,36 +262,33 @@ contract WeightedECDSAValidator is EIP712, IKernelValidator { approvals += guardian[currentGuardian][kernel].weight; } } - passed = approvals >= strg.threshold; - } - - function validCaller(address, bytes calldata) external view override returns (bool) { - return false; + ProposalStorage storage proposal = proposalStatus[hash][kernel]; + if (proposal.status == ProposalStatus.Rejected) { + passed = false; + } else { + passed = approvals >= strg.threshold; + } } - function validateSignature(bytes32 hash, bytes calldata signature) external view returns (ValidationData) { + function isValidSignatureWithSender(address, bytes32 hash, bytes calldata data) external view returns (bytes4) { WeightedECDSAValidatorStorage storage strg = weightedStorage[msg.sender]; if (strg.threshold == 0) { - return SIG_VALIDATION_FAILED; + return ERC1271_INVALID; } - uint256 sigCount = signature.length / 65; + uint256 sigCount = data.length / 65; if (sigCount == 0) { - return SIG_VALIDATION_FAILED; + return ERC1271_INVALID; } uint256 totalWeight = 0; - address prevSigner = address(uint160(type(uint160).max)); + address signer; for (uint256 i = 0; i < sigCount; i++) { - address signer = ECDSA.recover(hash, signature[i * 65:(i + 1) * 65]); + signer = ECDSA.recover(hash, data[i * 65:(i + 1) * 65]); totalWeight += guardian[signer][msg.sender].weight; if (totalWeight >= strg.threshold) { - return packValidationData(ValidAfter.wrap(0), ValidUntil.wrap(0)); - } - if (signer >= prevSigner) { - return SIG_VALIDATION_FAILED; + return ERC1271_MAGICVALUE; } - prevSigner = signer; } - return SIG_VALIDATION_FAILED; + return ERC1271_INVALID; } } diff --git a/src/validator/modularPermission/IPolicy.sol b/src/validator/modularPermission/IPolicy.sol deleted file mode 100644 index a57b8148..00000000 --- a/src/validator/modularPermission/IPolicy.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity ^0.8.0; - -import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; - -interface IPolicy { - function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) external payable; - function checkUserOpPolicy( - address kernel, - bytes32 permissionId, - UserOperation calldata userOp, - bytes calldata proofAndSig - ) external payable returns (ValidationData); - function validateSignature( - address kernel, - address caller, - bytes32 permissionId, - bytes32 messageHash, - bytes32 rawHash, - bytes calldata signature - ) external view returns (ValidationData); -} diff --git a/src/validator/modularPermission/ISigner.sol b/src/validator/modularPermission/ISigner.sol deleted file mode 100644 index 885cc8ed..00000000 --- a/src/validator/modularPermission/ISigner.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.8.0; - -import {ValidationData} from "src/common/Types.sol"; -import {ValidAfter, ValidUntil, packValidationData} from "src/common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; - -interface ISigner { - function registerSigner(address kernel, bytes32 permissionId, bytes calldata signerData) external payable; - function validateUserOp(address kernel, bytes32 permissionId, bytes32 userOpHash, bytes calldata signature) - external - payable - returns (ValidationData); - function validateSignature(address kernel, bytes32 permissionId, bytes32 messageHash, bytes calldata signature) - external - view - returns (ValidationData); -} diff --git a/src/validator/modularPermission/ModularPermissionValidator.sol b/src/validator/modularPermission/ModularPermissionValidator.sol deleted file mode 100644 index 68008b93..00000000 --- a/src/validator/modularPermission/ModularPermissionValidator.sol +++ /dev/null @@ -1,280 +0,0 @@ -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ValidationData, ValidAfter, ValidUntil} from "src/common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; -import {IKernelValidator} from "src/interfaces/IKernelValidator.sol"; -import {ISigner} from "./ISigner.sol"; -import {IPolicy} from "./IPolicy.sol"; -import {_intersectValidationData} from "src/utils/KernelHelper.sol"; -import {PolicyConfig, PolicyConfigLib, toFlag, MAX_FLAG} from "./PolicyConfig.sol"; -import "forge-std/console.sol"; - -struct Permission { - uint128 nonce; - bytes12 flag; // flag represents what permission can do - ISigner signer; - PolicyConfig firstPolicy; - ValidAfter validAfter; - ValidUntil validUntil; -} - -struct Nonce { - uint128 lastNonce; - uint128 revoked; -} - -/// @title ModularPermissionValidator -/// @notice Validator that allows to register and revoke permissions -/// @dev modular architecture to allow composable permission system -contract ModularPermissionValidator is IKernelValidator { - mapping(address => bytes32) public priorityPermission; - mapping(bytes32 permissionId => mapping(address kernel => Permission)) public permissions; - mapping(bytes32 permissionId => mapping(PolicyConfig policy => mapping(address kernel => PolicyConfig))) public - nextPolicy; - mapping(address kernel => Nonce) public nonces; - - event PermissionRegistered(address kernel, bytes32 permissionId); - event PermissionRevoked(address kernel, bytes32 permissionId); - event NonceRevoked(address kernel, uint256 nonce); - - function getPermissionId( - bytes12 flag, - ISigner signer, - ValidAfter validAfter, - ValidUntil validUntil, - PolicyConfig[] calldata _policyConfig, - bytes calldata signerData, - bytes[] calldata policyData - ) public pure returns (bytes32) { - return keccak256( - abi.encode( - flag, - signer, - ValidAfter.unwrap(validAfter), - ValidUntil.unwrap(validUntil), - _policyConfig, - signerData, - policyData - ) - ); - } - - function parseData(bytes calldata data) - public - pure - returns ( - uint128 nonce, - bytes12 flag, - ISigner signer, - ValidAfter validAfter, - ValidUntil validUntil, - PolicyConfig[] calldata policies, - bytes calldata signerData, - bytes[] calldata policyData - ) - { - nonce = uint128(bytes16(data[0:16])); - flag = bytes12(data[16:28]); - validAfter = ValidAfter.wrap(uint48(bytes6(data[28:34]))); - validUntil = ValidUntil.wrap(uint48(bytes6(data[34:40]))); - signer = ISigner(address(bytes20(data[40:60]))); - assembly { - let offset := add(data.offset, 60) - policies.offset := add(add(offset, 32), calldataload(offset)) - policies.length := calldataload(sub(policies.offset, 32)) - signerData.offset := add(add(offset, 32), calldataload(add(offset, 32))) - signerData.length := calldataload(sub(signerData.offset, 32)) - policyData.offset := add(add(offset, 32), calldataload(add(offset, 64))) - policyData.length := calldataload(sub(policyData.offset, 32)) - } - } - - function enable(bytes calldata data) external payable { - ( - uint128 nonce, - bytes12 flag, - ISigner signer, - ValidAfter validAfter, - ValidUntil validUntil, - PolicyConfig[] calldata policies, - bytes calldata signerData, - bytes[] calldata policyData - ) = parseData(data); - registerPermission(nonce, flag, signer, validAfter, validUntil, policies, signerData, policyData); - } - - function registerPermission( - uint128 nonce, - bytes12 flag, - ISigner signer, - ValidAfter validAfter, - ValidUntil validUntil, - PolicyConfig[] calldata policy, - bytes calldata signerData, - bytes[] calldata policyData - ) public payable { - require(flag != toFlag(0), "flag should not be empty"); - require( - nonce == nonces[msg.sender].lastNonce || nonce == nonces[msg.sender].lastNonce + 1, "nonce should be next" - ); - nonces[msg.sender].lastNonce++; - bytes32 permissionId = getPermissionId(flag, signer, validAfter, validUntil, policy, signerData, policyData); - if (flag == MAX_FLAG) { - priorityPermission[msg.sender] = permissionId; - } - - bytes12 maxFlag = flag; - for (uint256 i = 0; i < policy.length; i++) { - //TODO make sure address of the policy is sorted - PolicyConfigLib.getAddress(policy[i]).registerPolicy(msg.sender, permissionId, policyData[i]); - // NOTE: flag for policy is inverted version of flag for permission; - bytes12 currentFlag = PolicyConfigLib.getFlags(policy[i]); - // turn off flags that are used, - // meaning that remaining maxFlag will indicate the permissions that are not used on this permission - maxFlag = currentFlag & maxFlag; - } - signer.registerSigner(msg.sender, permissionId, signerData); - - PolicyConfig firstPolicy = policy[0]; // NOTE : policy should not be empty array - require(maxFlag == bytes12(0), "error : permission flag exceeds policy flag"); - permissions[permissionId][msg.sender] = Permission(nonce, flag, signer, firstPolicy, validAfter, validUntil); - for (uint256 i = 1; i < policy.length; i++) { - nextPolicy[permissionId][policy[i - 1]][msg.sender] = policy[i]; - } - emit PermissionRegistered(msg.sender, permissionId); - } - - function disable(bytes calldata data) external payable { - if (data.length == 32) { - revokePermission(bytes32(data)); - } else { - revokePermission(uint128(bytes16(data))); - } - } - - function revokePermission(bytes32 permissionId) public payable { - permissions[permissionId][msg.sender].flag = toFlag(0); // NOTE: making flag == 0 makes it invalid - emit PermissionRevoked(msg.sender, permissionId); - } - - function revokePermission(uint128 nonce) public payable { - nonces[msg.sender].revoked = nonce; - emit NonceRevoked(msg.sender, nonce); - } - - function validateUserOp(UserOperation calldata _userOp, bytes32 _userOpHash, uint256) - external - payable - returns (ValidationData validationData) - { - require(_userOp.sender == msg.sender, "sender must be msg.sender"); - bytes32 permissionId = bytes32(_userOp.signature[0:32]); - if ( - permissions[permissionId][msg.sender].flag & toFlag(1) == toFlag(0) - || nonces[msg.sender].revoked > permissions[permissionId][msg.sender].nonce - ) { - return SIG_VALIDATION_FAILED; - } - Permission memory permission = permissions[permissionId][msg.sender]; - PolicyConfig policy = permission.firstPolicy; - uint256 cursor = 32; - while (address(PolicyConfigLib.getAddress(policy)) != address(0)) { - if (PolicyConfigLib.skipOnValidateUserOp(policy)) { - policy = nextPolicy[permissionId][policy][msg.sender]; - continue; - } - bytes calldata policyData; - if ( - _userOp.signature.length >= cursor + 52 - && address(bytes20(_userOp.signature[cursor:cursor + 20])) - == address(PolicyConfigLib.getAddress(policy)) - ) { - // only when policy address is same as the one in signature - uint256 length = uint256(bytes32(_userOp.signature[cursor + 20:cursor + 52])); - require(_userOp.signature.length >= cursor + 52 + length, "policyData length exceeds signature length"); - policyData = _userOp.signature[cursor + 52:cursor + 52 + length]; // [policyAddress, policyDataLength, policyData] - cursor += 52 + length; - } else { - policyData = _userOp.signature[cursor:cursor]; - } - ValidationData policyValidation = - PolicyConfigLib.getAddress(policy).checkUserOpPolicy(msg.sender, permissionId, _userOp, policyData); - validationData = _intersectValidationData(validationData, policyValidation); - policy = nextPolicy[permissionId][policy][msg.sender]; - } - ValidationData signatureValidation = - permission.signer.validateUserOp(msg.sender, permissionId, _userOpHash, _userOp.signature[cursor:]); - validationData = _intersectValidationData(validationData, signatureValidation); - } - - function validCaller(address caller, bytes calldata data) external view override returns (bool) { - revert("not implemented"); - } - - struct ValidationSigMemory { - address caller; - bytes32 permissionId; - bytes32 rawHash; - uint256 cursor; - PolicyConfig policy; - } - - function validateSignature(bytes32 hash, bytes calldata signature) - external - view - override - returns (ValidationData validationData) - { - ValidationSigMemory memory sigMemory; - sigMemory.permissionId = bytes32(signature[0:32]); - if ( - nonces[msg.sender].revoked > permissions[sigMemory.permissionId][msg.sender].nonce - || permissions[sigMemory.permissionId][msg.sender].flag & toFlag(2) == toFlag(0) - ) { - return SIG_VALIDATION_FAILED; - } - Permission memory permission = permissions[sigMemory.permissionId][msg.sender]; - // signature should be packed with - // (permissionId, [proof || signature]) - // (permissionId, [ (policyAddress) + (policyProof) || signature] - bytes calldata proofAndSignature; //) = abi.decode(signature[32:], (bytes, bytes)); - assembly { - proofAndSignature.offset := add(signature.offset, 32) - proofAndSignature.length := sub(signature.length, 32) - } - - sigMemory.cursor = 0; - sigMemory.policy = permission.firstPolicy; - sigMemory.caller = address(bytes20(msg.data[msg.data.length - 20:])); - sigMemory.rawHash = bytes32(msg.data[msg.data.length - 52:msg.data.length - 20]); - while (address(PolicyConfigLib.getAddress(sigMemory.policy)) != address(0)) { - if (PolicyConfigLib.skipOnValidateSignature(sigMemory.policy)) { - sigMemory.policy = nextPolicy[sigMemory.permissionId][sigMemory.policy][msg.sender]; - continue; - } - bytes calldata policyData; - if ( - address(bytes20(proofAndSignature[sigMemory.cursor:sigMemory.cursor + 20])) - == address(PolicyConfigLib.getAddress(sigMemory.policy)) - ) { - // only when policy address is same as the one in signature - uint256 length = uint256(bytes32(proofAndSignature[sigMemory.cursor + 20:sigMemory.cursor + 52])); - policyData = proofAndSignature[sigMemory.cursor + 52:]; // [policyAddress, policyDataLength, policyData] - sigMemory.cursor += 52 + length; - } else { - policyData = proofAndSignature[sigMemory.cursor:sigMemory.cursor]; - // not move cursor here - } - ValidationData policyValidation = PolicyConfigLib.getAddress(sigMemory.policy).validateSignature( - msg.sender, sigMemory.caller, sigMemory.permissionId, hash, sigMemory.rawHash, policyData - ); - validationData = _intersectValidationData(validationData, policyValidation); - sigMemory.policy = nextPolicy[sigMemory.permissionId][sigMemory.policy][msg.sender]; - } - ValidationData signatureValidation = permission.signer.validateSignature( - msg.sender, sigMemory.permissionId, hash, proofAndSignature[sigMemory.cursor:] - ); - validationData = _intersectValidationData(validationData, signatureValidation); - } -} diff --git a/src/validator/modularPermission/PolicyConfig.sol b/src/validator/modularPermission/PolicyConfig.sol deleted file mode 100644 index 9ac1da26..00000000 --- a/src/validator/modularPermission/PolicyConfig.sol +++ /dev/null @@ -1,67 +0,0 @@ -pragma solidity ^0.8.0; - -import "./IPolicy.sol"; - -type PolicyConfig is bytes32; - -function toFlag(uint256 x) pure returns (bytes12) { - return bytes12(bytes32(x << 160)); -} - -function toPermissionFlag(uint256 x) pure returns (bytes12) { - bytes12 ret = bytes12(bytes32(x << 160)); - assembly { - ret := not(ret) - } - return ret; -} - -bytes12 constant MAX_FLAG = 0xffffffffffffffffffffffff; -// PolicyData is a 32 bytes array that contains the address of the policy -// [flags(12 bytes), address(20 bytes)] -// flags is 96 bits that contains the following information -// from last to first bit -// 1 bit : not for validatUserOp -// 1 bit : not for validateSignature -// 1 bit : not for validateCaller - -library PolicyConfigLib { - function pack(IPolicy addr, bytes12 flag) internal pure returns (PolicyConfig data) { - assembly { - data := or(addr, flag) - } - } - - function getAddress(PolicyConfig data) internal pure returns (IPolicy policy) { - assembly { - policy := and(data, 0xffffffffffffffffffffffffffffffffffffffff) - } - } - - function getFlags(PolicyConfig data) internal pure returns (bytes12 flags) { - assembly { - flags := shr(160, data) - } - } - - function skipOnValidateUserOp(PolicyConfig data) internal pure returns (bool result) { - assembly { - let flags := shr(160, data) - result := and(flags, 0x1) - } - } - - function skipOnValidateSignature(PolicyConfig data) internal pure returns (bool result) { - assembly { - let flags := shr(161, data) - result := and(flags, 0x1) - } - } - - function skipOnValidateCaller(PolicyConfig data) internal pure returns (bool result) { - assembly { - let flags := shr(162, data) - result := and(flags, 0x1) - } - } -} diff --git a/src/validator/modularPermission/mock/MockPolicy.sol b/src/validator/modularPermission/mock/MockPolicy.sol deleted file mode 100644 index 7b3384f2..00000000 --- a/src/validator/modularPermission/mock/MockPolicy.sol +++ /dev/null @@ -1,49 +0,0 @@ -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; -import {IPolicy} from "../IPolicy.sol"; - -contract MockPolicy is IPolicy { - ValidationData public validationData; - mapping(bytes32 => uint256) public count; - bytes public policyData; - bool public revertOnSignature; - - function mock(uint48 validAfter, uint48 validUntil, bool success, bool revertOnSig) external { - validationData = success - ? packValidationData(ValidAfter.wrap(validAfter), ValidUntil.wrap(validUntil)) - : SIG_VALIDATION_FAILED; - revertOnSignature = revertOnSig; - } - - function registerPolicy(address, bytes32, bytes calldata data) external payable override { - // do nothing - policyData = data; - } - - function checkUserOpPolicy(address, bytes32 permissionId, UserOperation calldata, bytes calldata) - external - payable - override - returns (ValidationData) - { - count[permissionId]++; - return validationData; - } - - function validateSignature( - address kernel, - address caller, - bytes32 permissionId, - bytes32 messageHash, - bytes32 rawHash, - bytes calldata signature - ) external view override returns (ValidationData) { - if (revertOnSignature) { - revert("MockPolicy: signature validation failed"); - } - return validationData; - } -} diff --git a/src/validator/modularPermission/mock/MockRequestor.sol b/src/validator/modularPermission/mock/MockRequestor.sol deleted file mode 100644 index d6b4872a..00000000 --- a/src/validator/modularPermission/mock/MockRequestor.sol +++ /dev/null @@ -1,11 +0,0 @@ -pragma solidity ^0.8.0; - -interface KernelERC1271 { - function isValidSignature(bytes32 hash, bytes calldata signature) external view returns (bytes4); -} - -contract MockRequestor { - function verifySignature(address kernel, bytes32 hash, bytes calldata signature) external payable returns (bool) { - return KernelERC1271(kernel).isValidSignature(hash, signature) == 0x1626ba7e; - } -} diff --git a/src/validator/modularPermission/mock/MockSigner.sol b/src/validator/modularPermission/mock/MockSigner.sol deleted file mode 100644 index f323b8c2..00000000 --- a/src/validator/modularPermission/mock/MockSigner.sol +++ /dev/null @@ -1,42 +0,0 @@ -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; -import {ISigner} from "../ISigner.sol"; - -contract MockSigner is ISigner { - ValidationData public validationData; - mapping(bytes32 => uint256) public count; - bytes public signerData; - - function mock(uint48 validAfter, uint48 validUntil, bool success) external { - validationData = success - ? packValidationData(ValidAfter.wrap(validAfter), ValidUntil.wrap(validUntil)) - : SIG_VALIDATION_FAILED; - } - - function registerSigner(address, bytes32, bytes calldata data) external payable override { - // do nothing - signerData = data; - } - - function validateUserOp(address, bytes32 permissionId, bytes32, bytes calldata) - external - payable - override - returns (ValidationData) - { - count[permissionId]++; - return validationData; - } - - function validateSignature(address, bytes32, bytes32, bytes calldata) - external - view - override - returns (ValidationData) - { - return validationData; - } -} diff --git a/src/validator/modularPermission/policies/EIP712Policy.sol b/src/validator/modularPermission/policies/EIP712Policy.sol deleted file mode 100644 index f23836ed..00000000 --- a/src/validator/modularPermission/policies/EIP712Policy.sol +++ /dev/null @@ -1,131 +0,0 @@ -pragma solidity ^0.8.0; - -import "../IPolicy.sol"; - -// does not support nested parameters, -// only allow checking, -// 1. domain separator -// 2. typeHash -// 3. encodeData => only allows 32 bytes of parameter in encodeData, if you are dealing with dynamic value, you need to pass in the keccak256 hash of the value -struct EncodeDataRule { - uint32 index; - bytes32 value; - ParamRule rule; -} - -struct AllowedEIP712Params { - bytes32 domainSeparator; - bytes32 typeHash; - EncodeDataRule encodeDataRule; -} - -enum ParamRule { - NA, - Equal, - NotEqual, - GreaterThan, - GreaterThanOrEqual, - LessThan, - LessThanOrEqual -} - -contract EIP712Policy is IPolicy { - mapping( - bytes32 permissionId => mapping(address permissionValidator => mapping(address kernel => AllowedEIP712Params)) - ) public eip712Param; - mapping( - bytes32 permissionId - => mapping( - address permissionValidator => mapping(bytes32 encodeData => mapping(address kernel => EncodeDataRule)) - ) - ) public nextEncodeData; - - function registerPolicy(address _kernel, bytes32 _permissionId, bytes calldata _data) external payable override { - bytes32 domainSeparator = bytes32(_data[0:32]); - bytes32 typeHash = bytes32(_data[32:64]); - uint32 index = uint32(bytes4(_data[64:68])); - ParamRule rule = ParamRule(uint8(bytes1(_data[68]))); - bytes32 encodeData = bytes32(_data[69:101]); - uint256 cursor = 101; - EncodeDataRule memory encodeDataRule = EncodeDataRule(index, encodeData, rule); - eip712Param[_permissionId][msg.sender][_kernel] = AllowedEIP712Params(domainSeparator, typeHash, encodeDataRule); - while (cursor <= _data.length - 37) { - index = uint32(bytes4(_data[cursor:cursor + 4])); - rule = ParamRule(uint8(bytes1(_data[cursor + 4]))); - bytes32 nextEncodeParam = bytes32(_data[cursor + 5:cursor + 37]); - nextEncodeData[_permissionId][msg.sender][encodeData][_kernel] = - EncodeDataRule(index, nextEncodeParam, rule); - cursor += 37; - } - } - - function checkUserOpPolicy( - address _kernel, - bytes32 _permissionId, - UserOperation calldata _userOp, - bytes calldata _policyProof - ) external payable override returns (ValidationData) { - // do nothing on userOp validation - return ValidationData.wrap(0); - } - - function validateSignature( - address _kernel, - address _caller, - bytes32 _permissionId, - bytes32 _messageHash, - bytes32 _rawHash, - bytes calldata _signature - ) external view override returns (ValidationData) { - AllowedEIP712Params memory allowedEIP712Params = eip712Param[_permissionId][msg.sender][_kernel]; - bytes32[] memory encodedData = new bytes32[](uint32(bytes4(_signature[64:68]))); - uint256 cursor = 68; - for (uint32 i = 0; i < encodedData.length; i++) { - encodedData[i] = bytes32(_signature[cursor:cursor + 32]); - cursor += 32; - } - { - bytes32 domainSeparator = bytes32(_signature[0:32]); - bytes32 typeHash = bytes32(_signature[32:64]); - if ( - allowedEIP712Params.domainSeparator | domainSeparator != domainSeparator - || allowedEIP712Params.typeHash | typeHash != typeHash - ) { - return SIG_VALIDATION_FAILED; - } - bytes32 structHash = keccak256(abi.encodePacked(typeHash, encodedData)); - bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); - require(digest == _rawHash, "digest != _rawHash"); - } - EncodeDataRule memory encodeDataRule = allowedEIP712Params.encodeDataRule; - while (encodeDataRule.rule != ParamRule.NA) { - if (encodeDataRule.rule == ParamRule.Equal) { - if (encodedData[encodeDataRule.index] != encodeDataRule.value) { - return SIG_VALIDATION_FAILED; - } - } else if (encodeDataRule.rule == ParamRule.NotEqual) { - if (encodedData[encodeDataRule.index] == encodeDataRule.value) { - return SIG_VALIDATION_FAILED; - } - } else if (encodeDataRule.rule == ParamRule.GreaterThan) { - if (encodedData[encodeDataRule.index] <= encodeDataRule.value) { - return SIG_VALIDATION_FAILED; - } - } else if (encodeDataRule.rule == ParamRule.GreaterThanOrEqual) { - if (encodedData[encodeDataRule.index] < encodeDataRule.value) { - return SIG_VALIDATION_FAILED; - } - } else if (encodeDataRule.rule == ParamRule.LessThan) { - if (encodedData[encodeDataRule.index] >= encodeDataRule.value) { - return SIG_VALIDATION_FAILED; - } - } else if (encodeDataRule.rule == ParamRule.LessThanOrEqual) { - if (encodedData[encodeDataRule.index] > encodeDataRule.value) { - return SIG_VALIDATION_FAILED; - } - } - encodeDataRule = nextEncodeData[_permissionId][_caller][encodeDataRule.value][_kernel]; - } - return ValidationData.wrap(0); - } -} diff --git a/src/validator/modularPermission/policies/ExecutePolicy.sol b/src/validator/modularPermission/policies/ExecutePolicy.sol deleted file mode 100644 index 4ca7f917..00000000 --- a/src/validator/modularPermission/policies/ExecutePolicy.sol +++ /dev/null @@ -1,50 +0,0 @@ -pragma solidity ^0.8.0; - -import "../IPolicy.sol"; - -struct ExecutionConfig { - uint48 interval; - uint48 count; - ValidAfter startAt; -} - -contract ExecutePolicy is IPolicy { - mapping(address permissionValidator => mapping(bytes32 permissionId => mapping(address kernel => ExecutionConfig))) - public executionConfigs; - - function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) - external - payable - override - { - uint48 delay = uint48(bytes6(policyData[0:6])); - uint48 count = uint48(bytes6(policyData[6:12])); - uint48 startAt = uint48(bytes6(policyData[12:18])); - executionConfigs[msg.sender][permissionId][kernel] = ExecutionConfig(delay, count, ValidAfter.wrap(startAt)); - } - - function checkUserOpPolicy(address kernel, bytes32 permissionId, UserOperation calldata, bytes calldata) - external - payable - override - returns (ValidationData) - { - ExecutionConfig memory config = executionConfigs[msg.sender][permissionId][kernel]; - if (config.count == 0) { - return SIG_VALIDATION_FAILED; - } - executionConfigs[msg.sender][permissionId][kernel].count = config.count - 1; - executionConfigs[msg.sender][permissionId][kernel].startAt = - ValidAfter.wrap(ValidAfter.unwrap(config.startAt) + config.interval); - return packValidationData(config.startAt, ValidUntil.wrap(0)); - } - - function validateSignature(address, address, bytes32, bytes32, bytes32, bytes calldata) - external - view - override - returns (ValidationData) - { - return ValidationData.wrap(0); - } -} diff --git a/src/validator/modularPermission/policies/GasPolicy.sol b/src/validator/modularPermission/policies/GasPolicy.sol deleted file mode 100644 index 8d0cbeaa..00000000 --- a/src/validator/modularPermission/policies/GasPolicy.sol +++ /dev/null @@ -1,58 +0,0 @@ -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ValidationData, ValidUntil, ValidAfter, packValidationData} from "src/common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "src/common/Constants.sol"; -import {IPolicy} from "../IPolicy.sol"; - -contract GasPolicy is IPolicy { - struct GasPolicyConfig { - uint128 allowed; - bool enforcePaymaster; - address allowedPaymaster; - } - - mapping(address permissionValidator => mapping(bytes32 permissionId => mapping(address kernel => GasPolicyConfig))) - public gasPolicyConfig; - - function registerPolicy(address kernel, bytes32 permissionId, bytes calldata data) external payable override { - (uint128 allowed, bool enforcePaymaster, address allowedPaymaster) = abi.decode(data, (uint128, bool, address)); - gasPolicyConfig[msg.sender][permissionId][kernel] = GasPolicyConfig(allowed, enforcePaymaster, allowedPaymaster); - } - - function checkUserOpPolicy(address kernel, bytes32 permissionId, UserOperation calldata userOp, bytes calldata) - external - payable - override - returns (ValidationData) - { - uint128 maxAmount = uint128( - (userOp.preVerificationGas + userOp.verificationGasLimit + userOp.callGasLimit) * userOp.maxFeePerGas - ); - if (gasPolicyConfig[msg.sender][permissionId][kernel].enforcePaymaster) { - if ( - gasPolicyConfig[msg.sender][permissionId][kernel].allowedPaymaster != address(0) - && address(bytes20(userOp.paymasterAndData[0:20])) - != gasPolicyConfig[msg.sender][permissionId][kernel].allowedPaymaster - ) { - return SIG_VALIDATION_FAILED; - } - } - if (maxAmount > gasPolicyConfig[msg.sender][permissionId][kernel].allowed) { - return SIG_VALIDATION_FAILED; - } - gasPolicyConfig[msg.sender][permissionId][kernel].allowed -= maxAmount; - return ValidationData.wrap(0); - } - - function validateSignature( - address kernel, - address caller, - bytes32 permissionId, - bytes32 messageHash, - bytes32 rawHash, - bytes calldata signature - ) external view override returns (ValidationData) { - return ValidationData.wrap(0); - } -} diff --git a/src/validator/modularPermission/policies/MerklePolicy.sol b/src/validator/modularPermission/policies/MerklePolicy.sol deleted file mode 100644 index 796714a6..00000000 --- a/src/validator/modularPermission/policies/MerklePolicy.sol +++ /dev/null @@ -1,180 +0,0 @@ -pragma solidity ^0.8.0; - -import "../IPolicy.sol"; -import {Kernel} from "../../../Kernel.sol"; -import {ParamCondition, Operation} from "../../../common/Enums.sol"; -import {Call} from "../../../common/Structs.sol"; -import {MerkleProofLib} from "solady/utils/MerkleProofLib.sol"; - -struct Permission { - address target; - bytes4 sig; - uint256 valueLimit; - ParamRule[] rules; - Operation operation; -} - -struct ParamRule { - uint256 offset; - ParamCondition condition; - bytes32 param; -} - -contract MerklePolicy is IPolicy { - error MerklePolicyError(uint256 code); // todo: should policy revert instead of returning SIG_VALIDATION_FAILED? - - mapping(address permissionValidator => mapping(bytes32 => mapping(address => bytes32))) public merkleRoot; - - function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) external payable { - bytes32 root = bytes32(policyData[0:32]); - merkleRoot[msg.sender][permissionId][kernel] = root; - } - - function checkUserOpPolicy( - address kernel, - bytes32 permissionId, - UserOperation calldata userOp, - bytes calldata proof - ) external payable returns (ValidationData) { - bytes calldata callData = userOp.callData; - bytes32 root = merkleRoot[msg.sender][permissionId][kernel]; - bytes4 sig = bytes4(callData[0:4]); - if (sig == Kernel.execute.selector || sig == Kernel.executeDelegateCall.selector) { - (Permission calldata permission, bytes32[] calldata merkleProof) = _getPermission(proof); - bool verifyFailed = _verifyParam(root, callData, permission, merkleProof); - if (verifyFailed) { - revert MerklePolicyError(1); // merkle proof verification failed - } - return ValidationData.wrap(0); - } else if (sig == Kernel.executeBatch.selector) { - Permission[] calldata permissions = _getPermissions(proof); - bytes32[][] calldata merkleProof = _getProofs(proof); - bool verifyFailed = _verifyParams(root, callData, permissions, merkleProof); - if (verifyFailed) { - revert MerklePolicyError(1); // merkle proof verification failed - } - return ValidationData.wrap(0); - } else { - revert MerklePolicyError(0); // unknown selector - } - } - - function _verifyParams( - bytes32 root, - bytes calldata callData, - Permission[] calldata _permissions, - bytes32[][] calldata _merkleProof - ) internal pure returns (bool verifyFailed) { - Call[] calldata calls; - assembly { - calls.offset := add(add(callData.offset, 0x24), calldataload(add(callData.offset, 4))) - calls.length := calldataload(add(add(callData.offset, 4), calldataload(add(callData.offset, 4)))) - } - uint256 i = 0; - for (i = 0; i < calls.length; i++) { - Call calldata call = calls[i]; - Permission calldata permission = _permissions[i]; - require( - permission.target == address(0) || call.to == permission.target, "SessionKeyValidator: target mismatch" - ); - require(uint256(bytes32(call.value)) <= permission.valueLimit, "SessionKeyValidator: value limit exceeded"); - require(verifyPermission(call.data, permission), "SessionKeyValidator: permission verification failed"); - if (!MerkleProofLib.verify(_merkleProof[i], root, keccak256(abi.encode(permission)))) { - return true; - } - } - } - - // to parse batch execute permissions - function _getPermissions(bytes calldata _sig) internal pure returns (Permission[] calldata permissions) { - assembly { - permissions.offset := add(add(_sig.offset, 0x20), calldataload(_sig.offset)) - permissions.length := calldataload(add(_sig.offset, calldataload(_sig.offset))) - } - } - - function _getProofs(bytes calldata _sig) internal pure returns (bytes32[][] calldata proofs) { - assembly { - proofs.length := calldataload(add(_sig.offset, calldataload(add(_sig.offset, 0x20)))) - proofs.offset := add(add(_sig.offset, 0x20), calldataload(add(_sig.offset, 0x20))) - } - } - - // to parse single execute permission - function _getPermission(bytes calldata _sig) - internal - pure - returns (Permission calldata permission, bytes32[] calldata merkleProof) - { - assembly { - permission := add(_sig.offset, calldataload(_sig.offset)) - merkleProof.length := calldataload(add(_sig.offset, calldataload(add(_sig.offset, 0x20)))) - merkleProof.offset := add(add(_sig.offset, 0x20), calldataload(add(_sig.offset, 0x20))) - } - } - - function _verifyParam( - bytes32 root, - bytes calldata callData, - Permission calldata _permission, - bytes32[] calldata _merkleProof - ) internal pure returns (bool verifyFailed) { - bool isExecute = bytes4(callData[0:4]) == Kernel.execute.selector; - require( - _permission.target == address(0) || address(bytes20(callData[16:36])) == _permission.target, - "SessionKeyValidator: target mismatch" - ); - if (isExecute) { - require( - uint256(bytes32(callData[36:68])) <= _permission.valueLimit, "SessionKeyValidator: value limit exceeded" - ); - } else { - require(_permission.operation == Operation.DelegateCall, "SessionKeyValidator: operation mismatch"); - } - bytes calldata data; - uint8 dataParamOffset = isExecute ? 0x44 : 0x24; - assembly { - let dataOffset := add(add(callData.offset, 0x04), calldataload(add(callData.offset, dataParamOffset))) - let length := calldataload(dataOffset) - data.offset := add(dataOffset, 32) - data.length := length - } - require(verifyPermission(data, _permission), "SessionKeyValidator: permission verification failed"); - if (!MerkleProofLib.verify(_merkleProof, root, keccak256(abi.encode(_permission)))) { - return true; - } - } - - function verifyPermission(bytes calldata data, Permission calldata permission) internal pure returns (bool) { - if (bytes4(data[0:4]) != permission.sig) return false; - for (uint256 i = 0; i < permission.rules.length; i++) { - ParamRule calldata rule = permission.rules[i]; - bytes32 param = bytes32(data[4 + rule.offset:4 + rule.offset + 32]); - if (rule.condition == ParamCondition.EQUAL && param != rule.param) { - return false; - } else if (rule.condition == ParamCondition.GREATER_THAN && param <= rule.param) { - return false; - } else if (rule.condition == ParamCondition.LESS_THAN && param >= rule.param) { - return false; - } else if (rule.condition == ParamCondition.GREATER_THAN_OR_EQUAL && param < rule.param) { - return false; - } else if (rule.condition == ParamCondition.LESS_THAN_OR_EQUAL && param > rule.param) { - return false; - } else if (rule.condition == ParamCondition.NOT_EQUAL && param == rule.param) { - return false; - } - } - return true; - } - - function validateSignature( - address kernel, - address caller, - bytes32 permissionId, - bytes32 messageHash, - bytes32 rawHash, - bytes calldata signature - ) external view returns (ValidationData) { - return ValidationData.wrap(0); - } -} diff --git a/src/validator/modularPermission/policies/SignaturePolicy.sol b/src/validator/modularPermission/policies/SignaturePolicy.sol deleted file mode 100644 index c4f1b16c..00000000 --- a/src/validator/modularPermission/policies/SignaturePolicy.sol +++ /dev/null @@ -1,45 +0,0 @@ -pragma solidity ^0.8.0; - -import "../IPolicy.sol"; - -contract SignaturePolicy is IPolicy { - mapping( - address permissionValidator - => mapping(bytes32 permissionId => mapping(address requestor => mapping(address kernel => bool))) - ) public allowedRequestor; - - function registerPolicy(address kernel, bytes32 permissionId, bytes calldata policyData) external payable { - address[] memory callers = abi.decode(policyData, (address[])); - for (uint256 i = 0; i < callers.length; i++) { - if (callers[i] == address(0)) { - allowedRequestor[msg.sender][permissionId][kernel][kernel] = true; - } else { - allowedRequestor[msg.sender][permissionId][callers[i]][kernel] = true; - } - } - } - - function checkUserOpPolicy( - address kernel, - bytes32 permissionId, - UserOperation calldata userOp, - bytes calldata policyProof - ) external payable override returns (ValidationData) { - // do nothing on userOp validation - return ValidationData.wrap(0); - } - - function validateSignature( - address kernel, - address caller, - bytes32 permissionId, - bytes32 messageHash, - bytes32 rawHash, - bytes calldata signature - ) external view override returns (ValidationData) { - if (allowedRequestor[msg.sender][permissionId][caller][kernel]) { - return ValidationData.wrap(0); - } - return SIG_VALIDATION_FAILED; - } -} diff --git a/src/validator/modularPermission/policies/SudoPolicy.sol b/src/validator/modularPermission/policies/SudoPolicy.sol deleted file mode 100644 index f3125de6..00000000 --- a/src/validator/modularPermission/policies/SudoPolicy.sol +++ /dev/null @@ -1,29 +0,0 @@ -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ValidationData} from "src/common/Types.sol"; -import {IPolicy} from "../IPolicy.sol"; - -contract SudoPolicy is IPolicy { - function registerPolicy(address kernel, bytes32 permissionId, bytes calldata data) external payable override {} - - function checkUserOpPolicy(address kernel, bytes32 permissionId, UserOperation calldata userOp, bytes calldata) - external - payable - override - returns (ValidationData) - { - return ValidationData.wrap(0); - } - - function validateSignature( - address kernel, - address caller, - bytes32 permissionId, - bytes32 messageHash, - bytes32 rawHash, - bytes calldata signature - ) external view override returns (ValidationData) { - return ValidationData.wrap(0); - } -} diff --git a/src/validator/modularPermission/signers/ECDSASigner.sol b/src/validator/modularPermission/signers/ECDSASigner.sol deleted file mode 100644 index f617b9d8..00000000 --- a/src/validator/modularPermission/signers/ECDSASigner.sol +++ /dev/null @@ -1,52 +0,0 @@ -pragma solidity ^0.8.0; - -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {ISigner} from "../ISigner.sol"; -import {ValidationData} from "../../../common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "../../../common/Constants.sol"; - -contract ECDSASigner is ISigner { - using ECDSA for bytes32; - - mapping(address caller => mapping(bytes32 permissionId => mapping(address kernel => address))) public signer; - - function registerSigner(address kernel, bytes32 permissionId, bytes calldata data) external payable override { - require(signer[msg.sender][permissionId][kernel] == address(0), "ECDSASigner: kernel already registered"); - require(data.length == 20, "ECDSASigner: invalid signer address"); - address signerAddress = address(bytes20(data[0:20])); - signer[msg.sender][permissionId][kernel] = signerAddress; - } - - function validateUserOp(address kernel, bytes32 permissionId, bytes32 userOpHash, bytes calldata signature) - external - payable - override - returns (ValidationData) - { - require(signer[msg.sender][permissionId][kernel] != address(0), "ECDSASigner: kernel not registered"); - address recovered = ECDSA.toEthSignedMessageHash(userOpHash).recover(signature); - if (recovered == signer[msg.sender][permissionId][kernel]) { - return ValidationData.wrap(0); - } - return SIG_VALIDATION_FAILED; - } - - function validateSignature(address kernel, bytes32 permissionId, bytes32 messageHash, bytes calldata signature) - external - view - override - returns (ValidationData) - { - address signerAddress = signer[msg.sender][permissionId][kernel]; - require(signerAddress != address(0), "ECDSASigner: kernel not registered"); - if (messageHash.recover(signature) == signerAddress) { - return ValidationData.wrap(0); - } - bytes32 ethHash = ECDSA.toEthSignedMessageHash(messageHash); - address recovered = ethHash.recover(signature); - if (recovered == signerAddress) { - return ValidationData.wrap(0); - } - return SIG_VALIDATION_FAILED; - } -} diff --git a/src/validator/modularPermission/signers/WebAuthnSigner.sol b/src/validator/modularPermission/signers/WebAuthnSigner.sol deleted file mode 100644 index 011088fe..00000000 --- a/src/validator/modularPermission/signers/WebAuthnSigner.sol +++ /dev/null @@ -1,82 +0,0 @@ -pragma solidity ^0.8.0; - -import {WebAuthn} from "p256-verifier/WebAuthn.sol"; -import {ISigner} from "../ISigner.sol"; -import {ValidationData} from "../../../common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "../../../common/Constants.sol"; - -struct WebAuthnValidatorData { - uint256 x; - uint256 y; -} - -contract WebAuthnSigner is ISigner { - mapping(address caller => mapping(bytes32 permissionId => mapping(address kernel => WebAuthnValidatorData))) public - webAuthnValidatorStorage; - - function registerSigner(address kernel, bytes32 permissionId, bytes calldata data) external payable override { - WebAuthnValidatorData memory pubKey = abi.decode(data, (WebAuthnValidatorData)); - require( - webAuthnValidatorStorage[msg.sender][permissionId][kernel].x == 0 - && webAuthnValidatorStorage[msg.sender][permissionId][kernel].y == 0, - "WebAuthnSigner: kernel already registered" - ); - require(pubKey.x != 0 && pubKey.y != 0, "WebAuthnSigner: invalid public key"); - webAuthnValidatorStorage[msg.sender][permissionId][kernel] = pubKey; - } - - function validateUserOp(address kernel, bytes32 permissionId, bytes32 userOpHash, bytes calldata signature) - external - payable - override - returns (ValidationData) - { - return _verifySignature(kernel, permissionId, userOpHash, signature); - } - - function validateSignature(address kernel, bytes32 permissionId, bytes32 messageHash, bytes calldata signature) - external - view - override - returns (ValidationData) - { - return _verifySignature(kernel, permissionId, messageHash, signature); - } - - function _verifySignature(address sender, bytes32 permissionId, bytes32 hash, bytes calldata signature) - private - view - returns (ValidationData) - { - ( - bytes memory authenticatorData, - string memory clientDataJSON, - uint256 challengeLocation, - uint256 responseTypeLocation, - uint256 r, - uint256 s - ) = abi.decode(signature, (bytes, string, uint256, uint256, uint256, uint256)); - - WebAuthnValidatorData memory pubKey = webAuthnValidatorStorage[msg.sender][permissionId][sender]; - require(pubKey.x != 0 && pubKey.y != 0, "WebAuthnSigner: kernel not registered"); - - bool isValid = WebAuthn.verifySignature( - abi.encodePacked(hash), - authenticatorData, - true, // TODO: check if this needs to be true always - clientDataJSON, - challengeLocation, - responseTypeLocation, - r, - s, - pubKey.x, - pubKey.y - ); - - if (isValid) { - return ValidationData.wrap(0); - } - - return SIG_VALIDATION_FAILED; - } -} diff --git a/src/validator/webauthn/WebAuthnFclValidator.sol b/src/validator/webauthn/WebAuthnFclValidator.sol deleted file mode 100644 index fbbc41ed..00000000 --- a/src/validator/webauthn/WebAuthnFclValidator.sol +++ /dev/null @@ -1,143 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {UserOperation} from "I4337/interfaces/UserOperation.sol"; -import {ECDSA} from "solady/utils/ECDSA.sol"; -import {IKernelValidator} from "../../interfaces/IKernelValidator.sol"; -import {ValidationData} from "../../common/Types.sol"; -import {SIG_VALIDATION_FAILED} from "../../common/Constants.sol"; -import {WebAuthnFclVerifier} from "./WebAuthnFclVerifier.sol"; - -/// @dev Storage layout for a kernel in the WebAuthnValidator contract. -struct WebAuthnFclValidatorStorage { - /// @dev The `x` coord of the secp256r1 public key used to sign the user operation. - uint256 x; - /// @dev The `y` coord of the secp256r1 public key used to sign the user operation. - uint256 y; -} - -/// @author @KONFeature -/// @title WebAuthnFclValidator -/// @notice Kernel validator used to validated user operations via WebAuthn signature (using P256 under the hood) -/// @notice Using the awesome FreshCryptoLib: https://github.com/rdubois-crypto/FreshCryptoLib/ -/// @notice Inspired by the cometh Gnosis Safe signer: https://github.com/cometh-game/p256-signer -contract WebAuthnFclValidator is IKernelValidator { - /// @dev Event emitted when the public key signing the WebAuthN user operation is changed for a given `kernel`. - event WebAuthnPublicKeyChanged(address indexed kernel, uint256 x, uint256 y); - - /// @dev Mapping of kernel address to each webAuthn specific storage - mapping(address kernel => WebAuthnFclValidatorStorage webAuthnStorage) private webAuthnValidatorStorage; - - /// @dev The address of the on-chain p256 verifier contract (will be used if the user want that instead of the pre-compiled one, that way this validator can work on every chain out of the box while rip7212 is slowly being implemented everywhere) - address private immutable P256_VERIFIER; - - /// @dev Simple constructor, setting the P256 verifier address - constructor(address _p256Verifier) { - P256_VERIFIER = _p256Verifier; - } - - /// @dev Disable this validator for a given `kernel` (msg.sender) - function disable(bytes calldata) external payable override { - delete webAuthnValidatorStorage[msg.sender]; - } - - /// @dev Enable this validator for a given `kernel` (msg.sender) - function enable(bytes calldata _data) external payable override { - // Extract the x & y coordinates of the public key from the `_data` bytes - (uint256 x, uint256 y) = abi.decode(_data, (uint256, uint256)); - // Update the pub key data - WebAuthnFclValidatorStorage storage kernelValidatorStorage = webAuthnValidatorStorage[msg.sender]; - kernelValidatorStorage.x = x; - kernelValidatorStorage.y = y; - // Emit the update event - emit WebAuthnPublicKeyChanged(msg.sender, x, y); - } - - /// @dev Validate a `_userOp` using a WebAuthn Signature for the kernel account who is the `_userOp` sender - function validateUserOp(UserOperation calldata _userOp, bytes32 _userOpHash, uint256) - external - payable - override - returns (ValidationData validationData) - { - WebAuthnFclValidatorStorage memory kernelValidatorStorage = webAuthnValidatorStorage[_userOp.sender]; - - // Perform a check against the direct userOpHash, if ok consider the user op as validated - if (_checkSignature(kernelValidatorStorage, _userOpHash, _userOp.signature)) { - return ValidationData.wrap(0); - } - - return SIG_VALIDATION_FAILED; - } - - /// @dev Validate a `_signature` of the `_hash` ofor the given `kernel` (msg.sender) - function validateSignature(bytes32 _hash, bytes calldata _signature) - public - view - override - returns (ValidationData) - { - WebAuthnFclValidatorStorage memory kernelValidatorStorage = webAuthnValidatorStorage[msg.sender]; - - // Check the validity againt the hash directly - if (_checkSignature(kernelValidatorStorage, _hash, _signature)) { - return ValidationData.wrap(0); - } - - // Otherwise, all good - return SIG_VALIDATION_FAILED; - } - - /// @notice Validates the given `_signature` againt the `_hash` for the given `kernel` (msg.sender) - /// @param _kernelValidatorStorage The kernel storage replication (helping us to fetch the X & Y points of the public key) - /// @param _hash The hash signed - /// @param _signature The signature - function _checkSignature( - WebAuthnFclValidatorStorage memory _kernelValidatorStorage, - bytes32 _hash, - bytes calldata _signature - ) private view returns (bool isValid) { - // Extract the first byte of the signature to check - return WebAuthnFclVerifier._verifyWebAuthNSignature( - P256_VERIFIER, _hash, _signature, _kernelValidatorStorage.x, _kernelValidatorStorage.y - ); - } - - /// @dev Check if the caller is a valid signer, this don't apply to the WebAuthN validator, since it's using a public key - function validCaller(address, bytes calldata) external pure override returns (bool) { - revert NotImplemented(); - } - - /* -------------------------------------------------------------------------- */ - /* Public view methods */ - /* -------------------------------------------------------------------------- */ - - /// @dev Get the owner of a given `kernel` - function getPublicKey(address _kernel) public view returns (uint256 x, uint256 y) { - // Compute the storage slot - WebAuthnFclValidatorStorage storage kernelValidatorStorage = webAuthnValidatorStorage[_kernel]; - - // Access it for x and y - x = kernelValidatorStorage.x; - y = kernelValidatorStorage.y; - } - - /// @dev Check if the pre-compiled p256 verifier is available on this chain - function isPreCompiledP256Available() public view returns (bool) { - // Test signature data, from https://gist.github.com/ulerdogan/8f1714895e23a54147fc529ea30517eb - bytes memory testSignatureData = - hex"4cee90eb86eaa050036147a12d49004b6b9c72bd725d39d4785011fe190f0b4da73bd4903f0ce3b639bbbf6e8e80d16931ff4bcf5993d58468e8fb19086e8cac36dbcd03009df8c59286b162af3bd7fcc0450c9aa81be5d10d312af6c66b1d604aebd3099c618202fcfe16ae7770b0c49ab5eadf74b754204a3bb6060e44eff37618b065f9832de4ca6ca971a7a1adc826d0f7c00181a5fb2ddf79ae00b4e10e"; - - // Perform the static call - (bool success, bytes memory data) = WebAuthnFclVerifier.PRECOMPILED_P256_VERIFIER.staticcall(testSignatureData); - if (!success || data.length == 0) { - return false; - } - - // Decode the result - uint256 result = abi.decode(data, (uint256)); - - // Check it's 1 (valid signature) - return result == uint256(1); - } -} diff --git a/src/validator/webauthn/WebAuthnFclVerifier.sol b/src/validator/webauthn/WebAuthnFclVerifier.sol deleted file mode 100644 index 02d9aaf1..00000000 --- a/src/validator/webauthn/WebAuthnFclVerifier.sol +++ /dev/null @@ -1,152 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {Base64} from "solady/utils/Base64.sol"; - -/// @title WebAuthnFclVerifier -/// @author rdubois-crypto -/// @author obatirou -/// @author KONFeature -/// @notice A library used to format webauthn stuff into verifiable p256 messages msg -/// From https://github.com/cometh-hq/p256-signer/blob/09319213276da69aad6d96fa75cd339726f78bb9/contracts/P256Signer.sol -/// And https://github.com/rdubois-crypto/FreshCryptoLib/blob/master/solidity/src/FCL_Webauthn.sol -library WebAuthnFclVerifier { - /// @dev Error thrown when the webauthn data is invalid - error InvalidWebAuthNData(); - - /// @dev 'bytes4(keccak256("InvalidWebAuthNData()"))' - uint256 private constant _INVALID_WEBAUTHN_DATA_SELECTOR = 0x81177746; - - /// @dev the data flag mask we will use to verify the signature - /// @dev Always 0x01 for user presence flag -> https://www.w3.org/TR/webauthn-2/#concept-user-present - bytes1 private constant AUTHENTICATOR_DATA_FLAG_MASK = 0x01; - - /// @dev The address of the pre-compiled p256 verifier contract (following RIP-7212) - address internal constant PRECOMPILED_P256_VERIFIER = address(0x100); - - /// @dev layout of a signature (used to extract the reauired payload from the initial calldata) - struct FclSignatureLayout { - bool useOnChainP256Verifier; - bytes authenticatorData; - bytes clientData; - uint256 challengeOffset; - uint256[2] rs; - } - - /// @dev Format the webauthn challenge into a p256 message - /// @dev return the raw message that has been signed by the user on the p256 curve - /// @dev Logic from https://github.com/rdubois-crypto/FreshCryptoLib/blob/master/solidity/src/FCL_Webauthn.sol - /// @param _hash The hash that has been signed via WebAuthN - /// @param _signature The signature that has been provided with the userOp - /// @return p256Message The message that has been signed on the p256 curve - function _formatWebAuthNChallenge(bytes32 _hash, FclSignatureLayout calldata _signature) - internal - pure - returns (bytes32 p256Message) - { - // Extract a few calldata pointer we will use to format / verify our msg - bytes calldata authenticatorData = _signature.authenticatorData; - bytes calldata clientData = _signature.clientData; - uint256 challengeOffset = _signature.challengeOffset; - - // If the challenge offset is uint256 max, it's mean that we are in the case of a dummy sig, so we can skip the check and just return the hash - if (challengeOffset == type(uint256).max) { - return _hash; - } - - // Otherwise, perform the complete format and checks of the data - { - // Let the caller check if User Presence (0x01) or User Verification (0x04) are set - if ((authenticatorData[32] & AUTHENTICATOR_DATA_FLAG_MASK) != AUTHENTICATOR_DATA_FLAG_MASK) { - revert InvalidWebAuthNData(); - } - // Verify that clientData commits to the expected client challenge - // Use the Base64Url encoding which omits padding characters to match WebAuthn Specification - bytes memory challengeEncoded = bytes(Base64.encode(abi.encodePacked(_hash), true, true)); - - // The part that will old the challenge extracted from the clientData - bytes memory challengeExtracted = new bytes(challengeEncoded.length); - - assembly { - // Extract the challenge from the clientData - calldatacopy( - add(challengeExtracted, 32), add(clientData.offset, challengeOffset), mload(challengeExtracted) - ) - - // Check that the challenge extracted from the clientData is the same as the one provided in the userOp - if iszero( - eq( - // Hash of the challenge exracted from the `clientData` - keccak256(add(challengeExtracted, 32), mload(challengeExtracted)), - // Hash of the provided challenge, encoded in Base64Url (to match the clientData encoding) - keccak256(add(challengeEncoded, 32), mload(challengeEncoded)) - ) - ) { - mstore(0x00, _INVALID_WEBAUTHN_DATA_SELECTOR) - revert(0x1c, 0x04) - } - } - } - - // Verify the signature over sha256(authenticatorData || sha256(clientData)) - bytes memory verifyData = new bytes(authenticatorData.length + 32); - - assembly { - // Add the authenticator data at the start of the verifyData - calldatacopy(add(verifyData, 32), authenticatorData.offset, authenticatorData.length) - } - - bytes32 clientDataHashed = sha256(clientData); - assembly { - // Add the client data hash at the end of the verifyData - mstore(add(verifyData, add(authenticatorData.length, 32)), clientDataHashed) - } - - // Return the sha256 of the verifyData - return sha256(verifyData); - } - - /// @dev Proceed to the full webauth verification - /// @param _p256Verifier The p256 verifier contract on-chain (if user want to use this instead of the precompiled one) - /// @param _hash The hash that has been signed via WebAuthN - /// @param _signature The signature that has been provided with the userOp - /// @param _x The X point of the public key - /// @param _y The Y point of the public key - /// @return isValid True if the signature is valid, false otherwise - function _verifyWebAuthNSignature( - address _p256Verifier, - bytes32 _hash, - bytes calldata _signature, - uint256 _x, - uint256 _y - ) internal view returns (bool isValid) { - // Extract the signature - FclSignatureLayout calldata signature; - // This code should precalculate the offsets of variables as defined in the layout - // From: https://twitter.com/k06a/status/1706934230779883656 - assembly { - signature := _signature.offset - } - - // If the signature is using the on-chain p256 verifier, we will use it - if (!signature.useOnChainP256Verifier) { - _p256Verifier = PRECOMPILED_P256_VERIFIER; - } - - // Format the webauthn challenge into a p256 message - bytes32 challenge = _formatWebAuthNChallenge(_hash, signature); - - // Prepare the argument we will use to verify the signature - bytes memory args = abi.encode(challenge, signature.rs[0], signature.rs[1], _x, _y); - - // Send the call the the p256 verifier - (bool success, bytes memory ret) = _p256Verifier.staticcall(args); - // If empty ret, return false - if (success == false || ret.length == 0) { - return false; - } - - // Ensure that it has returned 1 - return abi.decode(ret, (uint256)) == 1; - } -} diff --git a/test/ECDSAValidator.t.sol b/test/ECDSAValidator.t.sol new file mode 100644 index 00000000..18e9ea20 --- /dev/null +++ b/test/ECDSAValidator.t.sol @@ -0,0 +1,118 @@ +pragma solidity ^0.8.0; + +import {MockCallee, KernelTestBase} from "src/sdk/testBase/KernelTestBase.sol"; +import {ECDSAValidator} from "src/validator/ECDSAValidator.sol"; +import {ECDSA} from "solady/utils/ECDSA.sol"; +import {PackedUserOperation} from "src/interfaces/PackedUserOperation.sol"; +import {ValidatorLib} from "src/utils/ValidationTypeLib.sol"; +import {ExecLib} from "src/utils/ExecLib.sol"; +import {IHook} from "src/interfaces/IERC7579Modules.sol"; +import {ValidatorLib, ValidationId, ValidationMode, ValidationType} from "src/utils/ValidationTypeLib.sol"; +import {VALIDATION_MODE_ENABLE, VALIDATION_TYPE_VALIDATOR} from "src/types/Constants.sol"; + +import "forge-std/console.sol"; + +contract ECDSAValidatorTest is KernelTestBase { + ECDSAValidator ecdsaValidator; + address owner; + uint256 ownerKey; + + function _setRootValidationConfig() internal override { + (owner, ownerKey) = makeAddrAndKey("Owner"); + ecdsaValidator = new ECDSAValidator(); + rootValidation = ValidatorLib.validatorToIdentifier(ecdsaValidator); + rootValidationConfig = + RootValidationConfig({hook: IHook(address(0)), hookData: hex"", validatorData: abi.encodePacked(owner)}); + } + + function _rootSignDigest(bytes32 digest, bool success) internal view override returns (bytes memory data) { + unchecked { + if (!success) { + digest = bytes32(uint256(digest) - 1); + } + } + (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, ECDSA.toEthSignedMessageHash(digest)); + bytes memory sig = abi.encodePacked(r, s, v); + return sig; + } + + function _rootSignUserOp(PackedUserOperation memory op, bool success) + internal + view + override + returns (bytes memory) + { + bytes32 hash = entrypoint.getUserOpHash(op); + return _rootSignDigest(hash, success); + } + + function testExternalInteraction() external whenInitialized { + vm.startPrank(owner); + kernel.execute( + ExecLib.encodeSimpleSingle(), + ExecLib.encodeSingle(address(callee), 0, abi.encodeWithSelector(MockCallee.setValue.selector, 123)) + ); + vm.stopPrank(); + } + + function testEnableMalicious() external whenInitialized { + vm.startPrank(owner); + vm.deal(address(kernel), 1e18); + kernel.invalidateNonce(2); + vm.stopPrank(); + (address hacker, uint256 hackerKey) = makeAddrAndKey("Hacker"); + ownerKey = hackerKey; + enabledValidator = ecdsaValidator; + validationConfig.validatorData = abi.encodePacked(hacker); + PackedUserOperation[] memory ops = new PackedUserOperation[](1); + ops[0] = _prepareMaliciousEnableUserOp( + encodeExecute(address(callee), 0, abi.encodeWithSelector(callee.setValue.selector, 123)) + ); + vm.expectRevert(); + entrypoint.handleOps(ops, payable(address(0xdeadbeef))); + } + + function _prepareMaliciousEnableUserOp(bytes memory callData) internal returns (PackedUserOperation memory op) { + uint192 encodedAsNonceKey = ValidatorLib.encodeAsNonceKey( + ValidationMode.unwrap(VALIDATION_MODE_ENABLE), + ValidationType.unwrap(VALIDATION_TYPE_VALIDATOR), + bytes20(address(enabledValidator)), + 0 // parallel key + ); + op = PackedUserOperation({ + sender: address(kernel), + nonce: entrypoint.getNonce(address(kernel), encodedAsNonceKey), + initCode: hex"", + callData: callData, + accountGasLimits: bytes32(abi.encodePacked(uint128(2000000), uint128(2000000))), + preVerificationGas: 1000000, + gasFees: bytes32(abi.encodePacked(uint128(1), uint128(1))), + paymasterAndData: hex"", + signature: hex"" + }); + bytes32 hash = keccak256( + abi.encode( + keccak256( + "Enable(bytes21 validationId,uint32 nonce,address hook,bytes validatorData,bytes hookData,bytes selectorData)" + ), + ValidationId.unwrap(ValidatorLib.validatorToIdentifier(enabledValidator)), + uint256(kernel.currentNonce()), + validationConfig.hook, + keccak256(validationConfig.validatorData), + keccak256(abi.encodePacked(bytes1(0xff), validationConfig.hookData)), + keccak256(abi.encodePacked(kernel.execute.selector)) + ) + ); + bytes32 digest = keccak256( + abi.encodePacked("\x19\x01", _buildDomainSeparator("Kernel", "0.3.0-beta", address(kernel)), hash) + ); + op.signature = encodeEnableSignature( + validationConfig.hook, + validationConfig.validatorData, + abi.encodePacked(bytes1(0xff), validationConfig.hookData), + abi.encodePacked(kernel.execute.selector), + _rootSignDigest(digest, true), + _rootSignUserOp(op, true) + ); + } +} diff --git a/test/Kernel.t.sol b/test/Kernel.t.sol new file mode 100644 index 00000000..c755368d --- /dev/null +++ b/test/Kernel.t.sol @@ -0,0 +1,5 @@ +pragma solidity ^0.8.0; + +import {KernelTestBase} from "src/sdk/testBase/KernelTestBase.sol"; + +contract KernelTest is KernelTestBase {} diff --git a/test/Permission.t.sol b/test/Permission.t.sol new file mode 100644 index 00000000..d5bee435 --- /dev/null +++ b/test/Permission.t.sol @@ -0,0 +1,143 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "src/core/ValidationManager.sol"; +import "forge-std/Test.sol"; + +contract MockValidatorLib { + function encodeFlag(bool skipUserOp, bool skipSignature) external pure returns (PassFlag flag) { + return ValidatorLib.encodeFlag(skipUserOp, skipSignature); + } + + function encodeAsNonce( + bytes1 mode, + bytes1 vType, + bytes20 validatorIdentifierWithoutType, + uint16 nonceKey, + uint64 nonce + ) external pure returns (uint256 res) { + return ValidatorLib.encodeAsNonce(mode, vType, validatorIdentifierWithoutType, nonceKey, nonce); + } + + function encodeAsNonceKey(bytes1 mode, bytes1 vType, bytes20 validatorIdentifierWithoutType, uint16 nonceKey) + external + pure + returns (uint192 res) + { + return ValidatorLib.encodeAsNonceKey(mode, vType, validatorIdentifierWithoutType, nonceKey); + } + + function decodeNonce(uint256 nonce) + external + pure + returns (ValidationMode mode, ValidationType vType, ValidationId identifier) + { + return ValidatorLib.decodeNonce(nonce); + } + + function validatorToIdentifier(IValidator validator) external pure returns (ValidationId vId) { + return ValidatorLib.validatorToIdentifier(validator); + } + + function getType(ValidationId validator) external pure returns (ValidationType vType) { + return ValidatorLib.getType(validator); + } + + function getValidator(ValidationId validator) external pure returns (IValidator v) { + return ValidatorLib.getValidator(validator); + } + + function getPolicy(PolicyData data) external pure returns (IPolicy vId) { + return ValidatorLib.getPolicy(data); + } + + function getPermissionId(ValidationId validation) external pure returns (PermissionId vId) { + return ValidatorLib.getPermissionId(validation); + } +} + +contract PermissionTest is Test { + MockValidatorLib validatorLib; + + function setUp() external { + validatorLib = new MockValidatorLib(); + } + + function testFlagEncode() external { + PassFlag flag = validatorLib.encodeFlag(true, true); + assertEq(PassFlag.unwrap(flag), bytes2(0x0003)); + flag = validatorLib.encodeFlag(true, false); + assertEq(PassFlag.unwrap(flag), bytes2(0x0001)); + flag = validatorLib.encodeFlag(false, true); + assertEq(PassFlag.unwrap(flag), bytes2(0x0002)); + flag = validatorLib.encodeFlag(false, false); + assertEq(PassFlag.unwrap(flag), bytes2(0x0000)); + } + + function testDecode() external { + uint256 nonce = uint256(bytes32(0)); + (ValidationMode vMode, ValidationType vType,) = validatorLib.decodeNonce(nonce); + assertTrue(vMode == VALIDATION_MODE_DEFAULT, "vMode != MODE_DEFAULT"); + assertTrue(vType == VALIDATION_TYPE_ROOT, "vType != TYPE_VALIDATOR"); + } + + function testDecode(bytes1 mode, bytes1 vtype, bytes20 vIdWithoutType, bytes10 sequencialNonce) external { + uint256 nonce = uint256(bytes32(abi.encodePacked(mode, vtype, vIdWithoutType, sequencialNonce))); + (ValidationMode vMode, ValidationType vType, ValidationId vId) = validatorLib.decodeNonce(nonce); + assertTrue(vMode == ValidationMode.wrap(mode), "vMode != mode"); + assertTrue(vType == ValidationType.wrap(vtype), "vType != type"); + if (ValidationType.wrap(vtype) == VALIDATION_TYPE_PERMISSION) { + vIdWithoutType = (vIdWithoutType >> 128) << 128; + } + assertTrue(vId == ValidationId.wrap(bytes21(abi.encodePacked(vtype, vIdWithoutType))), "vId != vIdWithoutType"); + } + + function testEncode(bytes1 mode, bytes1 vtype, bytes20 vIdWithoutType, uint16 nonceKey, uint64 seqNonce) external { + uint256 encoded = validatorLib.encodeAsNonce(mode, vtype, vIdWithoutType, nonceKey, seqNonce); + uint256 nonce = uint256(bytes32(abi.encodePacked(mode, vtype, vIdWithoutType, nonceKey, seqNonce))); + assertEq(bytes32(nonce), bytes32(encoded)); + + uint192 encodedAsNonceKey = validatorLib.encodeAsNonceKey(mode, vtype, vIdWithoutType, nonceKey); + assertEq(nonce >> 64, encodedAsNonceKey); + } + + function testValidatorLibPermission() public { + testValidatorLib( + ValidationMode.unwrap(VALIDATION_MODE_DEFAULT), + ValidationType.unwrap(VALIDATION_TYPE_PERMISSION), + bytes20(makeAddr("random")), + bytes10(0) + ); + } + + function testValidatorLib(bytes1 mode, bytes1 vtype, bytes20 vIdWithoutType, bytes10 sequencialNonce) public { + bytes20 expected = vIdWithoutType; + if (ValidationType.wrap(vtype) == VALIDATION_TYPE_PERMISSION) { + expected = (expected >> 128) << 128; + } + uint16 nonceKey = uint16(bytes2(sequencialNonce)); + uint64 seqNonce = uint64(bytes8(sequencialNonce << 16)); + uint256 encoded = validatorLib.encodeAsNonce(mode, vtype, vIdWithoutType, nonceKey, seqNonce); + + (ValidationMode vMode, ValidationType vType, ValidationId vId) = validatorLib.decodeNonce(encoded); + assertTrue(vMode == ValidationMode.wrap(mode), "vMode != mode"); + assertTrue(vType == ValidationType.wrap(vtype), "vType != type"); + assertTrue(vId == ValidationId.wrap(bytes21(abi.encodePacked(vtype, expected))), "vId != vIdWithoutType"); + + if (ValidationType.wrap(vtype) == VALIDATION_TYPE_VALIDATOR) { + IValidator v = validatorLib.getValidator(vId); + assertEq(address(v), address(vIdWithoutType), "v != vIdWithoutType"); + ValidationId vid = validatorLib.validatorToIdentifier(v); + assertTrue( + vid == ValidationId.wrap(bytes21(abi.encodePacked(VALIDATION_TYPE_VALIDATOR, vIdWithoutType))), + "vid != vIdWithoutType" + ); + } else if (ValidationType.wrap(vtype) == VALIDATION_TYPE_PERMISSION) { + PermissionId pId = validatorLib.getPermissionId(vId); + assertEq(bytes20(abi.encodePacked(PermissionId.unwrap(pId), bytes16(0))), expected); + } + + ValidationType vt = validatorLib.getType(vId); + assertTrue(vt == ValidationType.wrap(vtype), "vt != vtype"); + } +} diff --git a/test/foundry/KernelECDSA.t.sol b/test/foundry/KernelECDSA.t.sol deleted file mode 100644 index 8322e9ad..00000000 --- a/test/foundry/KernelECDSA.t.sol +++ /dev/null @@ -1,99 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import "src/Kernel.sol"; -import "src/validator/ECDSAValidator.sol"; -// test artifacts -// test utils -import "forge-std/Test.sol"; -import {ERC4337Utils} from "src/utils/ERC4337Utils.sol"; -import {KernelTestBase} from "src/utils/KernelTestBase.sol"; -import {TestExecutor} from "src/mock/TestExecutor.sol"; -import {TestValidator} from "src/mock/TestValidator.sol"; -import {IKernel} from "src/interfaces/IKernel.sol"; - -using ERC4337Utils for IEntryPoint; - -contract KernelECDSATest is KernelTestBase { - function setUp() public virtual { - _initialize(); - defaultValidator = new ECDSAValidator(); - _setAddress(); - _setExecutionDetail(); - } - - function test_ignore() external {} - - function _setExecutionDetail() internal virtual override { - executionDetail.executor = address(new TestExecutor()); - executionSig = TestExecutor.doNothing.selector; - executionDetail.validator = new TestValidator(); - } - - function getEnableData() internal view virtual override returns (bytes memory) { - return ""; - } - - function getValidatorSignature(UserOperation memory) internal view virtual override returns (bytes memory) { - return ""; - } - - function getOwners() internal view override returns (address[] memory) { - address[] memory owners = new address[](1); - owners[0] = owner; - return owners; - } - - function getInitializeData() internal view override returns (bytes memory) { - return abi.encodeWithSelector(KernelStorage.initialize.selector, defaultValidator, abi.encodePacked(owner)); - } - - function signUserOp(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), entryPoint.signUserOpHash(vm, ownerKey, op)); - } - - function getWrongSignature(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), entryPoint.signUserOpHash(vm, ownerKey + 1, op)); - } - - function signHash(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, ECDSA.toEthSignedMessageHash(hash)); - return abi.encodePacked(r, s, v); - } - - function getWrongSignature(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey + 1, ECDSA.toEthSignedMessageHash(hash)); - return abi.encodePacked(r, s, v); - } - - function test_default_validator_enable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(defaultValidator), - 0, - abi.encodeWithSelector(ECDSAValidator.enable.selector, abi.encodePacked(address(0xdeadbeef))), - Operation.Call - ) - ); - performUserOperationWithSig(op); - (address owner_) = ECDSAValidator(address(defaultValidator)).ecdsaValidatorStorage(address(kernel)); - assertEq(owner_, address(0xdeadbeef), "owner should be 0xdeadbeef"); - } - - function test_default_validator_disable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(defaultValidator), - 0, - abi.encodeWithSelector(ECDSAValidator.disable.selector, ""), - Operation.Call - ) - ); - performUserOperationWithSig(op); - (address owner_) = ECDSAValidator(address(defaultValidator)).ecdsaValidatorStorage(address(kernel)); - assertEq(owner_, address(0), "owner should be 0"); - } -} diff --git a/test/foundry/KernelHelper.t.sol b/test/foundry/KernelHelper.t.sol deleted file mode 100644 index 7a3fca8e..00000000 --- a/test/foundry/KernelHelper.t.sol +++ /dev/null @@ -1,66 +0,0 @@ -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; -import "src/utils/KernelHelper.sol"; -import "src/common/Types.sol"; - -contract KernelHelperTest is Test { - function testIntersect( - ValidAfter validAfterA, - ValidUntil validUntilA, - ValidAfter validAfterB, - ValidUntil validUntilB - ) public { - if (ValidUntil.unwrap(validUntilB) == 0) { - validUntilB = ValidUntil.wrap(0xffffffffffff); - } - if (ValidUntil.unwrap(validUntilA) == 0) { - validUntilA = ValidUntil.wrap(0xffffffffffff); - } - ValidationData a = packValidationData(validAfterA, validUntilA); - ValidationData b = packValidationData(validAfterB, validUntilB); - ValidationData c = _intersectValidationData(a, b); - - ValidationData expected = packValidationData( - ValidAfter.unwrap(validAfterA) > ValidAfter.unwrap(validAfterB) ? validAfterA : validAfterB, - ValidUntil.unwrap(validUntilA) < ValidUntil.unwrap(validUntilB) ? validUntilA : validUntilB - ); - assertEq(ValidationData.unwrap(c), ValidationData.unwrap(expected)); - } - - function testIntersectWithAggregator( - address aggregatorA, - ValidAfter validAfterA, - ValidUntil validUntilA, - address aggregatorB, - ValidAfter validAfterB, - ValidUntil validUntilB - ) external { - if (ValidUntil.unwrap(validUntilB) == 0) { - validUntilB = ValidUntil.wrap(0xffffffffffff); - } - if (ValidUntil.unwrap(validUntilA) == 0) { - validUntilA = ValidUntil.wrap(0xffffffffffff); - } - ValidationData a = packValidationData(aggregatorA, validAfterA, validUntilA); - ValidationData b = packValidationData(aggregatorB, validAfterB, validUntilB); - ValidationData c = _intersectValidationData(a, b); - - address expectedAggregator = aggregatorA == address(0) - ? aggregatorB - : aggregatorA == aggregatorB || aggregatorB == address(0) ? aggregatorA : address(1); - console.log("expectedAggregator", expectedAggregator); - // a : b - // 0 : 0 => 0 - // 0 : 1 => 1 - // 1 : 0 => 1 - // 1 : 1 => 1 - // X : 0 => X - // X : 1 => 1 - // 0 : X => X - // 1 : X => 1 - (ValidAfter vf, ValidUntil vu, address res) = parseValidationData(c); - console.log("res", res); - assertEq(res, expectedAggregator); - } -} diff --git a/test/foundry/KernelLiteECDSA.t.sol b/test/foundry/KernelLiteECDSA.t.sol deleted file mode 100644 index 70a71daf..00000000 --- a/test/foundry/KernelLiteECDSA.t.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import "src/Kernel.sol"; -import "src/lite/KernelLiteECDSA.sol"; -// test artifacts -// test utils -import "forge-std/Test.sol"; -import {ERC4337Utils} from "src/utils/ERC4337Utils.sol"; -import {KernelTestBase} from "src/utils/KernelTestBase.sol"; -import {TestExecutor} from "src/mock/TestExecutor.sol"; -import {TestValidator} from "src/mock/TestValidator.sol"; -import {ECDSAValidator} from "src/validator/ECDSAValidator.sol"; - -using ERC4337Utils for IEntryPoint; - -contract KernelECDSATest is KernelTestBase { - ECDSAValidator ecdsa; - - function setUp() public { - ecdsa = new ECDSAValidator(); - _initialize(); - kernelImpl = Kernel(payable(address(new KernelLiteECDSA(entryPoint, ecdsa)))); - vm.startPrank(factoryOwner); - factory.setImplementation(address(kernelImpl), true); - vm.stopPrank(); - - _setAddress(); - _setExecutionDetail(); - } - - function _setExecutionDetail() internal virtual override { - executionDetail.executor = address(new TestExecutor()); - executionSig = TestExecutor.doNothing.selector; - executionDetail.validator = new TestValidator(); - } - - function getEnableData() internal view virtual override returns (bytes memory) { - return ""; - } - - function getValidatorSignature(UserOperation memory) internal view virtual override returns (bytes memory) { - return ""; - } - - function getOwners() internal view override returns (address[] memory) { - address[] memory owners = new address[](1); - owners[0] = owner; - return owners; - } - - function getInitializeData() internal view override returns (bytes memory) { - return abi.encodeWithSelector(KernelStorage.initialize.selector, address(ecdsa), abi.encodePacked(owner)); - } - - function test_set_default_validator() external override { - TestValidator newValidator = new TestValidator(); - bytes memory empty; - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector(KernelStorage.setDefaultValidator.selector, address(newValidator), empty) - ); - vm.expectEmit(true, true, true, false, address(entryPoint)); - emit UserOperationEvent(entryPoint.getUserOpHash(op), address(kernel), address(0), op.nonce, false, 0, 0); - performUserOperationWithSig(op); - } - - function signUserOp(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), entryPoint.signUserOpHash(vm, ownerKey, op)); - } - - function signHash(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, ECDSA.toEthSignedMessageHash(hash)); - return abi.encodePacked(r, s, v); - } - - function getWrongSignature(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), entryPoint.signUserOpHash(vm, ownerKey + 1, op)); - } - - function getWrongSignature(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey + 1, ECDSA.toEthSignedMessageHash(hash)); - return abi.encodePacked(r, s, v); - } - - function test_default_validator_enable() external override { - vm.skip(true); - } - - function test_default_validator_disable() external override { - vm.skip(true); - } - - function test_fail_validate_not_activate() external override { - vm.skip(true); - } - - function test_transfer_ownership() external { - address newOwner = makeAddr("new owner"); - UserOperation memory op = entryPoint.fillUserOp( - address(kernel), abi.encodeWithSelector(KernelLiteECDSA.transferOwnership.selector, newOwner) - ); - op.signature = signUserOp(op); - UserOperation[] memory ops = new UserOperation[](1); - ops[0] = op; - vm.expectEmit(true, true, true, false, address(entryPoint)); - emit UserOperationEvent(entryPoint.getUserOpHash(op), address(kernel), address(0), op.nonce, false, 0, 0); - performUserOperationWithSig(op); - } -} diff --git a/test/foundry/utils/Merkle.sol b/test/foundry/utils/Merkle.sol deleted file mode 100644 index 26730161..00000000 --- a/test/foundry/utils/Merkle.sol +++ /dev/null @@ -1,76 +0,0 @@ -pragma solidity ^0.8.0; - -function _getRoot(bytes32[] memory data) pure returns (bytes32) { - require(data.length > 1); - while (data.length > 1) { - data = _hashLevel(data); - } - return data[0]; -} - -function _getProof(bytes32[] memory data, uint256 nodeIndex, bool wrongProof) pure returns (bytes32[] memory) { - require(data.length > 1); - - bytes32[] memory result = new bytes32[](64); - uint256 pos; - - while (data.length > 1) { - unchecked { - if (nodeIndex & 0x1 == 1) { - result[pos] = data[nodeIndex - 1]; - } else if (nodeIndex + 1 == data.length) { - result[pos] = bytes32(0); - } else { - result[pos] = data[nodeIndex + 1]; - } - ++pos; - nodeIndex /= 2; - } - data = _hashLevel(data); - } - // Resize the length of the array to fit. - /// @solidity memory-safe-assembly - assembly { - mstore(result, pos) - } - if (wrongProof) { - result[0] = result[0] ^ bytes32(uint256(0x01)); - } - - return result; -} - -function _hashLevel(bytes32[] memory data) pure returns (bytes32[] memory) { - bytes32[] memory result; - unchecked { - uint256 length = data.length; - if (length & 0x1 == 1) { - result = new bytes32[](length / 2 + 1); - result[result.length - 1] = _hashPair(data[length - 1], bytes32(0)); - } else { - result = new bytes32[](length / 2); - } - uint256 pos = 0; - for (uint256 i = 0; i < length - 1; i += 2) { - result[pos] = _hashPair(data[i], data[i + 1]); - ++pos; - } - } - return result; -} - -function _hashPair(bytes32 left, bytes32 right) pure returns (bytes32 result) { - /// @solidity memory-safe-assembly - assembly { - switch lt(left, right) - case 0 { - mstore(0x0, right) - mstore(0x20, left) - } - default { - mstore(0x0, left) - mstore(0x20, right) - } - result := keccak256(0x0, 0x40) - } -} diff --git a/test/foundry/validator/KernelECDSATyped.t.sol b/test/foundry/validator/KernelECDSATyped.t.sol deleted file mode 100644 index 905c7757..00000000 --- a/test/foundry/validator/KernelECDSATyped.t.sol +++ /dev/null @@ -1,153 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import "src/Kernel.sol"; -import "src/validator/ECDSATypedValidator.sol"; -// test artifacts -// test utils -import "forge-std/Test.sol"; -import {ERC4337Utils} from "src/utils/ERC4337Utils.sol"; -import {KernelTestBase} from "src/utils/KernelTestBase.sol"; -import {TestExecutor} from "src/mock/TestExecutor.sol"; -import {TestValidator} from "src/mock/TestValidator.sol"; -import {IKernel} from "src/interfaces/IKernel.sol"; - -using ERC4337Utils for IEntryPoint; - -/// @author @KONFeature -/// @title KernelECDSATypedTest -/// @notice Unit test on the Kernel ECDSA typed validator -contract KernelECDSATypedTest is KernelTestBase { - ECDSATypedValidator private ecdsaTypedValidator; - - function setUp() public virtual { - _initialize(); - ecdsaTypedValidator = new ECDSATypedValidator(); - defaultValidator = ecdsaTypedValidator; - _setAddress(); - _setExecutionDetail(); - } - - function test_ignore() external {} - - function _setExecutionDetail() internal virtual override { - executionDetail.executor = address(new TestExecutor()); - executionSig = TestExecutor.doNothing.selector; - executionDetail.validator = new TestValidator(); - } - - function getEnableData() internal view virtual override returns (bytes memory) { - return ""; - } - - function getValidatorSignature(UserOperation memory) internal view virtual override returns (bytes memory) { - return ""; - } - - function getOwners() internal view override returns (address[] memory) { - address[] memory owners = new address[](1); - owners[0] = owner; - return owners; - } - - function getInitializeData() internal view override returns (bytes memory) { - return abi.encodeWithSelector(KernelStorage.initialize.selector, defaultValidator, abi.encodePacked(owner)); - } - - function signUserOp(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), _generateUserOpSignature(entryPoint, op, ownerKey)); - } - - function getWrongSignature(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), _generateUserOpSignature(entryPoint, op, ownerKey + 1)); - } - - function signHash(bytes32 _hash) internal view override returns (bytes memory) { - return _generateHashSignature(_hash, owner, address(kernel), ownerKey); - } - - function getWrongSignature(bytes32 _hash) internal view override returns (bytes memory) { - return _generateHashSignature(_hash, owner, address(kernel), ownerKey + 1); - } - - function test_default_validator_enable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(defaultValidator), - 0, - abi.encodeWithSelector(ECDSATypedValidator.enable.selector, abi.encodePacked(address(0xdeadbeef))), - Operation.Call - ) - ); - performUserOperationWithSig(op); - address owner_ = ecdsaTypedValidator.getOwner(address(kernel)); - assertEq(owner_, address(0xdeadbeef), "owner should be 0xdeadbeef"); - } - - function test_default_validator_disable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(defaultValidator), - 0, - abi.encodeWithSelector(ECDSATypedValidator.disable.selector, ""), - Operation.Call - ) - ); - performUserOperationWithSig(op); - address owner_ = ecdsaTypedValidator.getOwner(address(kernel)); - assertEq(owner_, address(0), "owner should be 0"); - } - - /* -------------------------------------------------------------------------- */ - /* Helper methods */ - /* -------------------------------------------------------------------------- */ - - /// @notice The type hash used for kernel user op validation - bytes32 constant USER_OP_TYPEHASH = keccak256("AllowUserOp(address owner,address kernelWallet,bytes32 userOpHash)"); - - /// @dev Generate the signature for a user op - function _generateUserOpSignature(IEntryPoint _entryPoint, UserOperation memory _op, uint256 _privateKey) - internal - view - returns (bytes memory) - { - // Get the kernel private key owner address - address owner_ = vm.addr(_privateKey); - - // Get the user op hash - bytes32 userOpHash = _entryPoint.getUserOpHash(_op); - - // Get the validator domain separator - bytes32 domainSeparator = ecdsaTypedValidator.getDomainSeperator(); - bytes32 typedMsgHash = keccak256( - abi.encodePacked( - "\x19\x01", domainSeparator, keccak256(abi.encode(USER_OP_TYPEHASH, owner_, _op.sender, userOpHash)) - ) - ); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(_privateKey, typedMsgHash); - return abi.encodePacked(r, s, v); - } - - /// @notice The type hash used for kernel signature validation - bytes32 constant SIGNATURE_TYPEHASH = keccak256("KernelSignature(address owner,address kernelWallet,bytes32 hash)"); - - /// @dev Generate the signature for a given hash for a kernel account - function _generateHashSignature(bytes32 _hash, address _owner, address _kernel, uint256 _privateKey) - internal - view - returns (bytes memory) - { - // Get the validator domain separator - bytes32 domainSeparator = ecdsaTypedValidator.getDomainSeperator(); - bytes32 typedMsgHash = keccak256( - abi.encodePacked( - "\x19\x01", domainSeparator, keccak256(abi.encode(SIGNATURE_TYPEHASH, _owner, _kernel, _hash)) - ) - ); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(_privateKey, typedMsgHash); - return abi.encodePacked(r, s, v); - } -} diff --git a/test/foundry/validator/KillSwitchValidator.t.sol b/test/foundry/validator/KillSwitchValidator.t.sol deleted file mode 100644 index 3ab45b14..00000000 --- a/test/foundry/validator/KillSwitchValidator.t.sol +++ /dev/null @@ -1,119 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "src/factory/KernelFactory.sol"; -import "src/validator/ECDSAValidator.sol"; -import "src/Kernel.sol"; -import "src/validator/KillSwitchValidator.sol"; -import "src/executor/KillSwitchAction.sol"; -// test utils -import "forge-std/Test.sol"; -import "src/utils/ERC4337Utils.sol"; -import {KernelTestBase} from "src/utils/KernelTestBase.sol"; -import {KernelECDSATest} from "../KernelECDSA.t.sol"; - -using ERC4337Utils for IEntryPoint; - -contract KillSwitchValidatorTest is KernelECDSATest { - KillSwitchValidator killSwitch; - KillSwitchAction action; - address guardian; - uint256 guardianKey; - - function setUp() public override { - killSwitch = new KillSwitchValidator(); - action = new KillSwitchAction(killSwitch); - super.setUp(); - (guardian, guardianKey) = makeAddrAndKey("guardian"); - } - - function _setExecutionDetail() internal override { - executionDetail.executor = address(action); - executionSig = KillSwitchAction.toggleKillSwitch.selector; - executionDetail.validator = killSwitch; - } - - function getEnableData() internal view override returns (bytes memory) { - return abi.encodePacked(guardian); - } - - function getValidatorSignature(UserOperation memory _op) internal view override returns (bytes memory sig) { - uint256 pausedUntil = block.timestamp + 1000; - - bytes32 hash = entryPoint.getUserOpHash(_op); - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - guardianKey, ECDSA.toEthSignedMessageHash(keccak256(bytes.concat(bytes6(uint48(pausedUntil)), hash))) - ); - sig = abi.encodePacked(uint48(pausedUntil), r, s, v); - } - - function test_should_fail_with_not_implemented_isValidSignature() public { - test_should_fail_with_not_implemented_isValidSignature( - bytes32(keccak256(abi.encodePacked("HelloWorld"))), abi.encodePacked("HelloWorld") - ); - } - - function test_should_fail_with_not_implemented_isValidSignature(bytes32 hash, bytes memory sig) public { - vm.expectRevert(); - killSwitch.validateSignature(hash, sig); - } - - function test_should_fail_with_not_implemented_validCaller() public { - test_should_fail_with_not_implemented_validCaller(address(0), abi.encodePacked("HelloWorld")); - } - - function test_should_fail_with_not_implemented_validCaller(address caller, bytes memory data) public { - vm.expectRevert(); - killSwitch.validCaller(caller, data); - } - - function test_force_unblock() external { - UserOperation memory op = - buildUserOperation(abi.encodeWithSelector(Kernel.execute.selector, owner, 0, "", Operation.Call)); - - op.signature = bytes.concat(bytes4(0), entryPoint.signUserOpHash(vm, ownerKey, op)); - performUserOperation(op); - - op = buildUserOperation(abi.encodeWithSelector(KillSwitchAction.toggleKillSwitch.selector)); - bytes memory enableData = abi.encodePacked(guardian); - { - bytes32 digest = getTypedDataHash( - KillSwitchAction.toggleKillSwitch.selector, 0, 0, address(killSwitch), address(action), enableData - ); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, digest); - - op.signature = abi.encodePacked( - bytes4(0x00000002), - uint48(0), - uint48(0), - address(killSwitch), - address(action), - uint256(enableData.length), - enableData, - uint256(65), - r, - s, - v - ); - } - uint48 pausedUntil = uint48(block.timestamp + 1000); - bytes32 hash = entryPoint.getUserOpHash(op); - { - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - guardianKey, ECDSA.toEthSignedMessageHash(keccak256(bytes.concat(bytes6(uint48(pausedUntil)), hash))) - ); - bytes memory sig = abi.encodePacked(r, s, v); - - op.signature = bytes.concat(op.signature, bytes6(uint48(pausedUntil)), sig); - } - - performUserOperation(op); - assertEq(kernel.getDisabledMode(), bytes4(0xffffffff)); - assertEq(address(kernel.getDefaultValidator()), address(killSwitch)); - op = buildUserOperation(abi.encodeWithSelector(KillSwitchAction.toggleKillSwitch.selector)); - - op.signature = bytes.concat(bytes4(0), entryPoint.signUserOpHash(vm, guardianKey, op)); - performUserOperation(op); - assertEq(kernel.getDisabledMode(), bytes4(0)); - } -} diff --git a/test/foundry/validator/SessionKeyValidator.t.sol b/test/foundry/validator/SessionKeyValidator.t.sol deleted file mode 100644 index e231c1d4..00000000 --- a/test/foundry/validator/SessionKeyValidator.t.sol +++ /dev/null @@ -1,538 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "src/Kernel.sol"; -import "src/interfaces/IKernel.sol"; -import "src/validator/ECDSAValidator.sol"; -import "src/factory/KernelFactory.sol"; -import {Call} from "src/common/Structs.sol"; -// test artifacts -import "src/mock/TestValidator.sol"; -import "src/mock/TestExecutor.sol"; -import "src/mock/TestERC721.sol"; -import "src/mock/TestERC20.sol"; -import "src/mock/TestPaymaster.sol"; -// test utils -import "forge-std/Test.sol"; -import "src/utils/ERC4337Utils.sol"; -import "../utils/Merkle.sol"; -// test actions/validators -import "src/validator/SessionKeyValidator.sol"; - -import {KernelECDSATest} from "../KernelECDSA.t.sol"; -import "src/mock/TestCallee.sol"; -import "src/mock/TestERC20.sol"; - -using ERC4337Utils for IEntryPoint; - -contract SessionKeyValidatorTest is KernelECDSATest { - SessionKeyValidator sessionKeyValidator; - TestCallee[] callees; - TestERC20[] erc20s; - ExecutionRule execRule; - bytes32[] data; - address sessionKey; - uint256 sessionKeyPriv; - TestPaymaster paymaster; - TestPaymaster unknownPaymaster; - address recipient; - - function setUp() public override { - super.setUp(); - (sessionKey, sessionKeyPriv) = makeAddrAndKey("sessionKey"); - sessionKeyValidator = new SessionKeyValidator(); - paymaster = new TestPaymaster(); - unknownPaymaster = new TestPaymaster(); - entryPoint.depositTo{value: 1e18}(address(unknownPaymaster)); - entryPoint.depositTo{value: 1e18}(address(paymaster)); - recipient = makeAddr("recipient"); - } - - function _setup_permission(uint256 _length, bool isDelegateCall) - internal - returns (Permission[] memory permissions) - { - permissions = new Permission[](_length); - callees = new TestCallee[](_length); - if (isDelegateCall) { - erc20s = new TestERC20[](_length); - } - for (uint8 i = 0; i < _length; i++) { - address target; - bytes4 sig; - if (isDelegateCall) { - erc20s[i] = new TestERC20(); - target = address(callees[i]); - sig = TestCallee.transferErc20Tester.selector; - erc20s[i].mint(address(kernel), 200); - } else { - callees[i] = new TestCallee(); - target = address(callees[i]); - sig = TestCallee.addTester.selector; - } - ParamRule[] memory paramRules = new ParamRule[](2); - if (isDelegateCall) { - paramRules[0] = - ParamRule({offset: 0, condition: ParamCondition(0), param: bytes32(uint256(uint160(recipient)))}); - } else { - paramRules[0] = ParamRule({offset: 0, condition: ParamCondition(i % 6), param: bytes32(uint256(100))}); - } - paramRules[1] = - ParamRule({offset: 32, condition: ParamCondition((i + 1) % 6), param: bytes32(uint256(100))}); - permissions[i] = Permission({ - index: i, - target: target, - sig: sig, - valueLimit: 0, - rules: paramRules, - executionRule: execRule, - operation: isDelegateCall ? Operation.DelegateCall : Operation.Call - }); - } - } - - function _buildHashes(Permission[] memory permissions) internal { - // setup permission done - data = new bytes32[](permissions.length); - for (uint8 i = 0; i < permissions.length; i++) { - data[i] = keccak256(abi.encode(permissions[i])); - } - } - - function _generateParam(ParamCondition condition, bool correct) internal pure returns (uint256 param) { - if (condition == ParamCondition.EQUAL) { - param = correct ? 100 : 101; - } else if (condition == ParamCondition.GREATER_THAN) { - param = correct ? 101 : 100; - } else if (condition == ParamCondition.LESS_THAN) { - param = correct ? 99 : 100; - } else if (condition == ParamCondition.NOT_EQUAL) { - param = correct ? 101 : 100; - } else if (condition == ParamCondition.GREATER_THAN_OR_EQUAL) { - param = correct ? 100 : 99; - } else if (condition == ParamCondition.LESS_THAN_OR_EQUAL) { - param = correct ? 100 : 101; - } - } - - function _buildUserOpBatch( - Permission[] memory permissions, - SessionData memory sessionData, - uint256 indexToUse, - uint8 usingPaymasterMode, - bool param1Faulty, - bool param2Faulty - ) internal view returns (UserOperation memory op) { - Call[] memory calls = new Call[](1); - calls[0] = Call({ - to: permissions[indexToUse].target, - value: 0, - data: abi.encodeWithSelector( - permissions[indexToUse].sig, - _generateParam(ParamCondition(indexToUse % 6), !param1Faulty), - _generateParam(ParamCondition((indexToUse + 1) % 6), !param2Faulty) - ) - }); - - op = buildUserOperation(abi.encodeWithSelector(IKernel.executeBatch.selector, calls)); - if (usingPaymasterMode != 0) { - // 0 = no paymaster - // 1 = unknown paymaster - // 2 = correct paymaster - op.paymasterAndData = usingPaymasterMode == 1 - ? abi.encodePacked(address(unknownPaymaster)) - : abi.encodePacked(address(paymaster)); - } - bytes memory enableData = abi.encodePacked( - sessionKey, - sessionData.merkleRoot, - sessionData.validAfter, - sessionData.validUntil, - sessionData.paymaster, - sessionData.nonce - ); - bytes32 digest = getTypedDataHash( - IKernel.executeBatch.selector, - ValidAfter.unwrap(sessionData.validAfter), - ValidUntil.unwrap(sessionData.validUntil), - address(sessionKeyValidator), - address(0), - enableData - ); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, digest); - op.signature = abi.encodePacked( - bytes4(0x00000002), - uint48(ValidAfter.unwrap(sessionData.validAfter)), - uint48(ValidUntil.unwrap(sessionData.validUntil)), - address(sessionKeyValidator), - address(0), - uint256(enableData.length), - enableData, - uint256(65), - r, - s, - v - ); - } - - function _buildUserOp( - Permission[] memory permissions, - SessionData memory sessionData, - uint256 indexToUse, - uint8 usingPaymasterMode, - bool param1Faulty, - bool param2Faulty, - bool isDelegateCall - ) internal view returns (UserOperation memory op) { - bytes4 selector = isDelegateCall ? IKernel.executeDelegateCall.selector : IKernel.execute.selector; - op = buildUserOperation( - isDelegateCall - ? abi.encodeWithSelector( - selector, - permissions[indexToUse].target, - abi.encodeWithSelector( - permissions[indexToUse].sig, - recipient, - _generateParam(ParamCondition((indexToUse + 1) % 6), !param2Faulty) // since NOT_EQ - ) - ) - : abi.encodeWithSelector( - selector, - permissions[indexToUse].target, - 0, - abi.encodeWithSelector( - permissions[indexToUse].sig, - _generateParam(ParamCondition(indexToUse % 6), !param1Faulty), // since EQ - _generateParam(ParamCondition((indexToUse + 1) % 6), !param2Faulty) // since NOT_EQ - ), - Operation.Call - ) - ); - if (usingPaymasterMode != 0) { - // 0 = no paymaster - // 1 = unknown paymaster - // 2 = correct paymaster - op.paymasterAndData = usingPaymasterMode == 1 - ? abi.encodePacked(address(unknownPaymaster)) - : abi.encodePacked(address(paymaster)); - } - bytes memory enableData = abi.encodePacked( - sessionKey, - sessionData.merkleRoot, - sessionData.validAfter, - sessionData.validUntil, - sessionData.paymaster, - sessionData.nonce - ); - bytes32 digest = getTypedDataHash( - selector, - ValidAfter.unwrap(sessionData.validAfter), - ValidUntil.unwrap(sessionData.validUntil), - address(sessionKeyValidator), - address(0), - enableData - ); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, digest); - op.signature = abi.encodePacked( - bytes4(0x00000002), - uint48(ValidAfter.unwrap(sessionData.validAfter)), - uint48(ValidUntil.unwrap(sessionData.validUntil)), - address(sessionKeyValidator), - address(0), - uint256(enableData.length), - enableData, - uint256(65), - r, - s, - v - ); - } - - // scenarios to test - // mode - 1, 2 - // paymaster - must, any, none - // ExecRule - // - when there is runs => when runs expired - // - when there is validAfter => when validAfter is future - // - when there is interval => when interval is zero, when interval is not zero - // 21, 0, 2, 0, 0, 1, 0 - // 1, 0, 2, 0, 0, 1, 0 - // 0, 0, 12, 0, 2, 1, 0, 1, false - // 0, 0, 2, 0, 2, 1, 1, 7550702249 [7.55e9], false - struct TestConfig { - uint8 paymasterMode; - uint8 usingPaymasterMode; - uint8 numberOfPermissions; - uint8 indexToUse; - uint48 runs; - uint48 validAfter; - uint48 interval; - uint48 earlyRun; - bool faultySig; - bool param1Faulty; - bool param2Faulty; - bool wrongProof; - bool isDelegateCall; - } - - struct BatchTestConfig { - uint8 count; - } - - function test_scenario_batch(TestConfig memory config, BatchTestConfig memory batchConfig) public { - vm.warp(1000); - if (batchConfig.count == 0) { - batchConfig.count = 1; - } - config.runs = 0; - config.interval = 0; - config.validAfter = 0; // TODO: runs not checked with batch - vm.assume(!config.isDelegateCall); - vm.assume(config.indexToUse < config.numberOfPermissions && config.numberOfPermissions > 1); - vm.assume( - config.validAfter < type(uint32).max && config.interval < type(uint32).max && config.runs < type(uint32).max - ); - config.paymasterMode = config.paymasterMode % 3; - config.usingPaymasterMode = config.usingPaymasterMode % 3; - bool shouldFail = (config.usingPaymasterMode < config.paymasterMode) || (1000 < config.validAfter) - || config.faultySig || config.param1Faulty || config.param2Faulty || config.wrongProof; - config.runs = config.runs % 10; - config.earlyRun = config.runs == 0 ? 0 : config.earlyRun % config.runs; - if (config.interval == 0 || config.validAfter == 0) { - config.earlyRun = 0; - } - if (config.interval > 0) { - vm.assume(config.validAfter > 0 && config.validAfter < block.timestamp); - } else { - vm.assume(config.validAfter < block.timestamp); - } - // setup permissions - execRule = ExecutionRule({ - runs: config.runs, - validAfter: ValidAfter.wrap(config.validAfter), - interval: config.interval - }); - Permission[] memory permissions = _setup_permission(config.numberOfPermissions, false); - _buildHashes(permissions); - (uint128 lastNonce,) = sessionKeyValidator.nonces(address(kernel)); - SessionData memory sessionData = SessionData({ - merkleRoot: _getRoot(data), - validAfter: ValidAfter.wrap(config.validAfter), - validUntil: ValidUntil.wrap(0), - paymaster: config.paymasterMode == 2 ? address(paymaster) : address(uint160(config.paymasterMode)), - nonce: uint256(lastNonce) + 1 //lastNonce + 1 - }); - // now encode data to op - UserOperation memory op = _buildUserOpBatch( - permissions, - sessionData, - config.indexToUse, - config.usingPaymasterMode, - config.param1Faulty, - config.param2Faulty - ); - bytes32[][] memory proofs = new bytes32[][](batchConfig.count); - Permission[] memory usingPermission = new Permission[](batchConfig.count); - for (uint256 i = 0; i < batchConfig.count; i++) { - proofs[i] = _getProof(data, config.indexToUse, config.wrongProof); - usingPermission[i] = permissions[config.indexToUse]; - } - op.signature = bytes.concat( - op.signature, - abi.encodePacked( - sessionKey, - entryPoint.signUserOpHash(vm, config.faultySig ? sessionKeyPriv + 1 : sessionKeyPriv, op), - abi.encode(usingPermission, proofs) - ) - ); - - if (shouldFail) { - vm.expectRevert(); - } - performUserOperation(op); - if (config.interval > 0 && config.validAfter > 0 && !shouldFail) { - (ValidAfter updatedValidAfter, uint48 r) = sessionKeyValidator.executionStatus( - keccak256(abi.encodePacked(sessionData.nonce, uint32(config.indexToUse))), address(kernel) - ); - assertEq(uint256(ValidAfter.unwrap(updatedValidAfter)), uint256(config.validAfter)); - if (config.runs > 0) { - assertEq(uint256(r), uint256(1)); - } else { - assertEq(uint256(r), uint256(0)); - } - } - if (!shouldFail && config.runs > 0) { - for (uint256 i = 1; i < config.runs; i++) { - if (config.earlyRun != i) { - vm.warp(config.validAfter + config.interval * i); - } else { - vm.warp(config.validAfter + config.interval * i - 1); - } - op.nonce = op.nonce + 1; - op.signature = _getBatchActionSignature(op, permissions, config.indexToUse); - if (config.earlyRun == i) { - vm.expectRevert(); - } - performUserOperation(op); - if (config.earlyRun == i) { - vm.warp(config.validAfter + config.interval * i); - performUserOperation(op); - } - (ValidAfter updatedValidAfter, uint48 r) = sessionKeyValidator.executionStatus( - keccak256(abi.encodePacked(sessionData.nonce, uint32(config.indexToUse))), address(kernel) - ); - if (config.validAfter > 0 && config.interval > 0) { - assertEq( - uint256(ValidAfter.unwrap(updatedValidAfter)), uint256(config.validAfter + config.interval * i) - ); - } - if (config.runs > 0) { - assertEq(uint256(r), uint256(i + 1)); - } - } - op.nonce = op.nonce + 1; - op.signature = _getBatchActionSignature(op, permissions, config.indexToUse); - vm.expectRevert(); - performUserOperation(op); - } - } - - function test_scenario_non_batch(TestConfig memory config) public { - vm.warp(1000); - vm.assume(config.indexToUse < config.numberOfPermissions && config.numberOfPermissions > 1); - vm.assume( - config.validAfter < type(uint32).max && config.interval < type(uint32).max && config.runs < type(uint32).max - ); - config.paymasterMode = config.paymasterMode % 3; - config.usingPaymasterMode = config.usingPaymasterMode % 3; - bool shouldFail = (config.usingPaymasterMode < config.paymasterMode) || (1000 < config.validAfter) - || config.faultySig || (config.param1Faulty && !config.isDelegateCall) || config.param2Faulty - || config.wrongProof; - config.runs = config.runs % 10; - config.earlyRun = config.runs == 0 ? 0 : config.earlyRun % config.runs; - if (config.interval == 0 || config.validAfter == 0) { - config.earlyRun = 0; - } - if (config.interval > 0) { - vm.assume(config.validAfter > 0 && config.validAfter < block.timestamp); - } else { - vm.assume(config.validAfter < block.timestamp); - } - // setup permissions - execRule = ExecutionRule({ - runs: config.runs, - validAfter: ValidAfter.wrap(config.validAfter), - interval: config.interval - }); - Permission[] memory permissions = _setup_permission(config.numberOfPermissions, config.isDelegateCall); - _buildHashes(permissions); - (uint128 lastNonce,) = sessionKeyValidator.nonces(address(kernel)); - SessionData memory sessionData = SessionData({ - merkleRoot: _getRoot(data), - validAfter: ValidAfter.wrap(config.validAfter), - validUntil: ValidUntil.wrap(0), - paymaster: config.paymasterMode == 2 ? address(paymaster) : address(uint160(config.paymasterMode)), - nonce: uint256(lastNonce) + 1 //lastNonce + 1 - }); - // now encode data to op - UserOperation memory op = _buildUserOp( - permissions, - sessionData, - config.indexToUse, - config.usingPaymasterMode, - config.param1Faulty, - config.param2Faulty, - config.isDelegateCall - ); - op.signature = bytes.concat( - op.signature, - abi.encodePacked( - sessionKey, - entryPoint.signUserOpHash(vm, config.faultySig ? sessionKeyPriv + 1 : sessionKeyPriv, op), - abi.encode(permissions[config.indexToUse], _getProof(data, config.indexToUse, config.wrongProof)) - ) - ); - - if (shouldFail) { - vm.expectRevert(); - } - performUserOperation(op); - if (config.interval > 0 && config.validAfter > 0 && !shouldFail) { - (ValidAfter updatedValidAfter, uint48 r) = sessionKeyValidator.executionStatus( - keccak256(abi.encodePacked(sessionData.nonce, uint32(config.indexToUse))), address(kernel) - ); - assertEq(uint256(ValidAfter.unwrap(updatedValidAfter)), uint256(config.validAfter)); - if (config.runs > 0) { - assertEq(uint256(r), uint256(1)); - } else { - assertEq(uint256(r), uint256(0)); - } - } - if (!shouldFail && config.runs > 0) { - for (uint256 i = 1; i < config.runs; i++) { - if (config.earlyRun != i) { - vm.warp(config.validAfter + config.interval * i); - } else { - vm.warp(config.validAfter + config.interval * i - 1); - } - op.nonce = op.nonce + 1; - op.signature = _getSingleActionSignature(op, permissions, config.indexToUse); - if (config.earlyRun == i) { - vm.expectRevert(); - } - performUserOperation(op); - if (config.earlyRun == i) { - vm.warp(config.validAfter + config.interval * i); - performUserOperation(op); - } - (ValidAfter updatedValidAfter, uint48 r) = sessionKeyValidator.executionStatus( - keccak256(abi.encodePacked(sessionData.nonce, uint32(config.indexToUse))), address(kernel) - ); - if (config.validAfter > 0 && config.interval > 0) { - assertEq( - uint256(ValidAfter.unwrap(updatedValidAfter)), uint256(config.validAfter + config.interval * i) - ); - } - if (config.runs > 0) { - assertEq(uint256(r), uint256(i + 1)); - } - } - op.nonce = op.nonce + 1; - op.signature = _getSingleActionSignature(op, permissions, config.indexToUse); - vm.expectRevert(); - performUserOperation(op); - } - } - - function _getBatchActionSignature(UserOperation memory _op, Permission[] memory permissions, uint8 indexToUse) - internal - view - returns (bytes memory) - { - Permission[] memory _permissions = new Permission[](1); - _permissions[0] = permissions[indexToUse]; - bytes32[][] memory _proofs = new bytes32[][](1); - _proofs[0] = _getProof(data, indexToUse, false); - return abi.encodePacked( - bytes4(0x00000001), - abi.encodePacked( - sessionKey, entryPoint.signUserOpHash(vm, sessionKeyPriv, _op), abi.encode(_permissions, _proofs) - ) - ); - } - - function _getSingleActionSignature(UserOperation memory _op, Permission[] memory permissions, uint8 indexToUse) - internal - view - returns (bytes memory) - { - return abi.encodePacked( - bytes4(0x00000001), - abi.encodePacked( - sessionKey, - entryPoint.signUserOpHash(vm, sessionKeyPriv, _op), - abi.encode(permissions[indexToUse], _getProof(data, indexToUse, false)) - ) - ); - } -} diff --git a/test/foundry/validator/WebAuthnFclValidator.t.sol b/test/foundry/validator/WebAuthnFclValidator.t.sol deleted file mode 100644 index ec2134d2..00000000 --- a/test/foundry/validator/WebAuthnFclValidator.t.sol +++ /dev/null @@ -1,359 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import "src/Kernel.sol"; -import "forge-std/Test.sol"; -import {ERC4337Utils} from "src/utils/ERC4337Utils.sol"; -import {KernelTestBase} from "src/utils/KernelTestBase.sol"; -import {TestExecutor} from "src/mock/TestExecutor.sol"; -import {TestValidator} from "src/mock/TestValidator.sol"; -import {WebAuthnFclVerifier} from "src/validator/webauthn/WebAuthnFclVerifier.sol"; -import {P256VerifierWrapper} from "src/utils/P256VerifierWrapper.sol"; -import {WebAuthnFclValidator} from "src/validator/webauthn/WebAuthnFclValidator.sol"; -import {FCL_ecdsa_utils} from "FreshCryptoLib/FCL_ecdsa_utils.sol"; -import {Base64Url} from "FreshCryptoLib/utils/Base64Url.sol"; -import {IKernel} from "src/interfaces/IKernel.sol"; - -using ERC4337Utils for IEntryPoint; - -contract WebAuthnFclValidatorTest is KernelTestBase { - WebAuthnFclValidator private webAuthNValidator; - WebAuthNTester private webAuthNTester; - P256VerifierWrapper private p256VerifierWrapper; - - // Curve order (number of points) - uint256 constant n = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551; - - // The public key of the owner - uint256 x; - uint256 y; - - function setUp() public { - // Deploy a RIP-7212 compliant P256Verifier contract - p256VerifierWrapper = new P256VerifierWrapper(); - // Deploy a WebAuthnFclValidator contract using that RIP-7212 compliant P256Verifier contract - webAuthNValidator = new WebAuthnFclValidator(address(p256VerifierWrapper)); - - // Deploy a webAuthNTester that will be used to format the signature during test - webAuthNTester = new WebAuthNTester(); - - _initialize(); - (x, y) = _getPublicKey(ownerKey); - _setAddress(); - _setExecutionDetail(); - } - - function _setExecutionDetail() internal virtual override { - executionDetail.executor = address(new TestExecutor()); - executionSig = TestExecutor.doNothing.selector; - executionDetail.validator = new TestValidator(); - } - - function getValidatorSignature(UserOperation memory _op) internal view virtual override returns (bytes memory) { - bytes32 _hash = entryPoint.getUserOpHash(_op); - bytes memory signature = _generateWebAuthnSignature(ownerKey, _hash); - return abi.encodePacked(bytes4(0x00000000), signature); - } - - function getOwners() internal virtual override returns (address[] memory _owners) { - _owners = new address[](1); - _owners[0] = address(0); - return _owners; - } - - function getEnableData() internal view virtual override returns (bytes memory) { - return ""; - } - - function getInitializeData() internal view override returns (bytes memory) { - return abi.encodeWithSelector(KernelStorage.initialize.selector, webAuthNValidator, abi.encode(x, y)); - } - - function test_default_validator_enable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(webAuthNValidator), - 0, - abi.encodeWithSelector(webAuthNValidator.enable.selector, abi.encode(x, y)), - Operation.Call - ) - ); - performUserOperationWithSig(op); - (uint256 x2, uint256 y2) = WebAuthnFclValidator(address(webAuthNValidator)).getPublicKey(address(kernel)); - _assertPublicKey(x2, y2, x, y); - } - - function test_default_validator_disable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(webAuthNValidator), - 0, - abi.encodeWithSelector(webAuthNValidator.disable.selector, ""), - Operation.Call - ) - ); - performUserOperationWithSig(op); - (uint256 x2, uint256 y2) = WebAuthnFclValidator(address(webAuthNValidator)).getPublicKey(address(kernel)); - _assertPublicKey(x2, y2, 0, 0); - } - - function test_external_call_batch_execute_success() external override { - vm.skip(true); - } - - function test_external_call_execute_success() external override { - vm.skip(true); - } - - function test_external_call_execute_delegatecall_success() external override { - vm.skip(true); - } - - function test_external_call_execute_delegatecall_fail() external override { - vm.skip(true); - } - - function test_external_call_default() external override { - vm.skip(true); - } - - function test_external_call_execution() external override { - vm.skip(true); - } - - function test_validate_signature() external override { - bytes32 _hash = keccak256(abi.encodePacked("hello world")); - - bytes32 digest = keccak256( - abi.encodePacked( - "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), _hash - ) - ); - - bytes memory signature = signHash(digest); - - assertEq(kernel.isValidSignature(_hash, signature), Kernel.isValidSignature.selector); - } - - function test_fail_validate_wrongsignature() external override { - // Prepare the hash to sign - bytes32 _hash = keccak256(abi.encodePacked("hello world")); - bytes32 digest = keccak256( - abi.encodePacked( - "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), _hash - ) - ); - - // Sign it (via a wrong signer) - bytes memory sig = getWrongSignature(digest); - assertEq(kernel.isValidSignature(_hash, sig), bytes4(0xffffffff)); - } - - function test_fail_validate_InvalidWebAuthnData() external { - // Prepare the data to sign - bytes32 _hash = keccak256(abi.encodePacked("hello world")); - bytes32 digest = keccak256( - abi.encodePacked( - "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), _hash - ) - ); - - bytes32 _wrongHash = keccak256(abi.encodePacked("bye world")); - - // Sign it - bytes memory sig = signHash(digest); - - // Ensure it's reverting - vm.expectRevert("Kernel::_validateSignature: failed to validate signature"); - kernel.isValidSignature(_wrongHash, sig); - } - - function signUserOp(UserOperation memory op) internal view override returns (bytes memory) { - bytes32 _hash = entryPoint.getUserOpHash(op); - bytes memory signature = _generateWebAuthnSignature(ownerKey, _hash); - return abi.encodePacked(bytes4(0x00000000), signature); - } - - function getWrongSignature(UserOperation memory op) internal view override returns (bytes memory) { - bytes32 _hash = entryPoint.getUserOpHash(op); - bytes memory signature = _generateWebAuthnSignature(ownerKey + 1, _hash); - return abi.encodePacked(bytes4(0x00000000), signature); - } - - function signHash(bytes32 _hash) internal view override returns (bytes memory) { - return _generateWebAuthnSignature(ownerKey, _hash); - } - - function getWrongSignature(bytes32 _hash) internal view override returns (bytes memory) { - return _generateWebAuthnSignature(ownerKey + 1, _hash); - } - - function _assertPublicKey(uint256 actualX, uint256 actualY, uint256 expectedX, uint256 expectedY) internal { - assertEq(actualX, expectedX, "Public key X component mismatch"); - assertEq(actualY, expectedY, "Public key Y component mismatch"); - } - - /// @dev Ensure that the validation won't revert when using the dummy signature bypass (challenge offset to uint256.max) - function test_dontRevertForDummySig() public { - // Build rly dummy data for authenticator data and client data - bytes memory authenticatorData = hex"1312"; - bytes memory clientData = hex"1312"; - // Set the client challenge data offset to the max value - uint256 clientChallengeDataOffset = type(uint256).max; - - // Build an incoherent signature - uint256[2] memory rs = [type(uint256).max, type(uint256).max]; - - // Encode all of that into a signature - bytes memory signature = abi.encode(true, authenticatorData, clientData, clientChallengeDataOffset, rs); - - // Check the sig (and ensure we didn't revert here) - bool isValid = webAuthNTester.verifySignature(address(p256VerifierWrapper), bytes32(0), signature, x, y); - assertEq(isValid, false); - - // Ensure we can go through the validator with that signature - ValidationData validationData = webAuthNValidator.validateSignature(bytes32(0), signature); - assertEq(ValidationData.unwrap(validationData), 1); - } - - /// @dev Ensure that our flow to generate a webauthn signature is working - function test_webAuthnSignatureGeneration(bytes32 _hash, uint256 _privateKey) public { - vm.assume(_privateKey > 0); - vm.assume(_privateKey < n); - (uint256 pubX, uint256 pubY) = _getPublicKey(_privateKey); - - // Build all the data required - (bytes32 msgToSign, bytes memory authenticatorData, bytes memory clientData, uint256 clientChallengeDataOffset) - = _prepapreWebAuthnMsg(_hash); - - // Then sign them - (uint256 r, uint256 s) = _getP256Signature(_privateKey, msgToSign); - uint256[2] memory rs = [r, s]; - - // Encode all of that into a signature - bytes memory signature = abi.encode(true, authenticatorData, clientData, clientChallengeDataOffset, rs); - - // Ensure the signature is valid - bool isValid = webAuthNTester.verifySignature(address(p256VerifierWrapper), _hash, signature, pubX, pubY); - assertEq(isValid, true); - } - - /// @dev Ensure that our flow to generate a webauthn signature is working - function test_webAuthnSignatureGeneration_solo() public { - uint256 _privateKey = 0x1; - bytes32 _hash = keccak256(abi.encodePacked("hello world")); - (uint256 pubX, uint256 pubY) = _getPublicKey(_privateKey); - - // Build all the data required - (bytes32 msgToSign, bytes memory authenticatorData, bytes memory clientData, uint256 clientChallengeDataOffset) - = _prepapreWebAuthnMsg(_hash); - - // Then sign them - (uint256 r, uint256 s) = _getP256Signature(_privateKey, msgToSign); - uint256[2] memory rs = [r, s]; - - // Encode all of that into a signature - bytes memory signature = abi.encode(true, authenticatorData, clientData, clientChallengeDataOffset, rs); - - // Ensure the signature is valid - bool isValid = webAuthNTester.verifySignature(address(p256VerifierWrapper), _hash, signature, pubX, pubY); - assertEq(isValid, true); - } - - /* -------------------------------------------------------------------------- */ - /* Signature & P256 helper functions */ - /* -------------------------------------------------------------------------- */ - - /// @dev Generate a webauthn signature for the given `_hash` using the given `_privateKey` - function _generateWebAuthnSignature(uint256 _privateKey, bytes32 _hash) - internal - view - returns (bytes memory signature) - { - (bytes32 msgToSign, bytes memory authenticatorData, bytes memory clientData, uint256 clientChallengeDataOffset) - = _prepapreWebAuthnMsg(_hash); - - // Get the signature - (uint256 r, uint256 s) = _getP256Signature(_privateKey, msgToSign); - uint256[2] memory rs = [r, s]; - - // Return the signature - return abi.encode(true, authenticatorData, clientData, clientChallengeDataOffset, rs); - } - - /// @dev Prepare all the base data needed to perform a webauthn signature o n the given `_hash` - function _prepapreWebAuthnMsg(bytes32 _hash) - internal - view - returns ( - bytes32 msgToSign, - bytes memory authenticatorData, - bytes memory clientData, - uint256 clientChallengeDataOffset - ) - { - // Base Mapping of the message - bytes memory encodedChallenge = bytes(Base64Url.encode(abi.encodePacked(_hash))); - - // Prepare the authenticator data (from a real webauthn challenge) - authenticatorData = hex"49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000"; - - // Prepare the client data (starting from a real webauthn challenge, then replacing only the bytes needed for the challenge) - bytes memory clientDataStart = hex"7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a22"; - bytes memory clientDataEnd = - hex"222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a33303032222c2263726f73734f726967696e223a66616c73657d"; - clientData = bytes.concat(clientDataStart, encodedChallenge, clientDataEnd); - clientChallengeDataOffset = 36; - - // Build the signature layout - WebAuthnFclVerifier.FclSignatureLayout memory sigLayout = WebAuthnFclVerifier.FclSignatureLayout({ - useOnChainP256Verifier: true, - authenticatorData: authenticatorData, - clientData: clientData, - challengeOffset: clientChallengeDataOffset, - // R/S not needed since the formatter will only use the other data - rs: [uint256(0), uint256(0)] - }); - - // Format it - msgToSign = webAuthNTester.formatSigLayout(_hash, sigLayout); - } - - /// @dev Get a public key for a p256 user, from the given `_privateKey` - function _getPublicKey(uint256 _privateKey) internal view returns (uint256, uint256) { - return FCL_ecdsa_utils.ecdsa_derivKpub(_privateKey); - } - - /// P256 curve order n/2 for malleability check - uint256 constant P256_N_DIV_2 = 57896044605178124381348723474703786764998477612067880171211129530534256022184; - - /// @dev Generate a p256 signature, from the given `_privateKey` on the given `_hash` - function _getP256Signature(uint256 _privateKey, bytes32 _hash) internal pure returns (uint256, uint256) { - // Generate the signature using the k value and the private key - (bytes32 r, bytes32 s) = vm.signP256(_privateKey, _hash); - return (uint256(r), uint256(s)); - } -} - -/// @dev simple contract to format a webauthn challenge (using to convert stuff in memory during test to calldata) -contract WebAuthNTester { - function formatSigLayout(bytes32 _hash, WebAuthnFclVerifier.FclSignatureLayout calldata signatureLayout) - public - view - returns (bytes32) - { - console.log("hash: %d", uint256(_hash)); - return WebAuthnFclVerifier._formatWebAuthNChallenge(_hash, signatureLayout); - } - - function verifySignature(address _p256Verifier, bytes32 _hash, bytes calldata _signature, uint256 _x, uint256 _y) - public - view - returns (bool) - { - return WebAuthnFclVerifier._verifyWebAuthNSignature(_p256Verifier, _hash, _signature, _x, _y); - } -} diff --git a/test/foundry/validator/WeightedECDSAValidator.t.sol b/test/foundry/validator/WeightedECDSAValidator.t.sol deleted file mode 100644 index b6e96853..00000000 --- a/test/foundry/validator/WeightedECDSAValidator.t.sol +++ /dev/null @@ -1,169 +0,0 @@ -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import "src/Kernel.sol"; -import "src/validator/WeightedECDSAValidator.sol"; -// test artifacts -// test utils -import "forge-std/Test.sol"; -import {ERC4337Utils} from "src/utils/ERC4337Utils.sol"; -import {KernelTestBase} from "src/utils/KernelTestBase.sol"; -import {TestExecutor} from "src/mock/TestExecutor.sol"; -import {TestValidator} from "src/mock/TestValidator.sol"; -import {IKernel} from "src/interfaces/IKernel.sol"; - -using ERC4337Utils for IEntryPoint; - -contract KernelWeightedECDSATest is KernelTestBase { - address[] public owners; - uint256[] public ownerKeys; - uint24[] public weights; - uint24 public threshold; - uint48 public delay; - - function setUp() public virtual { - _initialize(); - defaultValidator = new WeightedECDSAValidator(); - owners = new address[](3); - ownerKeys = new uint256[](3); - (owners[0], ownerKeys[0]) = makeAddrAndKey("owner0"); - (owners[1], ownerKeys[1]) = makeAddrAndKey("owner1"); - (owners[2], ownerKeys[2]) = makeAddrAndKey("owner2"); - // sort owners and keys from largest to smallest owner address - for (uint256 i = 0; i < owners.length; i++) { - for (uint256 j = i + 1; j < owners.length; j++) { - if (owners[i] < owners[j]) { - address tempAddr = owners[i]; - owners[i] = owners[j]; - owners[j] = tempAddr; - uint256 tempKey = ownerKeys[i]; - ownerKeys[i] = ownerKeys[j]; - ownerKeys[j] = tempKey; - } - } - } - weights = [uint24(1), uint24(2), uint24(3)]; - threshold = 3; - delay = 0; - _setAddress(); - _setExecutionDetail(); - } - - function test_ignore() external {} - - function _setExecutionDetail() internal virtual override { - executionDetail.executor = address(new TestExecutor()); - executionSig = TestExecutor.doNothing.selector; - executionDetail.validator = new TestValidator(); - } - - function getEnableData() internal view virtual override returns (bytes memory) { - return ""; - } - - function getValidatorSignature(UserOperation memory) internal view virtual override returns (bytes memory) { - return ""; - } - - function getOwners() internal view override returns (address[] memory) { - return owners; - } - - function getInitializeData() internal view override returns (bytes memory) { - bytes memory data = abi.encode(owners, weights, threshold, delay); - return abi.encodeWithSelector(KernelStorage.initialize.selector, defaultValidator, data); - } - - function test_external_call_execute_success() external override { - vm.skip(true); - } - - function test_external_call_default() external override { - vm.skip(true); - } - - function test_external_call_execute_delegatecall_success() external override { - vm.skip(true); - } - - function test_external_call_batch_execute_success() external override { - vm.skip(true); - } - - function signUserOp(UserOperation memory op) internal view override returns (bytes memory) { - bytes32 calldataAndNonceHash = keccak256(abi.encode(op.sender, op.callData, op.nonce)); - - bytes32 digest = keccak256( - abi.encode( - keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), - keccak256("WeightedECDSAValidator"), - keccak256("0.0.3"), - block.chainid, - address(defaultValidator) - ) - ); - - bytes32 structHash = - keccak256(abi.encode(keccak256("Approve(bytes32 callDataAndNonceHash)"), calldataAndNonceHash)); - assembly { - // Compute the digest. - mstore(0x00, 0x1901000000000000) // Store "\x19\x01". - mstore(0x1a, digest) // Store the domain separator. - mstore(0x3a, structHash) // Store the struct hash. - digest := keccak256(0x18, 0x42) - // Restore the part of the free memory slot that was overwritten. - mstore(0x3a, 0) - } - - (uint8 v0, bytes32 r0, bytes32 s0) = vm.sign(ownerKeys[0], digest); - (uint8 v1, bytes32 r1, bytes32 s1) = vm.sign(ownerKeys[1], digest); - bytes memory opSig = entryPoint.signUserOpHash(vm, ownerKeys[2], op); - return abi.encodePacked(bytes4(0x00000000), r0, s0, v0, r1, s1, v1, opSig); - } - - function getWrongSignature(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), entryPoint.signUserOpHash(vm, ownerKeys[0], op)); - } - - function signHash(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v0, bytes32 r0, bytes32 s0) = vm.sign(ownerKeys[0], hash); - (uint8 v1, bytes32 r1, bytes32 s1) = vm.sign(ownerKeys[1], hash); - (uint8 v2, bytes32 r2, bytes32 s2) = vm.sign(ownerKeys[2], hash); - return abi.encodePacked(r0, s0, v0, r1, s1, v1, r2, s2, v2); - } - - function getWrongSignature(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v0, bytes32 r0, bytes32 s0) = vm.sign(ownerKeys[1], hash); - (uint8 v1, bytes32 r1, bytes32 s1) = vm.sign(ownerKeys[0], hash); - (uint8 v2, bytes32 r2, bytes32 s2) = vm.sign(ownerKeys[2], hash); - return abi.encodePacked(r0, s0, v0, r1, s1, v1, r2, s2, v2); - } - - function test_default_validator_enable() external override { - //UserOperation memory op = buildUserOperation( - // abi.encodeWithSelector( - // IKernel.execute.selector, - // address(defaultValidator), - // 0, - // abi.encodeWithSelector(ECDSAValidator.enable.selector, abi.encodePacked(address(0xdeadbeef))), - // Operation.Call - // ) - //); - //performUserOperationWithSig(op); - //(address owner) = ECDSAValidator(address(defaultValidator)).ecdsaValidatorStorage(address(kernel)); - //assertEq(owner, address(0xdeadbeef), "owner should be 0xdeadbeef"); - } - - function test_default_validator_disable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(defaultValidator), - 0, - abi.encodeWithSelector(WeightedECDSAValidator.disable.selector, ""), - Operation.Call - ) - ); - performUserOperationWithSig(op); - } -} diff --git a/test/foundry/validator/modularPermission/ModularPermission.t.sol b/test/foundry/validator/modularPermission/ModularPermission.t.sol deleted file mode 100644 index 4f90216d..00000000 --- a/test/foundry/validator/modularPermission/ModularPermission.t.sol +++ /dev/null @@ -1,729 +0,0 @@ -pragma solidity ^0.8.0; - -import {IEntryPoint} from "I4337/interfaces/IEntryPoint.sol"; -import {IKernel} from "src/interfaces/IKernel.sol"; -import {Kernel} from "src/Kernel.sol"; -import {IKernelValidator} from "src/interfaces/IKernelValidator.sol"; -import {Operation} from "src/common/Enums.sol"; -import {toPermissionFlag} from "src/validator/modularPermission/PolicyConfig.sol"; -import "src/validator/modularPermission/ModularPermissionValidator.sol"; -import "src/validator/modularPermission/signers/ECDSASigner.sol"; -import "src/validator/modularPermission/mock/MockPolicy.sol"; -import "src/validator/modularPermission/mock/MockSigner.sol"; -import "src/validator/modularPermission/policies/EIP712Policy.sol"; -import "forge-std/Test.sol"; -import {KernelTestBase} from "src/utils/KernelTestBase.sol"; -import {TestExecutor} from "src/mock/TestExecutor.sol"; -import {TestValidator} from "src/mock/TestValidator.sol"; -import {KernelStorage} from "src/abstract/KernelStorage.sol"; -import {ERC4337Utils} from "src/utils/ERC4337Utils.sol"; -import {SignaturePolicy} from "src/validator/modularPermission/policies/SignaturePolicy.sol"; -import {EIP712} from "solady/utils/EIP712.sol"; -import {KERNEL_NAME, KERNEL_VERSION} from "src/common/Constants.sol"; - -using ERC4337Utils for IEntryPoint; - -contract ModularPermissionE2ETest is KernelTestBase { - ECDSASigner signer; - MockPolicy mockPolicy; - SignaturePolicy signaturePolicy; - address[] allowedCaller; - - function setUp() public virtual { - _initialize(); - defaultValidator = new ModularPermissionValidator(); - signer = new ECDSASigner(); - mockPolicy = new MockPolicy(); - signaturePolicy = new SignaturePolicy(); - allowedCaller = new address[](2); - allowedCaller[0] = makeAddr("app"); - allowedCaller[1] = address(0); - _setAddress(); - _setExecutionDetail(); - } - - function test_ignore() external {} - - function getPermissionId() internal view returns (bytes32) { - PolicyConfig[] memory p = new PolicyConfig[](2); - p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); - p[1] = PolicyConfigLib.pack(IPolicy(address(signaturePolicy)), toFlag(1)); - bytes[] memory pd = new bytes[](2); - pd[0] = abi.encodePacked("policy data 1"); - pd[1] = abi.encode(allowedCaller); - - return ModularPermissionValidator(address(defaultValidator)).getPermissionId( - MAX_FLAG, signer, ValidAfter.wrap(0), ValidUntil.wrap(0), p, abi.encodePacked(owner), pd - ); - } - - function _setExecutionDetail() internal virtual override { - executionDetail.executor = address(new TestExecutor()); - executionSig = TestExecutor.doNothing.selector; - executionDetail.validator = new TestValidator(); - } - - function getEnableData() internal view virtual override returns (bytes memory) { - return ""; - } - - function getValidatorSignature(UserOperation memory) internal view virtual override returns (bytes memory) { - return ""; - } - - function getOwners() internal view override returns (address[] memory) { - address[] memory owners = new address[](1); - owners[0] = owner; - return owners; - } - - function getInitializeData() internal view override returns (bytes memory) { - bytes memory sd = abi.encodePacked(owner); - PolicyConfig[] memory p = new PolicyConfig[](2); - p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); - p[1] = PolicyConfigLib.pack(IPolicy(address(signaturePolicy)), toFlag(1)); - bytes[] memory pd = new bytes[](2); - pd[0] = abi.encodePacked("policy data 1"); - pd[1] = abi.encode(allowedCaller); - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - MAX_FLAG, - uint48(0), //`validAfter - uint48(0), // validUntil - address(signer) - ), // signer - abi.encode(p, sd, pd) - ); - - return abi.encodeWithSelector(KernelStorage.initialize.selector, defaultValidator, data); - } - - function signUserOp(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), getPermissionId(), entryPoint.signUserOpHash(vm, ownerKey, op)); - } - - function getWrongSignature(UserOperation memory op) internal view override returns (bytes memory) { - return abi.encodePacked(bytes4(0x00000000), getPermissionId(), entryPoint.signUserOpHash(vm, ownerKey + 1, op)); - } - - function signHash(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, hash); - return abi.encodePacked(getPermissionId(), r, s, v); - } - - function signHashWithoutPermissionId(bytes32 hash) internal view returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey, hash); - return abi.encodePacked(r, s, v); - } - - function getWrongSignature(bytes32 hash) internal view override returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(ownerKey + 1, hash); - return abi.encodePacked(getPermissionId(), r, s, v); - } - - struct MData { - address kernel; - ValidUntil until; - bytes sd; - EIP712Policy eip712; - PolicyConfig[] p; - bytes32 domainSeparator; - bytes32 typeHash; - bytes32 encodeData; - bytes32 digest; - bytes[] pd; - } - - struct ModularPermissionConfig { - uint128 nonce; - bytes12 flag; - ISigner signer; - ValidAfter validAfter; - ValidUntil validUntil; - PolicyConfig firstPolicy; - } - - function test_sessionKey_signature() external { - MData memory d; - d.kernel = address(kernel); - d.until = ValidUntil.wrap(uint48(block.timestamp + 100)); - d.sd = abi.encodePacked(owner); - d.eip712 = new EIP712Policy(); - d.p = new PolicyConfig[](1); - d.p[0] = PolicyConfigLib.pack(d.eip712, toFlag(1)); // skip on userOp - - d.domainSeparator = keccak256("DOMAIN_SEPARATOR"); - d.typeHash = keccak256("TypeHash(bytes32 encodeData)"); - d.encodeData = bytes32(uint256(0xdeadbeef)); - d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, d.encodeData))); - d.pd = new bytes[](1); - d.pd[0] = abi.encodePacked(d.domainSeparator, d.typeHash, bytes4(0), uint8(ParamRule.Equal), d.encodeData); - bytes32 permissionId = ModularPermissionValidator(address(defaultValidator)).getPermissionId( - toPermissionFlag(1), //flag - signer, - ValidAfter.wrap(1), - d.until, - d.p, - d.sd, - d.pd - ); - - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(1), // nonce - toPermissionFlag(1), //flag - uint48(1), //`validAfter - d.until, // validUntil - address(signer) - ), // signer - abi.encode(d.p, d.sd, d.pd) - ); - vm.startPrank(d.kernel); - defaultValidator.enable(data); - vm.stopPrank(); - ModularPermissionConfig memory config; - - (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = - ModularPermissionValidator(address(defaultValidator)).permissions(permissionId, d.kernel); - assertEq(config.nonce, uint128(1)); - assertEq(config.flag, toPermissionFlag(1)); - assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); - assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(d.until)); - assertEq(address(config.signer), address(signer)); - bytes32 wrappedDigest = keccak256( - abi.encodePacked( - "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), d.digest - ) - ); - - bytes4 res = kernel.isValidSignature( - d.digest, - abi.encodePacked( - permissionId, - d.eip712, - uint256(100), - d.domainSeparator, - d.typeHash, - uint32(1), - uint256(d.encodeData), // you should put all data here - signHashWithoutPermissionId(wrappedDigest) - ) - ); - assertEq(res, Kernel.isValidSignature.selector); - } - - function test_sessionKey_signature_greater_than() external { - MData memory d; - d.kernel = address(kernel); - d.until = ValidUntil.wrap(uint48(block.timestamp + 100)); - d.sd = abi.encodePacked(owner); - d.eip712 = new EIP712Policy(); - d.p = new PolicyConfig[](1); - d.p[0] = PolicyConfigLib.pack(d.eip712, toFlag(1)); // skip on userOp - - d.domainSeparator = keccak256("DOMAIN_SEPARATOR"); - d.typeHash = keccak256("TypeHash(bytes32 encodeData)"); - d.encodeData = bytes32(uint256(0xdeadbeef)); - d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, uint256(d.encodeData) + 1))); - d.pd = new bytes[](1); - d.pd[0] = abi.encodePacked(d.domainSeparator, d.typeHash, bytes4(0), uint8(ParamRule.GreaterThan), d.encodeData); - bytes32 permissionId = ModularPermissionValidator(address(defaultValidator)).getPermissionId( - toPermissionFlag(1), //flag - signer, - ValidAfter.wrap(1), - d.until, - d.p, - d.sd, - d.pd - ); - - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(1), // nonce - toPermissionFlag(1), //flag - uint48(1), //`validAfter - d.until, // validUntil - address(signer) - ), // signer - abi.encode(d.p, d.sd, d.pd) - ); - vm.startPrank(d.kernel); - defaultValidator.enable(data); - vm.stopPrank(); - ModularPermissionConfig memory config; - - (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = - ModularPermissionValidator(address(defaultValidator)).permissions(permissionId, d.kernel); - assertEq(config.nonce, uint128(1)); - assertEq(config.flag, toPermissionFlag(1)); - assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); - assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(d.until)); - assertEq(address(config.signer), address(signer)); - bytes32 wrappedDigest = keccak256( - abi.encodePacked( - "\x19\x01", ERC4337Utils._buildDomainSeparator(KERNEL_NAME, KERNEL_VERSION, address(kernel)), d.digest - ) - ); - - bytes4 res = kernel.isValidSignature( - d.digest, - abi.encodePacked( - permissionId, - d.eip712, - uint256(100), - d.domainSeparator, - d.typeHash, - uint32(1), - uint256(d.encodeData) + 1, // you should put all data here - signHashWithoutPermissionId(wrappedDigest) - ) - ); - assertEq(res, Kernel.isValidSignature.selector); - } - - function test_default_validator_enable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(defaultValidator), - 0, - abi.encodeWithSelector(IKernelValidator.enable.selector, abi.encodePacked(address(0xdeadbeef))), - Operation.Call - ) - ); - bytes memory sd = abi.encodePacked(owner); - PolicyConfig[] memory p = new PolicyConfig[](1); - p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); - bytes[] memory pd = new bytes[](1); - pd[0] = abi.encodePacked("policy data 2"); - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - MAX_FLAG, //flag - uint48(0), //`validAfter - uint48(0), // validUntil - address(signer) - ), // signer - abi.encode(p, sd, pd) - ); - performUserOperationWithSig(op); - } - - function test_default_validator_disable() external override { - UserOperation memory op = buildUserOperation( - abi.encodeWithSelector( - IKernel.execute.selector, - address(defaultValidator), - 0, - abi.encodeWithSelector(IKernelValidator.disable.selector, abi.encodePacked(getPermissionId())), - Operation.Call - ) - ); - performUserOperationWithSig(op); - } - - function test_external_call_execute_success() external override { - vm.skip(true); - } - - function test_external_call_default() external override { - vm.skip(true); - } - - function test_external_call_execute_delegatecall_success() external override { - vm.skip(true); - } - - function test_external_call_batch_execute_success() external override { - vm.skip(true); - } - - function test_external_call_execution() external override { - vm.skip(true); - } -} - -contract ModularPermissionUnitTest is Test { - ModularPermissionValidator validator; - - MockSigner mockSigner; - MockPolicy mockPolicy; - - function setUp() external { - validator = new ModularPermissionValidator(); - mockPolicy = new MockPolicy(); - mockSigner = new MockSigner(); - } - - function testParseData() external { - uint48 until = uint48(block.timestamp + 100); - bytes memory sd = abi.encodePacked("hello world"); - PolicyConfig[] memory p = new PolicyConfig[](2); - p[0] = PolicyConfigLib.pack(IPolicy(address(0xdeadbeef)), toFlag(0)); - p[1] = PolicyConfigLib.pack(IPolicy(address(0xcafecafe)), toFlag(0)); - bytes[] memory pd = new bytes[](2); - pd[0] = abi.encodePacked("policy data 1"); - pd[1] = abi.encodePacked("policy data 2"); - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - MAX_FLAG, //flag - uint48(1), //`validAfter - until, // validUntil - address(0xdead) - ), // signer - abi.encode(p, sd, pd) - ); - ( - uint128 nonce, - bytes12 flag, - ISigner signer, - ValidAfter validAfter, - ValidUntil validUntil, - PolicyConfig[] memory policies, - bytes memory signerData, - bytes[] memory policyData - ) = validator.parseData(data); - assertEq(nonce, uint128(0)); - assertEq(flag, MAX_FLAG); - assertEq(ValidAfter.unwrap(validAfter), uint48(1)); - assertEq(ValidUntil.unwrap(validUntil), until); - assertEq(address(signer), address(0xdead)); - assertEq(address(PolicyConfigLib.getAddress(policies[0])), address(0xdeadbeef)); - assertEq(address(PolicyConfigLib.getAddress(policies[1])), address(0xcafecafe)); - assertEq(signerData, abi.encodePacked("hello world")); - assertEq(policyData[0], abi.encodePacked("policy data 1")); - assertEq(policyData[1], abi.encodePacked("policy data 2")); - } - - function testRegister() external { - uint48 until = uint48(block.timestamp + 100); - bytes memory sd = abi.encodePacked("hello signer"); - PolicyConfig[] memory p = new PolicyConfig[](1); - p[0] = PolicyConfigLib.pack(IPolicy(address(mockPolicy)), toFlag(0)); - bytes[] memory pd = new bytes[](1); - pd[0] = abi.encodePacked("hello policy"); - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - MAX_FLAG, //flag - uint48(1), //`validAfter - until, // validUntil - address(mockSigner) - ), // signer - abi.encode(p, sd, pd) - ); - validator.enable(data); - } - - struct ModularPermissionConfig { - uint128 nonce; - bytes12 flag; - ISigner signer; - ValidAfter validAfter; - ValidUntil validUntil; - PolicyConfig firstPolicy; - } - - function testValidateUserOpSkip() external { - address kernel = makeAddr("Kernel"); - ValidUntil until = ValidUntil.wrap(uint48(block.timestamp + 100)); - bytes memory sd = abi.encodePacked("hello signer"); - MockPolicy skipPolicy = new MockPolicy(); - PolicyConfig[] memory p = new PolicyConfig[](2); - p[0] = PolicyConfigLib.pack(mockPolicy, toFlag(0)); - p[1] = PolicyConfigLib.pack(skipPolicy, toFlag(1)); // skip - - bytes[] memory pd = new bytes[](2); - pd[0] = abi.encodePacked("hello policy"); - pd[1] = abi.encodePacked("hello policy 2"); - bytes32 permissionId = validator.getPermissionId( - toPermissionFlag(0), //flag - mockSigner, - ValidAfter.wrap(1), - until, - p, - sd, - pd - ); - - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - toPermissionFlag(0), //flag - uint48(1), //`validAfter - until, // validUntil - address(mockSigner) - ), // signer - abi.encode(p, sd, pd) - ); - vm.startPrank(kernel); - validator.enable(data); - vm.stopPrank(); - - ModularPermissionConfig memory config; - - (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = - validator.permissions(permissionId, kernel); - assertEq(config.nonce, uint128(0)); - assertEq(config.flag, toPermissionFlag(0)); - assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); - assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(until)); - assertEq(address(config.signer), address(mockSigner)); - assertEq(address(PolicyConfigLib.getAddress(config.firstPolicy)), address(mockPolicy)); - - assertEq(mockSigner.signerData(), sd); - assertEq(mockPolicy.policyData(), pd[0]); - UserOperation memory op; - op.sender = kernel; - op.signature = abi.encodePacked(permissionId); - vm.startPrank(kernel); - validator.validateUserOp(op, keccak256(abi.encodePacked("hello")), 0); - vm.stopPrank(); - - assertEq(mockSigner.count(permissionId), 1); - assertEq(mockPolicy.count(permissionId), 1); - assertEq(skipPolicy.count(permissionId), 0); - } - - struct MData { - address kernel; - ValidUntil until; - bytes sd; - EIP712Policy eip712; - PolicyConfig[] p; - bytes32 domainSeparator; - bytes32 typeHash; - bytes32 encodeData; - bytes32 digest; - bytes[] pd; - } - - function testValidateSignature() external { - MData memory d; - d.kernel = makeAddr("Kernel"); - d.until = ValidUntil.wrap(uint48(block.timestamp + 100)); - d.sd = abi.encodePacked("hello signer"); - d.eip712 = new EIP712Policy(); - d.p = new PolicyConfig[](1); - d.p[0] = PolicyConfigLib.pack(d.eip712, toFlag(1)); // skip on userOp - - d.domainSeparator = keccak256("DOMAIN_SEPARATOR"); - d.typeHash = keccak256("TypeHash(bytes32 encodeData)"); - d.encodeData = bytes32(uint256(0xdeadbeef)); - d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, d.encodeData))); - d.pd = new bytes[](1); - d.pd[0] = abi.encodePacked(d.domainSeparator, d.typeHash, bytes4(0), uint8(ParamRule.Equal), d.encodeData); - bytes32 permissionId = validator.getPermissionId( - toPermissionFlag(1), //flag - mockSigner, - ValidAfter.wrap(1), - d.until, - d.p, - d.sd, - d.pd - ); - - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - toPermissionFlag(1), //flag - uint48(1), //`validAfter - d.until, // validUntil - address(mockSigner) - ), // signer - abi.encode(d.p, d.sd, d.pd) - ); - vm.startPrank(d.kernel); - validator.enable(data); - vm.stopPrank(); - - ModularPermissionConfig memory config; - - (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = - validator.permissions(permissionId, d.kernel); - assertEq(config.nonce, uint128(0)); - assertEq(config.flag, toPermissionFlag(1)); - assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); - assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(d.until)); - assertEq(address(config.signer), address(mockSigner)); - - UserOperation memory op; - op.sender = d.kernel; - op.signature = abi.encodePacked(permissionId); - vm.startPrank(d.kernel); - (bool success, bytes memory ret) = address(validator).call( - abi.encodePacked( - abi.encodeWithSelector( - ModularPermissionValidator.validateSignature.selector, - d.digest, - abi.encodePacked( - permissionId, d.eip712, uint256(100), d.domainSeparator, d.typeHash, uint32(1), d.encodeData - ) - ), - d.digest, - makeAddr("app") - ) - ); - require(address(uint160(bytes20(bytes32(ret) << 96))) == address(0)); - require(success); - vm.stopPrank(); - vm.startPrank(d.kernel); - d.digest = _hashTypedData(d.domainSeparator, keccak256(abi.encode(d.typeHash, uint256(d.encodeData) + 1))); - (success, ret) = address(validator).call( - abi.encodePacked( - abi.encodeWithSelector( - ModularPermissionValidator.validateSignature.selector, - d.digest, - abi.encodePacked( - permissionId, - d.eip712, - uint256(100), - d.domainSeparator, - d.typeHash, - uint32(1), - uint256(d.encodeData) + 1 - ) - ), - d.digest, - makeAddr("app") - ) - ); - require(address(uint160(bytes20(bytes32(ret) << 96))) == address(1)); - require(success); - vm.stopPrank(); - } - - function testValidateSignatureSkip() external { - address kernel = makeAddr("Kernel"); - ValidUntil until = ValidUntil.wrap(uint48(block.timestamp + 100)); - bytes memory sd = abi.encodePacked("hello signer"); - MockPolicy skipPolicy = new MockPolicy(); - PolicyConfig[] memory p = new PolicyConfig[](2); - p[0] = PolicyConfigLib.pack(mockPolicy, toFlag(0)); - p[1] = PolicyConfigLib.pack(skipPolicy, toFlag(2)); // skip on signature - skipPolicy.mock(0, 0, true, true); - - bytes[] memory pd = new bytes[](2); - pd[0] = abi.encodePacked("hello policy"); - pd[1] = abi.encodePacked("hello policy 2"); - bytes32 permissionId = validator.getPermissionId( - MAX_FLAG, //flag - mockSigner, - ValidAfter.wrap(1), - until, - p, - sd, - pd - ); - - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - MAX_FLAG, //flag - uint48(1), //`validAfter - until, // validUntil - address(mockSigner) - ), // signer - abi.encode(p, sd, pd) - ); - vm.startPrank(kernel); - validator.enable(data); - vm.stopPrank(); - - ModularPermissionConfig memory config; - - (config.nonce, config.flag, config.signer, config.firstPolicy, config.validAfter, config.validUntil) = - validator.permissions(permissionId, kernel); - assertEq(config.nonce, uint128(0)); - assertEq(config.flag, MAX_FLAG); - assertEq(ValidAfter.unwrap(config.validAfter), uint48(1)); - assertEq(ValidUntil.unwrap(config.validUntil), ValidUntil.unwrap(until)); - assertEq(address(config.signer), address(mockSigner)); - assertEq(address(PolicyConfigLib.getAddress(config.firstPolicy)), address(mockPolicy)); - - assertEq(mockSigner.signerData(), sd); - assertEq(mockPolicy.policyData(), pd[0]); - UserOperation memory op; - op.sender = kernel; - op.signature = abi.encodePacked(permissionId); - vm.startPrank(kernel); - vm.expectRevert(); - validator.validateSignature(keccak256(abi.encodePacked("hello")), ""); - vm.stopPrank(); - } - - function testValidateUserOp() external { - address kernel = makeAddr("Kernel"); - ValidUntil until = ValidUntil.wrap(uint48(block.timestamp + 100)); - bytes memory sd = abi.encodePacked("hello signer"); - PolicyConfig[] memory p = new PolicyConfig[](1); - p[0] = PolicyConfigLib.pack(mockPolicy, toFlag(0)); - bytes[] memory pd = new bytes[](1); - pd[0] = abi.encodePacked("hello policy"); - bytes32 permissionId = validator.getPermissionId( - MAX_FLAG, //flag - mockSigner, - ValidAfter.wrap(1), - until, - p, - sd, - pd - ); - - bytes memory data = abi.encodePacked( - abi.encodePacked( - uint128(0), // nonce - MAX_FLAG, //flag - uint48(1), //`validAfter - until, // validUntil - address(mockSigner) - ), // signer - abi.encode(p, sd, pd) - ); - vm.startPrank(kernel); - validator.enable(data); - vm.stopPrank(); - - ( - uint128 nonce, - bytes12 flag, - ISigner signer, - PolicyConfig firstPolicy, - ValidAfter validAfter, - ValidUntil validUntil - ) = validator.permissions(permissionId, kernel); - assertEq(nonce, uint128(0)); - assertEq(flag, MAX_FLAG); - assertEq(ValidAfter.unwrap(validAfter), uint48(1)); - assertEq(ValidUntil.unwrap(validUntil), ValidUntil.unwrap(until)); - assertEq(address(signer), address(mockSigner)); - assertEq(address(PolicyConfigLib.getAddress(firstPolicy)), address(mockPolicy)); - - assertEq(mockSigner.signerData(), sd); - assertEq(mockPolicy.policyData(), pd[0]); - UserOperation memory op; - op.sender = kernel; - op.signature = abi.encodePacked(permissionId); - vm.startPrank(kernel); - validator.validateUserOp(op, keccak256(abi.encodePacked("hello")), 0); - vm.stopPrank(); - - assertEq(mockSigner.count(permissionId), 1); - assertEq(mockPolicy.count(permissionId), 1); - } -} - -function _hashTypedData(bytes32 domain, bytes32 structHash) pure returns (bytes32 digest) { - /// @solidity memory-safe-assembly - assembly { - // Compute the digest. - mstore(0x00, 0x1901000000000000) // Store "\x19\x01". - mstore(0x1a, domain) // Store the domain separator. - mstore(0x3a, structHash) // Store the struct hash. - digest := keccak256(0x18, 0x42) - // Restore the part of the free memory slot that was overwritten. - mstore(0x3a, 0) - } -} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..4061a53d --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4004 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" + integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.6.2", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.6.1", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.6.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.6.1", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@1.3.0", "@noble/curves@~1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomicfoundation/edr-darwin-arm64@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.3.tgz#0618dbdf1c832f8e61c77540e7188c13fdd5b658" + integrity sha512-E9VGsUD+1Ga4mn/5ooHsMi8JEfhZbKP6CXN/BhJ8kXbIC10NqTD1RuhCKGRtYq4vqH/3Nfq25Xg8E8RWOF4KBQ== + +"@nomicfoundation/edr-darwin-x64@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.3.tgz#567ee0bca8d019085e8dd95330e7c03f16c66a79" + integrity sha512-vkZXZ1ydPg+Ijb2iyqENA+KCkxGTCUWG5itCSliiA0Li2YE7ujDMGhheEpFp1WVlZadviz0bfk1rZXbCqlirpg== + +"@nomicfoundation/edr-linux-arm64-gnu@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.3.tgz#3956b4d7a0127e2259351626c92698c4ce6ecf05" + integrity sha512-gdIg0Yj1qqS9wVuywc5B/+DqKylfUGB6/CQn/shMqwAfsAVAVpchkhy66PR+REEx7fh/GkNctxLlENXPeLzDiA== + +"@nomicfoundation/edr-linux-arm64-musl@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.3.tgz#139f801939ed467f1719a2ab014993838008eefb" + integrity sha512-AXZ08MFvhNeBZbOBNmz1SJ/DMrMOE2mHEJtaNnsctlxIunjxfrWww4q+WXB34jbr9iaVYYlPsaWe5sueuw6s3Q== + +"@nomicfoundation/edr-linux-x64-gnu@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.3.tgz#b5994caa1a8bb4afca5f079ad7dd99edb26c6c45" + integrity sha512-xElOs1U+E6lBLtv1mnJ+E8nr2MxZgKiLo8bZAgBboy9odYtmkDVwhMjtsFKSuZbGxFtsSyGRT4cXw3JAbtUDeA== + +"@nomicfoundation/edr-linux-x64-musl@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.3.tgz#536c1d1dfd2fc7d7ad6ed6e14ed9a12322d88ba6" + integrity sha512-2Fe6gwm1RAGQ/PfMYiaSba2OrFp8zzYWh+am9lYObOFjV9D+A1zhIzfy0UC74glPks5eV8eY4pBPrVR042m2Nw== + +"@nomicfoundation/edr-win32-arm64-msvc@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-arm64-msvc/-/edr-win32-arm64-msvc-0.3.3.tgz#f71609644d8585c2ec71580bf75c2fd036ee58b0" + integrity sha512-8NHyxIsFrl0ufSQ/ErqF2lKIa/gz1gaaa1a2vKkDEqvqCUcPhBTYhA5NHgTPhLETFTnCFr0z+YbctFCyjh4qrA== + +"@nomicfoundation/edr-win32-ia32-msvc@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-ia32-msvc/-/edr-win32-ia32-msvc-0.3.3.tgz#baa5eaacb1fff107d02f0e6a33dee9521fd2bf37" + integrity sha512-0F6hM0kGia4dQVb/kauho9JcP1ozWisY2/She+ISR5ceuhzmAwQJluM0g+0TYDME0LtxBxiMPq/yPiZMQeq31w== + +"@nomicfoundation/edr-win32-x64-msvc@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.3.tgz#7562e061b2481f87bb1ace30513a2ad38c469836" + integrity sha512-d75q1uaMb6z9i+GQZoblbOfFBvlBnWc+5rB13UWRkCOJSnoYwyFWhGJx5GeM59gC7aIblc5VD9qOAhHuvM9N+w== + +"@nomicfoundation/edr@^0.3.1": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.3.3.tgz#0ed8619ea2ac644bf87cdc09dd1a8f465a859bcc" + integrity sha512-zP+e+3B1nEUx6bW5BPnIzCQbkhmYfdMBJdiVggTqqTfAA82sOkdOG7wsOMcz5qF3fYfx/irNRM1kgc9HVFIbpQ== + optionalDependencies: + "@nomicfoundation/edr-darwin-arm64" "0.3.3" + "@nomicfoundation/edr-darwin-x64" "0.3.3" + "@nomicfoundation/edr-linux-arm64-gnu" "0.3.3" + "@nomicfoundation/edr-linux-arm64-musl" "0.3.3" + "@nomicfoundation/edr-linux-x64-gnu" "0.3.3" + "@nomicfoundation/edr-linux-x64-musl" "0.3.3" + "@nomicfoundation/edr-win32-arm64-msvc" "0.3.3" + "@nomicfoundation/edr-win32-ia32-msvc" "0.3.3" + "@nomicfoundation/edr-win32-x64-msvc" "0.3.3" + +"@nomicfoundation/ethereumjs-common@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz#9901f513af2d4802da87c66d6f255b510bef5acb" + integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.4" + +"@nomicfoundation/ethereumjs-rlp@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz#66c95256fc3c909f6fb18f6a586475fc9762fa30" + integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw== + +"@nomicfoundation/ethereumjs-tx@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz#b0ceb58c98cc34367d40a30d255d6315b2f456da" + integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz#84c5274e82018b154244c877b76bc049a4ed7b38" + integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/hardhat-chai-matchers@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.6.tgz#ef88be3bd666adf29c06ac7882e96c8dbaaa32ba" + integrity sha512-Te1Uyo9oJcTCF0Jy9dztaLpshmlpjLf2yPtWXlXuLjMt3RRSmJLm/+rKVTW6gfadAEs12U/it6D0ZRnnRGiICQ== + dependencies: + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-ethers@^3.0.0": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz#0422c2123dec7c42e7fb2be8e1691f1d9708db56" + integrity sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw== + dependencies: + debug "^4.1.1" + lodash.isequal "^4.5.0" + +"@nomicfoundation/hardhat-foundry@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.1.tgz#db72b1f33f9cfaecc27e67f69ad436f8710162d6" + integrity sha512-cXGCBHAiXas9Pg9MhMOpBVQCkWRYoRFG7GJJAph+sdQsfd22iRs5U5Vs9XmpGEQd1yEvYISQZMeE68Nxj65iUQ== + dependencies: + chalk "^2.4.2" + +"@nomicfoundation/hardhat-ignition-ethers@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.0.tgz#d59bffe8930baf845afa083ca55885096862a6fd" + integrity sha512-KmMNUc/jptfwdPA9ukQf+Ajon+m2vLBjDL2ze7d/vQdrS+fDxmoVwmbbEk4GOjianZcwgQOWD9dEWaj04QiowA== + +"@nomicfoundation/hardhat-ignition@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.0.tgz#f5c01f311d54b44764c2c99d4766b82f2d9d49ad" + integrity sha512-GbAe90O22uM67U/JnffXX+mBMn0HqCKSH+D98Tb5uWqR1N/M00cB3yY8OdqzVai7I6SuIKTc91mPdvtWt8R3MA== + dependencies: + "@nomicfoundation/ignition-core" "^0.15.0" + "@nomicfoundation/ignition-ui" "^0.15.0" + chalk "^4.0.0" + debug "^4.3.2" + fs-extra "^10.0.0" + prompts "^2.4.2" + +"@nomicfoundation/hardhat-network-helpers@^1.0.0": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz#c61042ceb104fdd6c10017859fdef6529c1d6585" + integrity sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ== + dependencies: + ethereumjs-util "^7.1.4" + +"@nomicfoundation/hardhat-toolbox@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz#165b47f8a3d2bf668cc5d453ce7f496a1156948d" + integrity sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ== + +"@nomicfoundation/hardhat-verify@^2.0.0": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.5.tgz#dcc2cb5e5c55a39704c7d492436f80f05a4ca5a3" + integrity sha512-Tg4zu8RkWpyADSFIgF4FlJIUEI4VkxcvELsmbJn2OokbvH2SnUrqKmw0BBfDrtvP0hhmx8wsnrRKP5DV/oTyTA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + lodash.clonedeep "^4.5.0" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + +"@nomicfoundation/ignition-core@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ignition-core/-/ignition-core-0.15.0.tgz#28ad7da61d4c1e50d6ead09e8c92881b59c176cf" + integrity sha512-d/h8jgJHY4xIroHqdaGeTkTqjQeuzmU759AOn1Fg88cuxVhS7JM22ZI0bQWyLNSMsVstHBIo+lSMIsvm9jBF2w== + dependencies: + "@ethersproject/address" "5.6.1" + cbor "^9.0.0" + debug "^4.3.2" + ethers "^6.7.0" + fs-extra "^10.0.0" + immer "10.0.2" + lodash "4.17.21" + ndjson "2.0.0" + +"@nomicfoundation/ignition-ui@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.0.tgz#0c1bd3e0d673fe44a48a5a30b8f43f7d8395b8ff" + integrity sha512-RBvvQ0e8RcEc/LoSzNTPVKZZ5vEwlmxt7PXG278+6DqCrOqxqmh6W9PtK/4mwwvnTeBqds+8j81jDf6vJbOVBQ== + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" + integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== + +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" + integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" + integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" + integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" + integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" + integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== + +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" + integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== + +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" + integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" + integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" + +"@scure/base@~1.1.0", "@scure/base@~1.1.4": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" + integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip32@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" + integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== + dependencies: + "@noble/curves" "~1.3.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" + integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== + dependencies: + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@solidity-parser/parser@^0.14.0": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@solidity-parser/parser@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.18.0.tgz#8e77a02a09ecce957255a2f48c9a7178ec191908" + integrity sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@typechain/ethers-v6@^0.5.0": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz#42fe214a19a8b687086c93189b301e2b878797ea" + integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^9.0.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-9.1.0.tgz#6985015f01dfb37ef2ca8a29c742d05890351ddc" + integrity sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA== + dependencies: + fs-extra "^9.1.0" + +"@types/bn.js@^4.11.3": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + +"@types/chai-as-promised@^7.1.3": + version "7.1.8" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@4": + version "4.3.14" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.14.tgz#ae3055ea2be43c91c9fd700a36d67820026d96e6" + integrity sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w== + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/mocha@^10.0.6": + version "10.0.6" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b" + integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== + +"@types/node@*", "@types/node@^20.12.5": + version "20.12.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.5.tgz#74c4f31ab17955d0b5808cdc8fd2839526ad00b3" + integrity sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw== + dependencies: + undici-types "~5.26.4" + +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/pbkdf2@^3.0.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz#2dc43808e9985a2c69ff02e2d2027bd4fe33e8dc" + integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/qs@^6.2.31": + version "6.9.14" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.14.tgz#169e142bfe493895287bee382af6039795e9b75b" + integrity sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA== + +"@types/secp256k1@^4.0.1": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" + integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== + dependencies: + "@types/node" "*" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + +acorn-walk@^8.1.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.4.1: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async@1.x: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +axios@^1.5.1: + version "1.6.8" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" + integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== + dependencies: + nofilter "^3.1.0" + +cbor@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.2.tgz#536b4f2d544411e70ec2b19a2453f10f83cd9fdb" + integrity sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ== + dependencies: + nofilter "^3.1.0" + +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== + dependencies: + check-error "^1.0.2" + +chai@4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +check-error@^1.0.2, check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cli-table3@^0.6.0: + version "0.6.4" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.4.tgz#d1c536b8a3f2e7bec58f67ac9e5769b1b30088b0" + integrity sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.4.0, colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +death@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-eql@^4.0.1, deep-eql@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +difflib@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +elliptic@^6.5.2, elliptic@^6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enquirer@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +esprima@2.7.x, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eth-gas-reporter@^0.2.25: + version "0.2.27" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz#928de8548a674ed64c7ba0bf5795e63079150d4e" + integrity sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw== + dependencies: + "@solidity-parser/parser" "^0.14.0" + axios "^1.5.1" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^5.7.2" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^10.2.0" + req-cwd "^2.0.0" + sha1 "^1.1.1" + sync-request "^6.0.0" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" + integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== + dependencies: + "@noble/curves" "1.3.0" + "@noble/hashes" "1.3.3" + "@scure/bip32" "1.3.3" + "@scure/bip39" "1.2.2" + +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^7.1.4: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethers@^6.4.0, ethers@^6.7.0: + version "6.11.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.11.1.tgz#96aae00b627c2e35f9b0a4d65c7ab658259ee6af" + integrity sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.5.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.0.3: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.12.1, follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +handlebars@^4.0.1: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +hardhat-contract-sizer@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/hardhat-contract-sizer/-/hardhat-contract-sizer-2.10.0.tgz#72646f43bfe50e9a5702c9720c9bc3e77d93a2c9" + integrity sha512-QiinUgBD5MqJZJh1hl1jc9dNnpJg7eE/w4/4GEnrcmZJJTDbVFNe3+/3Ep24XqISSkYxRz36czcPHKHd/a0dwA== + dependencies: + chalk "^4.0.0" + cli-table3 "^0.6.0" + strip-ansi "^6.0.0" + +hardhat-gas-reporter@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz#ebe5bda5334b5def312747580cd923c2b09aef1b" + integrity sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" + +hardhat-spdx-license-identifier@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hardhat-spdx-license-identifier/-/hardhat-spdx-license-identifier-2.2.0.tgz#af6fa4de88b822dbcb62b085e4d9d2156b20af27" + integrity sha512-audxGrmLL/TGr0Ef/p3tEH8frtygCb+9RWbMQtd1w2p5V6HzQsSJUlAJFywZZ/igQ6B1qAKqAbeLePNclEe2Qw== + +hardhat@^2.22.2: + version "2.22.2" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.2.tgz#0cadd7ec93bf39bab09f81603e75bc5e92acea3d" + integrity sha512-0xZ7MdCZ5sJem4MrvpQWLR3R3zGDoHw5lsR+pBFimqwagimIOn3bWuZv69KA+veXClwI1s/zpqgwPwiFrd4Dxw== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/edr" "^0.3.1" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + boxen "^5.1.2" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +"heap@>= 0.2.0": + version "0.2.7" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^5.1.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +immer@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.2.tgz#11636c5b77acf529e059582d76faf338beb56141" + integrity sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA== + +immutable@^4.0.0-rc.12: + version "4.3.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" + integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@3.x: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" + integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@0.5.x: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^10.0.0, mocha@^10.2.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.4.0.tgz#ed03db96ee9cfc6d20c56f8e2af07b961dbae261" + integrity sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "8.1.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +ndjson@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ndjson/-/ndjson-2.0.0.tgz#320ac86f6fe53f5681897349b86ac6f43bfa3a19" + integrity sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ== + dependencies: + json-stringify-safe "^5.0.1" + minimist "^1.2.5" + readable-stream "^3.6.0" + split2 "^3.0.0" + through2 "^4.0.0" + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-gyp-build@^4.2.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + +once@1.x, once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qs@^6.4.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.0.tgz#edd40c3b823995946a8a0b1f208669c7a200db77" + integrity sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg== + dependencies: + side-channel "^1.0.6" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +raw-body@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.0, require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.1.6: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.6.tgz#cf6784355ff2076f92d70d59047d71c13703e839" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +scrypt-js@3.0.1, scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solidity-coverage@^0.8.1: + version "0.8.12" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.12.tgz#c4fa2f64eff8ada7a1387b235d6b5b0e6c6985ed" + integrity sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw== + dependencies: + "@ethersproject/abi" "^5.0.9" + "@solidity-parser/parser" "^0.18.0" + chalk "^2.4.2" + death "^1.1.0" + difflib "^0.2.4" + fs-extra "^8.1.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.21" + mocha "^10.2.0" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + semver "^7.3.4" + shelljs "^0.8.3" + web3-utils "^1.3.6" + +source-map-support@^0.5.13: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== + dependencies: + amdefine ">=0.0.4" + +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.8.0: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +tmp@0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +typechain@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@^5.4.4: + version "5.4.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.4.tgz#eb2471e7b0a5f1377523700a21669dce30c2d952" + integrity sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici@^5.14.0: + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== + dependencies: + "@fastify/busboy" "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +web3-utils@^1.3.6: + version "1.10.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.4.tgz#0daee7d6841641655d8b3726baf33b08eda1cbec" + integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +which@^1.1.1, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==

6IY<_9c{5Jp8C;x%z`OP97Z}0fjiL|= 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