diff --git a/.eslintrc.js b/.eslintrc.js index a44e353e..b51b99cc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -33,13 +33,27 @@ module.exports = { "import/order": [ "error", { - groups: [["builtin", "external"]], + groups: [ + "builtin", + "external", + "internal", + "parent", + "sibling", + "index", + "object", + "type", + ], alphabetize: { order: "asc", }, + "newlines-between": "always", }, ], "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { ignoreRestSiblings: true }, + ], }, }; diff --git a/.nvmrc b/.nvmrc index c9b6b29e..65898478 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v16.0.0 +v18.0.0 diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 1fca6c54..00000000 --- a/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "trailingComma": "es5", - "semi": true -} diff --git a/.solhint.json b/.solhint.json index 1ac53412..f4eeab0e 100644 --- a/.solhint.json +++ b/.solhint.json @@ -1,16 +1,17 @@ { - "extends": "solhint:recommended", - "rules": { - "compiler-version": "off", - "func-visibility": [ - "warn", - { - "ignoreConstructors": true - } - ], - "not-rely-on-time": "off", - "reason-string": "off", - "no-empty-blocks": "off", - "avoid-low-level-calls": "off" - } + "extends": "solhint:recommended", + "rules": { + "compiler-version": "off", + "func-visibility": [ + "warn", + { + "ignoreConstructors": true + } + ], + "not-rely-on-time": "off", + "reason-string": "off", + "no-empty-blocks": "off", + "avoid-low-level-calls": "off", + "no-inline-assembly": "off" + } } diff --git a/.solhintignore b/.solhintignore new file mode 100644 index 00000000..7ec58e1b --- /dev/null +++ b/.solhintignore @@ -0,0 +1 @@ +./contracts/test \ No newline at end of file diff --git a/README.md b/README.md index 7d0bb493..914120e4 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # Zodiac: The expansion pack for DAOs -[![Build Status](https://github.com/gnosis/zodiac/workflows/zodiac/badge.svg?branch=master)](https://github.com/gnosis/zodiac/actions?branch=master) -[![Coverage Status](https://coveralls.io/repos/github/gnosis/zodiac/badge.svg?branch=master)](https://coveralls.io/github/gnosis/zodiac?branch=master) -[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/gnosis/CODE_OF_CONDUCT) +[![Build Status](https://github.com/gnosisguild/zodiac/workflows/zodiac/badge.svg?branch=master)](https://github.com/gnosisguild/zodiac/actions?branch=master) +[![Coverage Status](https://coveralls.io/repos/github/gnosis/zodiac/badge.svg?branch=master)](https://coveralls.io/github/gnosisguild/zodiac?branch=master) +[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/gnosisguild/CODE_OF_CONDUCT) A composable design philosophy for DAOs, [Zodiac](https://gnosisguild.mirror.xyz/OuhG5s2X5uSVBx1EK4tKPhnUc91Wh9YM0fwSnC8UNcg) is a collection of tools built according to an open standard. ![Zodiac Icons](https://images.mirror-media.xyz/nft/c8c9031b-06b1-4344-baf2-c1d2d24cfc4f.png) -The Zodiac collection of tools can be accessed through the Zodiac App available on [Gnosis Safe](https://gnosis-safe.io/), as well as through the repositories below. If you have any questions about Zodiac, join the [Gnosis Guild Discord](https://discord.gg/wwmBWTgyEq). +The Zodiac collection of tools can be accessed through the Zodiac App available on [Safe](https://safe.global/), as well as through the repositories below. If you have any questions about Zodiac, join the [Gnosis Guild Discord](https://discord.gnosisguild.org). -This repository links to technical tutorials on how to configure each using the CLI. +This repository links to technical tutorials on how to configure each using the CLI. (For operator tutorials, visit [zodiac.wiki](https://zodiac.wiki/index.php?title=Category:Documentation).) Zodiac enables: @@ -20,7 +20,7 @@ Zodiac enables: The Zodiac open standard consists of Avatars, Modules, Modifiers, and Guards architecture: -**1. Avatars** are programmable Ethereum accounts, like the [Gnosis Safe](https://gnosis-safe.io). Avatars are the address that holds balances, owns systems, executes transaction, is referenced externally, and ultimately represents your DAO. Avatars must expose an interface like `IAvatar.sol`. +**1. Avatars** are programmable Ethereum accounts, like [Safe](https://safe.global/). Avatars are the address that holds balances, owns systems, executes transaction, is referenced externally, and ultimately represents your DAO. Avatars must expose an interface like `IAvatar.sol`. **2. Modules** are contracts enabled by an Avatar that implement some decision making logic. They should import `Module.sol`. @@ -48,49 +48,86 @@ import "@gnosis.pm/zodiac/contracts/core/Module.sol"; contract MyModule is Module { /// insert your code here } - ``` ### Zodiac compliant tools #### Avatars -- **[Gnosis Safe](https://gnosis-safe.io)**: The most trusted platform for managing digital assets on Ethereum. Zodiac embraces Gnosis Safe as a powerful, extensible and programmable account standard. Gnosis Safe is the reference implementation of the [IAvatar.sol](contracts/interfaces/IAvatar.sol) interface specified in this library. However, all Zodiac tools are framework agnostic, and they can be plugged into any programmable account that implements the IAvatar interface. +- **[Safe](https://safe.global)**: The most trusted platform for managing digital assets on Ethereum. Zodiac embraces Safe as a powerful, extensible and programmable account standard. Safe is the reference implementation of the [IAvatar.sol](contracts/interfaces/IAvatar.sol) interface specified in this library. However, all Zodiac tools are framework agnostic, and they can be plugged into any programmable account that implements the IAvatar interface. #### Modules -- **[Bridge](https://github.com/gnosis/zodiac-module-bridge)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This module allows an address on one chain to control an avatar on another chain using an Arbitrary Message Bridge (AMB). This enables a DAO on one chain to control assets and interact with systems like a Gnosis Safe on a different chain. -- **[Exit](https://github.com/gnosis/zodiac-module-exit)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This module allows users to redeem a designated token for a relative share of an avatar's assets, similar to MolochDAO's infamous rageQuit() function. -- **[Governor](https://github.com/gnosis/zodiac-module-oz-governor/)** (Developed by [Gnosis Guild](https://twitter.com/gnosisguild)): An opinionated implementation of [OpenZeppelin's Governor contracts](https://docs.openzeppelin.com/contracts/4.x/api/governance) designed to be used in a Zodiac-style setup, allowing a Avatar (like a Gnosis Safe) to controlled by on-chain governance similar to [Compound's Governor Alpha and Bravo](https://compound.finance/docs/governance). -- **[oSnap](https://uma.xyz/osnap)** (developed by [UMA](https://uma.xyz/)): This module allows on-chain execution based on Snapshot vote results. oSnap utilizes UMA's optimistic oracle to govern a Gnosis Safe based on a set of rules defined in natural language onchain. -- **[Reality](https://github.com/gnosis/zodiac-module-reality)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This module allows on-chain execution based on the outcome of events reported by Reality.eth. While built initially to execute Gnosis Safe transactions according to Snapshot proposals, this module is framework agnostic. It can enable proposal execution from just about anywhere. For example, it can bring Discord polls on-chain. -- **[Safe Minion](https://github.com/HausDAO/MinionSummonerV2/blob/main/contracts/SafeMinion.sol)** (developed by [DAOHaus](https://daohaus.club)): This module allows Moloch DAOs to manage the assets in a Gnosis Safe based on the outcome of v2 Moloch DAO proposals. Safe Minion enables Moloch DAOs to manage collections of NFTs, manage LP positions with AMMs, and initiate any other arbitrary interactions. It enables DAOs that start as a Gnosis Safe to later delegate governance to a Moloch DAO. +- **[Bridge](https://github.com/gnosisguild/zodiac-module-bridge)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This module allows an address on one chain to control an avatar on another chain using an Arbitrary Message Bridge (AMB). This enables a DAO on one chain to control assets and interact with systems like a Safe on a different chain. +- **[Exit](https://github.com/gnosisguild/zodiac-module-exit)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This module allows users to redeem a designated token for a relative share of an avatar's assets, similar to MolochDAO's infamous rageQuit() function. +- **[Governor](https://github.com/gnosisguild/zodiac-module-oz-governor/)** (Developed by [Gnosis Guild](https://twitter.com/gnosisguild)): An opinionated implementation of [OpenZeppelin's Governor contracts](https://docs.openzeppelin.com/contracts/4.x/api/governance) designed to be used in a Zodiac-style setup, allowing a Avatar (like a Safe) to controlled by on-chain governance similar to [Compound's Governor Alpha and Bravo](https://compound.finance/docs/governance). +- **[Optimistic Governor](https://docs.outcome.finance/optimistic-governance/what-is-the-optimistic-governor)** (developed by [Outcome Finance](https://www.outcome.finance/): This module allows on-chain executions based on Snapshot proposal results. The module utilizes UMA's optimistic oracle to govern a Safe based on a set of rules defined off-chain. +- **[Reality](https://github.com/gnosisguild/zodiac-module-reality)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This module allows on-chain execution based on the outcome of events reported by Reality.eth. While built initially to execute Safe transactions according to Snapshot proposals, this module is framework agnostic. It can enable proposal execution from just about anywhere. For example, it can bring Discord polls on-chain. +- **[Safe Minion](https://github.com/HausDAO/MinionSummonerV2/blob/main/contracts/SafeMinion.sol)** (developed by [DAOHaus](https://daohaus.club)): This module allows Moloch DAOs to manage the assets in a Safe based on the outcome of v2 Moloch DAO proposals. Safe Minion enables Moloch DAOs to manage collections of NFTs, manage LP positions with AMMs, and initiate any other arbitrary interactions. It enables DAOs that start as a Safe to later delegate governance to a Moloch DAO. - **[Tellor](https://github.com/tellor-io/snapshot-zodiac-module)** (developed by [Tellor](https://tellor.io)): This module allows on-chain executions based on Snapshot proposal results, it uses the Tellor oracle to retrieve the data in a secure and decentralized manner. - **[Usul](https://github.com/SekerDAO/Usul)** (developed by [SekerDAO](https://github.com/SekerDAO)): This module allows avatars to operate with trustless tokenized DeGov, similar to Compound or Gitcoin, with a time-boxed proposal core that can register swappable voting contracts. This enables DAOs to choose from various on-chain voting methods that best suit their needs. #### Modifiers -- **[Delay](https://github.com/gnosis/zodiac-modifier-delay)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This modifier allows avatars to enforce a time delay between when a module initiates a transaction and when it will be executed by an avatar. -- **[Roles](https://github.com/gnosis/zodiac-modifier-roles)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This modifier allows for fine-grained, role-based, access control for enabled modules. Scopes for a given role include allowed addresses, and optionally include allowed functions on allowed addresses, allowed parameters on allowed functions, whether or not delegate calls are allowed to an allowed address, and whether or not value (ETH) can be sent to an allowed address. +- **[Delay](https://github.com/gnosisguild/zodiac-modifier-delay)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This modifier allows avatars to enforce a time delay between when a module initiates a transaction and when it will be executed by an avatar. +- **[Roles](https://github.com/gnosisguild/zodiac-modifier-roles)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This modifier allows for fine-grained, role-based, access control for enabled modules. Scopes for a given role include allowed addresses, and optionally include allowed functions on allowed addresses, allowed parameters on allowed functions, whether or not delegate calls are allowed to an allowed address, and whether or not value (ETH) can be sent to an allowed address. #### Guards - **[Meta](https://github.com/cardstack/cardstack-meta-guard)** (developed by [Cardstack](https://twitter.com/cardstack)): This guard allows an avatar to have multiple checking processes by registering multiple guards to this meta guard. -- **[Scope](https://github.com/gnosis/zodiac-guard-scope)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This guard allows an avatar to limit the scope of the addressable functions with which its owners can interact. This enables the avatar to define granular permissions for different control mechanisms. +- **[Scope](https://github.com/gnosisguild/zodiac-guard-scope)** (developed by [Gnosis Guild](https://twitter.com/gnosisguild)): This guard allows an avatar to limit the scope of the addressable functions with which its owners can interact. This enables the avatar to define granular permissions for different control mechanisms. ## Support and Contributions Have you built something cool that belongs in this collection of Zodiac tools and want to add it to the list? Follow our [contribution guidelines](/CONTRIBUTING.md) to open a PR! -If you have any questions about Zodiac, join the [Gnosis Guild Discord](https://discord.gg/wwmBWTgyEq). Follow [@GnosisGuild](https://twitter.com/gnosisguild) on Twitter for updates. +If you have any questions about Zodiac, join the [Gnosis Guild Discord](https://discord.gnosisguild.org/). Follow [@GnosisGuild](https://twitter.com/gnosisguild) on Twitter for updates. + +The [Zodiac documentation](https://github.com/gnosisguild/zodiac) offers tutorials on how to use the Zodiac App, and detailed developer resources on how to build your own Zodiac module, modifier, or guard will be available soon. + +### Zodiac Banners and Badges + +Show your support for Zodiac by adding a badge or banner to your website or repository. Check out the preview images below, and select your preferred design for download. Please wrap the image with a hyperlink to [Zodiac](https://github.com/gnosisguild/zodiac). + +NOTE: To guarantee the most current design, copy the image URL and use the hosted version for embedding on your platform. + +Your support through these badges and banners is greatly appreciated! + +**Banners** + +![White on Black Banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-banner-black-white.svg) +![Black on White Banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-banner-white-black.svg) + +![Light Gradient Banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-banner-gradient-light.svg) +![Dark Gradient Banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-banner-gradient-dark.svg) + +**Badges** -The [Zodiac documentation](https://gnosis.github.io/zodiac/) offers tutorials on how to use the Zodiac App, and detailed developer resources on how to build your own Zodiac module, modifier, or guard will be available soon. +![White on Black Badge](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-badge-black-white.svg) +![Black on White Badge](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-badge-white-black.svg) +![Light Gradient Badge](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-badge-gradient-light.svg) +![Dark Gradient Badge](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-badge-gradient-dark.svg) + +**Copy and paste markdown** (for README's) +These snippets will render an image that links to this github repo. + +[![White on black banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-badge-black-white.svg)](https://github.com/gnosisguild/zodiac) + +``` +[![White on black banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-badge-black-white.svg)](https://github.com/gnosisguild/zodiac) +``` + +[![Black on White Banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-banner-white-black.svg)](https://github.com/gnosisguild/zodiac) + +``` +[![Black on White Banner](https://raw.githubusercontent.com/gnosisguild/zodiac/master/branding/zodiac-banner-white-black.svg)](https://github.com/gnosisguild/zodiac) +``` ### Audits Zodiac has been audited by the [G0 group](https://github.com/g0-group). -All issues and notes of the audit have been addressed in the release candidate [v0.1.0](https://github.com/gnosis/zodiac/releases/tag/v0.1.0) with commit hash [8a77e7b224af8004bd9f2ff4e2919642e93ffd85](https://github.com/gnosis/zodiac/commit/8a77e7b224af8004bd9f2ff4e2919642e93ffd85) and the subsequent release [v1.0.0](https://github.com/gnosis/zodiac/releases/tag/v1.0.0). +All issues and notes of the audit have been addressed in the release candidate [v0.1.0](https://github.com/gnosisguild/zodiac/releases/tag/v0.1.0) with commit hash [8a77e7b224af8004bd9f2ff4e2919642e93ffd85](https://github.com/gnosisguild/zodiac/commit/8a77e7b224af8004bd9f2ff4e2919642e93ffd85) and the subsequent release [v1.0.0](https://github.com/gnosisguild/zodiac/releases/tag/v1.0.0). The audit results are available as a pdf [in this repo](./audits/GnosisZodiac2021Sep.pdf) or in the [g0-group's github repo](https://github.com/g0-group/Audits/blob/master/GnosisZodiac2021Sep.pdf). diff --git a/branding/zodiac-badge-black-white.svg b/branding/zodiac-badge-black-white.svg new file mode 100644 index 00000000..4eb2eca2 --- /dev/null +++ b/branding/zodiac-badge-black-white.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branding/zodiac-badge-gradient-dark.svg b/branding/zodiac-badge-gradient-dark.svg new file mode 100644 index 00000000..c6781dc4 --- /dev/null +++ b/branding/zodiac-badge-gradient-dark.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branding/zodiac-badge-gradient-light.svg b/branding/zodiac-badge-gradient-light.svg new file mode 100644 index 00000000..e8c6d663 --- /dev/null +++ b/branding/zodiac-badge-gradient-light.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branding/zodiac-badge-white-black.svg b/branding/zodiac-badge-white-black.svg new file mode 100644 index 00000000..65efc3fe --- /dev/null +++ b/branding/zodiac-badge-white-black.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branding/zodiac-banner-black-white.svg b/branding/zodiac-banner-black-white.svg new file mode 100644 index 00000000..49578c77 --- /dev/null +++ b/branding/zodiac-banner-black-white.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branding/zodiac-banner-gradient-dark.svg b/branding/zodiac-banner-gradient-dark.svg new file mode 100644 index 00000000..e69ae2fa --- /dev/null +++ b/branding/zodiac-banner-gradient-dark.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branding/zodiac-banner-gradient-light.svg b/branding/zodiac-banner-gradient-light.svg new file mode 100644 index 00000000..103a5291 --- /dev/null +++ b/branding/zodiac-banner-gradient-light.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branding/zodiac-banner-white-black.svg b/branding/zodiac-banner-white-black.svg new file mode 100644 index 00000000..7b1cac73 --- /dev/null +++ b/branding/zodiac-banner-white-black.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contracts/core/GuardableModifier.sol b/contracts/core/GuardableModifier.sol new file mode 100644 index 00000000..e7004769 --- /dev/null +++ b/contracts/core/GuardableModifier.sol @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.7.0 <0.9.0; + +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; + +import {Guardable} from "../guard/Guardable.sol"; +import {IAvatar} from "../interfaces/IAvatar.sol"; +import {IGuard} from "../interfaces/IGuard.sol"; +import {Modifier} from "./Modifier.sol"; +import {Module} from "./Module.sol"; + +abstract contract GuardableModifier is Module, Guardable, Modifier { + /// @dev Passes a transaction to be executed by the avatar. + /// @notice Can only be called by this contract. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function exec( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) internal virtual override returns (bool success) { + address currentGuard = guard; + if (currentGuard != address(0)) { + IGuard(currentGuard).checkTransaction( + /// Transaction info used by module transactions. + to, + value, + data, + operation, + /// Zero out the redundant transaction information only used for Safe multisig transctions. + 0, + 0, + 0, + address(0), + payable(0), + "", + sentOrSignedByModule() + ); + } + success = IAvatar(target).execTransactionFromModule( + to, + value, + data, + operation + ); + if (currentGuard != address(0)) { + IGuard(currentGuard).checkAfterExecution(bytes32(0), success); + } + } + + /// @dev Passes a transaction to be executed by the target and returns data. + /// @notice Can only be called by this contract. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function execAndReturnData( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) internal virtual override returns (bool success, bytes memory returnData) { + address currentGuard = guard; + if (currentGuard != address(0)) { + IGuard(currentGuard).checkTransaction( + /// Transaction info used by module transactions. + to, + value, + data, + operation, + /// Zero out the redundant transaction information only used for Safe multisig transctions. + 0, + 0, + 0, + address(0), + payable(0), + "", + sentOrSignedByModule() + ); + } + + (success, returnData) = IAvatar(target).execTransactionFromModuleReturnData( + to, + value, + data, + operation + ); + + if (currentGuard != address(0)) { + IGuard(currentGuard).checkAfterExecution(bytes32(0), success); + } + } +} diff --git a/contracts/core/GuardableModule.sol b/contracts/core/GuardableModule.sol new file mode 100644 index 00000000..39a0e0d2 --- /dev/null +++ b/contracts/core/GuardableModule.sol @@ -0,0 +1,95 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.7.0 <0.9.0; + +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; +import {IGuard} from "../interfaces/IGuard.sol"; +import {Guardable} from "../guard/Guardable.sol"; +import {Module} from "./Module.sol"; +import {IAvatar} from "../interfaces/IAvatar.sol"; + +/// @title GuardableModule - A contract that can pass messages to a Module Manager contract if enabled by that contract. +abstract contract GuardableModule is Module, Guardable { + /// @dev Passes a transaction to be executed by the avatar. + /// @notice Can only be called by this contract. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function exec( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) internal override returns (bool success) { + address currentGuard = guard; + if (currentGuard != address(0)) { + IGuard(currentGuard).checkTransaction( + /// Transaction info used by module transactions. + to, + value, + data, + operation, + /// Zero out the redundant transaction information only used for Safe multisig transctions. + 0, + 0, + 0, + address(0), + payable(0), + "", + msg.sender + ); + } + success = IAvatar(target).execTransactionFromModule( + to, + value, + data, + operation + ); + if (currentGuard != address(0)) { + IGuard(currentGuard).checkAfterExecution(bytes32(0), success); + } + } + + /// @dev Passes a transaction to be executed by the target and returns data. + /// @notice Can only be called by this contract. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function execAndReturnData( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) internal virtual override returns (bool success, bytes memory returnData) { + address currentGuard = guard; + if (currentGuard != address(0)) { + IGuard(currentGuard).checkTransaction( + /// Transaction info used by module transactions. + to, + value, + data, + operation, + /// Zero out the redundant transaction information only used for Safe multisig transctions. + 0, + 0, + 0, + address(0), + payable(0), + "", + msg.sender + ); + } + + (success, returnData) = IAvatar(target).execTransactionFromModuleReturnData( + to, + value, + data, + operation + ); + + if (currentGuard != address(0)) { + IGuard(currentGuard).checkAfterExecution(bytes32(0), success); + } + } +} diff --git a/contracts/core/Modifier.sol b/contracts/core/Modifier.sol index e992e552..0f44c88b 100644 --- a/contracts/core/Modifier.sol +++ b/contracts/core/Modifier.sol @@ -1,174 +1,204 @@ // SPDX-License-Identifier: LGPL-3.0-only - -/// @title Modifier Interface - A contract that sits between a Module and an Avatar and enforce some additional logic. pragma solidity >=0.7.0 <0.9.0; -import "../interfaces/IAvatar.sol"; -import "./Module.sol"; +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; +import {ExecutionTracker} from "../signature/ExecutionTracker.sol"; +import {IAvatar} from "../interfaces/IAvatar.sol"; +import {Module} from "./Module.sol"; +import {SignatureChecker} from "../signature/SignatureChecker.sol"; -abstract contract Modifier is Module, IAvatar { - address internal constant SENTINEL_MODULES = address(0x1); - /// Mapping of modules. - mapping(address => address) internal modules; +/// @title Modifier Interface - A contract that sits between a Module and an Avatar and enforce some additional logic. +abstract contract Modifier is + Module, + ExecutionTracker, + SignatureChecker, + IAvatar +{ + address internal constant SENTINEL_MODULES = address(0x1); + /// Mapping of modules. + mapping(address => address) internal modules; - /// `sender` is not an authorized module. - /// @param sender The address of the sender. - error NotAuthorized(address sender); + /// `sender` is not an authorized module. + /// @param sender The address of the sender. + error NotAuthorized(address sender); - /// `module` is invalid. - error InvalidModule(address module); + /// `module` is invalid. + error InvalidModule(address module); - /// `pageSize` is invalid. - error InvalidPageSize(); + /// `pageSize` is invalid. + error InvalidPageSize(); - /// `module` is already disabled. - error AlreadyDisabledModule(address module); + /// `module` is already disabled. + error AlreadyDisabledModule(address module); - /// `module` is already enabled. - error AlreadyEnabledModule(address module); + /// `module` is already enabled. + error AlreadyEnabledModule(address module); - /// @dev `setModules()` was already called. - error SetupModulesAlreadyCalled(); + /// @dev `setModules()` was already called. + error SetupModulesAlreadyCalled(); - /* + /* -------------------------------------------------- - You must override at least one of following two virtual functions, + You must override both of the following virtual functions, execTransactionFromModule() and execTransactionFromModuleReturnData(). + It is recommended that implementations of both functions make use the + onlyModule modifier. */ - /// @dev Passes a transaction to the modifier. - /// @notice Can only be called by enabled modules. - /// @param to Destination address of module transaction. - /// @param value Ether value of module transaction. - /// @param data Data payload of module transaction. - /// @param operation Operation type of module transaction. - function execTransactionFromModule( - address to, - uint256 value, - bytes calldata data, - Enum.Operation operation - ) public virtual override moduleOnly returns (bool success) {} - - /// @dev Passes a transaction to the modifier, expects return data. - /// @notice Can only be called by enabled modules. - /// @param to Destination address of module transaction. - /// @param value Ether value of module transaction. - /// @param data Data payload of module transaction. - /// @param operation Operation type of module transaction. - function execTransactionFromModuleReturnData( - address to, - uint256 value, - bytes calldata data, - Enum.Operation operation - ) - public - virtual - override - moduleOnly - returns (bool success, bytes memory returnData) - {} - - /* + /// @dev Passes a transaction to the modifier. + /// @notice Can only be called by enabled modules. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction. + function execTransactionFromModule( + address to, + uint256 value, + bytes calldata data, + Enum.Operation operation + ) public virtual returns (bool success); + + /// @dev Passes a transaction to the modifier, expects return data. + /// @notice Can only be called by enabled modules. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction. + function execTransactionFromModuleReturnData( + address to, + uint256 value, + bytes calldata data, + Enum.Operation operation + ) public virtual returns (bool success, bytes memory returnData); + + /* -------------------------------------------------- */ - modifier moduleOnly() { - if (modules[msg.sender] == address(0)) revert NotAuthorized(msg.sender); - _; + modifier moduleOnly() { + if (modules[msg.sender] == address(0)) { + (bytes32 hash, address signer) = moduleTxSignedBy(); + + // is the signer a module? + if (modules[signer] == address(0)) { + revert NotAuthorized(msg.sender); + } + + // is the provided signature fresh? + if (consumed[signer][hash]) { + revert HashAlreadyConsumed(hash); + } + + consumed[signer][hash] = true; + emit HashExecuted(hash); } - /// @dev Disables a module on the modifier. - /// @notice This can only be called by the owner. - /// @param prevModule Module that pointed to the module to be removed in the linked list. - /// @param module Module to be removed. - function disableModule( - address prevModule, - address module - ) public override onlyOwner { - if (module == address(0) || module == SENTINEL_MODULES) - revert InvalidModule(module); - if (modules[prevModule] != module) revert AlreadyDisabledModule(module); - modules[prevModule] = modules[module]; - modules[module] = address(0); - emit DisabledModule(module); + _; + } + + function sentOrSignedByModule() internal view returns (address) { + if (modules[msg.sender] != address(0)) { + return msg.sender; } - /// @dev Enables a module that can add transactions to the queue - /// @param module Address of the module to be enabled - /// @notice This can only be called by the owner - function enableModule(address module) public override onlyOwner { - if (module == address(0) || module == SENTINEL_MODULES) - revert InvalidModule(module); - if (modules[module] != address(0)) revert AlreadyEnabledModule(module); - modules[module] = modules[SENTINEL_MODULES]; - modules[SENTINEL_MODULES] = module; - emit EnabledModule(module); + (, address signer) = moduleTxSignedBy(); + if (modules[signer] != address(0)) { + return signer; } - /// @dev Returns if an module is enabled - /// @return True if the module is enabled - function isModuleEnabled( - address _module - ) public view override returns (bool) { - return SENTINEL_MODULES != _module && modules[_module] != address(0); + return address(0); + } + + /// @dev Disables a module on the modifier. + /// @notice This can only be called by the owner. + /// @param prevModule Module that pointed to the module to be removed in the linked list. + /// @param module Module to be removed. + function disableModule( + address prevModule, + address module + ) public override onlyOwner { + if (module == address(0) || module == SENTINEL_MODULES) + revert InvalidModule(module); + if (modules[prevModule] != module) revert AlreadyDisabledModule(module); + modules[prevModule] = modules[module]; + modules[module] = address(0); + emit DisabledModule(module); + } + + /// @dev Enables a module that can add transactions to the queue + /// @param module Address of the module to be enabled + /// @notice This can only be called by the owner + function enableModule(address module) public override onlyOwner { + if (module == address(0) || module == SENTINEL_MODULES) + revert InvalidModule(module); + if (modules[module] != address(0)) revert AlreadyEnabledModule(module); + modules[module] = modules[SENTINEL_MODULES]; + modules[SENTINEL_MODULES] = module; + emit EnabledModule(module); + } + + /// @dev Returns if an module is enabled + /// @return True if the module is enabled + function isModuleEnabled( + address _module + ) public view override returns (bool) { + return SENTINEL_MODULES != _module && modules[_module] != address(0); + } + + /// @dev Returns array of modules. + /// If all entries fit into a single page, the next pointer will be 0x1. + /// If another page is present, next will be the last element of the returned array. + /// @param start Start of the page. Has to be a module or start pointer (0x1 address) + /// @param pageSize Maximum number of modules that should be returned. Has to be > 0 + /// @return array Array of modules. + /// @return next Start of the next page. + function getModulesPaginated( + address start, + uint256 pageSize + ) external view override returns (address[] memory array, address next) { + if (start != SENTINEL_MODULES && !isModuleEnabled(start)) { + revert InvalidModule(start); + } + if (pageSize == 0) { + revert InvalidPageSize(); } - /// @dev Returns array of modules. - /// If all entries fit into a single page, the next pointer will be 0x1. - /// If another page is present, next will be the last element of the returned array. - /// @param start Start of the page. Has to be a module or start pointer (0x1 address) - /// @param pageSize Maximum number of modules that should be returned. Has to be > 0 - /// @return array Array of modules. - /// @return next Start of the next page. - function getModulesPaginated( - address start, - uint256 pageSize - ) external view override returns (address[] memory array, address next) { - if (start != SENTINEL_MODULES && !isModuleEnabled(start)) { - revert InvalidModule(start); - } - if (pageSize == 0) { - revert InvalidPageSize(); - } - - // Init array with max page size - array = new address[](pageSize); - - // Populate return array - uint256 moduleCount = 0; - next = modules[start]; - while ( - next != address(0) && - next != SENTINEL_MODULES && - moduleCount < pageSize - ) { - array[moduleCount] = next; - next = modules[next]; - moduleCount++; - } - - // Because of the argument validation we can assume that - // the `currentModule` will always be either a module address - // or sentinel address (aka the end). If we haven't reached the end - // inside the loop, we need to set the next pointer to the last element - // because it skipped over to the next module which is neither included - // in the current page nor won't be included in the next one - // if you pass it as a start. - if (next != SENTINEL_MODULES) { - next = array[moduleCount - 1]; - } - // Set correct size of returned array - // solhint-disable-next-line no-inline-assembly - assembly { - mstore(array, moduleCount) - } + // Init array with max page size + array = new address[](pageSize); + + // Populate return array + uint256 moduleCount = 0; + next = modules[start]; + while ( + next != address(0) && next != SENTINEL_MODULES && moduleCount < pageSize + ) { + array[moduleCount] = next; + next = modules[next]; + moduleCount++; } - /// @dev Initializes the modules linked list. - /// @notice Should be called as part of the `setUp` / initializing function and can only be called once. - function setupModules() internal { - if (modules[SENTINEL_MODULES] != address(0)) - revert SetupModulesAlreadyCalled(); - modules[SENTINEL_MODULES] = SENTINEL_MODULES; + // Because of the argument validation we can assume that + // the `currentModule` will always be either a module address + // or sentinel address (aka the end). If we haven't reached the end + // inside the loop, we need to set the next pointer to the last element + // because it skipped over to the next module which is neither included + // in the current page nor won't be included in the next one + // if you pass it as a start. + if (next != SENTINEL_MODULES) { + next = array[moduleCount - 1]; + } + // Set correct size of returned array + // solhint-disable-next-line no-inline-assembly + assembly { + mstore(array, moduleCount) } + } + + /// @dev Initializes the modules linked list. + /// @notice Should be called as part of the `setUp` / initializing function and can only be called once. + function setupModules() internal { + if (modules[SENTINEL_MODULES] != address(0)) + revert SetupModulesAlreadyCalled(); + modules[SENTINEL_MODULES] = SENTINEL_MODULES; + } } diff --git a/contracts/core/Module.sol b/contracts/core/Module.sol index 04b292a8..8140aef2 100644 --- a/contracts/core/Module.sol +++ b/contracts/core/Module.sol @@ -1,108 +1,73 @@ // SPDX-License-Identifier: LGPL-3.0-only - -/// @title Module Interface - A contract that can pass messages to a Module Manager contract if enabled by that contract. pragma solidity >=0.7.0 <0.9.0; -import "../interfaces/IAvatar.sol"; -import "../factory/FactoryFriendly.sol"; -import "../guard/Guardable.sol"; +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; -abstract contract Module is FactoryFriendly, Guardable { - /// @dev Address that will ultimately execute function calls. - address public avatar; - /// @dev Address that this module will pass transactions to. - address public target; +import {FactoryFriendly} from "../factory/FactoryFriendly.sol"; +import {IAvatar} from "../interfaces/IAvatar.sol"; - /// @dev Emitted each time the avatar is set. - event AvatarSet(address indexed previousAvatar, address indexed newAvatar); - /// @dev Emitted each time the Target is set. - event TargetSet(address indexed previousTarget, address indexed newTarget); +/// @title Module Interface - A contract that can pass messages to a Module Manager contract if enabled by that contract. +abstract contract Module is FactoryFriendly { + /// @dev Address that will ultimately execute function calls. + address public avatar; + /// @dev Address that this module will pass transactions to. + address public target; - /// @dev Sets the avatar to a new avatar (`newAvatar`). - /// @notice Can only be called by the current owner. - function setAvatar(address _avatar) public onlyOwner { - address previousAvatar = avatar; - avatar = _avatar; - emit AvatarSet(previousAvatar, _avatar); - } + /// @dev Emitted each time the avatar is set. + event AvatarSet(address indexed previousAvatar, address indexed newAvatar); + /// @dev Emitted each time the Target is set. + event TargetSet(address indexed previousTarget, address indexed newTarget); - /// @dev Sets the target to a new target (`newTarget`). - /// @notice Can only be called by the current owner. - function setTarget(address _target) public onlyOwner { - address previousTarget = target; - target = _target; - emit TargetSet(previousTarget, _target); - } + /// @dev Sets the avatar to a new avatar (`newAvatar`). + /// @notice Can only be called by the current owner. + function setAvatar(address _avatar) public onlyOwner { + address previousAvatar = avatar; + avatar = _avatar; + emit AvatarSet(previousAvatar, _avatar); + } - /// @dev Passes a transaction to be executed by the avatar. - /// @notice Can only be called by this contract. - /// @param to Destination address of module transaction. - /// @param value Ether value of module transaction. - /// @param data Data payload of module transaction. - /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. - function exec( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) internal returns (bool success) { - (success, ) = _exec(to, value, data, operation); - } + /// @dev Sets the target to a new target (`newTarget`). + /// @notice Can only be called by the current owner. + function setTarget(address _target) public onlyOwner { + address previousTarget = target; + target = _target; + emit TargetSet(previousTarget, _target); + } - /// @dev Passes a transaction to be executed by the target and returns data. - /// @notice Can only be called by this contract. - /// @param to Destination address of module transaction. - /// @param value Ether value of module transaction. - /// @param data Data payload of module transaction. - /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. - function execAndReturnData( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) internal returns (bool success, bytes memory returnData) { - (success, returnData) = _exec(to, value, data, operation); - } + /// @dev Passes a transaction to be executed by the avatar. + /// @notice Can only be called by this contract. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function exec( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) internal virtual returns (bool success) { + return + IAvatar(target).execTransactionFromModule(to, value, data, operation); + } - function _exec( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) private returns (bool success, bytes memory returnData) { - address currentGuard = guard; - if (currentGuard != address(0)) { - IGuard(currentGuard).checkTransaction( - /// Transaction info used by module transactions. - to, - value, - data, - operation, - /// Zero out the redundant transaction information only used for Safe multisig transctions. - 0, - 0, - 0, - address(0), - payable(0), - "", - msg.sender - ); - (success, returnData) = IAvatar(target) - .execTransactionFromModuleReturnData( - to, - value, - data, - operation - ); - IGuard(currentGuard).checkAfterExecution("", success); - } else { - (success, returnData) = IAvatar(target) - .execTransactionFromModuleReturnData( - to, - value, - data, - operation - ); - } - } + /// @dev Passes a transaction to be executed by the target and returns data. + /// @notice Can only be called by this contract. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function execAndReturnData( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) internal virtual returns (bool success, bytes memory returnData) { + return + IAvatar(target).execTransactionFromModuleReturnData( + to, + value, + data, + operation + ); + } } diff --git a/contracts/factory/FactoryFriendly.sol b/contracts/factory/FactoryFriendly.sol index 1f736df6..e996bfc2 100644 --- a/contracts/factory/FactoryFriendly.sol +++ b/contracts/factory/FactoryFriendly.sol @@ -3,8 +3,8 @@ /// @title Zodiac FactoryFriendly - A contract that allows other contracts to be initializable and pass bytes as arguments to define contract state pragma solidity >=0.7.0 <0.9.0; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; abstract contract FactoryFriendly is OwnableUpgradeable { - function setUp(bytes memory initializeParams) public virtual; + function setUp(bytes memory initializeParams) public virtual; } diff --git a/contracts/factory/ModuleProxyFactory.sol b/contracts/factory/ModuleProxyFactory.sol index b2e2921b..419b940e 100644 --- a/contracts/factory/ModuleProxyFactory.sol +++ b/contracts/factory/ModuleProxyFactory.sol @@ -2,53 +2,50 @@ pragma solidity >=0.8.0; contract ModuleProxyFactory { - event ModuleProxyCreation( - address indexed proxy, - address indexed masterCopy + event ModuleProxyCreation(address indexed proxy, address indexed masterCopy); + + /// `target` can not be zero. + error ZeroAddress(address target); + + /// `target` has no code deployed. + error TargetHasNoCode(address target); + + /// `address_` is already taken. + error TakenAddress(address address_); + + /// @notice Initialization failed. + error FailedInitialization(); + + function createProxy( + address target, + bytes32 salt + ) internal returns (address result) { + if (address(target) == address(0)) revert ZeroAddress(target); + if (address(target).code.length == 0) revert TargetHasNoCode(target); + bytes memory deployment = abi.encodePacked( + hex"602d8060093d393df3363d3d373d3d3d363d73", + target, + hex"5af43d82803e903d91602b57fd5bf3" ); - - /// `target` can not be zero. - error ZeroAddress(address target); - - /// `target` has no code deployed. - error TargetHasNoCode(address target); - - /// `address_` is already taken. - error TakenAddress(address address_); - - /// @notice Initialization failed. - error FailedInitialization(); - - function createProxy(address target, bytes32 salt) - internal - returns (address result) - { - if (address(target) == address(0)) revert ZeroAddress(target); - if (address(target).code.length == 0) revert TargetHasNoCode(target); - bytes memory deployment = abi.encodePacked( - hex"602d8060093d393df3363d3d373d3d3d363d73", - target, - hex"5af43d82803e903d91602b57fd5bf3" - ); - // solhint-disable-next-line no-inline-assembly - assembly { - result := create2(0, add(deployment, 0x20), mload(deployment), salt) - } - if (result == address(0)) revert TakenAddress(result); + // solhint-disable-next-line no-inline-assembly + assembly { + result := create2(0, add(deployment, 0x20), mload(deployment), salt) } + if (result == address(0)) revert TakenAddress(result); + } + + function deployModule( + address masterCopy, + bytes memory initializer, + uint256 saltNonce + ) public returns (address proxy) { + proxy = createProxy( + masterCopy, + keccak256(abi.encodePacked(keccak256(initializer), saltNonce)) + ); + (bool success, ) = proxy.call(initializer); + if (!success) revert FailedInitialization(); - function deployModule( - address masterCopy, - bytes memory initializer, - uint256 saltNonce - ) public returns (address proxy) { - proxy = createProxy( - masterCopy, - keccak256(abi.encodePacked(keccak256(initializer), saltNonce)) - ); - (bool success, ) = proxy.call(initializer); - if (!success) revert FailedInitialization(); - - emit ModuleProxyCreation(proxy, masterCopy); - } + emit ModuleProxyCreation(proxy, masterCopy); + } } diff --git a/contracts/guard/BaseGuard.sol b/contracts/guard/BaseGuard.sol index 96d3d8c7..aef3aadb 100644 --- a/contracts/guard/BaseGuard.sol +++ b/contracts/guard/BaseGuard.sol @@ -1,38 +1,36 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.7.0 <0.9.0; -import "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; -import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; -import "../interfaces/IGuard.sol"; +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; +import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; + +import {IGuard} from "../interfaces/IGuard.sol"; abstract contract BaseGuard is IERC165 { - function supportsInterface(bytes4 interfaceId) - external - pure - override - returns (bool) - { - return - interfaceId == type(IGuard).interfaceId || // 0xe6d7a83a - interfaceId == type(IERC165).interfaceId; // 0x01ffc9a7 - } + function supportsInterface( + bytes4 interfaceId + ) external pure override returns (bool) { + return + interfaceId == type(IGuard).interfaceId || // 0xe6d7a83a + interfaceId == type(IERC165).interfaceId; // 0x01ffc9a7 + } - /// @dev Module transactions only use the first four parameters: to, value, data, and operation. - /// Module.sol hardcodes the remaining parameters as 0 since they are not used for module transactions. - /// @notice This interface is used to maintain compatibilty with Gnosis Safe transaction guards. - function checkTransaction( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation, - uint256 safeTxGas, - uint256 baseGas, - uint256 gasPrice, - address gasToken, - address payable refundReceiver, - bytes memory signatures, - address msgSender - ) external virtual; + /// @dev Module transactions only use the first four parameters: to, value, data, and operation. + /// Module.sol hardcodes the remaining parameters as 0 since they are not used for module transactions. + /// @notice This interface is used to maintain compatibilty with Gnosis Safe transaction guards. + function checkTransaction( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation, + uint256 safeTxGas, + uint256 baseGas, + uint256 gasPrice, + address gasToken, + address payable refundReceiver, + bytes memory signatures, + address msgSender + ) external virtual; - function checkAfterExecution(bytes32 txHash, bool success) external virtual; + function checkAfterExecution(bytes32 txHash, bool success) external virtual; } diff --git a/contracts/guard/Guardable.sol b/contracts/guard/Guardable.sol index 886f85c6..fe2ba156 100644 --- a/contracts/guard/Guardable.sol +++ b/contracts/guard/Guardable.sol @@ -1,31 +1,32 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.7.0 <0.9.0; -import "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "./BaseGuard.sol"; +import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + +import {BaseGuard} from "../guard/BaseGuard.sol"; +import {IGuard} from "../interfaces/IGuard.sol"; /// @title Guardable - A contract that manages fallback calls made to this contract contract Guardable is OwnableUpgradeable { - address public guard; + address public guard; - event ChangedGuard(address guard); + event ChangedGuard(address guard); - /// `guard_` does not implement IERC165. - error NotIERC165Compliant(address guard_); + /// `guard_` does not implement IERC165. + error NotIERC165Compliant(address guard_); - /// @dev Set a guard that checks transactions before execution. - /// @param _guard The address of the guard to be used or the 0 address to disable the guard. - function setGuard(address _guard) external onlyOwner { - if (_guard != address(0)) { - if (!BaseGuard(_guard).supportsInterface(type(IGuard).interfaceId)) - revert NotIERC165Compliant(_guard); - } - guard = _guard; - emit ChangedGuard(guard); + /// @dev Set a guard that checks transactions before execution. + /// @param _guard The address of the guard to be used or the 0 address to disable the guard. + function setGuard(address _guard) external onlyOwner { + if (_guard != address(0)) { + if (!BaseGuard(_guard).supportsInterface(type(IGuard).interfaceId)) + revert NotIERC165Compliant(_guard); } + guard = _guard; + emit ChangedGuard(guard); + } - function getGuard() external view returns (address _guard) { - return guard; - } + function getGuard() external view returns (address _guard) { + return guard; + } } diff --git a/contracts/interfaces/IAvatar.sol b/contracts/interfaces/IAvatar.sol index c757611d..099456cd 100644 --- a/contracts/interfaces/IAvatar.sol +++ b/contracts/interfaces/IAvatar.sol @@ -3,69 +3,69 @@ /// @title Zodiac Avatar - A contract that manages modules that can execute transactions via this contract. pragma solidity >=0.7.0 <0.9.0; -import "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; interface IAvatar { - event EnabledModule(address module); - event DisabledModule(address module); - event ExecutionFromModuleSuccess(address indexed module); - event ExecutionFromModuleFailure(address indexed module); + event EnabledModule(address module); + event DisabledModule(address module); + event ExecutionFromModuleSuccess(address indexed module); + event ExecutionFromModuleFailure(address indexed module); - /// @dev Enables a module on the avatar. - /// @notice Can only be called by the avatar. - /// @notice Modules should be stored as a linked list. - /// @notice Must emit EnabledModule(address module) if successful. - /// @param module Module to be enabled. - function enableModule(address module) external; + /// @dev Enables a module on the avatar. + /// @notice Can only be called by the avatar. + /// @notice Modules should be stored as a linked list. + /// @notice Must emit EnabledModule(address module) if successful. + /// @param module Module to be enabled. + function enableModule(address module) external; - /// @dev Disables a module on the avatar. - /// @notice Can only be called by the avatar. - /// @notice Must emit DisabledModule(address module) if successful. - /// @param prevModule Address that pointed to the module to be removed in the linked list - /// @param module Module to be removed. - function disableModule(address prevModule, address module) external; + /// @dev Disables a module on the avatar. + /// @notice Can only be called by the avatar. + /// @notice Must emit DisabledModule(address module) if successful. + /// @param prevModule Address that pointed to the module to be removed in the linked list + /// @param module Module to be removed. + function disableModule(address prevModule, address module) external; - /// @dev Allows a Module to execute a transaction. - /// @notice Can only be called by an enabled module. - /// @notice Must emit ExecutionFromModuleSuccess(address module) if successful. - /// @notice Must emit ExecutionFromModuleFailure(address module) if unsuccessful. - /// @param to Destination address of module transaction. - /// @param value Ether value of module transaction. - /// @param data Data payload of module transaction. - /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. - function execTransactionFromModule( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) external returns (bool success); + /// @dev Allows a Module to execute a transaction. + /// @notice Can only be called by an enabled module. + /// @notice Must emit ExecutionFromModuleSuccess(address module) if successful. + /// @notice Must emit ExecutionFromModuleFailure(address module) if unsuccessful. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function execTransactionFromModule( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) external returns (bool success); - /// @dev Allows a Module to execute a transaction and return data - /// @notice Can only be called by an enabled module. - /// @notice Must emit ExecutionFromModuleSuccess(address module) if successful. - /// @notice Must emit ExecutionFromModuleFailure(address module) if unsuccessful. - /// @param to Destination address of module transaction. - /// @param value Ether value of module transaction. - /// @param data Data payload of module transaction. - /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. - function execTransactionFromModuleReturnData( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) external returns (bool success, bytes memory returnData); + /// @dev Allows a Module to execute a transaction and return data + /// @notice Can only be called by an enabled module. + /// @notice Must emit ExecutionFromModuleSuccess(address module) if successful. + /// @notice Must emit ExecutionFromModuleFailure(address module) if unsuccessful. + /// @param to Destination address of module transaction. + /// @param value Ether value of module transaction. + /// @param data Data payload of module transaction. + /// @param operation Operation type of module transaction: 0 == call, 1 == delegate call. + function execTransactionFromModuleReturnData( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) external returns (bool success, bytes memory returnData); - /// @dev Returns if an module is enabled - /// @return True if the module is enabled - function isModuleEnabled(address module) external view returns (bool); + /// @dev Returns if an module is enabled + /// @return True if the module is enabled + function isModuleEnabled(address module) external view returns (bool); - /// @dev Returns array of modules. - /// @param start Start of the page. - /// @param pageSize Maximum number of modules that should be returned. - /// @return array Array of modules. - /// @return next Start of the next page. - function getModulesPaginated(address start, uint256 pageSize) - external - view - returns (address[] memory array, address next); + /// @dev Returns array of modules. + /// @param start Start of the page. + /// @param pageSize Maximum number of modules that should be returned. + /// @return array Array of modules. + /// @return next Start of the next page. + function getModulesPaginated( + address start, + uint256 pageSize + ) external view returns (address[] memory array, address next); } diff --git a/contracts/interfaces/IGuard.sol b/contracts/interfaces/IGuard.sol index b3926126..008a68b4 100644 --- a/contracts/interfaces/IGuard.sol +++ b/contracts/interfaces/IGuard.sol @@ -1,22 +1,22 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.7.0 <0.9.0; -import "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; interface IGuard { - function checkTransaction( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation, - uint256 safeTxGas, - uint256 baseGas, - uint256 gasPrice, - address gasToken, - address payable refundReceiver, - bytes memory signatures, - address msgSender - ) external; + function checkTransaction( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation, + uint256 safeTxGas, + uint256 baseGas, + uint256 gasPrice, + address gasToken, + address payable refundReceiver, + bytes memory signatures, + address msgSender + ) external; - function checkAfterExecution(bytes32 txHash, bool success) external; + function checkAfterExecution(bytes32 txHash, bool success) external; } diff --git a/contracts/signature/ExecutionTracker.sol b/contracts/signature/ExecutionTracker.sol new file mode 100644 index 00000000..2d3119a9 --- /dev/null +++ b/contracts/signature/ExecutionTracker.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.8.0 <0.9.0; + +/// @title ExecutionTracker - A contract that keeps track of executed and invalidated hashes +contract ExecutionTracker { + error HashAlreadyConsumed(bytes32); + + event HashExecuted(bytes32); + event HashInvalidated(bytes32); + + mapping(address => mapping(bytes32 => bool)) public consumed; + + function invalidate(bytes32 hash) external { + consumed[msg.sender][hash] = true; + emit HashInvalidated(hash); + } +} diff --git a/contracts/signature/IERC1271.sol b/contracts/signature/IERC1271.sol new file mode 100644 index 00000000..214a71a7 --- /dev/null +++ b/contracts/signature/IERC1271.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: LGPL-3.0-only +/* solhint-disable one-contract-per-file */ +pragma solidity >=0.7.0 <0.9.0; + +interface IERC1271 { + /** + * @notice EIP1271 method to validate a signature. + * @param hash Hash of the data signed on the behalf of address(this). + * @param signature Signature byte array associated with _data. + * + * MUST return the bytes4 magic value 0x1626ba7e when function passes. + * MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5) + * MUST allow external calls + */ + function isValidSignature( + bytes32 hash, + bytes memory signature + ) external view returns (bytes4); +} diff --git a/contracts/signature/SignatureChecker.sol b/contracts/signature/SignatureChecker.sol new file mode 100644 index 00000000..4a8fc5b3 --- /dev/null +++ b/contracts/signature/SignatureChecker.sol @@ -0,0 +1,154 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.8.0 <0.9.0; + +import {IERC1271} from "./IERC1271.sol"; + +/// @title SignatureChecker - A contract that retrieves and validates signatures appended to transaction calldata. +/// @dev currently supports eip-712 and eip-1271 signatures +abstract contract SignatureChecker { + /** + * @notice Searches for a signature, validates it, and returns the signer's address. + * @dev When signature not found or invalid, zero address is returned + * @return The address of the signer. + */ + function moduleTxSignedBy() internal view returns (bytes32, address) { + bytes calldata data = msg.data; + + /* + * The idea is to extend `onlyModule` and provide signature checking + * without code changes to inheriting contracts (Modifiers). + * + * Since it's a generic mechanism, there is no way to conclusively + * identify the trailing bytes as a signature. We simply slice those + * and recover signer. + * + * As a result, we impose a minimum calldata length equal to a function + * selector plus salt, plus a signature (i.e., 4 + 32 + 65 bytes), any + * shorter and calldata it guaranteed to not contain a signature. + */ + if (data.length < 4 + 32 + 65) { + return (bytes32(0), address(0)); + } + + (uint8 v, bytes32 r, bytes32 s) = _splitSignature(data); + + uint256 end = data.length - (32 + 65); + bytes32 salt = bytes32(data[end:]); + + /* + * When handling contract signatures: + * v - is zero + * r - contains the signer + * s - contains the offset within calldata where the signer specific + * signature is located + * + * We detect contract signatures by checking: + * 1- `v` is zero + * 2- `s` points within the buffer, is after selector, is before + * salt and delimits a non-zero length buffer + */ + if (v == 0) { + uint256 start = uint256(s); + if (start < 4 || start > end) { + return (bytes32(0), address(0)); + } + address signer = address(uint160(uint256(r))); + + bytes32 hash = moduleTxHash(data[:start], salt); + return + _isValidContractSignature(signer, hash, data[start:end]) + ? (hash, signer) + : (bytes32(0), address(0)); + } else { + bytes32 hash = moduleTxHash(data[:end], salt); + return (hash, ecrecover(hash, v, r, s)); + } + } + + /** + * @notice Hashes the transaction EIP-712 data structure. + * @dev The produced hash is intended to be signed. + * @param data The current transaction's calldata. + * @param salt The salt value. + * @return The 32-byte hash that is to be signed. + */ + function moduleTxHash( + bytes calldata data, + bytes32 salt + ) public view returns (bytes32) { + bytes32 domainSeparator = keccak256( + abi.encode(DOMAIN_SEPARATOR_TYPEHASH, block.chainid, this) + ); + bytes memory moduleTxData = abi.encodePacked( + bytes1(0x19), + bytes1(0x01), + domainSeparator, + keccak256(abi.encode(MODULE_TX_TYPEHASH, keccak256(data), salt)) + ); + return keccak256(moduleTxData); + } + + /** + * @dev Extracts signature from calldata, and divides it into `uint8 v, bytes32 r, bytes32 s`. + * @param data The current transaction's calldata. + * @return v The ECDSA v value + * @return r The ECDSA r value + * @return s The ECDSA s value + */ + function _splitSignature( + bytes calldata data + ) private pure returns (uint8 v, bytes32 r, bytes32 s) { + v = uint8(bytes1(data[data.length - 1:])); + r = bytes32(data[data.length - 65:]); + s = bytes32(data[data.length - 33:]); + } + + /** + * @dev Calls the signer contract, and validates the contract signature. + * @param signer The address of the signer contract. + * @param hash Hash of the data signed + * @param signature The contract signature. + * @return result Indicates whether the signature is valid. + */ + function _isValidContractSignature( + address signer, + bytes32 hash, + bytes calldata signature + ) internal view returns (bool result) { + uint256 size; + // eslint-disable-line no-inline-assembly + assembly { + size := extcodesize(signer) + } + if (size == 0) { + return false; + } + + (, bytes memory returnData) = signer.staticcall( + abi.encodeWithSelector( + IERC1271.isValidSignature.selector, + hash, + signature + ) + ); + + return bytes4(returnData) == EIP1271_MAGIC_VALUE; + } + + // keccak256( + // "EIP712Domain(uint256 chainId,address verifyingContract)" + // ); + bytes32 private constant DOMAIN_SEPARATOR_TYPEHASH = + 0x47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218; + + // keccak256( + // "ModuleTx(bytes data,bytes32 salt)" + // ); + bytes32 private constant MODULE_TX_TYPEHASH = + 0x2939aeeda3ca260200c9f7b436b19e13207547ccc65cfedc857751c5ea6d91d4; + + // bytes4(keccak256( + // "isValidSignature(bytes32,bytes)" + // )); + bytes4 private constant EIP1271_MAGIC_VALUE = 0x1626ba7e; +} diff --git a/contracts/test/Imports.sol b/contracts/test/Imports.sol deleted file mode 100644 index ddd872f3..00000000 --- a/contracts/test/Imports.sol +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -pragma solidity >=0.6.0 <0.7.0; - -// We import the contract so truffle compiles it, and we have the ABI -// available when working from truffle console. -import "@gnosis.pm/mock-contract/contracts/MockContract.sol"; diff --git a/contracts/test/TestAvatar.sol b/contracts/test/TestAvatar.sol index e0309848..c2fb3713 100644 --- a/contracts/test/TestAvatar.sol +++ b/contracts/test/TestAvatar.sol @@ -2,64 +2,63 @@ pragma solidity >=0.8.0; contract Enum { - enum Operation { - Call, - DelegateCall - } + enum Operation { + Call, + DelegateCall + } } contract TestAvatar { - address public module; + address public module; - receive() external payable {} + receive() external payable {} - function enableModule(address _module) external { - module = _module; - } + function enableModule(address _module) external { + module = _module; + } - function disableModule(address, address) external { - module = address(0); - } + function disableModule(address, address) external { + module = address(0); + } - function isModuleEnabled(address _module) external view returns (bool) { - if (module == _module) { - return true; - } else { - return false; - } + function isModuleEnabled(address _module) external view returns (bool) { + if (module == _module) { + return true; + } else { + return false; } + } - function execTransactionFromModule( - address payable to, - uint256 value, - bytes calldata data, - uint8 operation - ) external returns (bool success) { - require(msg.sender == module, "Not authorized"); - if (operation == 1) (success, ) = to.delegatecall(data); - else (success, ) = to.call{value: value}(data); - } + function execTransactionFromModule( + address payable to, + uint256 value, + bytes calldata data, + uint8 operation + ) external returns (bool success) { + require(msg.sender == module, "Not authorized"); + if (operation == 1) (success, ) = to.delegatecall(data); + else (success, ) = to.call{value: value}(data); + } - function execTransactionFromModuleReturnData( - address payable to, - uint256 value, - bytes calldata data, - uint8 operation - ) external returns (bool success, bytes memory returnData) { - require(msg.sender == module, "Not authorized"); - if (operation == 1) (success, ) = to.delegatecall(data); - else (success, returnData) = to.call{value: value}(data); - } + function execTransactionFromModuleReturnData( + address payable to, + uint256 value, + bytes calldata data, + uint8 operation + ) external returns (bool success, bytes memory returnData) { + require(msg.sender == module, "Not authorized"); + if (operation == 1) (success, ) = to.delegatecall(data); + else (success, returnData) = to.call{value: value}(data); + } - function getModulesPaginated(address, uint256 pageSize) - external - view - returns (address[] memory array, address next) - { - // Init array with max page size - array = new address[](pageSize); + function getModulesPaginated( + address, + uint256 pageSize + ) external view returns (address[] memory array, address next) { + // Init array with max page size + array = new address[](pageSize); - array[0] = module; - next = module; - } + array[0] = module; + next = module; + } } diff --git a/contracts/test/TestGuard.sol b/contracts/test/TestGuard.sol index de63f73b..c0fc46e4 100644 --- a/contracts/test/TestGuard.sol +++ b/contracts/test/TestGuard.sol @@ -1,59 +1,82 @@ // SPDX-License-Identifier: LGPL-3.0-only - -/// @title Modifier Interface - A contract that sits between a Module and an Avatar and enforce some additional logic. pragma solidity >=0.7.0 <0.9.0; -import "../guard/BaseGuard.sol"; -import "../factory/FactoryFriendly.sol"; -import "@gnosis.pm/safe-contracts/contracts/GnosisSafe.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "../core/Module.sol"; +import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; + +import {BaseGuard} from "../guard/BaseGuard.sol"; +import {Enum} from "@gnosis.pm/safe-contracts/contracts/common/Enum.sol"; +import {FactoryFriendly} from "../factory/FactoryFriendly.sol"; +import {GuardableModule} from "../core/GuardableModule.sol"; + +/* solhint-disable */ contract TestGuard is FactoryFriendly, BaseGuard { - event PreChecked(bool checked); - event PostChecked(bool checked); - - address public module; - - constructor(address _module) { - bytes memory initParams = abi.encode(_module); - setUp(initParams); - } - - function setModule(address _module) public { - module = _module; - } - - function checkTransaction( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation, - uint256, - uint256, - uint256, - address, - address payable, - bytes memory, - address - ) public override { - require(to != address(0), "Cannot send to zero address"); - require(value != 1337, "Cannot send 1337"); - require(bytes3(data) != bytes3(0xbaddad), "Cannot call 0xbaddad"); - require(operation != Enum.Operation(1), "No delegate calls"); - emit PreChecked(true); - } - - function checkAfterExecution(bytes32, bool) public override { - require( - Module(module).guard() == address(this), - "Module cannot remove its own guard." - ); - emit PostChecked(true); - } - - function setUp(bytes memory initializeParams) public override initializer { - address _module = abi.decode(initializeParams, (address)); - module = _module; - } + event PreChecked(address sender); + event PostChecked(bool checked); + + address public module; + + constructor(address _module) { + bytes memory initParams = abi.encode(_module); + setUp(initParams); + } + + function setModule(address _module) public { + module = _module; + } + + function checkTransaction( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation, + uint256, + uint256, + uint256, + address, + address payable, + bytes memory, + address sender + ) public override { + require(to != address(0), "Cannot send to zero address"); + require(value != 1337, "Cannot send 1337"); + require(bytes3(data) != bytes3(0xbaddad), "Cannot call 0xbaddad"); + require(operation != Enum.Operation(1), "No delegate calls"); + emit PreChecked(sender); + } + + function checkAfterExecution(bytes32, bool) public override { + require( + GuardableModule(module).guard() == address(this), + "Module cannot remove its own guard." + ); + emit PostChecked(true); + } + + function setUp(bytes memory initializeParams) public override initializer { + address _module = abi.decode(initializeParams, (address)); + module = _module; + } +} + +contract TestNonCompliantGuard is IERC165 { + function supportsInterface(bytes4) external pure returns (bool) { + return false; + } + + function checkTransaction( + address, + uint256, + bytes memory, + Enum.Operation, + uint256, + uint256, + uint256, + address, + address, + bytes memory, + address + ) public {} + + function checkAfterExecution(bytes32, bool) public {} } diff --git a/contracts/test/TestGuardableModifier.sol b/contracts/test/TestGuardableModifier.sol new file mode 100644 index 00000000..92c257e9 --- /dev/null +++ b/contracts/test/TestGuardableModifier.sol @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.7.0 <0.9.0; + +import "../core/GuardableModifier.sol"; + +contract TestGuardableModifier is GuardableModifier { + event Executed( + address to, + uint256 value, + bytes data, + Enum.Operation operation, + bool success + ); + + event ExecutedAndReturnedData( + address to, + uint256 value, + bytes data, + Enum.Operation operation, + bytes returnData, + bool success + ); + + constructor(address _avatar, address _target) { + bytes memory initParams = abi.encode(_avatar, _target); + setUp(initParams); + } + + /// @dev Passes a transaction to the modifier. + /// @param to Destination address of module transaction + /// @param value Ether value of module transaction + /// @param data Data payload of module transaction + /// @param operation Operation type of module transaction + /// @notice Can only be called by enabled modules + function execTransactionFromModule( + address to, + uint256 value, + bytes calldata data, + Enum.Operation operation + ) public override moduleOnly returns (bool success) { + success = exec(to, value, data, operation); + emit Executed(to, value, data, operation, success); + } + + /// @dev Passes a transaction to the modifier, expects return data. + /// @param to Destination address of module transaction + /// @param value Ether value of module transaction + /// @param data Data payload of module transaction + /// @param operation Operation type of module transaction + /// @notice Can only be called by enabled modules + function execTransactionFromModuleReturnData( + address to, + uint256 value, + bytes calldata data, + Enum.Operation operation + ) public override moduleOnly returns (bool success, bytes memory returnData) { + (success, returnData) = execAndReturnData(to, value, data, operation); + emit ExecutedAndReturnedData( + to, + value, + data, + operation, + returnData, + success + ); + } + + function setUp(bytes memory initializeParams) public override initializer { + setupModules(); + __Ownable_init(msg.sender); + (address _avatar, address _target) = abi.decode( + initializeParams, + (address, address) + ); + avatar = _avatar; + target = _target; + } + + function attemptToSetupModules() public { + setupModules(); + } +} diff --git a/contracts/test/TestModifier.sol b/contracts/test/TestModifier.sol index dac3c745..f175384d 100644 --- a/contracts/test/TestModifier.sol +++ b/contracts/test/TestModifier.sol @@ -6,84 +6,83 @@ pragma solidity >=0.7.0 <0.9.0; import "../core/Modifier.sol"; contract TestModifier is Modifier { - event executed( - address to, - uint256 value, - bytes data, - Enum.Operation operation, - bool success - ); + event Executed( + address to, + uint256 value, + bytes data, + Enum.Operation operation, + bool success + ); - event executedAndReturnedData( - address to, - uint256 value, - bytes data, - Enum.Operation operation, - bytes returnData, - bool success - ); + event ExecutedAndReturnedData( + address to, + uint256 value, + bytes data, + Enum.Operation operation, + bytes returnData, + bool success + ); - constructor(address _avatar, address _target) { - bytes memory initParams = abi.encode(_avatar, _target); - setUp(initParams); - } + constructor(address _avatar, address _target) { + bytes memory initParams = abi.encode(_avatar, _target); + setUp(initParams); + } - /// @dev Passes a transaction to the modifier. - /// @param to Destination address of module transaction - /// @param value Ether value of module transaction - /// @param data Data payload of module transaction - /// @param operation Operation type of module transaction - /// @notice Can only be called by enabled modules - function execTransactionFromModule( - address to, - uint256 value, - bytes calldata data, - Enum.Operation operation - ) public override moduleOnly returns (bool success) { - success = exec(to, value, data, operation); - emit executed(to, value, data, operation, success); - } + /// @dev Passes a transaction to the modifier. + /// @param to Destination address of module transaction + /// @param value Ether value of module transaction + /// @param data Data payload of module transaction + /// @param operation Operation type of module transaction + /// @notice Can only be called by enabled modules + function execTransactionFromModule( + address to, + uint256 value, + bytes calldata data, + Enum.Operation operation + ) public override moduleOnly returns (bool success) { + success = exec(to, value, data, operation); + emit Executed(to, value, data, operation, success); + } - /// @dev Passes a transaction to the modifier, expects return data. - /// @param to Destination address of module transaction - /// @param value Ether value of module transaction - /// @param data Data payload of module transaction - /// @param operation Operation type of module transaction - /// @notice Can only be called by enabled modules - function execTransactionFromModuleReturnData( - address to, - uint256 value, - bytes calldata data, - Enum.Operation operation - ) - public - override - moduleOnly - returns (bool success, bytes memory returnData) - { - (success, returnData) = execAndReturnData(to, value, data, operation); - emit executedAndReturnedData( - to, - value, - data, - operation, - returnData, - success - ); - } + /// @dev Passes a transaction to the modifier, expects return data. + /// @param to Destination address of module transaction + /// @param value Ether value of module transaction + /// @param data Data payload of module transaction + /// @param operation Operation type of module transaction + /// @notice Can only be called by enabled modules + function execTransactionFromModuleReturnData( + address to, + uint256 value, + bytes calldata data, + Enum.Operation operation + ) public override moduleOnly returns (bool success, bytes memory returnData) { + (success, returnData) = execAndReturnData(to, value, data, operation); + emit ExecutedAndReturnedData( + to, + value, + data, + operation, + returnData, + success + ); + } + + function setUp(bytes memory initializeParams) public override initializer { + (address _avatar, address _target) = abi.decode( + initializeParams, + (address, address) + ); + setupModules(); + _transferOwnership(msg.sender); + avatar = _avatar; + target = _target; + } - function setUp(bytes memory initializeParams) public override initializer { - setupModules(); - __Ownable_init(); - (address _avatar, address _target) = abi.decode( - initializeParams, - (address, address) - ); - avatar = _avatar; - target = _target; - } + function exposeSentOrSignedByModule() external view returns (address) { + return sentOrSignedByModule(); + } - function attemptToSetupModules() public { - setupModules(); - } + function attemptToSetupModules() public { + setupModules(); + } } diff --git a/contracts/test/TestModule.sol b/contracts/test/TestModule.sol index 0e8e7e2c..0bb46c09 100644 --- a/contracts/test/TestModule.sol +++ b/contracts/test/TestModule.sol @@ -3,64 +3,64 @@ /// @title Modifier Interface - A contract that sits between a Module and an Avatar and enforce some additional logic. pragma solidity >=0.7.0 <0.9.0; -import "../core/Module.sol"; +import "../core/GuardableModule.sol"; -contract TestModule is Module { - constructor(address _avatar, address _target) { - bytes memory initParams = abi.encode(_avatar, _target); - setUp(initParams); - } +contract TestModule is GuardableModule { + constructor(address _avatar, address _target) { + bytes memory initParams = abi.encode(_avatar, _target); + setUp(initParams); + } - event executed( - address to, - uint256 value, - bytes data, - Enum.Operation operation, - bool success - ); - event executedAndReturnedData( - address to, - uint256 value, - bytes data, - Enum.Operation operation, - bytes returnData, - bool success - ); + event executed( + address to, + uint256 value, + bytes data, + Enum.Operation operation, + bool success + ); + event executedAndReturnedData( + address to, + uint256 value, + bytes data, + Enum.Operation operation, + bytes returnData, + bool success + ); - function executeTransaction( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) public returns (bool success) { - success = exec(to, value, data, operation); - emit executed(to, value, data, operation, success); - } + function executeTransaction( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) public returns (bool success) { + success = exec(to, value, data, operation); + emit executed(to, value, data, operation, success); + } - function executeTransactionReturnData( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) public returns (bool success, bytes memory returnData) { - (success, returnData) = execAndReturnData(to, value, data, operation); - emit executedAndReturnedData( - to, - value, - data, - operation, - returnData, - success - ); - } + function executeTransactionReturnData( + address to, + uint256 value, + bytes memory data, + Enum.Operation operation + ) public returns (bool success, bytes memory returnData) { + (success, returnData) = execAndReturnData(to, value, data, operation); + emit executedAndReturnedData( + to, + value, + data, + operation, + returnData, + success + ); + } - function setUp(bytes memory initializeParams) public override initializer { - __Ownable_init(); - (address _avatar, address _target) = abi.decode( - initializeParams, - (address, address) - ); - avatar = _avatar; - target = _target; - } + function setUp(bytes memory initializeParams) public override initializer { + __Ownable_init(msg.sender); + (address _avatar, address _target) = abi.decode( + initializeParams, + (address, address) + ); + avatar = _avatar; + target = _target; + } } diff --git a/contracts/test/TestSignature.sol b/contracts/test/TestSignature.sol new file mode 100644 index 00000000..c7be472f --- /dev/null +++ b/contracts/test/TestSignature.sol @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.8.0; + +import "../signature/SignatureChecker.sol"; + +contract ContractSignerYes is IERC1271 { + function isValidSignature( + bytes32, + bytes memory + ) external pure override returns (bytes4) { + return 0x1626ba7e; + } +} + +contract ContractSignerNo is IERC1271 { + function isValidSignature( + bytes32, + bytes memory + ) external pure override returns (bytes4) { + return 0x33333333; + } +} + +contract ContractSignerMaybe is IERC1271 { + function isValidSignature( + bytes32, + bytes memory contractSpecificSignature + ) external pure override returns (bytes4) { + bool isValid = contractSpecificSignature.length == 6 && + bytes6(contractSpecificSignature) == 0x001122334455; + + return isValid ? bytes4(0x1626ba7e) : bytes4(0x33333333); + } +} + +contract ContractSignerOnlyEmpty is IERC1271 { + function isValidSignature( + bytes32, + bytes memory contractSpecificSignature + ) external pure override returns (bytes4) { + bool isValid = contractSpecificSignature.length == 0; + return isValid ? bytes4(0x1626ba7e) : bytes4(0x33333333); + } +} + +contract ContractSignerFaulty {} + +contract ContractSignerReturnSize { + function isValidSignature( + bytes32, + bytes memory + ) external pure returns (bytes2) { + return 0x1626; + } +} + +contract TestSignature is SignatureChecker { + event Hello(address signer); + + event Goodbye(address signer); + + function hello() public { + (, address signer) = moduleTxSignedBy(); + emit Hello(signer); + } + + function goodbye(uint256, bytes memory) public { + (, address signer) = moduleTxSignedBy(); + emit Goodbye(signer); + } +} diff --git a/hardhat.config.ts b/hardhat.config.ts index 02b6634d..c682e9ff 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,8 +1,9 @@ import "@nomicfoundation/hardhat-toolbox"; import dotenv from "dotenv"; -import type { HttpNetworkUserConfig } from "hardhat/types"; import yargs from "yargs"; + +import type { HttpNetworkUserConfig } from "hardhat/types"; import "hardhat-change-network"; const { network } = yargs @@ -53,7 +54,7 @@ export default { solidity: { compilers: [ { - version: "0.8.6", + version: "0.8.20", settings: { optimizer: { enabled: true, diff --git a/package.json b/package.json index a5ce9c76..2286dde0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gnosis.pm/zodiac", - "version": "3.3.7", + "version": "4.0.1", "description": "Zodiac is a composable design philosophy and collection of standards for building DAO ecosystem tooling.", "author": "Auryn Macmillan ", "license": "LGPL-3.0+", @@ -32,11 +32,10 @@ "lint": "yarn lint:sol && yarn lint:ts", "lint:sol": "solhint ./contracts/**/*.sol", "lint:ts": "eslint --max-warnings 0 .", - "fmt:sol": "prettier ./contracts/**/*.sol -w", "format": "yarn format:sol && yarn format:ts", - "format:sol": "prettier ./contracts/**/*.sol -w", - "format:ts": "prettier ./sdk/**/*.ts ./test/**/*.ts ./*.ts -w", - "generate:types": "rm -rf src/types && typechain --target ethers-v5 --out-dir sdk/types './sdk/abi/*.json'", + "format:sol": "prettier --write --plugin=prettier-plugin-solidity ./contracts/**/*.sol", + "format:ts": "prettier --write ./sdk/**/*.ts ./test/**/*.ts ./*.ts", + "generate:types": "patch-package && rm -rf src/types && typechain --target ethers-v6 --out-dir sdk/types './sdk/abi/*.json'", "prepare": "yarn generate:types && yarn build", "prerelease": "yarn clean && yarn build && yarn build:sdk", "release": "yarn publish --access public", @@ -50,47 +49,50 @@ "url": "https://github.com/gnosis/zodiac.git" }, "devDependencies": { - "@nomicfoundation/hardhat-chai-matchers": "^1.0.5", + "@nomicfoundation/hardhat-chai-matchers": "^2.0.3", + "@nomicfoundation/hardhat-ethers": "^3.0.0", "@nomicfoundation/hardhat-network-helpers": "^1.0.7", - "@nomicfoundation/hardhat-toolbox": "^2.0.0", - "@nomiclabs/hardhat-ethers": "2.2.3", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-etherscan": "3.1.7", - "@typechain/ethers-v5": "^11.1.0", - "@typechain/hardhat": "^6.1.5", + "@typechain/ethers-v6": "^0.5.1", + "@typechain/hardhat": "^9.1.0", "@types/chai": "^4.3.3", "@types/mocha": "^10.0.0", "@types/node": "^18.8.5", "@types/yargs": "^17.0.13", - "@typescript-eslint/eslint-plugin": "^5.40.0", - "@typescript-eslint/parser": "^5.40.0", + "@typescript-eslint/eslint-plugin": "^6.9.1", + "@typescript-eslint/parser": "^6.9.1", "chai": "^4.3.7", "dotenv": "^16.0.3", "eslint": "^8.25.0", - "eslint-config-prettier": "^8.5.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-no-only-tests": "^3.0.0", - "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-prettier": "^5.0.1", "hardhat": "^2.14.0", "hardhat-change-network": "^0.0.7", "hardhat-deploy": "^0.11.28", "hardhat-gas-reporter": "^1.0.9", "husky": "^8.0.1", - "prettier": "^2.8.8", + "prettier": "^3.0.3", "prettier-plugin-solidity": "^1.1.3", "rimraf": "^5.0.1", - "solhint": "^3.3.7", - "solhint-plugin-prettier": "^0.0.5", + "solhint": "^4.0.0", + "solhint-plugin-prettier": "^0.1.0", "solidity-coverage": "^0.8.4", "ts-node": "^10.9.1", - "typechain": "^8.3.0", - "typescript": "^5.1.6", - "yargs": "^17.6.0" + "typechain": "^8.3.2", + "typescript": "^5.2.2", + "yargs": "^17.6.0", + "patch-package": "^8.0.0" }, "dependencies": { "@gnosis.pm/mock-contract": "^4.0.0", "@gnosis.pm/safe-contracts": "1.3.0", - "@openzeppelin/contracts": "^4.8.1", - "@openzeppelin/contracts-upgradeable": "^4.8.1", - "ethers": "^5.7.1" + "@openzeppelin/contracts": "^5.0.0", + "@openzeppelin/contracts-upgradeable": "^5.0.0", + "ethers": "^6.9.2" } } diff --git a/patches/@typechain+ethers-v6+0.5.1.patch b/patches/@typechain+ethers-v6+0.5.1.patch new file mode 100644 index 00000000..acc8302e --- /dev/null +++ b/patches/@typechain+ethers-v6+0.5.1.patch @@ -0,0 +1,61 @@ +diff --git a/node_modules/@typechain/ethers-v6/dist/codegen/index.js b/node_modules/@typechain/ethers-v6/dist/codegen/index.js +index 604775c..0275a0e 100644 +--- a/node_modules/@typechain/ethers-v6/dist/codegen/index.js ++++ b/node_modules/@typechain/ethers-v6/dist/codegen/index.js +@@ -40,8 +40,9 @@ function codegenContractTypings(contract, codegenConfig) { + + ${events_1.EVENT_METHOD_OVERRIDES} + ++ + ${(0, lodash_1.values)(contract.functions) +- .filter((f) => !reserved_keywords_1.reservedKeywords.has(f[0].name)) ++ .filter((f) => !reserved_keywords_1.ethersPassProperties.has(f[0].name) && !reserved_keywords_1.baseContractProperties.has(f[0].name)) + .map(functions_1.codegenFunctions.bind(null, { codegenConfig })) + .join('\n')} + +diff --git a/node_modules/@typechain/ethers-v6/dist/codegen/index.js.map b/node_modules/@typechain/ethers-v6/dist/codegen/index.js.map +index b67af83..ddc2cbc 100644 +--- a/node_modules/@typechain/ethers-v6/dist/codegen/index.js.map ++++ b/node_modules/@typechain/ethers-v6/dist/codegen/index.js.map +@@ -1 +1 @@ +-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,mCAAyC;AACzC,yCAQkB;AAElB,sCAAiE;AACjE,qCAQiB;AACjB,2CASoB;AACpB,2DAAsD;AACtD,uCAA+C;AAC/C,mCAA4C;AAE5C,SAAgB,sBAAsB,CAAC,QAAkB,EAAE,aAA4B;IACrF,MAAM,EAAE,uBAAuB,EAAE,GAAG,aAAa,CAAA;IAEjD,MAAM,MAAM,GAAG;IACb,IAAA,6BAAmB,EAAC,IAAA,eAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;qBAE7C,QAAQ,CAAC,IAAI;MAC5B,IAAA,2CAA+B,EAC/B,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,2CAA+B,CAAC,CAChF,CACF;;MAEC,IAAA,qCAA4B,EAC5B,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,qCAA4B,CAAC,CAC7E,CACF;;MAEC,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,8CAAkC,CAAC,CAAC;SAClG,IAAI,CAAC,IAAI,CAAC;;MAEX,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,gDAAoC,CAAC,CAAC;SACpG,IAAI,CAAC,IAAI,CAAC;;;IAGb,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iCAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;qBAE/C,QAAQ,CAAC,IAAI;MAC5B,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;+CACnC,QAAQ,CAAC,IAAI;;;iBAG3C,QAAQ,CAAC,IAAI;;MAExB,+BAAsB;;MAEtB,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,oCAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC/C,GAAG,CAAC,4BAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;SACnD,IAAI,CAAC,IAAI,CAAC;;;;;MAKX,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,0CAA8B,CAAC,CAAC;SAC9F,IAAI,CAAC,IAAI,CAAC;;MAEX,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC;SACtB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,oCAA2B,CAAC,CAAC;SAC3F,IAAI,CAAC,IAAI,CAAC;;;QAGT,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,6BAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAEhE,CAAA;IAEF,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,MAAM,UAAU,GACd,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QACtG,YAAY,CAAA;IAEd,MAAM,OAAO,GACX,IAAA,2CAA+B,EAC7B;QACE,aAAa,EAAE;YACb,cAAc;YACd,cAAc;YACd,WAAW;YACX,qBAAqB;YACrB,kBAAkB;YAClB,QAAQ;YACR,WAAW;YACX,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,gBAAgB;YAChB,UAAU;YACV,UAAU;SACX;KACF,EACD,MAAM,CACP;QACD,IAAI;QACJ,IAAA,2CAA+B,EAAC,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,sBAAa,EAAE,GAAG,4BAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAE9G,OAAO,OAAO,GAAG,MAAM,CAAA;AACzB,CAAC;AA5FD,wDA4FC;AAED,SAAgB,sBAAsB,CACpC,aAA4B,EAC5B,QAAkB,EAClB,GAAQ,EACR,QAAqC;;IAErC,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,MAAM,eAAe,GACnB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,0BAAkB,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,eACE,CAAA,MAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,0CAAE,eAAe,MAAK,SAAS;YACpD,CAAC,CAAC,sCAAsC;YACxC,CAAC,CAAC,yCACN,EAAE,CAAA;IACJ,MAAM,mCAAmC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,IAAA,8BAAkB,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpD,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,mBAAmB,GAAG,mCAAmC;QAC7D,CAAC,CAAC,GAAG,mCAAmC,mBAAmB;QAC3D,CAAC,CAAC,iBAAiB,CAAA;IACrB,IAAI,CAAC,QAAQ;QAAE,OAAO,8BAA8B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAEjF,8DAA8D;IAE9D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,4BAA4B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAElF,MAAM,MAAM,GAAG;IACb,MAAM;;uBAEa,QAAQ,CAAC,QAAQ;;IAEpC,qCAAqC,CAAC,QAAQ,EAAE,QAAQ,CAAC;;iBAE5C,QAAQ,CAAC,IAAI,GAAG,wBAAe;MAC1C,0BAA0B,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;oCAC/B,eAAe;0CACT,mBAAmB;;sBAEvC,eAAe;4BACT,mBAAmB,gBAAgB,QAAQ,CAAC,IAAI;;;;uDAIrB,QAAQ,CAAC,IAAI,GAAG,wBAAe;wCAC9C,QAAQ,CAAC,IAAI,GAAG,wBAAe;;MAEjE,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,kCAAkC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;MAC5F,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,kCAAkC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;;MAE5F,IAAI;;;IAGN,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,CAAC;GACtD,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,YAAY,EAAE,CAAA;IAEtG,MAAM,OAAO,GACX,IAAA,2CAA+B,EAC7B;QACE,MAAM,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,WAAW,CAAC;QACnF,aAAa,EAAE;YACb,QAAQ;YACR,WAAW;YACX,cAAc;YACd,WAAW;YACX,aAAa;YACb,2BAA2B;YAC3B,UAAU;YACV,oBAAoB;YACpB,gBAAgB;SACjB;KACF,EACD,MAAM,CACP;QACD,IAAI;QACJ,IAAA,2CAA+B,EAAC,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,sBAAa,EAAE,GAAG,4BAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAE9G,OAAO,OAAO,GAAG,MAAM,CAAA;AACzB,CAAC;AA/ED,wDA+EC;AAED,SAAgB,8BAA8B,CAAC,QAAkB,EAAE,GAAQ,EAAE,YAAoB;IAC/F,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,4BAA4B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAClF,OAAO;;IAEL,MAAM;;iBAEO,QAAQ,CAAC,IAAI,GAAG,wBAAe;MAC1C,IAAI;;GAEP,CAAA;AACH,CAAC;AAVD,wEAUC;AAED,SAAS,4BAA4B,CACnC,QAAkB,EAClB,GAAQ,EACR,YAAoB;;IAEpB,MAAM,OAAO,GAAgB,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAA;IAElF,MAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACnD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAkB,CAAA;QACzC,IAAI,UAAU,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,UAAU,GAAG,6BAAoB,CAAC,CAAA;SAClF;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,uBAAuB,GAAG;QAC9B,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7C,GAAG,QAAQ,CAAC,IAAI;QAChB,QAAQ,CAAC,IAAI,GAAG,YAAY;KAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEX,MAAM,MAAM,GAAG;kBACC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,uBAAuB;;iBAEpE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;GAC1C,CAAC,IAAI,EAAE,CAAA;IAER,MAAM,IAAI,GAAG;;gCAEiB,QAAQ,CAAC,IAAI;sCACP,QAAQ,CAAC,IAAI;;uEAEoB,QAAQ,CAAC,IAAI;iEACnB,QAAQ,CAAC,IAAI;;GAE3E,CAAC,IAAI,EAAE,CAAA;IAER,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,0BAA0B,CACjC,aAA4B,EAC5B,QAAkB,EAClB,QAAoC;IAEpC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;QAC5B,OAAO;6BACkB,QAAQ,CAAC,IAAI;;;;;;UAMhC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;;KAErF,CAAA;KACF;IAED,MAAM,mBAAmB,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAClE,6FAA6F;QAC7F,8FAA8F;QAC9F,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;QACtF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAA;QACpD,OAAO;;sBAEW,mBAAmB;gCACT,UAAU;SACjC,CAAA;IACP,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,wBAAe,EAAE,CAAA;IACtD,MAAM,gBAAgB,GAAG,GAAG,QAAQ,CAAC,IAAI,kBAAkB,CAAA;IAE3D,OAAO;;iBAEQ,QAAQ,CAAC,IAAI;;;;;;;;YAQlB,SAAS;;;;QAIb,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;;;gDAGxC,gBAAgB;;QAExD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;GAInC,CAAA;AACH,CAAC;AAED,SAAS,qCAAqC,CAAC,QAAkB,EAAE,QAAoC;IACrG,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,mBAAmB,CAAA;IAEhD,IAAI,QAAQ,CAAC,cAAc,EAAE;QAC3B,OAAO;aACE,IAAI;mCACkB,QAAQ,CAAC,IAAI;;;;cAIlC,IAAI;;;;;QAKV,CAAA;KACL;SAAM;QACL,OAAO;aACE,IAAI;;iCAEgB,IAAI;;KAEhC,CAAA;KACF;AACH,CAAC;AAED,SAAS,iCAAiC,CAAC,QAAkB,EAAE,QAAoC;IACjG,IAAI,CAAC,QAAQ,CAAC,cAAc;QAAE,OAAO,EAAE,CAAA;IAEvC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CACnD,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,aAAa,CACrE,CAAA;IACD,OAAO;qBACY,QAAQ,CAAC,IAAI;MAC5B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAA;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CACzB,GAAQ,EACR,sBAA+B,EAC/B,SAAmD;IAEnD,yDAAyD;IACzD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;KAC5C;IAED,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,sBAAsB,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAQ,CAAC,CAAA;AACvG,CAAC"} +\ No newline at end of file ++{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,mCAAyC;AACzC,yCAQkB;AAElB,sCAAiE;AACjE,qCAQiB;AACjB,2CASoB;AACpB,2DAAkF;AAClF,uCAA+C;AAC/C,mCAA4C;AAE5C,SAAgB,sBAAsB,CAAC,QAAkB,EAAE,aAA4B;IACrF,MAAM,EAAE,uBAAuB,EAAE,GAAG,aAAa,CAAA;IAEjD,MAAM,MAAM,GAAG;IACb,IAAA,6BAAmB,EAAC,IAAA,eAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;qBAE7C,QAAQ,CAAC,IAAI;MAC5B,IAAA,2CAA+B,EAC/B,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,2CAA+B,CAAC,CAChF,CACF;;MAEC,IAAA,qCAA4B,EAC5B,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,qCAA4B,CAAC,CAC7E,CACF;;MAEC,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,8CAAkC,CAAC,CAAC;SAClG,IAAI,CAAC,IAAI,CAAC;;MAEX,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,gDAAoC,CAAC,CAAC;SACpG,IAAI,CAAC,IAAI,CAAC;;;IAGb,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iCAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;qBAE/C,QAAQ,CAAC,IAAI;MAC5B,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;+CACnC,QAAQ,CAAC,IAAI;;;iBAG3C,QAAQ,CAAC,IAAI;;MAExB,+BAAsB;;;MAGtB,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wCAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0CAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC7F,GAAG,CAAC,4BAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;SACnD,IAAI,CAAC,IAAI,CAAC;;;;;MAKX,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;SACzB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,0CAA8B,CAAC,CAAC;SAC9F,IAAI,CAAC,IAAI,CAAC;;MAEX,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC;SACtB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,EAAE,oCAA2B,CAAC,CAAC;SAC3F,IAAI,CAAC,IAAI,CAAC;;;QAGT,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,6BAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAEhE,CAAA;IAEF,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,MAAM,UAAU,GACd,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QACtG,YAAY,CAAA;IAEd,MAAM,OAAO,GACX,IAAA,2CAA+B,EAC7B;QACE,aAAa,EAAE;YACb,cAAc;YACd,cAAc;YACd,WAAW;YACX,qBAAqB;YACrB,kBAAkB;YAClB,QAAQ;YACR,WAAW;YACX,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,gBAAgB;YAChB,UAAU;YACV,UAAU;SACX;KACF,EACD,MAAM,CACP;QACD,IAAI;QACJ,IAAA,2CAA+B,EAAC,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,sBAAa,EAAE,GAAG,4BAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAE9G,OAAO,OAAO,GAAG,MAAM,CAAA;AACzB,CAAC;AA7FD,wDA6FC;AAED,SAAgB,sBAAsB,CACpC,aAA4B,EAC5B,QAAkB,EAClB,GAAQ,EACR,QAAqC;;IAErC,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,MAAM,eAAe,GACnB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,0BAAkB,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,eACE,CAAA,MAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,0CAAE,eAAe,MAAK,SAAS;YACpD,CAAC,CAAC,sCAAsC;YACxC,CAAC,CAAC,yCACN,EAAE,CAAA;IACJ,MAAM,mCAAmC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,IAAA,8BAAkB,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpD,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,mBAAmB,GAAG,mCAAmC;QAC7D,CAAC,CAAC,GAAG,mCAAmC,mBAAmB;QAC3D,CAAC,CAAC,iBAAiB,CAAA;IACrB,IAAI,CAAC,QAAQ;QAAE,OAAO,8BAA8B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAEjF,8DAA8D;IAE9D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,4BAA4B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAElF,MAAM,MAAM,GAAG;IACb,MAAM;;uBAEa,QAAQ,CAAC,QAAQ;;IAEpC,qCAAqC,CAAC,QAAQ,EAAE,QAAQ,CAAC;;iBAE5C,QAAQ,CAAC,IAAI,GAAG,wBAAe;MAC1C,0BAA0B,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;oCAC/B,eAAe;0CACT,mBAAmB;;sBAEvC,eAAe;4BACT,mBAAmB,gBAAgB,QAAQ,CAAC,IAAI;;;;uDAIrB,QAAQ,CAAC,IAAI,GAAG,wBAAe;wCAC9C,QAAQ,CAAC,IAAI,GAAG,wBAAe;;MAEjE,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,kCAAkC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;MAC5F,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,kCAAkC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;;MAE5F,IAAI;;;IAGN,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,CAAC;GACtD,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,YAAY,EAAE,CAAA;IAEtG,MAAM,OAAO,GACX,IAAA,2CAA+B,EAC7B;QACE,MAAM,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,WAAW,CAAC;QACnF,aAAa,EAAE;YACb,QAAQ;YACR,WAAW;YACX,cAAc;YACd,WAAW;YACX,aAAa;YACb,2BAA2B;YAC3B,UAAU;YACV,oBAAoB;YACpB,gBAAgB;SACjB;KACF,EACD,MAAM,CACP;QACD,IAAI;QACJ,IAAA,2CAA+B,EAAC,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,sBAAa,EAAE,GAAG,4BAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAE9G,OAAO,OAAO,GAAG,MAAM,CAAA;AACzB,CAAC;AA/ED,wDA+EC;AAED,SAAgB,8BAA8B,CAAC,QAAkB,EAAE,GAAQ,EAAE,YAAoB;IAC/F,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,4BAA4B,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAClF,OAAO;;IAEL,MAAM;;iBAEO,QAAQ,CAAC,IAAI,GAAG,wBAAe;MAC1C,IAAI;;GAEP,CAAA;AACH,CAAC;AAVD,wEAUC;AAED,SAAS,4BAA4B,CACnC,QAAkB,EAClB,GAAQ,EACR,YAAoB;;IAEpB,MAAM,OAAO,GAAgB,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAA;IAElF,MAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACnD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAkB,CAAA;QACzC,IAAI,UAAU,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,UAAU,GAAG,6BAAoB,CAAC,CAAA;SAClF;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,uBAAuB,GAAG;QAC9B,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7C,GAAG,QAAQ,CAAC,IAAI;QAChB,QAAQ,CAAC,IAAI,GAAG,YAAY;KAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEX,MAAM,MAAM,GAAG;kBACC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,uBAAuB;;iBAEpE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;GAC1C,CAAC,IAAI,EAAE,CAAA;IAER,MAAM,IAAI,GAAG;;gCAEiB,QAAQ,CAAC,IAAI;sCACP,QAAQ,CAAC,IAAI;;uEAEoB,QAAQ,CAAC,IAAI;iEACnB,QAAQ,CAAC,IAAI;;GAE3E,CAAC,IAAI,EAAE,CAAA;IAER,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,0BAA0B,CACjC,aAA4B,EAC5B,QAAkB,EAClB,QAAoC;IAEpC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;QAC5B,OAAO;6BACkB,QAAQ,CAAC,IAAI;;;;;;UAMhC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;;KAErF,CAAA;KACF;IAED,MAAM,mBAAmB,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAClE,6FAA6F;QAC7F,8FAA8F;QAC9F,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;QACtF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAA;QACpD,OAAO;;sBAEW,mBAAmB;gCACT,UAAU;SACjC,CAAA;IACP,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,wBAAe,EAAE,CAAA;IACtD,MAAM,gBAAgB,GAAG,GAAG,QAAQ,CAAC,IAAI,kBAAkB,CAAA;IAE3D,OAAO;;iBAEQ,QAAQ,CAAC,IAAI;;;;;;;;YAQlB,SAAS;;;;QAIb,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;;;gDAGxC,gBAAgB;;QAExD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;GAInC,CAAA;AACH,CAAC;AAED,SAAS,qCAAqC,CAAC,QAAkB,EAAE,QAAoC;IACrG,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,mBAAmB,CAAA;IAEhD,IAAI,QAAQ,CAAC,cAAc,EAAE;QAC3B,OAAO;aACE,IAAI;mCACkB,QAAQ,CAAC,IAAI;;;;cAIlC,IAAI;;;;;QAKV,CAAA;KACL;SAAM;QACL,OAAO;aACE,IAAI;;iCAEgB,IAAI;;KAEhC,CAAA;KACF;AACH,CAAC;AAED,SAAS,iCAAiC,CAAC,QAAkB,EAAE,QAAoC;IACjG,IAAI,CAAC,QAAQ,CAAC,cAAc;QAAE,OAAO,EAAE,CAAA;IAEvC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CACnD,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,aAAa,CACrE,CAAA;IACD,OAAO;qBACY,QAAQ,CAAC,IAAI;MAC5B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAA;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CACzB,GAAQ,EACR,sBAA+B,EAC/B,SAAmD;IAEnD,yDAAyD;IACzD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;KAC5C;IAED,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,sBAAsB,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAQ,CAAC,CAAA;AACvG,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.d.ts b/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.d.ts +index d3da299..78d7ede 100644 +--- a/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.d.ts ++++ b/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.d.ts +@@ -1,2 +1,3 @@ +-export declare const reservedKeywords: Set; ++export declare const ethersPassProperties: Set; ++export declare const baseContractProperties: Set; + export declare const reservedKeywordsLabels: Set; +diff --git a/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js b/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js +index f5a47b1..f8f0994 100644 +--- a/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js ++++ b/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js +@@ -1,7 +1,12 @@ + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); +-exports.reservedKeywordsLabels = exports.reservedKeywords = void 0; +-exports.reservedKeywords = new Set(['signer', 'provider', 'deployTransaction', 'deployed', 'fallback', 'connect']); ++exports.reservedKeywordsLabels = exports.baseContractProperties = exports.ethersPassProperties = void 0; ++const ethers_1 = require("ethers"); ++exports.ethersPassProperties = new Set(['then']); ++exports.baseContractProperties = new Set([ ++ ...Object.getOwnPropertyNames(ethers_1.BaseContract.prototype), ++ ...Object.keys(new ethers_1.BaseContract('0x', [])), // for readOnly properties ++]); + exports.reservedKeywordsLabels = new Set([ + 'class', + 'function', +diff --git a/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js.map b/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js.map +index 8c70249..c3bf0f1 100644 +--- a/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js.map ++++ b/node_modules/@typechain/ethers-v6/dist/codegen/reserved-keywords.js.map +@@ -1 +1 @@ +-{"version":3,"file":"reserved-keywords.js","sourceRoot":"","sources":["../../src/codegen/reserved-keywords.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;AAE1G,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,OAAO;IACP,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;IACZ,aAAa;IACb,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,IAAI;IACJ,MAAM;IACN,KAAK;IACL,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,WAAW;IACX,MAAM;IACN,UAAU;IACV,OAAO;IACP,OAAO;IACP,IAAI;CACL,CAAC,CAAA"} +\ No newline at end of file ++{"version":3,"file":"reserved-keywords.js","sourceRoot":"","sources":["../../src/codegen/reserved-keywords.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAExB,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AACxC,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,GAAG,MAAM,CAAC,mBAAmB,CAAC,qBAAY,CAAC,SAAS,CAAC;IACrD,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,0BAA0B;CACvE,CAAC,CAAA;AAEW,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,OAAO;IACP,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;IACZ,aAAa;IACb,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,IAAI;IACJ,MAAM;IACN,KAAK;IACL,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,WAAW;IACX,MAAM;IACN,UAAU;IACV,OAAO;IACP,OAAO;IACP,IAAI;CACL,CAAC,CAAA"} +\ No newline at end of file diff --git a/sdk/abi/Integrity.json b/sdk/abi/Integrity.json deleted file mode 100644 index 10a82957..00000000 --- a/sdk/abi/Integrity.json +++ /dev/null @@ -1,113 +0,0 @@ -[ - { - "inputs": [], - "name": "NotBFS", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "UnsuitableChildCount", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "UnsuitableChildTypeTree", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "UnsuitableCompValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "UnsuitableParameterType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "UnsuitableParent", - "type": "error" - }, - { - "inputs": [], - "name": "UnsuitableRootNode", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "UnsupportedOperator", - "type": "error" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint8", - "name": "parent", - "type": "uint8" - }, - { - "internalType": "enum ParameterType", - "name": "paramType", - "type": "ParameterType" - }, - { - "internalType": "enum Operator", - "name": "operator", - "type": "Operator" - }, - { - "internalType": "bytes", - "name": "compValue", - "type": "bytes" - } - ], - "internalType": "struct ConditionFlat[]", - "name": "conditions", - "type": "tuple[]" - } - ], - "name": "enforce", - "outputs": [], - "stateMutability": "pure", - "type": "function" - } -] diff --git a/sdk/abi/Packer.json b/sdk/abi/Packer.json deleted file mode 100644 index 4f9fa5ae..00000000 --- a/sdk/abi/Packer.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "inputs": [ - { - "components": [ - { - "internalType": "uint8", - "name": "parent", - "type": "uint8" - }, - { - "internalType": "enum ParameterType", - "name": "paramType", - "type": "ParameterType" - }, - { - "internalType": "enum Operator", - "name": "operator", - "type": "Operator" - }, - { - "internalType": "bytes", - "name": "compValue", - "type": "bytes" - } - ], - "internalType": "struct ConditionFlat[]", - "name": "conditionsFlat", - "type": "tuple[]" - } - ], - "name": "pack", - "outputs": [ - { - "internalType": "bytes", - "name": "buffer", - "type": "bytes" - } - ], - "stateMutability": "pure", - "type": "function" - } -] diff --git a/sdk/abi/RolesV1.json b/sdk/abi/RolesV1.json new file mode 100644 index 00000000..48c9ca47 --- /dev/null +++ b/sdk/abi/RolesV1.json @@ -0,0 +1,990 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_avatar", + "type": "address" + }, + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ArraysDifferentLength", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleTransactionFailed", + "type": "error" + }, + { + "inputs": [], + "name": "NoMembership", + "type": "error" + }, + { + "inputs": [], + "name": "SetUpModulesAlreadyCalled", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16[]", + "name": "roles", + "type": "uint16[]" + }, + { + "indexed": false, + "internalType": "bool[]", + "name": "memberOf", + "type": "bool[]" + } + ], + "name": "AssignRoles", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousAvatar", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAvatar", + "type": "address" + } + ], + "name": "AvatarSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "guard", + "type": "address" + } + ], + "name": "ChangedGuard", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "DisabledModule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "EnabledModule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "avatar", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "RolesModSetup", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "defaultRole", + "type": "uint16" + } + ], + "name": "SetDefaultRole", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "multisendAddress", + "type": "address" + } + ], + "name": "SetMultisendAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "enum ExecutionOptions", + "name": "options", + "type": "uint8" + } + ], + "name": "allowTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "internalType": "uint16[]", + "name": "_roles", + "type": "uint16[]" + }, + { + "internalType": "bool[]", + "name": "memberOf", + "type": "bool[]" + } + ], + "name": "assignRoles", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "avatar", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "defaultRoles", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "prevModule", + "type": "address" + }, + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "disableModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + } + ], + "name": "enableModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModule", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModuleReturnData", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "shouldRevert", + "type": "bool" + } + ], + "name": "execTransactionWithRole", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "shouldRevert", + "type": "bool" + } + ], + "name": "execTransactionWithRoleReturnData", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getGuard", + "outputs": [ + { + "internalType": "address", + "name": "_guard", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "start", + "type": "address" + }, + { + "internalType": "uint256", + "name": "pageSize", + "type": "uint256" + } + ], + "name": "getModulesPaginated", + "outputs": [ + { + "internalType": "address[]", + "name": "array", + "type": "address[]" + }, + { + "internalType": "address", + "name": "next", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "guard", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "name": "isModuleEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "multisend", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "revokeTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "enum ExecutionOptions", + "name": "options", + "type": "uint8" + } + ], + "name": "scopeAllowFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool[]", + "name": "isParamScoped", + "type": "bool[]" + }, + { + "internalType": "enum ParameterType[]", + "name": "paramType", + "type": "uint8[]" + }, + { + "internalType": "enum Comparison[]", + "name": "paramComp", + "type": "uint8[]" + }, + { + "internalType": "bytes[]", + "name": "compValue", + "type": "bytes[]" + }, + { + "internalType": "enum ExecutionOptions", + "name": "options", + "type": "uint8" + } + ], + "name": "scopeFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "enum ExecutionOptions", + "name": "options", + "type": "uint8" + } + ], + "name": "scopeFunctionExecutionOptions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "uint256", + "name": "paramIndex", + "type": "uint256" + }, + { + "internalType": "enum ParameterType", + "name": "paramType", + "type": "uint8" + }, + { + "internalType": "enum Comparison", + "name": "paramComp", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "compValue", + "type": "bytes" + } + ], + "name": "scopeParameter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "uint256", + "name": "paramIndex", + "type": "uint256" + }, + { + "internalType": "enum ParameterType", + "name": "paramType", + "type": "uint8" + }, + { + "internalType": "bytes[]", + "name": "compValues", + "type": "bytes[]" + } + ], + "name": "scopeParameterAsOneOf", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "name": "scopeRevokeFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "scopeTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_avatar", + "type": "address" + } + ], + "name": "setAvatar", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "module", + "type": "address" + }, + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + } + ], + "name": "setDefaultRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_guard", + "type": "address" + } + ], + "name": "setGuard", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_multisend", + "type": "address" + } + ], + "name": "setMultisend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initParams", + "type": "bytes" + } + ], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "role", + "type": "uint16" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "uint8", + "name": "paramIndex", + "type": "uint8" + } + ], + "name": "unscopeParameter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/sdk/abi/Roles.json b/sdk/abi/RolesV2.json similarity index 88% rename from sdk/abi/Roles.json rename to sdk/abi/RolesV2.json index a44b9184..f9b0337f 100644 --- a/sdk/abi/Roles.json +++ b/sdk/abi/RolesV2.json @@ -1,4 +1,80 @@ [ + { + "inputs": [], + "name": "NotBFS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsuitableChildCount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsuitableChildTypeTree", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsuitableCompValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsuitableParameterType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsuitableParent", + "type": "error" + }, + { + "inputs": [], + "name": "UnsuitableRootNode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "UnsupportedOperator", + "type": "error" + }, { "inputs": [ { @@ -73,6 +149,22 @@ "name": "FunctionSignatureTooShort", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "HashAlreadyConsumed", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, { "inputs": [ { @@ -84,6 +176,11 @@ "name": "InvalidModule", "type": "error" }, + { + "inputs": [], + "name": "InvalidPageSize", + "type": "error" + }, { "inputs": [], "name": "MalformedMultiEntrypoint", @@ -110,25 +207,36 @@ "name": "NotAuthorized", "type": "error" }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, { "inputs": [ { "internalType": "address", - "name": "guard_", + "name": "owner", "type": "address" } ], - "name": "NotIERC165Compliant", + "name": "OwnableInvalidOwner", "type": "error" }, { - "inputs": [], - "name": "SetupModulesAlreadyCalled", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], - "name": "UnsuitableMaxBalanceForAllowance", + "name": "SetupModulesAlreadyCalled", "type": "error" }, { @@ -231,19 +339,6 @@ "name": "AvatarSet", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -326,9 +421,35 @@ "inputs": [ { "indexed": false, - "internalType": "uint8", + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "HashExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "HashInvalidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", "name": "version", - "type": "uint8" + "type": "uint64" } ], "name": "Initialized", @@ -524,25 +645,25 @@ { "indexed": false, "internalType": "uint128", - "name": "maxBalance", + "name": "maxRefill", "type": "uint128" }, { "indexed": false, "internalType": "uint128", - "name": "refillAmount", + "name": "refill", "type": "uint128" }, { "indexed": false, "internalType": "uint64", - "name": "refillInterval", + "name": "period", "type": "uint64" }, { "indexed": false, "internalType": "uint64", - "name": "refillTimestamp", + "name": "timestamp", "type": "uint64" } ], @@ -675,17 +796,17 @@ "outputs": [ { "internalType": "uint128", - "name": "refillAmount", + "name": "refill", "type": "uint128" }, { "internalType": "uint128", - "name": "maxBalance", + "name": "maxRefill", "type": "uint128" }, { "internalType": "uint64", - "name": "refillInterval", + "name": "period", "type": "uint64" }, { @@ -695,7 +816,7 @@ }, { "internalType": "uint64", - "name": "refillTimestamp", + "name": "timestamp", "type": "uint64" } ], @@ -738,6 +859,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "consumed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -954,19 +1099,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -997,16 +1129,16 @@ "type": "function" }, { - "inputs": [], - "name": "guard", - "outputs": [ + "inputs": [ { - "internalType": "address", - "name": "", - "type": "address" + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" } ], - "stateMutability": "view", + "name": "invalidate", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -1028,6 +1160,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "moduleTxHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "owner", @@ -1176,22 +1332,22 @@ }, { "internalType": "uint128", - "name": "maxBalance", + "name": "maxRefill", "type": "uint128" }, { "internalType": "uint128", - "name": "refillAmount", + "name": "refill", "type": "uint128" }, { "internalType": "uint64", - "name": "refillInterval", + "name": "period", "type": "uint64" }, { "internalType": "uint64", - "name": "refillTimestamp", + "name": "timestamp", "type": "uint64" } ], @@ -1231,19 +1387,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1338,4 +1481,4 @@ "stateMutability": "view", "type": "function" } -] +] \ No newline at end of file diff --git a/sdk/contracts.ts b/sdk/contracts.ts index 9e5e5b2e..5a429112 100644 --- a/sdk/contracts.ts +++ b/sdk/contracts.ts @@ -7,22 +7,19 @@ import Erc20VotesAbi from "./abi/Erc20Votes.json"; import Erc721VotesAbi from "./abi/Erc721Votes.json"; import ExitErc20Abi from "./abi/ExitErc20.json"; import ExitErc721Abi from "./abi/ExitErc721.json"; -import IntegrityAbi from "./abi/Integrity.json"; import MetaGuardAbi from "./abi/MetaGuard.json"; import ModuleProxyFactoryAbi from "./abi/ModuleProxyFactory.json"; import MultisendEncoderAbi from "./abi/MultisendEncoder.json"; import OptimisticGovernorAbi from "./abi/OptimisticGovernor.json"; import OzGovernorAbi from "./abi/OzGovernor.json"; -import PackerAbi from "./abi/Packer.json"; import PermissionsAbi from "./abi/Permissions.json"; import RealityErc20Abi from "./abi/RealityErc20.json"; import RealityEthAbi from "./abi/RealityEth.json"; -import RolesAbi from "./abi/Roles.json"; +import RolesV1Abi from "./abi/RolesV1.json"; +import RolesV2Abi from "./abi/RolesV2.json"; import ScopeGuardAbi from "./abi/ScopeGuard.json"; import TellorAbi from "./abi/Tellor.json"; - import { KnownContracts } from "./factory/types"; - import * as BridgeInitData from "./initData/Bridge"; import * as CirculatingSupplyErc20InitData from "./initData/CirculatingSupplyErc20"; import * as CirculatingSupplyErc721InitData from "./initData/CirculatingSupplyErc721"; @@ -32,17 +29,15 @@ import * as Erc20VotesInitData from "./initData/Erc20Votes"; import * as Erc721VotesInitData from "./initData/Erc721Votes"; import * as ExitErc20InitData from "./initData/ExitErc20"; import * as ExitErc721InitData from "./initData/ExitErc721"; -import * as IntegrityInitData from "./initData/Integrity"; import * as ModuleProxyFactoryInitData from "./initData/ModuleProxyFactory"; import * as MultisendEncoderInitData from "./initData/MultisendEncoder"; import * as OzGovernorInitData from "./initData/OzGovernor"; -import * as PackerInitData from "./initData/Packer"; import * as PermissionsInitData from "./initData/Permissions"; import * as RealityErc20InitData from "./initData/RealityErc20"; import * as RealityEthInitData from "./initData/RealityEth"; -import * as RolesInitData from "./initData/Roles"; +import * as RolesV1InitData from "./initData/RolesV1"; +import * as RolesV2InitData from "./initData/RolesV2"; import * as ScopeGuardInitData from "./initData/ScopeGuard"; - import { factories } from "./types"; export enum SupportedNetworks { @@ -84,6 +79,7 @@ const CanonicalAddresses: Record< }, [KnownContracts.DELAY]: { "1.0.0": "0xD62129BF40CD1694b3d9D9847367783a1A4d5cB4", + "1.0.1": "0xd54895B1121A2eE3f37b502F507631FA1331BED6", }, [KnownContracts.FACTORY]: { "1.0.0": "0x00000000062c52e29e8029dc2413172f6d619d85", @@ -114,11 +110,17 @@ const CanonicalAddresses: Record< [KnownContracts.ROLES]: { "1.0.0": "0x85388a8cd772b19a468F982Dc264C238856939C9", "1.1.0": "0xD8DfC1d938D7D163C5231688341e9635E9011889", - "2.0.0": "0xb8bB41FA7E5e64452DBCA1C8A0e7058D43abAf4f", + }, + [KnownContracts.ROLES_V1]: { + "1.0.0": "0x85388a8cd772b19a468F982Dc264C238856939C9", + "1.1.0": "0xD8DfC1d938D7D163C5231688341e9635E9011889", }, [KnownContracts.PERMISSIONS]: { "1.0.0": "0x33D1C5A5B6a7f3885c7467e829aaa21698937597", }, + [KnownContracts.ROLES_V2]: { + "2.1.0": "0x9646fDAD06d3e24444381f44362a3B0eB343D337", + }, [KnownContracts.TELLOR]: { "2.1.0": "0xa89EC2C1e218CfBb0F82829E95352CeAbDEe9A69", }, @@ -140,12 +142,6 @@ const CanonicalAddresses: Record< [KnownContracts.CONNEXT]: { "1.0.0": "0x7dE07b9De0bf0FABf31A188DE1527034b2aF36dB", }, - [KnownContracts.PACKER]: { - "2.0.0": "0x60E89c71882e88f16772490d2f05819d9521EAb1", - }, - [KnownContracts.INTEGRITY]: { - "2.0.0": "0x52c342e002C5F7CF14Ef89b5e04Cf6D53c7F8e72", - }, }; /** @@ -249,14 +245,14 @@ export const ContractAbis: Record = { [KnownContracts.OZ_GOVERNOR]: OzGovernorAbi, [KnownContracts.REALITY_ERC20]: RealityErc20Abi, [KnownContracts.REALITY_ETH]: RealityEthAbi, - [KnownContracts.ROLES]: RolesAbi, + [KnownContracts.ROLES]: RolesV1Abi, + [KnownContracts.ROLES_V1]: RolesV1Abi, + [KnownContracts.ROLES_V2]: RolesV2Abi, // we've manually added custom errors from Integrity.sol to the ABI in RolesV2.json [KnownContracts.SCOPE_GUARD]: ScopeGuardAbi, [KnownContracts.TELLOR]: TellorAbi, [KnownContracts.MULTISEND_ENCODER]: MultisendEncoderAbi, [KnownContracts.PERMISSIONS]: PermissionsAbi, [KnownContracts.CONNEXT]: ConnextAbi, - [KnownContracts.PACKER]: PackerAbi, - [KnownContracts.INTEGRITY]: IntegrityAbi, }; export const ContractFactories = { @@ -276,14 +272,14 @@ export const ContractFactories = { [KnownContracts.OZ_GOVERNOR]: factories.OzGovernor__factory, [KnownContracts.REALITY_ERC20]: factories.RealityErc20__factory, [KnownContracts.REALITY_ETH]: factories.RealityEth__factory, - [KnownContracts.ROLES]: factories.Roles__factory, + [KnownContracts.ROLES]: factories.RolesV1__factory, + [KnownContracts.ROLES_V1]: factories.RolesV1__factory, + [KnownContracts.ROLES_V2]: factories.RolesV2__factory, [KnownContracts.SCOPE_GUARD]: factories.ScopeGuard__factory, [KnownContracts.TELLOR]: factories.Tellor__factory, [KnownContracts.MULTISEND_ENCODER]: factories.MultisendEncoder__factory, [KnownContracts.PERMISSIONS]: factories.Permissions__factory, [KnownContracts.CONNEXT]: factories.Connext__factory, - [KnownContracts.PACKER]: factories.Packer__factory, - [KnownContracts.INTEGRITY]: factories.Integrity__factory, }; export const MasterCopyInitData: Record< @@ -304,12 +300,12 @@ export const MasterCopyInitData: Record< [KnownContracts.OZ_GOVERNOR]: OzGovernorInitData, [KnownContracts.REALITY_ERC20]: RealityErc20InitData, [KnownContracts.REALITY_ETH]: RealityEthInitData, - [KnownContracts.ROLES]: RolesInitData, + [KnownContracts.ROLES]: RolesV1InitData, + [KnownContracts.ROLES_V1]: RolesV1InitData, + [KnownContracts.ROLES_V2]: RolesV2InitData, [KnownContracts.SCOPE_GUARD]: ScopeGuardInitData, [KnownContracts.TELLOR]: undefined, [KnownContracts.MULTISEND_ENCODER]: MultisendEncoderInitData, [KnownContracts.PERMISSIONS]: PermissionsInitData, [KnownContracts.CONNEXT]: ConnextInitData, - [KnownContracts.PACKER]: PackerInitData, - [KnownContracts.INTEGRITY]: IntegrityInitData, }; diff --git a/sdk/factory/__tests__/index.spec.ts b/sdk/factory/__tests__/index.spec.ts index 258f1757..0a558582 100644 --- a/sdk/factory/__tests__/index.spec.ts +++ b/sdk/factory/__tests__/index.spec.ts @@ -14,7 +14,6 @@ import { getModuleInstance, getModuleFactoryAndMasterCopy, } from "../moduleDeployer"; - import { KnownContracts } from "../types"; const AddressOne = "0x0000000000000000000000000000000000000001"; @@ -31,7 +30,7 @@ describe("Factory JS functions ", () => { } it("should execute transaction and retrieve expected address ", async () => { - const { mock, chainId } = await loadFixture(setup); + const { chainId } = await loadFixture(setup); const [signer] = await hre.ethers.getSigners(); @@ -62,14 +61,15 @@ describe("Factory JS functions ", () => { KnownContracts.REALITY_ETH, args, hre.ethers.provider, - chainId, + Number(chainId), saltNonce ); const transaction = await signer.sendTransaction(deployTx); const receipt = await transaction.wait(); - expect(receipt.transactionHash).to.be.a("string"); + + expect(receipt.hash).to.be.a("string"); expect(receipt.status).to.be.eq(1); expect(expectedModuleAddress).to.a("string"); }); @@ -100,7 +100,8 @@ describe("Factory JS functions ", () => { ], }; - const chainContracts = ContractAddresses[chainId as SupportedNetworks]; + const chainContracts = + ContractAddresses[Number(chainId) as SupportedNetworks]; const masterCopyAddress = chainContracts[KnownContracts.REALITY_ETH]; const abi = ContractAbis[KnownContracts.REALITY_ETH]; @@ -110,14 +111,14 @@ describe("Factory JS functions ", () => { abi, args, hre.ethers.provider, - chainId, + Number(chainId), saltNonce ); const transaction = await signer.sendTransaction(deployTx); const receipt = await transaction.wait(); - expect(receipt.transactionHash).to.be.a("string"); + expect(receipt.hash).to.be.a("string"); expect(receipt.status).to.be.eq(1); expect(expectedModuleAddress).to.a("string"); }); @@ -127,11 +128,11 @@ describe("Factory JS functions ", () => { const module = await getModuleInstance( KnownContracts.REALITY_ETH, - mock.address, + await mock.getAddress(), hre.ethers.provider ); await mock.givenMethodReturnBool( - module.interface.getSighash("owner"), + module.interface.getFunction("owner").selector, true ); @@ -147,7 +148,7 @@ describe("Factory JS functions ", () => { await getModuleFactoryAndMasterCopy( KnownContracts.REALITY_ETH, hre.ethers.provider, - chainId + Number(chainId) ); expect(moduleFactory).to.be.instanceOf(Contract); expect(moduleMastercopy).to.be.instanceOf(Contract); diff --git a/sdk/factory/deployModuleFactory.ts b/sdk/factory/deployModuleFactory.ts index be2b0f99..0fd0630a 100644 --- a/sdk/factory/deployModuleFactory.ts +++ b/sdk/factory/deployModuleFactory.ts @@ -1,11 +1,17 @@ -import { constants as ethersConstants, ethers } from "ethers"; +import assert from "assert"; + +import { ZeroAddress, JsonRpcSigner } from "ethers"; + +import { MasterCopyInitData } from "../contracts"; + import { getSingletonFactory } from "./singletonFactory"; import { KnownContracts } from "./types"; -import { MasterCopyInitData } from "../contracts"; -const { AddressZero } = ethersConstants; +const AddressZero = ZeroAddress; + +const FactoryInitData = MasterCopyInitData[KnownContracts.FACTORY]; -const FactoryInitData = MasterCopyInitData[KnownContracts.FACTORY]!; +assert(FactoryInitData); /** * Deploy the Module Proxy Factory via the singleton factory. @@ -15,7 +21,7 @@ const FactoryInitData = MasterCopyInitData[KnownContracts.FACTORY]!; * @returns The address of the deployed Module Proxy Factory, or the zero address if it was already deployed */ export const deployModuleFactory = async ( - signer: ethers.providers.JsonRpcSigner + signer: JsonRpcSigner ): Promise => { console.log("Deploying the Module Proxy Factory..."); const singletonFactory = await getSingletonFactory(signer); @@ -24,13 +30,15 @@ export const deployModuleFactory = async ( singletonFactory.address ); - const targetAddress = await singletonFactory.callStatic.deploy( + const targetAddress = await singletonFactory.deploy.staticCall( FactoryInitData.initCode, FactoryInitData.salt ); if (targetAddress === AddressZero) { console.log( - ` ✔ Module Proxy Factory already deployed to target address on ${signer.provider.network.name}.` + ` ✔ Module Proxy Factory already deployed to target address on ${ + (await signer.provider.getNetwork()).name + }.` ); return AddressZero; } diff --git a/sdk/factory/mastercopyDeployer.ts b/sdk/factory/mastercopyDeployer.ts index 1522c447..3ebef99a 100644 --- a/sdk/factory/mastercopyDeployer.ts +++ b/sdk/factory/mastercopyDeployer.ts @@ -1,13 +1,16 @@ import { BytesLike, ContractFactory, - constants as ethersConstants, - ethers, + ZeroAddress, + JsonRpcSigner, + keccak256, + getAddress, + getCreate2Address, } from "ethers"; -import { keccak256, getCreate2Address, getAddress } from "ethers/lib/utils"; + import { getSingletonFactory } from "./singletonFactory"; -const { AddressZero } = ethersConstants; +const AddressZero = ZeroAddress; /** * Deploy a module's mastercopy via the singleton factory. @@ -19,12 +22,14 @@ const { AddressZero } = ethersConstants; * @returns The address of the deployed module mastercopy or the zero address if it was already deployed */ export const deployMastercopy = async ( - signer: ethers.providers.JsonRpcSigner, + signer: JsonRpcSigner, mastercopyContractFactory: ContractFactory, args: Array, salt: string ): Promise => { - const deploymentTx = mastercopyContractFactory.getDeployTransaction(...args); + const deploymentTx = await mastercopyContractFactory.getDeployTransaction( + ...args + ); if (!deploymentTx.data) { throw new Error("Unable to create the deployment data (no init code)."); @@ -44,12 +49,14 @@ export const deployMastercopy = async ( * } */ export const computeTargetAddress = async ( - signer: ethers.providers.JsonRpcSigner, + signer: JsonRpcSigner, mastercopyContractFactory: ContractFactory, args: Array, salt: string ): Promise<{ address: string; isDeployed: boolean }> => { - const deploymentTx = mastercopyContractFactory.getDeployTransaction(...args); + const deploymentTx = await mastercopyContractFactory.getDeployTransaction( + ...args + ); const singletonFactory = await getSingletonFactory(signer); if (!deploymentTx.data) { @@ -59,13 +66,13 @@ export const computeTargetAddress = async ( const initCodeHash = keccak256(deploymentTx.data); const computedAddress = getCreate2Address( - singletonFactory.address, + await singletonFactory.getAddress(), salt, initCodeHash ); const targetAddress = getAddress( - (await singletonFactory.callStatic.deploy( + (await singletonFactory.deploy.staticCall( deploymentTx.data, salt )) as string @@ -85,7 +92,7 @@ export const computeTargetAddress = async ( }; export const deployMastercopyWithInitData = async ( - signer: ethers.providers.JsonRpcSigner, + signer: JsonRpcSigner, initCode: BytesLike, salt: string ): Promise => { @@ -93,19 +100,21 @@ export const deployMastercopyWithInitData = async ( // throws if this for some reason is not a valid address const targetAddress = getAddress( - (await singletonFactory.callStatic.deploy(initCode, salt)) as string + (await singletonFactory.deploy.staticCall(initCode, salt)) as string ); const initCodeHash = keccak256(initCode); const computedTargetAddress = getCreate2Address( - singletonFactory.address, + await singletonFactory.address(), salt, initCodeHash ); if (targetAddress === AddressZero) { - console.log(` ✔ Mastercopy already deployed to: ${computedTargetAddress}`); + console.log( + ` ✔ Mastercopy already deployed to: ${computedTargetAddress}` + ); return AddressZero; } @@ -115,7 +124,7 @@ export const deployMastercopyWithInitData = async ( } let gasLimit; - switch (signer.provider.network.name) { + switch ((await signer.provider.getNetwork()).name) { case "optimism": gasLimit = 6000000; break; diff --git a/sdk/factory/moduleDeployer.ts b/sdk/factory/moduleDeployer.ts index 3e27852c..8f8e3b9e 100644 --- a/sdk/factory/moduleDeployer.ts +++ b/sdk/factory/moduleDeployer.ts @@ -1,5 +1,13 @@ -import { Provider } from "@ethersproject/providers"; -import { ethers, Contract, Signer, BigNumber } from "ethers"; +import { + Contract, + Signer, + Provider, + getCreate2Address, + AbiCoder, + solidityPackedKeccak256, + keccak256, +} from "ethers"; + import { ContractAddresses, ContractAbis, @@ -16,7 +24,7 @@ type TxAndExpectedAddress = { transaction: { data: string; to: string; - value: ethers.BigNumber; + value: bigint; }; expectedModuleAddress: string; }; @@ -32,7 +40,7 @@ type TxAndExpectedAddress = { * @param saltNonce * @returns the transaction and the expected address of the module proxy */ -export const deployAndSetUpModule = ( +export const deployAndSetUpModule = async ( moduleName: KnownContracts, setupArgs: { types: Array; @@ -41,15 +49,19 @@ export const deployAndSetUpModule = ( provider: Provider, chainId: number, saltNonce: string -): TxAndExpectedAddress => { +): Promise<{ + transaction: { data: string; to: string; value: bigint }; + expectedModuleAddress: string; +}> => { const { moduleFactory, moduleMastercopy } = getModuleFactoryAndMasterCopy( moduleName, provider, chainId ); + return getDeployAndSetupTx( - moduleFactory, - moduleMastercopy, + moduleFactory as unknown as Contract, + moduleMastercopy as unknown as Contract, setupArgs, saltNonce ); @@ -68,7 +80,7 @@ export const deployAndSetUpModule = ( * @param saltNonce * @returns the transaction and the expected address of the module proxy */ -export const deployAndSetUpCustomModule = ( +export const deployAndSetUpCustomModule = async ( mastercopyAddress: string, abi: ABI, setupArgs: { @@ -78,7 +90,7 @@ export const deployAndSetUpCustomModule = ( provider: Provider, chainId: number, saltNonce: string -): TxAndExpectedAddress => { +): Promise => { const chainContracts = ContractAddresses[chainId as SupportedNetworks]; const moduleFactoryAddress = chainContracts.factory; const moduleFactory = new Contract( @@ -87,48 +99,50 @@ export const deployAndSetUpCustomModule = ( provider ); const moduleMastercopy = new Contract(mastercopyAddress, abi, provider); - - return getDeployAndSetupTx( + const deployAndSetupTx = await getDeployAndSetupTx( moduleFactory, moduleMastercopy, setupArgs, saltNonce ); + + return deployAndSetupTx; }; -const getDeployAndSetupTx = ( - moduleFactory: ethers.Contract, - moduleMastercopy: ethers.Contract, +const getDeployAndSetupTx = async ( + moduleFactory: Contract, + moduleMastercopy: Contract, setupArgs: { types: Array; values: Array; }, saltNonce: string ) => { - const encodedInitParams = ethers.utils.defaultAbiCoder.encode( + const encodedInitParams = AbiCoder.defaultAbiCoder().encode( setupArgs.types, setupArgs.values ); + const moduleSetupData = moduleMastercopy.interface.encodeFunctionData( "setUp", [encodedInitParams] ); - const expectedModuleAddress = calculateProxyAddress( + const expectedModuleAddress = await calculateProxyAddress( moduleFactory, - moduleMastercopy.address, + await moduleMastercopy.getAddress(), moduleSetupData, saltNonce ); const deployData = moduleFactory.interface.encodeFunctionData( "deployModule", - [moduleMastercopy.address, moduleSetupData, saltNonce] + [await moduleMastercopy.getAddress(), moduleSetupData, saltNonce] ); const transaction = { data: deployData, - to: moduleFactory.address, - value: BigNumber.from(0), + to: await moduleFactory.getAddress(), + value: BigInt(0), }; return { transaction, @@ -136,12 +150,12 @@ const getDeployAndSetupTx = ( }; }; -export const calculateProxyAddress = ( +export const calculateProxyAddress = async ( moduleFactory: Contract, mastercopyAddress: string, initData: string, saltNonce: string -): string => { +): Promise => { const mastercopyAddressFormatted = mastercopyAddress .toLowerCase() .replace(/^0x/, ""); @@ -150,15 +164,15 @@ export const calculateProxyAddress = ( mastercopyAddressFormatted + "5af43d82803e903d91602b57fd5bf3"; - const salt = ethers.utils.solidityKeccak256( + const salt = solidityPackedKeccak256( ["bytes32", "uint256"], - [ethers.utils.solidityKeccak256(["bytes"], [initData]), saltNonce] + [solidityPackedKeccak256(["bytes"], [initData]), saltNonce] ); - return ethers.utils.getCreate2Address( - moduleFactory.address, + return getCreate2Address( + await moduleFactory.getAddress(), salt, - ethers.utils.keccak256(byteCode) + keccak256(byteCode) ); }; diff --git a/sdk/factory/singletonFactory.ts b/sdk/factory/singletonFactory.ts index 0958275b..4531356d 100644 --- a/sdk/factory/singletonFactory.ts +++ b/sdk/factory/singletonFactory.ts @@ -1,4 +1,4 @@ -import { Contract, ethers } from "ethers"; +import { Contract, JsonRpcSigner, parseEther } from "ethers"; const singletonFactoryAbi = [ "function deploy(bytes memory _initCode, bytes32 _salt) public returns (address payable createdContract)", @@ -15,34 +15,40 @@ export const SingletonFactoryAddress = * @returns Singleton Factory contract */ export const getSingletonFactory = async ( - signer: ethers.providers.JsonRpcSigner + signer: JsonRpcSigner ): Promise => { const singletonDeployer = "0xBb6e024b9cFFACB947A71991E386681B1Cd1477D"; - const singletonFactory = new ethers.Contract( + const singletonFactory = new Contract( SingletonFactoryAddress, singletonFactoryAbi, signer ); // check if singleton factory is deployed. - if ((await signer.provider.getCode(singletonFactory.address)) === "0x") { + if ( + (await signer.provider.getCode(await singletonFactory.getAddress())) === + "0x" + ) { console.log( "Singleton factory is not deployed on this chain. Deploying singleton factory..." ); // fund the singleton factory deployer account await signer.sendTransaction({ to: singletonDeployer, - value: ethers.utils.parseEther("0.0247"), + value: parseEther("0.0247"), }); // deploy the singleton factory await ( - await signer.provider.sendTransaction( + await signer.provider.broadcastTransaction( "0xf9016c8085174876e8008303c4d88080b90154608060405234801561001057600080fd5b50610134806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80634af63f0214602d575b600080fd5b60cf60048036036040811015604157600080fd5b810190602081018135640100000000811115605b57600080fd5b820183602082011115606c57600080fd5b80359060200191846001830284011164010000000083111715608d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925060eb915050565b604080516001600160a01b039092168252519081900360200190f35b6000818351602085016000f5939250505056fea26469706673582212206b44f8a82cb6b156bfcc3dc6aadd6df4eefd204bc928a4397fd15dacf6d5320564736f6c634300060200331b83247000822470" ) ).wait(); - if ((await signer.provider.getCode(singletonFactory.address)) == "0x") { + if ( + (await signer.provider.getCode(await singletonFactory.getAddress())) == + "0x" + ) { throw Error( "Singleton factory could not be deployed to correct address, deployment haulted." ); diff --git a/sdk/factory/types.ts b/sdk/factory/types.ts index d51ec200..015f075f 100644 --- a/sdk/factory/types.ts +++ b/sdk/factory/types.ts @@ -14,7 +14,9 @@ export type { Permissions, RealityErc20, RealityEth, - Roles, + RolesV1 as Roles, + RolesV1, + RolesV2, ScopeGuard, Tellor, Usul, @@ -35,14 +37,14 @@ export enum KnownContracts { SCOPE_GUARD = "scopeGuard", FACTORY = "factory", ROLES = "roles", + ROLES_V1 = "roles_v1", + ROLES_V2 = "roles_v2", OZ_GOVERNOR = "ozGovernor", ERC20_VOTES = "erc20Votes", ERC721_VOTES = "erc721Votes", MULTISEND_ENCODER = "multisendEncoder", PERMISSIONS = "permissions", CONNEXT = "connext", - PACKER = "packer", - INTEGRITY = "integrity", } // type META_GUARD_VERSION = "v1.0.0"; diff --git a/sdk/initData/Delay.ts b/sdk/initData/Delay.ts index a02cb90c..78f6c2f7 100644 --- a/sdk/initData/Delay.ts +++ b/sdk/initData/Delay.ts @@ -1,4 +1,4 @@ export const salt = "0x0000000000000000000000000000000000000000000000000000000000000000"; export const initCode = - "0x60806040523480156200001157600080fd5b5060405162004e2138038062004e21833981810160405281019062000037919062000a30565b600085858585856040516020016200005495949392919062000d57565b604051602081830303815290604052905062000076816200008260201b60201c565b50505050505062000f53565b600080600080600085806020019051810190620000a09190620009ae565b94509450945094509450620000ba6200032a60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200012d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001249062000e5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620001a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001979062000dd6565b60405180910390fd5b6000811480620001b15750603c8110155b620001f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ea9062000e3c565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a819055508160698190555062000294856200042960201b60201c565b620002a46200053f60201b60201c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffd805e12a6d02f83d7029c03fdfcf3f226ebcd409af51b3095237015eae50300866040516200031a919062000d3a565b60405180910390a4505050505050565b600060019054906101000a900460ff168062000351575060008054906101000a900460ff16155b62000393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038a9062000df8565b60405180910390fd5b60008060019054906101000a900460ff161590508015620003e4576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620003f46200069360201b60201c565b620004046200077260201b60201c565b8015620004265760008060016101000a81548160ff0219169083151502179055505b50565b620004396200087160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200045f6200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004af9062000e1a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200052b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005229062000db4565b60405180910390fd5b6200053c81620008a360201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006089062000e80565b60405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680620006ba575060008054906101000a900460ff16155b620006fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f39062000df8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200074d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200076f5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000799575060008054906101000a900460ff16155b620007db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d29062000df8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200082c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6200084c620008406200087160201b60201c565b620008a360201b60201c565b80156200086e5760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200097a8162000f05565b92915050565b600081519050620009918162000f1f565b92915050565b600081519050620009a88162000f39565b92915050565b600080600080600060a08688031215620009c757600080fd5b6000620009d78882890162000980565b9550506020620009ea8882890162000980565b9450506040620009fd8882890162000980565b935050606062000a108882890162000997565b925050608062000a238882890162000997565b9150509295509295909350565b600080600080600060a0868803121562000a4957600080fd5b600062000a598882890162000969565b955050602062000a6c8882890162000969565b945050604062000a7f8882890162000969565b935050606062000a928882890162000997565b925050608062000aa58882890162000997565b9150509295509295909350565b62000abd8162000eb3565b82525050565b600062000ad260268362000ea2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000b3a601e8362000ea2565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000b7c602e8362000ea2565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600062000be460208362000ea2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600062000c26602d8362000ea2565b91507f457870697261746974696f6e206d7573742062652030206f72206174206c656160008301527f7374203630207365636f6e6473000000000000000000000000000000000000006020830152604082019050919050565b600062000c8e601e8362000ea2565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000cd060248362000ea2565b91507f73657455704d6f64756c65732068617320616c7265616479206265656e20636160008301527f6c6c6564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b62000d348162000efb565b82525050565b600060208201905062000d51600083018462000ab2565b92915050565b600060a08201905062000d6e600083018862000ab2565b62000d7d602083018762000ab2565b62000d8c604083018662000ab2565b62000d9b606083018562000d29565b62000daa608083018462000d29565b9695505050505050565b6000602082019050818103600083015262000dcf8162000ac3565b9050919050565b6000602082019050818103600083015262000df18162000b2b565b9050919050565b6000602082019050818103600083015262000e138162000b6d565b9050919050565b6000602082019050818103600083015262000e358162000bd5565b9050919050565b6000602082019050818103600083015262000e578162000c17565b9050919050565b6000602082019050818103600083015262000e798162000c7f565b9050919050565b6000602082019050818103600083015262000e9b8162000cc1565b9050919050565b600082825260208201905092915050565b600062000ec08262000edb565b9050919050565b600062000ed48262000edb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000f108162000eb3565b811462000f1c57600080fd5b50565b62000f2a8162000ec7565b811462000f3657600080fd5b50565b62000f448162000efb565b811462000f5057600080fd5b50565b613ebe8062000f636000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637ceab3b11161010f578063d4b83992116100a2578063e19a9dd911610071578063e19a9dd914610582578063ebb2b4a21461059e578063ee072baf146105ba578063f2fde38b146105d6576101e5565b8063d4b839921461050c578063dcafac091461052a578063de8dd91d14610548578063e009cfde14610566576101e5565b8063b19d4758116100de578063b19d475814610495578063c66323e51461049f578063c9106389146104bd578063cc2f8452146104db576101e5565b80637ceab3b1146104215780638da5cb5b1461043f5780639b56d5be1461045d578063a4f9edbf14610479576101e5565b806346ba230711610187578063610b592511610156578063610b5925146103af5780636b0a4cf6146103cb578063715018a6146103fb578063776d1a0114610405576101e5565b806346ba2307146103265780635229073f146103425780635aef7de614610373578063605df59c14610391576101e5565b8063300c661f116101c3578063300c661f146102665780633aa7690614610296578063427e232f146102c6578063468721a7146102f6576101e5565b8063086cfca8146101ea578063258148cc146102065780632d9ad53d14610236575b600080fd5b61020460048036038101906101ff9190612b58565b6105f2565b005b610220600480360381019061021b9190612dd5565b610734565b60405161022d9190613a47565b60405180910390f35b610250600480360381019061024b9190612b58565b61074c565b60405161025d919061373d565b60405180910390f35b610280600480360381019061027b9190612cf0565b61081e565b60405161028d9190613788565b60405180910390f35b6102b060048036038101906102ab9190612dd5565b610857565b6040516102bd9190613a47565b60405180910390f35b6102e060048036038101906102db9190612dd5565b610874565b6040516102ed9190613788565b60405180910390f35b610310600480360381019061030b9190612c70565b61088c565b60405161031d919061373d565b60405180910390f35b610340600480360381019061033b9190612dd5565b610a5c565b005b61035c60048036038101906103579190612c70565b610b6b565b60405161036a929190613758565b60405180910390f35b61037b610c48565b604051610388919061359f565b60405180910390f35b610399610c6e565b6040516103a69190613a47565b60405180910390f35b6103c960048036038101906103c49190612b58565b610c74565b005b6103e560048036038101906103e09190612dd5565b610ffe565b6040516103f29190613788565b60405180910390f35b61040361101b565b005b61041f600480360381019061041a9190612b58565b6110a3565b005b6104296111e5565b604051610436919061359f565b60405180910390f35b61044761120b565b604051610454919061359f565b60405180910390f35b61047760048036038101906104729190612dd5565b611235565b005b610493600480360381019061048e9190612d94565b61130a565b005b61049d61158c565b005b6104a7611601565b6040516104b49190613a47565b60405180910390f35b6104c5611607565b6040516104d2919061359f565b60405180910390f35b6104f560048036038101906104f09190612c34565b611631565b60405161050392919061370d565b60405180910390f35b61051461187e565b604051610521919061359f565b60405180910390f35b6105326118a4565b60405161053f9190613a47565b60405180910390f35b6105506118aa565b60405161055d9190613a47565b60405180910390f35b610580600480360381019061057b9190612bf8565b6118b0565b005b61059c60048036038101906105979190612b58565b611c39565b005b6105b860048036038101906105b39190612dd5565b611e6f565b005b6105d460048036038101906105cf9190612c70565b611ef5565b005b6105f060048036038101906105eb9190612b58565b612171565b005b6105fa612269565b73ffffffffffffffffffffffffffffffffffffffff1661061861120b565b73ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610665906138c7565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606e6020528060005260406000206000915090505481565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff16141580156108175750600073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000848484846040516020016108379493929190613555565b604051602081830303815290604052805190602001209050949350505050565b6000606e6000838152602001908152602001600020549050919050565b606d6020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613947565b60405180910390fd5b6109ac868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561081e565b606d6000606c5481526020019081526020016000208190555042606e6000606c54815260200190815260200160002081905550606d6000606c54815260200190815260200160002054606c547f4c8a9c748e976c17c2eb2c2bc50da76eac9cd90ff529f0fe900e0c10a179f0318888888888604051610a2f9594939291906135ba565b60405180910390a3606c6000815480929190610a4a90613cc7565b91905055506001905095945050505050565b610a64612269565b73ffffffffffffffffffffffffffffffffffffffff16610a8261120b565b73ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906138c7565b60405180910390fd5b606b548111610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906138a7565b60405180910390fd5b606c54811115610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58906138e7565b60405180910390fd5b80606b8190555050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613947565b60405180910390fd5b9550959350505050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a5481565b610c7c612269565b73ffffffffffffffffffffffffffffffffffffffff16610c9a61120b565b73ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610d5a5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090613a07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e906139a7565b60405180910390fd5b60686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844081604051610ff3919061359f565b60405180910390a150565b6000606d6000838152602001908152602001600020549050919050565b611023612269565b73ffffffffffffffffffffffffffffffffffffffff1661104161120b565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e906138c7565b60405180910390fd5b6110a16000612271565b565b6110ab612269565b73ffffffffffffffffffffffffffffffffffffffff166110c961120b565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611116906138c7565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61123d612269565b73ffffffffffffffffffffffffffffffffffffffff1661125b61120b565b73ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906138c7565b60405180910390fd5b60008114806112c15750603c8110155b611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790613907565b60405180910390fd5b80606a8190555050565b6000806000806000858060200190518101906113269190612b81565b94509450945094509450611338612337565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90613927565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90613867565b60405180910390fd5b60008114806114285750603c8110155b611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90613907565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a819055508160698190555061150085612171565b611508612420565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffd805e12a6d02f83d7029c03fdfcf3f226ebcd409af51b3095237015eae503008660405161157c919061359f565b60405180910390a4505050505050565b5b6000606a54141580156115ce575042606a54606954606e6000606b548152602001908152602001600020546115c29190613b34565b6115cc9190613b34565b105b80156115dd5750606c54606b54105b156115ff57606b60008154809291906115f590613cc7565b919050555061158d565b565b606b5481565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060008267ffffffffffffffff811115611675577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156116a35781602001602082028036833780820191505090505b509150600080606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117765750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561178157508482105b1561186f57808483815181106117c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818061186790613cc7565b92505061170c565b80925081845250509250929050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60695481565b606c5481565b6118b8612269565b73ffffffffffffffffffffffffffffffffffffffff166118d661120b565b73ffffffffffffffffffffffffffffffffffffffff161461192c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611923906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156119965750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613a07565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906137e7565b60405180910390fd5b606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427681604051611c2d919061359f565b60405180910390a15050565b611c41612269565b73ffffffffffffffffffffffffffffffffffffffff16611c5f61120b565b73ffffffffffffffffffffffffffffffffffffffff1614611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611dd2578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d4291906137cc565b60206040518083038186803b158015611d5a57600080fd5b505afa158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190612d6b565b611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890613967565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611e64919061359f565b60405180910390a150565b611e77612269565b73ffffffffffffffffffffffffffffffffffffffff16611e9561120b565b73ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906138c7565b60405180910390fd5b8060698190555050565b606c54606b5410611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f32906139e7565b60405180910390fd5b606954606e6000606b5481526020019081526020016000205442611f5f9190613b8a565b1015611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790613987565b60405180910390fd5b6000606a541461201d5742606a54606954606e6000606b54815260200190815260200160002054611fd19190613b34565b611fdb9190613b34565b101561201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613827565b60405180910390fd5b5b61206d858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508461081e565b606d6000606b54815260200190815260200160002054146120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90613847565b60405180910390fd5b606b60008154809291906120d690613cc7565b919050555061212b858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084612571565b61216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190613a27565b60405180910390fd5b5050505050565b612179612269565b73ffffffffffffffffffffffffffffffffffffffff1661219761120b565b73ffffffffffffffffffffffffffffffffffffffff16146121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e4906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490613807565b60405180910390fd5b61226681612271565b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff168061235d575060008054906101000a900460ff16155b61239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390613887565b60405180910390fd5b60008060019054906101000a900460ff1615905080156123ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6123f4612866565b6123fc61293f565b801561241d5760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e6906139c7565b60405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a357606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016126709b9a99989796959493929190613654565b600060405180830381600087803b15801561268a57600080fd5b505af115801561269e573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016127049493929190613608565b602060405180830381600087803b15801561271e57600080fd5b505af1158015612732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127569190612d6b565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461285e57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161282b9291906137a3565b600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b505050505b949350505050565b600060019054906101000a900460ff168061288c575060008054906101000a900460ff16155b6128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290613887565b60405180910390fd5b60008060019054906101000a900460ff16159050801561291b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561293c5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612965575060008054906101000a900460ff16155b6129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b90613887565b60405180910390fd5b60008060019054906101000a900460ff1615905080156129f4576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b612a046129ff612269565b612271565b8015612a255760008060016101000a81548160ff0219169083151502179055505b50565b6000612a3b612a3684613a93565b613a62565b905082815260208101848484011115612a5357600080fd5b612a5e848285613c85565b509392505050565b600081359050612a7581613e1c565b92915050565b600081519050612a8a81613e33565b92915050565b600081519050612a9f81613e4a565b92915050565b60008083601f840112612ab757600080fd5b8235905067ffffffffffffffff811115612ad057600080fd5b602083019150836001820283011115612ae857600080fd5b9250929050565b600082601f830112612b0057600080fd5b8135612b10848260208601612a28565b91505092915050565b600081359050612b2881613e61565b92915050565b600081359050612b3d81613e71565b92915050565b600081519050612b5281613e71565b92915050565b600060208284031215612b6a57600080fd5b6000612b7884828501612a66565b91505092915050565b600080600080600060a08688031215612b9957600080fd5b6000612ba788828901612a7b565b9550506020612bb888828901612a7b565b9450506040612bc988828901612a7b565b9350506060612bda88828901612b43565b9250506080612beb88828901612b43565b9150509295509295909350565b60008060408385031215612c0b57600080fd5b6000612c1985828601612a66565b9250506020612c2a85828601612a66565b9150509250929050565b60008060408385031215612c4757600080fd5b6000612c5585828601612a66565b9250506020612c6685828601612b2e565b9150509250929050565b600080600080600060808688031215612c8857600080fd5b6000612c9688828901612a66565b9550506020612ca788828901612b2e565b945050604086013567ffffffffffffffff811115612cc457600080fd5b612cd088828901612aa5565b93509350506060612ce388828901612b19565b9150509295509295909350565b60008060008060808587031215612d0657600080fd5b6000612d1487828801612a66565b9450506020612d2587828801612b2e565b935050604085013567ffffffffffffffff811115612d4257600080fd5b612d4e87828801612aef565b9250506060612d5f87828801612b19565b91505092959194509250565b600060208284031215612d7d57600080fd5b6000612d8b84828501612a90565b91505092915050565b600060208284031215612da657600080fd5b600082013567ffffffffffffffff811115612dc057600080fd5b612dcc84828501612aef565b91505092915050565b600060208284031215612de757600080fd5b6000612df584828501612b2e565b91505092915050565b6000612e0a8383612e25565b60208301905092915050565b612e1f81613bd0565b82525050565b612e2e81613bbe565b82525050565b612e3d81613bbe565b82525050565b612e54612e4f82613bbe565b613d10565b82525050565b6000612e6582613ad3565b612e6f8185613af6565b9350612e7a83613ac3565b8060005b83811015612eab578151612e928882612dfe565b9750612e9d83613ae9565b925050600181019050612e7e565b5085935050505092915050565b612ec181613be2565b82525050565b612ed081613bee565b82525050565b612edf81613bf8565b82525050565b6000612ef18385613b07565b9350612efe838584613c85565b612f0783613ddd565b840190509392505050565b6000612f1d82613ade565b612f278185613b07565b9350612f37818560208601613c94565b612f4081613ddd565b840191505092915050565b6000612f5682613ade565b612f608185613b18565b9350612f70818560208601613c94565b80840191505092915050565b612f8581613c61565b82525050565b612f9c612f9782613c61565b613d3e565b82525050565b612fab81613c73565b82525050565b6000612fbe601783613b23565b91507f4d6f64756c6520616c72656164792064697361626c65640000000000000000006000830152602082019050919050565b6000612ffe602683613b23565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613064601383613b23565b91507f5472616e73616374696f6e2065787069726564000000000000000000000000006000830152602082019050919050565b60006130a4601f83613b23565b91507f5472616e73616374696f6e2068617368657320646f206e6f74206d61746368006000830152602082019050919050565b60006130e4601e83613b23565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613124602e83613b23565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600061318a602d83613b23565b91507f4e6577206e6f6e6365206d75737420626520686967686572207468616e20637560008301527f7272656e742074784e6f6e6365000000000000000000000000000000000000006020830152604082019050919050565b60006131f0602083613b23565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613230602083613b23565b91507f43616e6e6f7420626520686967686572207468616e2071756575654e6f6e63656000830152602082019050919050565b6000613270602d83613b23565b91507f457870697261746974696f6e206d7573742062652030206f72206174206c656160008301527f7374203630207365636f6e6473000000000000000000000000000000000000006020830152604082019050919050565b60006132d6601e83613b23565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613316601583613b23565b91507f4d6f64756c65206e6f7420617574686f72697a656400000000000000000000006000830152602082019050919050565b6000613356602083613b23565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000613396602083613b23565b91507f5472616e73616374696f6e206973207374696c6c20696e20636f6f6c646f776e6000830152602082019050919050565b60006133d6601683613b23565b91507f4d6f64756c6520616c726561647920656e61626c6564000000000000000000006000830152602082019050919050565b6000613416602483613b23565b91507f73657455704d6f64756c65732068617320616c7265616479206265656e20636160008301527f6c6c6564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061347c601a83613b23565b91507f5472616e73616374696f6e20717565756520697320656d7074790000000000006000830152602082019050919050565b60006134bc600e83613b23565b91507f496e76616c6964206d6f64756c650000000000000000000000000000000000006000830152602082019050919050565b60006134fc601983613b23565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b61353881613c57565b82525050565b61354f61354a82613c57565b613d34565b82525050565b60006135618287612e43565b601482019150613571828661353e565b6020820191506135818285612f4b565b915061358d8284612f8b565b60018201915081905095945050505050565b60006020820190506135b46000830184612e34565b92915050565b60006080820190506135cf6000830188612e34565b6135dc602083018761352f565b81810360408301526135ef818587612ee5565b90506135fe6060830184612f7c565b9695505050505050565b600060808201905061361d6000830187612e34565b61362a602083018661352f565b818103604083015261363c8185612f12565b905061364b6060830184612f7c565b95945050505050565b60006101608201905061366a600083018e612e34565b613677602083018d61352f565b8181036040830152613689818c612f12565b9050613698606083018b612f7c565b6136a5608083018a612fa2565b6136b260a0830189612fa2565b6136bf60c0830188612fa2565b6136cc60e0830187612e34565b6136da610100830186612e16565b8181036101208301526136ed8185612f12565b90506136fd610140830184612e34565b9c9b505050505050505050505050565b600060408201905081810360008301526137278185612e5a565b90506137366020830184612e34565b9392505050565b60006020820190506137526000830184612eb8565b92915050565b600060408201905061376d6000830185612eb8565b818103602083015261377f8184612f12565b90509392505050565b600060208201905061379d6000830184612ec7565b92915050565b60006040820190506137b86000830185612ec7565b6137c56020830184612eb8565b9392505050565b60006020820190506137e16000830184612ed6565b92915050565b6000602082019050818103600083015261380081612fb1565b9050919050565b6000602082019050818103600083015261382081612ff1565b9050919050565b6000602082019050818103600083015261384081613057565b9050919050565b6000602082019050818103600083015261386081613097565b9050919050565b60006020820190508181036000830152613880816130d7565b9050919050565b600060208201905081810360008301526138a081613117565b9050919050565b600060208201905081810360008301526138c08161317d565b9050919050565b600060208201905081810360008301526138e0816131e3565b9050919050565b6000602082019050818103600083015261390081613223565b9050919050565b6000602082019050818103600083015261392081613263565b9050919050565b60006020820190508181036000830152613940816132c9565b9050919050565b6000602082019050818103600083015261396081613309565b9050919050565b6000602082019050818103600083015261398081613349565b9050919050565b600060208201905081810360008301526139a081613389565b9050919050565b600060208201905081810360008301526139c0816133c9565b9050919050565b600060208201905081810360008301526139e081613409565b9050919050565b60006020820190508181036000830152613a008161346f565b9050919050565b60006020820190508181036000830152613a20816134af565b9050919050565b60006020820190508181036000830152613a40816134ef565b9050919050565b6000602082019050613a5c600083018461352f565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613a8957613a88613dae565b5b8060405250919050565b600067ffffffffffffffff821115613aae57613aad613dae565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613b3f82613c57565b9150613b4a83613c57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b7f57613b7e613d50565b5b828201905092915050565b6000613b9582613c57565b9150613ba083613c57565b925082821015613bb357613bb2613d50565b5b828203905092915050565b6000613bc982613c37565b9050919050565b6000613bdb82613c37565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050613c3282613e08565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c6c82613c24565b9050919050565b6000613c7e82613c57565b9050919050565b82818337600083830152505050565b60005b83811015613cb2578082015181840152602081019050613c97565b83811115613cc1576000848401525b50505050565b6000613cd282613c57565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d0557613d04613d50565b5b600182019050919050565b6000613d1b82613d22565b9050919050565b6000613d2d82613dfb565b9050919050565b6000819050919050565b6000613d4982613dee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60028110613e1957613e18613d7f565b5b50565b613e2581613bbe565b8114613e3057600080fd5b50565b613e3c81613bd0565b8114613e4757600080fd5b50565b613e5381613be2565b8114613e5e57600080fd5b50565b60028110613e6e57600080fd5b50565b613e7a81613c57565b8114613e8557600080fd5b5056fea26469706673582212206f4de68ccc61e36655459f9fb9c07003c20f8e19b2a434ed1a757de2d8dc3f8e64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000"; + "0x60806040523480156200001157600080fd5b5060405162004f4a38038062004f4a833981810160405281019062000037919062000a30565b600085858585856040516020016200005495949392919062000d57565b604051602081830303815290604052905062000076816200008260201b60201c565b50505050505062000f53565b600080600080600085806020019051810190620000a09190620009ae565b94509450945094509450620000ba6200032a60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200012d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001249062000e5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620001a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001979062000dd6565b60405180910390fd5b6000811480620001b15750603c8110155b620001f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ea9062000e3c565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a819055508160698190555062000294856200042960201b60201c565b620002a46200053f60201b60201c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffd805e12a6d02f83d7029c03fdfcf3f226ebcd409af51b3095237015eae50300866040516200031a919062000d3a565b60405180910390a4505050505050565b600060019054906101000a900460ff168062000351575060008054906101000a900460ff16155b62000393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038a9062000df8565b60405180910390fd5b60008060019054906101000a900460ff161590508015620003e4576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620003f46200069360201b60201c565b620004046200077260201b60201c565b8015620004265760008060016101000a81548160ff0219169083151502179055505b50565b620004396200087160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200045f6200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004af9062000e1a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200052b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005229062000db4565b60405180910390fd5b6200053c81620008a360201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006089062000e80565b60405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680620006ba575060008054906101000a900460ff16155b620006fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f39062000df8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200074d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200076f5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000799575060008054906101000a900460ff16155b620007db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d29062000df8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200082c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6200084c620008406200087160201b60201c565b620008a360201b60201c565b80156200086e5760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200097a8162000f05565b92915050565b600081519050620009918162000f1f565b92915050565b600081519050620009a88162000f39565b92915050565b600080600080600060a08688031215620009c757600080fd5b6000620009d78882890162000980565b9550506020620009ea8882890162000980565b9450506040620009fd8882890162000980565b935050606062000a108882890162000997565b925050608062000a238882890162000997565b9150509295509295909350565b600080600080600060a0868803121562000a4957600080fd5b600062000a598882890162000969565b955050602062000a6c8882890162000969565b945050604062000a7f8882890162000969565b935050606062000a928882890162000997565b925050608062000aa58882890162000997565b9150509295509295909350565b62000abd8162000eb3565b82525050565b600062000ad260268362000ea2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000b3a601e8362000ea2565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000b7c602e8362000ea2565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600062000be460208362000ea2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600062000c26602d8362000ea2565b91507f457870697261746974696f6e206d7573742062652030206f72206174206c656160008301527f7374203630207365636f6e6473000000000000000000000000000000000000006020830152604082019050919050565b600062000c8e601e8362000ea2565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000cd060248362000ea2565b91507f73657455704d6f64756c65732068617320616c7265616479206265656e20636160008301527f6c6c6564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b62000d348162000efb565b82525050565b600060208201905062000d51600083018462000ab2565b92915050565b600060a08201905062000d6e600083018862000ab2565b62000d7d602083018762000ab2565b62000d8c604083018662000ab2565b62000d9b606083018562000d29565b62000daa608083018462000d29565b9695505050505050565b6000602082019050818103600083015262000dcf8162000ac3565b9050919050565b6000602082019050818103600083015262000df18162000b2b565b9050919050565b6000602082019050818103600083015262000e138162000b6d565b9050919050565b6000602082019050818103600083015262000e358162000bd5565b9050919050565b6000602082019050818103600083015262000e578162000c17565b9050919050565b6000602082019050818103600083015262000e798162000c7f565b9050919050565b6000602082019050818103600083015262000e9b8162000cc1565b9050919050565b600082825260208201905092915050565b600062000ec08262000edb565b9050919050565b600062000ed48262000edb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000f108162000eb3565b811462000f1c57600080fd5b50565b62000f2a8162000ec7565b811462000f3657600080fd5b50565b62000f448162000efb565b811462000f5057600080fd5b50565b613fe78062000f636000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637ceab3b11161010f578063d4b83992116100a2578063e19a9dd911610071578063e19a9dd914610582578063ebb2b4a21461059e578063ee072baf146105ba578063f2fde38b146105d6576101e5565b8063d4b839921461050c578063dcafac091461052a578063de8dd91d14610548578063e009cfde14610566576101e5565b8063b19d4758116100de578063b19d475814610495578063c66323e51461049f578063c9106389146104bd578063cc2f8452146104db576101e5565b80637ceab3b1146104215780638da5cb5b1461043f5780639b56d5be1461045d578063a4f9edbf14610479576101e5565b806346ba230711610187578063610b592511610156578063610b5925146103af5780636b0a4cf6146103cb578063715018a6146103fb578063776d1a0114610405576101e5565b806346ba2307146103265780635229073f146103425780635aef7de614610373578063605df59c14610391576101e5565b8063300c661f116101c3578063300c661f146102665780633aa7690614610296578063427e232f146102c6578063468721a7146102f6576101e5565b8063086cfca8146101ea578063258148cc146102065780632d9ad53d14610236575b600080fd5b61020460048036038101906101ff9190612c4a565b6105f2565b005b610220600480360381019061021b9190612ec7565b610734565b60405161022d9190613b39565b60405180910390f35b610250600480360381019061024b9190612c4a565b61074c565b60405161025d919061382f565b60405180910390f35b610280600480360381019061027b9190612de2565b61081e565b60405161028d919061387a565b60405180910390f35b6102b060048036038101906102ab9190612ec7565b610857565b6040516102bd9190613b39565b60405180910390f35b6102e060048036038101906102db9190612ec7565b610874565b6040516102ed919061387a565b60405180910390f35b610310600480360381019061030b9190612d62565b61088c565b60405161031d919061382f565b60405180910390f35b610340600480360381019061033b9190612ec7565b610a4d565b005b61035c60048036038101906103579190612d62565b610b5c565b60405161036a92919061384a565b60405180910390f35b61037b610d49565b6040516103889190613691565b60405180910390f35b610399610d6f565b6040516103a69190613b39565b60405180910390f35b6103c960048036038101906103c49190612c4a565b610d75565b005b6103e560048036038101906103e09190612ec7565b6110ff565b6040516103f2919061387a565b60405180910390f35b61040361111c565b005b61041f600480360381019061041a9190612c4a565b6111a4565b005b6104296112e6565b6040516104369190613691565b60405180910390f35b61044761130c565b6040516104549190613691565b60405180910390f35b61047760048036038101906104729190612ec7565b611336565b005b610493600480360381019061048e9190612e86565b61140b565b005b61049d61168d565b005b6104a7611702565b6040516104b49190613b39565b60405180910390f35b6104c5611708565b6040516104d29190613691565b60405180910390f35b6104f560048036038101906104f09190612d26565b611732565b6040516105039291906137ff565b60405180910390f35b61051461197f565b6040516105219190613691565b60405180910390f35b6105326119a5565b60405161053f9190613b39565b60405180910390f35b6105506119ab565b60405161055d9190613b39565b60405180910390f35b610580600480360381019061057b9190612cea565b6119b1565b005b61059c60048036038101906105979190612c4a565b611d3a565b005b6105b860048036038101906105b39190612ec7565b611f70565b005b6105d460048036038101906105cf9190612d62565b611ff6565b005b6105f060048036038101906105eb9190612c4a565b612263565b005b6105fa61235b565b73ffffffffffffffffffffffffffffffffffffffff1661061861130c565b73ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610665906139b9565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606e6020528060005260406000206000915090505481565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff16141580156108175750600073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000848484846040516020016108379493929190613647565b604051602081830303815290604052805190602001209050949350505050565b6000606e6000838152602001908152602001600020549050919050565b606d6020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613a39565b60405180910390fd5b60006109ae878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508661081e565b905080606d6000606c5481526020019081526020016000208190555042606e6000606c5481526020019081526020016000208190555080606c547f4c8a9c748e976c17c2eb2c2bc50da76eac9cd90ff529f0fe900e0c10a179f0318989898989604051610a1f9594939291906136ac565b60405180910390a3606c6000815480929190610a3a90613df0565b9190505550600191505095945050505050565b610a5561235b565b73ffffffffffffffffffffffffffffffffffffffff16610a7361130c565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac0906139b9565b60405180910390fd5b606b548111610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0490613999565b60405180910390fd5b606c54811115610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b49906139d9565b60405180910390fd5b80606b8190555050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690613a39565b60405180910390fd5b6000610c81888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508761081e565b905080606d6000606c5481526020019081526020016000208190555042606e6000606c5481526020019081526020016000208190555080606c547f4c8a9c748e976c17c2eb2c2bc50da76eac9cd90ff529f0fe900e0c10a179f0318a8a8a8a8a604051610cf29594939291906136ac565b60405180910390a360019250606c548142604051602001610d1593929190613b54565b6040516020818303038152906040529150606c6000815480929190610d3990613df0565b9190505550509550959350505050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a5481565b610d7d61235b565b73ffffffffffffffffffffffffffffffffffffffff16610d9b61130c565b73ffffffffffffffffffffffffffffffffffffffff1614610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de8906139b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610e5b5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613af9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90613a99565b60405180910390fd5b60686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f8440816040516110f49190613691565b60405180910390a150565b6000606d6000838152602001908152602001600020549050919050565b61112461235b565b73ffffffffffffffffffffffffffffffffffffffff1661114261130c565b73ffffffffffffffffffffffffffffffffffffffff1614611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f906139b9565b60405180910390fd5b6111a26000612363565b565b6111ac61235b565b73ffffffffffffffffffffffffffffffffffffffff166111ca61130c565b73ffffffffffffffffffffffffffffffffffffffff1614611220576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611217906139b9565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61133e61235b565b73ffffffffffffffffffffffffffffffffffffffff1661135c61130c565b73ffffffffffffffffffffffffffffffffffffffff16146113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a9906139b9565b60405180910390fd5b60008114806113c25750603c8110155b611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f8906139f9565b60405180910390fd5b80606a8190555050565b6000806000806000858060200190518101906114279190612c73565b94509450945094509450611439612429565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a090613a19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151090613959565b60405180910390fd5b60008114806115295750603c8110155b611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f906139f9565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a819055508160698190555061160185612263565b611609612512565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffd805e12a6d02f83d7029c03fdfcf3f226ebcd409af51b3095237015eae503008660405161167d9190613691565b60405180910390a4505050505050565b5b6000606a54141580156116cf575042606a54606954606e6000606b548152602001908152602001600020546116c39190613c5d565b6116cd9190613c5d565b105b80156116de5750606c54606b54105b1561170057606b60008154809291906116f690613df0565b919050555061168e565b565b606b5481565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060008267ffffffffffffffff811115611776577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156117a45781602001602082028036833780820191505090505b509150600080606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156118775750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561188257508482105b1561197057808483815181106118c1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818061196890613df0565b92505061180d565b80925081845250509250929050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60695481565b606c5481565b6119b961235b565b73ffffffffffffffffffffffffffffffffffffffff166119d761130c565b73ffffffffffffffffffffffffffffffffffffffff1614611a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a24906139b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611a975750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613af9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a906138d9565b60405180910390fd5b606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427681604051611d2e9190613691565b60405180910390a15050565b611d4261235b565b73ffffffffffffffffffffffffffffffffffffffff16611d6061130c565b73ffffffffffffffffffffffffffffffffffffffff1614611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad906139b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ed3578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611e4391906138be565b60206040518083038186803b158015611e5b57600080fd5b505afa158015611e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e939190612e5d565b611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990613a59565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611f659190613691565b60405180910390a150565b611f7861235b565b73ffffffffffffffffffffffffffffffffffffffff16611f9661130c565b73ffffffffffffffffffffffffffffffffffffffff1614611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe3906139b9565b60405180910390fd5b8060698190555050565b606c54606b541061203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390613ad9565b60405180910390fd5b6000606e6000606b54815260200190815260200160002054905060695481426120659190613cb3565b10156120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613a79565b60405180910390fd5b6000606a541461210e5742606a54606954836120c29190613c5d565b6120cc9190613c5d565b101561210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490613919565b60405180910390fd5b5b61215e868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561081e565b606d6000606b54815260200190815260200160002054146121b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ab90613939565b60405180910390fd5b606b60008154809291906121c790613df0565b919050555061221c868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085612663565b61225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613b19565b60405180910390fd5b505050505050565b61226b61235b565b73ffffffffffffffffffffffffffffffffffffffff1661228961130c565b73ffffffffffffffffffffffffffffffffffffffff16146122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d6906139b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561234f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612346906138f9565b60405180910390fd5b61235881612363565b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff168061244f575060008054906101000a900460ff16155b61248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248590613979565b60405180910390fd5b60008060019054906101000a900460ff1615905080156124de576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6124e6612958565b6124ee612a31565b801561250f5760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890613ab9565b60405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461279557606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016127629b9a99989796959493929190613746565b600060405180830381600087803b15801561277c57600080fd5b505af1158015612790573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016127f694939291906136fa565b602060405180830381600087803b15801561281057600080fd5b505af1158015612824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128489190612e5d565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295057606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161291d929190613895565b600060405180830381600087803b15801561293757600080fd5b505af115801561294b573d6000803e3d6000fd5b505050505b949350505050565b600060019054906101000a900460ff168061297e575060008054906101000a900460ff16155b6129bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b490613979565b60405180910390fd5b60008060019054906101000a900460ff161590508015612a0d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015612a2e5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612a57575060008054906101000a900460ff16155b612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613979565b60405180910390fd5b60008060019054906101000a900460ff161590508015612ae6576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b612af6612af161235b565b612363565b8015612b175760008060016101000a81548160ff0219169083151502179055505b50565b6000612b2d612b2884613bbc565b613b8b565b905082815260208101848484011115612b4557600080fd5b612b50848285613dae565b509392505050565b600081359050612b6781613f45565b92915050565b600081519050612b7c81613f5c565b92915050565b600081519050612b9181613f73565b92915050565b60008083601f840112612ba957600080fd5b8235905067ffffffffffffffff811115612bc257600080fd5b602083019150836001820283011115612bda57600080fd5b9250929050565b600082601f830112612bf257600080fd5b8135612c02848260208601612b1a565b91505092915050565b600081359050612c1a81613f8a565b92915050565b600081359050612c2f81613f9a565b92915050565b600081519050612c4481613f9a565b92915050565b600060208284031215612c5c57600080fd5b6000612c6a84828501612b58565b91505092915050565b600080600080600060a08688031215612c8b57600080fd5b6000612c9988828901612b6d565b9550506020612caa88828901612b6d565b9450506040612cbb88828901612b6d565b9350506060612ccc88828901612c35565b9250506080612cdd88828901612c35565b9150509295509295909350565b60008060408385031215612cfd57600080fd5b6000612d0b85828601612b58565b9250506020612d1c85828601612b58565b9150509250929050565b60008060408385031215612d3957600080fd5b6000612d4785828601612b58565b9250506020612d5885828601612c20565b9150509250929050565b600080600080600060808688031215612d7a57600080fd5b6000612d8888828901612b58565b9550506020612d9988828901612c20565b945050604086013567ffffffffffffffff811115612db657600080fd5b612dc288828901612b97565b93509350506060612dd588828901612c0b565b9150509295509295909350565b60008060008060808587031215612df857600080fd5b6000612e0687828801612b58565b9450506020612e1787828801612c20565b935050604085013567ffffffffffffffff811115612e3457600080fd5b612e4087828801612be1565b9250506060612e5187828801612c0b565b91505092959194509250565b600060208284031215612e6f57600080fd5b6000612e7d84828501612b82565b91505092915050565b600060208284031215612e9857600080fd5b600082013567ffffffffffffffff811115612eb257600080fd5b612ebe84828501612be1565b91505092915050565b600060208284031215612ed957600080fd5b6000612ee784828501612c20565b91505092915050565b6000612efc8383612f17565b60208301905092915050565b612f1181613cf9565b82525050565b612f2081613ce7565b82525050565b612f2f81613ce7565b82525050565b612f46612f4182613ce7565b613e39565b82525050565b6000612f5782613bfc565b612f618185613c1f565b9350612f6c83613bec565b8060005b83811015612f9d578151612f848882612ef0565b9750612f8f83613c12565b925050600181019050612f70565b5085935050505092915050565b612fb381613d0b565b82525050565b612fc281613d17565b82525050565b612fd181613d21565b82525050565b6000612fe38385613c30565b9350612ff0838584613dae565b612ff983613f06565b840190509392505050565b600061300f82613c07565b6130198185613c30565b9350613029818560208601613dbd565b61303281613f06565b840191505092915050565b600061304882613c07565b6130528185613c41565b9350613062818560208601613dbd565b80840191505092915050565b61307781613d8a565b82525050565b61308e61308982613d8a565b613e67565b82525050565b61309d81613d9c565b82525050565b60006130b0601783613c4c565b91507f4d6f64756c6520616c72656164792064697361626c65640000000000000000006000830152602082019050919050565b60006130f0602683613c4c565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613156601383613c4c565b91507f5472616e73616374696f6e2065787069726564000000000000000000000000006000830152602082019050919050565b6000613196601f83613c4c565b91507f5472616e73616374696f6e2068617368657320646f206e6f74206d61746368006000830152602082019050919050565b60006131d6601e83613c4c565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613216602e83613c4c565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600061327c602d83613c4c565b91507f4e6577206e6f6e6365206d75737420626520686967686572207468616e20637560008301527f7272656e742074784e6f6e6365000000000000000000000000000000000000006020830152604082019050919050565b60006132e2602083613c4c565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613322602083613c4c565b91507f43616e6e6f7420626520686967686572207468616e2071756575654e6f6e63656000830152602082019050919050565b6000613362602d83613c4c565b91507f457870697261746974696f6e206d7573742062652030206f72206174206c656160008301527f7374203630207365636f6e6473000000000000000000000000000000000000006020830152604082019050919050565b60006133c8601e83613c4c565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613408601583613c4c565b91507f4d6f64756c65206e6f7420617574686f72697a656400000000000000000000006000830152602082019050919050565b6000613448602083613c4c565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000613488602083613c4c565b91507f5472616e73616374696f6e206973207374696c6c20696e20636f6f6c646f776e6000830152602082019050919050565b60006134c8601683613c4c565b91507f4d6f64756c6520616c726561647920656e61626c6564000000000000000000006000830152602082019050919050565b6000613508602483613c4c565b91507f73657455704d6f64756c65732068617320616c7265616479206265656e20636160008301527f6c6c6564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061356e601a83613c4c565b91507f5472616e73616374696f6e20717565756520697320656d7074790000000000006000830152602082019050919050565b60006135ae600e83613c4c565b91507f496e76616c6964206d6f64756c650000000000000000000000000000000000006000830152602082019050919050565b60006135ee601983613c4c565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b61362a81613d80565b82525050565b61364161363c82613d80565b613e5d565b82525050565b60006136538287612f35565b6014820191506136638286613630565b602082019150613673828561303d565b915061367f828461307d565b60018201915081905095945050505050565b60006020820190506136a66000830184612f26565b92915050565b60006080820190506136c16000830188612f26565b6136ce6020830187613621565b81810360408301526136e1818587612fd7565b90506136f0606083018461306e565b9695505050505050565b600060808201905061370f6000830187612f26565b61371c6020830186613621565b818103604083015261372e8185613004565b905061373d606083018461306e565b95945050505050565b60006101608201905061375c600083018e612f26565b613769602083018d613621565b818103604083015261377b818c613004565b905061378a606083018b61306e565b613797608083018a613094565b6137a460a0830189613094565b6137b160c0830188613094565b6137be60e0830187612f26565b6137cc610100830186612f08565b8181036101208301526137df8185613004565b90506137ef610140830184612f26565b9c9b505050505050505050505050565b600060408201905081810360008301526138198185612f4c565b90506138286020830184612f26565b9392505050565b60006020820190506138446000830184612faa565b92915050565b600060408201905061385f6000830185612faa565b81810360208301526138718184613004565b90509392505050565b600060208201905061388f6000830184612fb9565b92915050565b60006040820190506138aa6000830185612fb9565b6138b76020830184612faa565b9392505050565b60006020820190506138d36000830184612fc8565b92915050565b600060208201905081810360008301526138f2816130a3565b9050919050565b60006020820190508181036000830152613912816130e3565b9050919050565b6000602082019050818103600083015261393281613149565b9050919050565b6000602082019050818103600083015261395281613189565b9050919050565b60006020820190508181036000830152613972816131c9565b9050919050565b6000602082019050818103600083015261399281613209565b9050919050565b600060208201905081810360008301526139b28161326f565b9050919050565b600060208201905081810360008301526139d2816132d5565b9050919050565b600060208201905081810360008301526139f281613315565b9050919050565b60006020820190508181036000830152613a1281613355565b9050919050565b60006020820190508181036000830152613a32816133bb565b9050919050565b60006020820190508181036000830152613a52816133fb565b9050919050565b60006020820190508181036000830152613a728161343b565b9050919050565b60006020820190508181036000830152613a928161347b565b9050919050565b60006020820190508181036000830152613ab2816134bb565b9050919050565b60006020820190508181036000830152613ad2816134fb565b9050919050565b60006020820190508181036000830152613af281613561565b9050919050565b60006020820190508181036000830152613b12816135a1565b9050919050565b60006020820190508181036000830152613b32816135e1565b9050919050565b6000602082019050613b4e6000830184613621565b92915050565b6000606082019050613b696000830186613621565b613b766020830185612fb9565b613b836040830184613621565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715613bb257613bb1613ed7565b5b8060405250919050565b600067ffffffffffffffff821115613bd757613bd6613ed7565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613c6882613d80565b9150613c7383613d80565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ca857613ca7613e79565b5b828201905092915050565b6000613cbe82613d80565b9150613cc983613d80565b925082821015613cdc57613cdb613e79565b5b828203905092915050565b6000613cf282613d60565b9050919050565b6000613d0482613d60565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050613d5b82613f31565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613d9582613d4d565b9050919050565b6000613da782613d80565b9050919050565b82818337600083830152505050565b60005b83811015613ddb578082015181840152602081019050613dc0565b83811115613dea576000848401525b50505050565b6000613dfb82613d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613e2e57613e2d613e79565b5b600182019050919050565b6000613e4482613e4b565b9050919050565b6000613e5682613f24565b9050919050565b6000819050919050565b6000613e7282613f17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60028110613f4257613f41613ea8565b5b50565b613f4e81613ce7565b8114613f5957600080fd5b50565b613f6581613cf9565b8114613f7057600080fd5b50565b613f7c81613d0b565b8114613f8757600080fd5b50565b60028110613f9757600080fd5b50565b613fa381613d80565b8114613fae57600080fd5b5056fea26469706673582212208b3a304c932203e860004264f50bdb0a6590ff171440793f5990e271f0f91f9c64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; diff --git a/sdk/initData/Integrity.ts b/sdk/initData/Integrity.ts deleted file mode 100644 index b8efe9d2..00000000 --- a/sdk/initData/Integrity.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const salt = - "0x0000000000000000000000000000000000000000000000000000000000000000"; -export const initCode = - "0x61158261003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063783a90471461003a575b600080fd5b61004d6100483660046112e9565b61004f565b005b610058816100a4565b60005b81518110156100975761008782828151811061007957610079611425565b602002602001015182610149565b61009081611451565b905061005b565b506100a181610668565b50565b6000805b82518110156100f457808382815181106100c4576100c4611425565b60200260200101516000015160ff16036100e4576100e182611451565b91505b6100ed81611451565b90506100a8565b5080600114158061012757508160008151811061011357610113611425565b60200260200101516000015160ff16600014155b1561014557604051632f48858160e21b815260040160405180910390fd5b5050565b604082015160208301516060840151600083601f81111561016c5761016c61146a565b036101a2576060850151511561019d57604051632d6ee65d60e21b8152600481018590526024015b60405180910390fd5b610661565b600183601f8111156101b6576101b661146a565b101580156101d65750600383601f8111156101d3576101d361146a565b11155b156102375760008260058111156101ef576101ef61146a565b146102105760405163de10075b60e01b815260048101859052602401610194565b6060850151511561019d57604051632d6ee65d60e21b815260048101859052602401610194565b600583601f81111561024b5761024b61146a565b036102e65760038260058111156102645761026461146a565b14158015610284575060048260058111156102815761028161146a565b14155b80156102a25750600582600581111561029f5761029f61146a565b14155b156102c35760405163de10075b60e01b815260048101859052602401610194565b80511561019d57604051632d6ee65d60e21b815260048101859052602401610194565b600683601f8111156102fa576102fa61146a565b14806103175750600783601f8111156103155761031561146a565b145b806103335750600883601f8111156103315761033161146a565b145b1561036e5760045b82600581111561034d5761034d61146a565b146102c35760405163de10075b60e01b815260048101859052602401610194565b600f83601f8111156103825761038261146a565b0361038e57600161033b565b601083601f8111156103a2576103a261146a565b036104735760018260058111156103bb576103bb61146a565b141580156103db575060028260058111156103d8576103d861146a565b14155b80156103f9575060038260058111156103f6576103f661146a565b14155b8015610417575060048260058111156104145761041461146a565b14155b156104385760405163de10075b60e01b815260048101859052602401610194565b8051158061045257506020815161044f9190611480565b15155b1561019d57604051632d6ee65d60e21b815260048101859052602401610194565b601183601f8111156104875761048761146a565b14806104a45750601283601f8111156104a2576104a261146a565b145b806104c05750601383601f8111156104be576104be61146a565b145b806104dc5750601483601f8111156104da576104da61146a565b145b1561053c5760015b8260058111156104f6576104f661146a565b146105175760405163de10075b60e01b815260048101859052602401610194565b805160201461019d57604051632d6ee65d60e21b815260048101859052602401610194565b601583601f8111156105505761055061146a565b036105aa5760018260058111156105695761056961146a565b14158015610589575060028260058111156105865761058661146a565b14155b156105175760405163de10075b60e01b815260048101859052602401610194565b601683601f8111156105be576105be61146a565b036105e857805160201461019d57604051632d6ee65d60e21b815260048101859052602401610194565b601c83601f8111156105fc576105fc61146a565b036106085760016104e4565b601d83601f81111561061c5761061c61146a565b14806106395750601e83601f8111156106375761063761146a565b145b156106455760006104e4565b604051630a7d7b8960e41b815260048101859052602401610194565b5050505050565b805160015b818110156106f25782818151811061068757610687611425565b60200260200101516000015160ff16836001836106a491906114a2565b815181106106b4576106b4611425565b60200260200101516000015160ff1611156106e257604051638484738160e01b815260040160405180910390fd5b6106eb81611451565b905061066d565b5060005b818110156107f557601d83828151811061071257610712611425565b602002602001015160400151601f81111561072f5761072f61146a565b14806107695750601e83828151811061074a5761074a611425565b602002602001015160400151601f8111156107675761076761146a565b145b80156107c4575060058384838151811061078557610785611425565b60200260200101516000015160ff16815181106107a4576107a4611425565b60200260200101516020015160058111156107c1576107c161146a565b14155b156107e557604051631d40413960e11b815260048101829052602401610194565b6107ee81611451565b90506106f6565b50600061080183610c60565b905060005b8351811015610b3257600084828151811061082357610823611425565b60200260200101519050600083838151811061084157610841611425565b602002602001015190506000600581111561085e5761085e61146a565b826020015160058111156108745761087461146a565b0361095057601d8260400151601f8111156108915761089161146a565b14806108b25750601e8260400151601f8111156108b0576108b061146a565b145b80156108c15750604081015115155b156108e25760405163f3379ddd60e01b815260048101849052602401610194565b60018260400151601f8111156108fa576108fa61146a565b1015801561091e575060038260400151601f81111561091b5761091b61146a565b11155b1561094b57806040015160000361094b5760405163f3379ddd60e01b815260048101849052602401610194565b610b1d565b6001826020015160058111156109685761096861146a565b148061098957506002826020015160058111156109875761098761146a565b145b156109b45760408101511561094b5760405163f3379ddd60e01b815260048101849052602401610194565b6003826020015160058111156109cc576109cc61146a565b14806109ed57506005826020015160058111156109eb576109eb61146a565b145b15610a1a57806040015160000361094b5760405163f3379ddd60e01b815260048101849052602401610194565b600482602001516005811115610a3257610a3261146a565b14610a3f57610a3f6114bb565b8060400151600003610a675760405163f3379ddd60e01b815260048101849052602401610194565b60068260400151601f811115610a7f57610a7f61146a565b1480610aa0575060078260400151601f811115610a9e57610a9e61146a565b145b8015610ab157508060400151600114155b15610ad25760405163f3379ddd60e01b815260048101849052602401610194565b60088260400151601f811115610aea57610aea61146a565b148015610afc57506101008160400151115b15610b1d5760405163f3379ddd60e01b815260048101849052602401610194565b50508080610b2a90611451565b915050610806565b5060005b8351811015610c16576000848281518110610b5357610b53611425565b602002602001015190506001601f811115610b7057610b7061146a565b8160400151601f811115610b8657610b8661146a565b10158015610baa575060038160400151601f811115610ba757610ba761146a565b11155b80610bca5750600481602001516005811115610bc857610bc861146a565b145b8015610bf357506001838381518110610be557610be5611425565b602002602001015160400151115b15610c0357610c03858385610db5565b5080610c0e81611451565b915050610b36565b506000610c2584600084610e71565b9050600581516005811115610c3c57610c3c61146a565b14610c5a57604051632f48858160e21b815260040160405180910390fd5b50505050565b805160609080610c7257610c726114bb565b806001600160401b03811115610c8a57610c8a6111f8565b604051908082528060200260200182016040528015610cdf57816020015b610ccc60405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610ca85790505b50915060001982600081518110610cf857610cf8611425565b60209081029190910101515260015b81811015610dae57600019838281518110610d2457610d24611425565b60200260200101516000018181525050600083858381518110610d4957610d49611425565b60200260200101516000015160ff1681518110610d6857610d68611425565b60200260200101519050600019816000015103610d83578181525b610d8e8260016114d1565b602082018190528151610da0916114a2565b604090910152600101610d07565b5050919050565b6000818381518110610dc957610dc9611425565b60200260200101516000015190506000828481518110610deb57610deb611425565b60200260200101516020015190506000610e0e610e09878587610e71565b6110f9565b90506000610e1d8460016114d1565b90505b82811015610e6857610e36610e09888388610e71565b8214610e58576040516303a3183b60e61b815260048101879052602401610194565b610e6181611451565b9050610e20565b50505050505050565b6040805180820190915260008152606060208201526000848481518110610e9a57610e9a611425565b602002602001015190506001601f811115610eb757610eb761146a565b8160400151601f811115610ecd57610ecd61146a565b10158015610ef1575060038160400151601f811115610eee57610eee61146a565b11155b15610f53576000838581518110610f0a57610f0a611425565b60200260200101516040015111610f2357610f236114bb565b610f4b85848681518110610f3957610f39611425565b60200260200101516000015185610e71565b9150506110f2565b602081015182906005811115610f6b57610f6b61146a565b90816005811115610f7e57610f7e61146a565b815250506000838581518110610f9657610f96611425565b60200260200101516040015111156110f0576000838581518110610fbc57610fbc611425565b60209081029190910101515190506000600483602001516005811115610fe457610fe461146a565b1461100c57848681518110610ffb57610ffb611425565b602002602001015160200151611036565b84868151811061101e5761101e611425565b602002602001015160000151600161103691906114d1565b905061104282826114a2565b6001600160401b03811115611059576110596111f8565b60405190808252806020026020018201604052801561109f57816020015b6040805180820190915260008152606060208201528152602001906001900390816110775790505b506020850152815b818110156110ec576110ba888288610e71565b60208601516110c985846114a2565b815181106110d9576110d9611425565b60209081029190910101526001016110a7565b5050505b505b9392505050565b60208101515160009080156111e55760008360200151516001600160401b03811115611127576111276111f8565b604051908082528060200260200182016040528015611150578160200160208202803683370190505b50905060005b828110156111b1576111848560200151828151811061117757611177611425565b60200260200101516110f9565b82828151811061119657611196611425565b60209081029190910101526111aa81611451565b9050611156565b5083516040516111c6919083906020016114e4565b6040516020818303038152906040528051906020012092505050919050565b825160058111156110f2576110f261146a565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715611230576112306111f8565b60405290565b604051601f8201601f191681016001600160401b038111828210171561125e5761125e6111f8565b604052919050565b80356020811061127557600080fd5b919050565b600082601f83011261128b57600080fd5b81356001600160401b038111156112a4576112a46111f8565b6112b7601f8201601f1916602001611236565b8181528460208386010111156112cc57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156112fc57600080fd5b82356001600160401b038082111561131357600080fd5b818501915085601f83011261132757600080fd5b813581811115611339576113396111f8565b8060051b611348858201611236565b918252838101850191858101908984111561136257600080fd5b86860192505b83831015611418578235858111156113805760008081fd5b86016080818c03601f19018113156113985760008081fd5b6113a061120e565b8983013560ff811681146113b45760008081fd5b8152604083810135600681106113ca5760008081fd5b828c015260606113db858201611266565b838301529284013592898411156113f457600091508182fd5b6114028f8d8688010161127a565b9083015250845250509186019190860190611368565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016114635761146361143b565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60008261149d57634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156114b5576114b561143b565b92915050565b634e487b7160e01b600052600160045260246000fd5b808201808211156114b5576114b561143b565b60006006841061150457634e487b7160e01b600052602160045260246000fd5b8360f81b82526001602d60f81b81840152600283018451602080870160005b8381101561153e578151855293820193908201908501611523565b50929897505050505050505056fea26469706673582212205e423fe1cd2426ef0d204ceda9a655789cef527fab3317eedbc793021f419fef64736f6c63430008110033"; diff --git a/sdk/initData/Packer.ts b/sdk/initData/Packer.ts deleted file mode 100644 index f487bd26..00000000 --- a/sdk/initData/Packer.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const salt = - "0x0000000000000000000000000000000000000000000000000000000000000000"; -export const initCode = - "0x61086d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063806362d21461003a575b600080fd5b61004d610048366004610600565b610063565b60405161005a919061073d565b60405180910390f35b606061006e82610188565b6100778261024d565b67ffffffffffffffff81111561008f5761008f61050c565b6040519080825280601f01601f1916602001820160405280156100b9576020820181803683370190505b50825190915060006100cc8260026107a1565b6100d79060206107b8565b905060005b828110156101805761010884828784815181106100fb576100fb6107cb565b60200260200101516102c5565b601085828151811061011c5761011c6107cb565b602002602001015160400151601f811115610139576101396107e1565b10610170576101628483878481518110610155576101556107cb565b6020026020010151610375565b61016d6020836107b8565b91505b610179816107f7565b90506100dc565b505050919050565b805160005b818110156102485760108382815181106101a9576101a96107cb565b602002602001015160400151601f8111156101c6576101c66107e1565b1480156101da57506101d883826103c0565b155b156102385760008382815181106101f3576101f36107cb565b602002602001015160600151905060008151905060208201915060208103825281858481518110610226576102266107cb565b60200260200101516060018190525050505b610241816107f7565b905061018d565b505050565b805160009061025d6002826107a1565b915060005b818110156102be57601084828151811061027e5761027e6107cb565b602002602001015160400151601f81111561029b5761029b6107e1565b106102ae576102ab6020846107b8565b92505b6102b7816107f7565b9050610262565b5050919050565b60006102d26002846107a1565b9050816000015160f81b8482815181106102ee576102ee6107cb565b60200101906001600160f81b031916908160001a9053508160400151601f81111561031b5761031b6107e1565b602083015160059081811115610333576103336107e1565b60ff16901b1760f81b846103488360016107b8565b81518110610358576103586107cb565b60200101906001600160f81b031916908160001a90535050505050565b600060108260400151601f81111561038f5761038f6107e1565b146103a75781606001516103a290610810565b6103b4565b8160600151805190602001205b93909201929092525050565b6000808383815181106103d5576103d56107cb565b6020026020010151602001519050600160058111156103f6576103f66107e1565b816005811115610408576104086107e1565b03610417576001915050610506565b600281600581111561042b5761042b6107e1565b148061044857506004816005811115610446576104466107e1565b145b8061046457506005816005811115610462576104626107e1565b145b15610473576000915050610506565b835160006104828560016107b8565b90505b818110156104fe5760008682815181106104a1576104a16107cb565b6020026020010151600001519050858160ff1610156104c057506104ee565b858160ff1611156104d157506104fe565b6104db87836103c0565b6104ec576000945050505050610506565b505b6104f7816107f7565b9050610485565b506001925050505b92915050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156105455761054561050c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156105745761057461050c565b604052919050565b80356020811061058b57600080fd5b919050565b600082601f8301126105a157600080fd5b813567ffffffffffffffff8111156105bb576105bb61050c565b6105ce601f8201601f191660200161054b565b8181528460208386010111156105e357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561061357600080fd5b823567ffffffffffffffff8082111561062b57600080fd5b818501915085601f83011261063f57600080fd5b8135818111156106515761065161050c565b8060051b61066085820161054b565b918252838101850191858101908984111561067a57600080fd5b86860192505b83831015610730578235858111156106985760008081fd5b86016080818c03601f19018113156106b05760008081fd5b6106b8610522565b8983013560ff811681146106cc5760008081fd5b8152604083810135600681106106e25760008081fd5b828c015260606106f385820161057c565b8383015292840135928984111561070c57600091508182fd5b61071a8f8d86880101610590565b9083015250845250509186019190860190610680565b9998505050505050505050565b600060208083528351808285015260005b8181101561076a5785810183015185820160400152820161074e565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105065761050661078b565b808201808211156105065761050661078b565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016108095761080961078b565b5060010190565b80516020808301519190811015610831576000198160200360031b1b821691505b5091905056fea26469706673582212204b6c5106cb5ade5f561523db757ff19a0809413e33e2d1b18ef196c044c32bbb64736f6c63430008110033"; diff --git a/sdk/initData/Roles.ts b/sdk/initData/Roles.ts deleted file mode 100644 index cc32133d..00000000 --- a/sdk/initData/Roles.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const salt = - "0x0000000000000000000000000000000000000000000000000000000000000000"; -export const initCode = - "0x60806040523480156200001157600080fd5b506040516200636638038062006366833981016040819052620000349162000420565b604080516001600160a01b038581166020830152848116828401528316606080830191909152825180830390910181526080909101909152620000778162000081565b5050505062000474565b600054610100900460ff1615808015620000a25750600054600160ff909116105b80620000d25750620000bf306200026560201b620017801760201c565b158015620000d2575060005460ff166001145b6200013b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200015f576000805461ff0019166101001790555b6000806000848060200190518101906200017a919062000420565b919450925090506200018b62000274565b606680546001600160a01b038085166001600160a01b0319928316179092556067805492841692909116919091179055620001c683620002dc565b620001d06200032e565b6040516001600160a01b038281168252808416919085169033907f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d9060200160405180910390a4505050801562000261576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620002d05760405162461bcd60e51b815260206004820152602b60248201526000805160206200632683398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000132565b620002da620003a0565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600052606860205260008051602062006346833981519152546001600160a01b031615620003715760405163dfd49ebd60e01b815260040160405180910390fd5b6001600081905260686020526000805160206200634683398151915280546001600160a01b0319169091179055565b600054610100900460ff16620003fc5760405162461bcd60e51b815260206004820152602b60248201526000805160206200632683398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000132565b620002da33620002dc565b6001600160a01b03811681146200041d57600080fd5b50565b6000806000606084860312156200043657600080fd5b8351620004438162000407565b6020850151909350620004568162000407565b6040850151909250620004698162000407565b809150509250925092565b615ea280620004846000396000f3fe608060405234801561001057600080fd5b50600436106101b05760003560e01c8063776d1a01116100ef578063b3dd25c711610092578063b3dd25c71461045d578063c6fe874714610470578063c910638914610483578063cc2f845214610494578063d4b83992146104b5578063e009cfde146104c8578063e19a9dd9146104db578063f2fde38b146104ee57600080fd5b8063776d1a01146103c75780637b0da5b2146103da5780637ceab3b1146103ed5780638da5cb5b14610400578063946d364e14610411578063957ed2b314610424578063a4f9edbf14610437578063a8ec43ee1461044a57600080fd5b8063468721a711610157578063468721a7146102b45780635229073f146102c75780635aef7de6146102da5780635e7c9fe8146102ed578063610b59251461038657806366523f7d14610399578063715018a6146103ac5780637508dd98146103b457600080fd5b80630172a43a146101b5578063086cfca8146101ca5780630c6c76b8146101dd5780632916a9af146101f05780632959513c146102035780632b99e506146102425780632d3c2547146102635780632d9ad53d14610291575b600080fd5b6101c86101c3366004614c17565b610501565b005b6101c86101d8366004614c47565b6105d8565b6101c86101eb366004614c17565b610632565b6101c86101fe366004614c7c565b610708565b61022c610211366004614cc5565b606b602052600090815260409020546001600160a01b031681565b6040516102399190614cde565b60405180910390f35b610255610250366004614d4e565b6107ae565b604051610239929190614e2d565b610283610271366004614c47565b606c6020526000908152604090205481565b604051908152602001610239565b6102a461029f366004614c47565b610895565b6040519015158152602001610239565b6102a46102c2366004614e48565b6108d0565b6102556102d5366004614e48565b61098a565b60665461022c906001600160a01b031681565b6103476102fb366004614cc5565b606a60205260009081526040902080546001909101546001600160801b0380831692600160801b90048116916001600160401b0380821692600160401b83041691600160c01b90041685565b604080516001600160801b03968716815294861660208601526001600160401b039384169085015293166060830152909116608082015260a001610239565b6101c8610394366004614c47565b610a4b565b6101c86103a7366004614ebb565b610b54565b6101c8610be1565b6101c86103c2366004615047565b610bf5565b6101c86103d5366004614c47565b610ccd565b6101c86103e83660046151c6565b610d27565b60655461022c906001600160a01b031681565b6033546001600160a01b031661022c565b6101c861041f3660046151fb565b610e03565b6101c861043236600461526b565b610e5c565b6101c86104453660046152ed565b610f74565b6101c861045836600461534f565b611141565b6101c861046b3660046153bc565b6112cb565b6102a461047e366004614d4e565b61134d565b6065546001600160a01b031661022c565b6104a76104a23660046151fb565b611424565b60405161023992919061540b565b60675461022c906001600160a01b031681565b6101c86104d6366004615468565b61151d565b6101c86104e9366004614c47565b611616565b6101c86104fc366004614c47565b611707565b61050961178f565b60408051808201825260008082526020808301829052858252606981528382206001600160a01b0386168352600190810190915292902081518154929391929091839160ff19169083600281111561056357610563615496565b021790555060208201518154829061ff00191661010083600381111561058b5761058b615496565b021790555050604080518481526001600160a01b03841660208201527f3ccf62aacc3286173cedf5c20ec550071636a2faf0a3b28d93841736a43f822b9250015b60405180910390a15050565b6105e061178f565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34290600090a35050565b61063a61178f565b6040805180820190915280600281526020016000905260008381526069602090815260408083206001600160a01b038616845260019081019092529091208251815491929091839160ff199091169083600281111561069b5761069b615496565b021790555060208201518154829061ff0019166101008360038111156106c3576106c3615496565b021790555050604080518481526001600160a01b03841660208201527f277465b84f512b759d745fab70327b693ee21ce592fca91a3f491739a25fa76a9250016105cc565b61071061178f565b60a082901c63ffffffff60401b16606084811b6001600160601b031916919091176000908152606b602090815260409182902080546001600160a01b0319166001600160a01b03868116918217909255835191881682526001600160e01b0319871692820192909252918201527f1330d96b64c7e86736f77e027ca34223dd3d1d08049281281c9d597d8098ed5991015b60405180910390a1505050565b336000908152606860205260408120546060906001600160a01b03166107f25733604051634a0bfec160e01b81526004016107e99190614cde565b60405180910390fd5b6000610802858b8b8b8b8b6117e9565b905061080d81611927565b6108508a8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250611ad9915050565b9093509150838015610860575082155b1561087e5760405163d27b44a960e01b815260040160405180910390fd5b6108888184611cf3565b5097509795505050505050565b600060016001600160a01b038316148015906108ca57506001600160a01b038281166000908152606860205260409020541615155b92915050565b336000908152606860205260408120546001600160a01b03166109085733604051634a0bfec160e01b81526004016107e99190614cde565b336000908152606c60205260408120546109269088888888886117e9565b905061093181611927565b610974878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611de4915050565b91506109808183611cf3565b5095945050505050565b336000908152606860205260408120546060906001600160a01b03166109c55733604051634a0bfec160e01b81526004016107e99190614cde565b336000908152606c60205260408120546109e39089898989896117e9565b90506109ee81611927565b610a31888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611ad9915050565b9093509150610a408184611cf3565b509550959350505050565b610a5361178f565b6001600160a01b0381161580610a7257506001600160a01b0381166001145b15610a925780604051635c93ff2f60e11b81526004016107e99190614cde565b6001600160a01b038181166000908152606860205260409020541615610acd5780604051632061897360e01b81526004016107e99190614cde565b6068602052600080516020615e4d83398151915280546001600160a01b03838116600081815260408082208054949095166001600160a01b03199485161790945560019052835490911617909155517fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844090610b49908390614cde565b60405180910390a150565b610b5c61178f565b600083815260696020526040812060020190610b788484611fee565b8152602001908152602001600020600090557f32a3a599b308fc900a0e6513db2ad40bf0c94367da90048a4b308d8c6b2dd6ea8383836040516107a1939291909283526001600160a01b039190911660208301526001600160e01b031916604082015260600190565b610be961178f565b610bf3600061200e565b565b610bfd61178f565b60405163783a904760e01b81527352c342e002c5f7cf14ef89b5e04cf6d53c7f8e729063783a904790610c349085906004016154d0565b60006040518083038186803b158015610c4c57600080fd5b505af4158015610c60573d6000803e3d6000fd5b5050506000868152606960205260409020610c879150610c808686611fee565b8484612060565b7f4f6c340456f64db31a3d003c1224ba1de058557b1cdf71f21ae48ce4a4f64f528585858585604051610cbe95949392919061557f565b60405180910390a15050505050565b610cd561178f565b606780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b610d2f61178f565b604080518082019091528060018152602001826003811115610d5357610d53615496565b905260008481526069602090815260408083206001600160a01b038716845260019081019092529091208251815491929091839160ff1990911690836002811115610da057610da0615496565b021790555060208201518154829061ff001916610100836003811115610dc857610dc8615496565b02179055509050507f05e4ec9b54e94ad676ef61d57214f6d57d752ed2022dea5e5f956d5df7ccb2508383836040516107a19392919061564d565b610e0b61178f565b6001600160a01b0382166000818152606c6020908152604091829020849055815192835282018390527f60c85b61661a191efceebca036d48b290e04a1f08dd96472b920adbdd50c64e891016105cc565b610e6461178f565b828114610e84576040516374f4d53760e01b815260040160405180910390fd5b60005b61ffff8116841115610f265782828261ffff16818110610ea957610ea9615670565b9050602002016020810190610ebe9190615686565b6069600087878561ffff16818110610ed857610ed8615670565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038b1682529092529020805460ff1916911515919091179055610f1f816156b9565b9050610e87565b50610f3085610895565b610f3d57610f3d85610a4b565b7f9f8368fa4ddcbd561efd7ad2a2174235bf5b840a73fb18f20db9705c114624988585858585604051610cbe9594939291906156da565b600054610100900460ff1615808015610f945750600054600160ff909116105b80610fb55750610fa330611780565b158015610fb5575060005460ff166001145b6110185760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107e9565b6000805460ff19166001179055801561103b576000805461ff0019166101001790555b600080600084806020019051810190611054919061576c565b925092509250611062612116565b606680546001600160a01b038085166001600160a01b031992831617909255606780549284169290911691909117905561109b8361200e565b6110a3612145565b816001600160a01b0316836001600160a01b0316336001600160a01b03167f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d846040516110f09190614cde565b60405180910390a4505050801561113d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016105cc565b5050565b61114961178f565b6000846001600160801b031611611167576001600160801b03611169565b835b9350836001600160801b0316856001600160801b0316111561119e5760405163535f0e9160e01b815260040160405180910390fd5b6040805160a0810182526001600160801b03808616825286811660208084019182526001600160401b038088168587019081528b8516606087019081528883166080880190815260008f8152606a90955293889020965194518616600160801b029486169490941786555160019095018054935192518216600160c01b026001600160c01b0393909516600160401b026001600160c01b031990941695909116949094179190911716179055517f63d7ec44a20b176da1d60d75259d264ee67b3d8213706afa71a28f69ed8ebece906112bb908890889088908890889088909586526001600160801b0394851660208701529284166040860152921660608401526001600160401b0391821660808401521660a082015260c00190565b60405180910390a1505050505050565b6112d361178f565b6112dc816121b4565b6000858152606960205260408120600201906112f88686611fee565b8152602001908152602001600020819055507f9603b65b11492fec54ccc3d9feb93536f804d82e12228187ff730a253fc283ee8484848460405161133f94939291906157ae565b60405180910390a150505050565b336000908152606860205260408120546001600160a01b03166113855733604051634a0bfec160e01b81526004016107e99190614cde565b6000611395848a8a8a8a8a6117e9565b90506113a081611927565b6113e3898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250611de4915050565b91508280156113f0575081155b1561140e5760405163d27b44a960e01b815260040160405180910390fd5b6114188183611cf3565b50979650505050505050565b60606000826001600160401b0381111561144057611440614ef9565b604051908082528060200260200182016040528015611469578160200160208202803683370190505b506001600160a01b0380861660009081526068602052604081205492945091165b6001600160a01b038116158015906114ac57506001600160a01b038116600114155b80156114b757508482105b1561150f57808483815181106114cf576114cf615670565b6001600160a01b03928316602091820292909201810191909152918116600090815260689092526040909120541681611507816157e1565b92505061148a565b908352919491935090915050565b61152561178f565b6001600160a01b038116158061154457506001600160a01b0381166001145b156115645780604051635c93ff2f60e11b81526004016107e99190614cde565b6001600160a01b038281166000908152606860205260409020548116908216146115a35780604051638b4189ff60e01b81526004016107e99190614cde565b6001600160a01b03818116600081815260686020526040808220805487861684528284208054919096166001600160a01b0319918216179095559290915281549092169055517faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace4054276906105cc908390614cde565b61161e61178f565b6001600160a01b038116156116bb576040516301ffc9a760e01b815263736bd41d60e11b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c91906157fa565b6116bb57806040516358b7533f60e11b81526004016107e99190614cde565b606580546001600160a01b0319166001600160a01b0383169081179091556040517f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa291610b4991614cde565b61170f61178f565b6001600160a01b0381166117745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e9565b61177d8161200e565b50565b6001600160a01b03163b151590565b6033546001600160a01b03163314610bf35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107e9565b6060600087900361180d57604051631fb1d3e560e31b815260040160405180910390fd5b6000878152606960209081526040808320338452918290529091205460ff1661184957604051631fb1d3e560e31b815260040160405180910390fd5b6000611891886118598789615817565b60a01c63ffffffff60401b1660609190911b6001600160601b031916176000908152606b60205260409020546001600160a01b031690565b9050600061189d614bae565b6001600160a01b0383166118c8576118be848b8b8b8b8b87600001516121d8565b90925090506118dd565b6118d783858c8c8c8c8c6123d5565b90925090505b60008260138111156118f1576118f1615496565b14611916576020810151604051631a1537eb60e31b81526107e9918491600401615847565b5193505050505b9695505050505050565b805160005b81811015611ad457600083828151811061194857611948615670565b60209081029190910181015180516040808301516000838152606a8652828120835160a08101855281546001600160801b038082168352600160801b90910481169882019890985260018201546001600160401b0380821696830196909652600160401b81049098166060820152600160c01b909704909316608087015293955091939192909181906119db9042612522565b9150915085602001516001600160801b0316826001600160801b031614611a0457611a04615865565b816001600160801b0316846001600160801b03161115611a2657611a26615865565b611a30848361587b565b6001840180546001600160401b03808516600160c01b026001600160c01b036001600160801b0395909516600160401b02949094169116179190911790557f90355d540c2980efb4c360996dfc5405ee87e812e4f3db843857547cbdb5af658585611a9b818661587b565b604080519384526001600160801b03928316602085015291169082015260600160405180910390a186600101965050505050505061192c565b505050565b6065546000906060906001600160a01b03168015611c66576040805180820182526002815261060f60f31b60208201529051633af85da960e11b81526001600160a01b038316916375f0bb5291611b47918b918b918b918b91600091829182918291829133906004016158ab565b600060405180830381600087803b158015611b6157600080fd5b505af1158015611b75573d6000803e3d6000fd5b5050606754604051635229073f60e01b81526001600160a01b039091169250635229073f9150611baf908a908a908a908a9060040161593a565b6000604051808303816000875af1158015611bce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bf691908101906159b5565b604051631264e26d60e31b815261060f60f31b6004820152821515602482015291945092506001600160a01b03821690639327136890604401600060405180830381600087803b158015611c4957600080fd5b505af1158015611c5d573d6000803e3d6000fd5b50505050611ce9565b606754604051635229073f60e01b81526001600160a01b0390911690635229073f90611c9c908a908a908a908a9060040161593a565b6000604051808303816000875af1158015611cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ce391908101906159b5565b90935091505b5094509492505050565b815160005b81811015611dde576000848281518110611d1457611d14615670565b602002602001015190506000816000015190508415611d9357604082015160208301517f90355d540c2980efb4c360996dfc5405ee87e812e4f3db843857547cbdb5af65918391611d6690829061587b565b604080519384526001600160801b03928316602085015291169082015260600160405180910390a1611dd4565b6020808301516000838152606a909252604090912060010180546001600160801b03909216600160401b02600160401b600160c01b03199092169190911790555b5050600101611cf8565b50505050565b6065546000906001600160a01b03168015611f68576040805180820182526002815261060f60f31b60208201529051633af85da960e11b81526001600160a01b038316916375f0bb5291611e4f918a918a918a918a91600091829182918291829133906004016158ab565b600060405180830381600087803b158015611e6957600080fd5b505af1158015611e7d573d6000803e3d6000fd5b505060675460405163468721a760e01b81526001600160a01b03909116925063468721a79150611eb790899089908990899060040161593a565b6020604051808303816000875af1158015611ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efa91906157fa565b604051631264e26d60e31b815261060f60f31b600482015281151560248201529092506001600160a01b03821690639327136890604401600060405180830381600087803b158015611f4b57600080fd5b505af1158015611f5f573d6000803e3d6000fd5b50505050611fe4565b60675460405163468721a760e01b81526001600160a01b039091169063468721a790611f9e90899089908990899060040161593a565b6020604051808303816000875af1158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe191906157fa565b91505b505b949350505050565b60a01c63ffffffff60401b1660609190911b6001600160601b0319161790565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051634031b16960e11b81526000907360e89c71882e88f16772490d2f05819d9521eab19063806362d29061209a9086906004016154d0565b600060405180830381865af41580156120b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120df9190810190615a05565b905060006120ec82612617565b90506120fa84518483612747565b6000958652600290960160205250506040909220929092555050565b600054610100900460ff1661213d5760405162461bcd60e51b81526004016107e990615a39565b610bf361277a565b60016000526068602052600080516020615e4d833981519152546001600160a01b0316156121865760405163dfd49ebd60e01b815260040160405180910390fd5b600160008190526068602052600080516020615e4d83398151915280546001600160a01b0319169091179055565b6000600160d81b60e08360038111156121cf576121cf615496565b901b1792915050565b60006121e2614bae565b84158015906121f15750600485105b1561220f57604051632342609160e11b815260040160405180910390fd5b6001600160a01b03881660009081526001808b01602052604090912090815460ff16600281111561224257612242615496565b0361228057805461225e9089908790610100900460ff166127aa565b60405180604001604052808681526020016000801b81525092509250506123c9565b6002815460ff16600281111561229857612298615496565b036123ae5760006122b28a6122ad898b615817565b611fee565b600081815260028d01602052604081205491925081900361230657600360405180604001604052808881526020018b8b906122ed9190615817565b6001600160e01b031916815250945094505050506123c9565b60008061231283612860565b9150915060006123238d8b846127aa565b9050600081601381111561233957612339615496565b1461236257604080518082019091528981526000602082015290975095506123c9945050505050565b821561239157600060405180604001604052808b81526020016000801b815250975097505050505050506123c9565b61239f8f868f8f8f8e61288b565b975097505050505050506123c9565b50506040805180820190915282815260006020820152600291505b97509795505050505050565b60006123df614bae565b60405163c7a7b63560e01b81526001600160a01b038a169063c7a7b63590612413908a908a908a908a908a90600401615aad565b600060405180830381865afa92505050801561245157506040513d6000823e601f3d908101601f1916820160405261244e9190810190615ae4565b60015b61246e576040516315e649e960e01b815260040160405180910390fd5b60005b815181101561251457600082828151811061248e5761248e615670565b6020026020010151905060008160600151905060008260800151826124b39190615bbb565b90506124de8d846020015185604001518d8d879087926124d593929190615bce565b88518c516121d8565b909750955060008760138111156124f7576124f7615496565b146125065750505050506123c9565b836001019350505050612471565b505097509795505050505050565b60008083604001516001600160401b03166000148061255c5750836040015184608001516125509190615bf8565b6001600160401b031683105b1561257257505060608201516080830151612610565b600084604001518560800151856125899190615c18565b6125939190615c4e565b90506000816001600160401b031686600001516125b09190615c74565b86606001516125bf9190615c97565b905085602001516001600160801b0316816001600160801b0316106125e85785602001516125ea565b805b93508560400151826125fc9190615cb7565b866080015161260b9190615bf8565b925050505b9250929050565b600080612623836128ee565b90506000612688828051602091820120604080516001600160f81b03198185015273ce0042b868300000d44a59004da54a005ffdcf9f60601b602182015260006035820152605580820193909352815180820390930183526075019052805191012090565b9050803b60008181036127195760405163257b1f8160e11b815273ce0042b868300000d44a59004da54a005ffdcf9f90634af63f02906126cf908790600090600401615cda565b6020604051808303816000875af11580156126ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127129190615cfc565b905061271c565b50815b806001600160a01b0316836001600160a01b03161461273d5761273d615865565b5090949350505050565b60006001600160a01b03821660e084600381111561276757612767615496565b60f087901b911b171790505b9392505050565b600054610100900460ff166127a15760405162461bcd60e51b81526004016107e990615a39565b610bf33361200e565b600080841180156127cd575060018260038111156127ca576127ca615496565b14155b80156127eb575060038260038111156127e8576127e8615496565b14155b156127f857506004612773565b600183600181111561280c5761280c615496565b14801561282b5750600282600381111561282857612828615496565b14155b80156128495750600382600381111561284657612846615496565b14155b1561285657506001612773565b5060009392505050565b600160d81b81161515600060e083901c60ff16600381111561288457612884615496565b9050915091565b6000612895614bae565b6000806128a28a8a612926565b9150915060006128b3888885612af7565b90506128db89898986858b516000146128d5576128d08c89612b51565b612e83565b87612e83565b945094505050505b965096945050505050565b6060815160016128fe9190615bbb565b82604051602001612910929190615d19565b6040516020818303038152906040529050919050565b612952604080516080810190915280600081526020016000815260006020820152606060409091015290565b600082815260028401602052604081205460609160f082901c916001600160a01b03169061297f82613134565b905060008061298e83866131ad565b915091506000805b8351811015612ab55760008482815181106129b3576129b3615670565b6020026020010151604001519050601c601f8111156129d4576129d4615496565b81601f8111156129e6576129e6615496565b106129fb576129f4836157e1565b9250612aac565b600f81601f811115612a0f57612a0f615496565b03612aac576010858381518110612a2857612a28615670565b602002602001015160400190601f811115612a4557612a45615496565b9081601f811115612a5857612a58615496565b905250606654604051612a77916001600160a01b031690602001614cde565b60405160208183030381529060405280519060200120848381518110612a9f57612a9f615670565b6020026020010181815250505b50600101612996565b50612acc8383612ac4866133a0565b60008c6134f5565b8760008211612adb5787612ae6565b612ae68484846136d5565b975097505050505050509250929050565b612b1b60405180606001604052806000815260200160008152602001606081525090565b6000612b26836138c1565b9050612b3e8585600484856020015151600088613a51565b5060008152602081019290925250919050565b60608251600003612b635750806108ca565b8151600003612b735750816108ca565b81518351612b819190615bbb565b6001600160401b03811115612b9857612b98614ef9565b604051908082528060200260200182016040528015612be357816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181612bb65790505b50835190915060005b81811015612cdc57848181518110612c0657612c06615670565b602002602001015160000151838281518110612c2457612c24615670565b60200260200101516000018181525050848181518110612c4657612c46615670565b602002602001015160200151838281518110612c6457612c64615670565b6020026020010151602001906001600160801b031690816001600160801b031681525050848181518110612c9a57612c9a615670565b602002602001015160400151838281518110612cb857612cb8615670565b60209081029190910101516001600160801b03909116604090910152600101612bec565b5060005b8351811015612e6e57600080612d1387878581518110612d0257612d02615670565b602002602001015160000151613c03565b915091508015612d7657858381518110612d2f57612d2f615670565b602002602001015160400151858381518110612d4d57612d4d615670565b6020026020010151604001818151612d659190615c97565b6001600160801b0316905250612e64565b858381518110612d8857612d88615670565b602002602001015160000151858581518110612da657612da6615670565b60200260200101516000018181525050858381518110612dc857612dc8615670565b602002602001015160200151858581518110612de657612de6615670565b6020026020010151602001906001600160801b031690816001600160801b031681525050858381518110612e1c57612e1c615670565b602002602001015160400151858581518110612e3a57612e3a615670565b60209081029190910101516001600160801b0390911660409091015283612e60816157e1565b9450505b5050600101612ce0565b508151811015612e7c578082525b5092915050565b6000612e8d614bae565b6020850151601081601f811115612ea657612ea6615496565b101561300757600081601f811115612ec057612ec0615496565b03612ee45750506040805180820190915282815260006020820181905291506128e3565b600581601f811115612ef857612ef8615496565b03612f1557612f0b898989898989613c5b565b92509250506128e3565b600181601f811115612f2957612f29615496565b03612f3c57612f0b898989898989613d4b565b600281601f811115612f5057612f50615496565b03612f6357612f0b898989898989613dff565b600381601f811115612f7757612f77615496565b03612f8a57612f0b898989898989613e9f565b600681601f811115612f9e57612f9e615496565b03612fb157612f0b898989898989613f50565b600781601f811115612fc557612fc5615496565b03612fd857612f0b89898989898961400e565b600881601f811115612fec57612fec615496565b14612ff957612ff9615865565b612f0b8989898989896140bd565b601281601f81111561301b5761301b615496565b1161304e5761302c88888888614211565b60405180604001604052808681526020016000801b81525092509250506128e3565b601481601f81111561306257613062615496565b116130735761302c8888888861431c565b601581601f81111561308757613087615496565b036130985761302c8888888861439f565b601681601f8111156130ac576130ac615496565b036130bf57612f0b898989898989614480565b601c81601f8111156130d3576130d3615496565b036130e557612f0b8888888888614561565b601d81601f8111156130f9576130f9615496565b0361310957612f0b898786614598565b601e81601f81111561311d5761311d615496565b1461312a5761312a615865565b612f0b86856145e0565b6060813b6001811161314857613148615865565b600160006131568284615d70565b9050806001600160401b0381111561317057613170614ef9565b6040519080825280601f01601f19166020018201604052801561319a576020820181803683370190505b509350808260208601873c505050919050565b606080826001600160401b038111156131c8576131c8614ef9565b60405190808252806020026020018201604052801561320157816020015b6131ee614bc6565b8152602001906001900390816131e65790505b509150826001600160401b0381111561321c5761321c614ef9565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b5090506000602081613258600287615d83565b613263906020615bbb565b905060005b8681101561339557878301519350613281600284615bbb565b925060008460f01c9050600087838151811061329f5761329f615670565b6020908102919091010151600883901c60ff1681529050600582811c600716908111156132ce576132ce615496565b816020019060058111156132e4576132e4615496565b908160058111156132f7576132f7615496565b905250601f8281169081111561330f5761330f615496565b8160400190601f81111561332557613325615496565b9081601f81111561333857613338615496565b90525060108160400151601f81111561335357613353615496565b1061338b57898401519550613369602085615bbb565b93508587848151811061337e5761337e615670565b6020026020010181815250505b5050600101613268565b505050509250929050565b8051606090806133b2576133b2615865565b806001600160401b038111156133ca576133ca614ef9565b60405190808252806020026020018201604052801561341f57816020015b61340c60405180606001604052806000815260200160008152602001600081525090565b8152602001906001900390816133e85790505b5091506000198260008151811061343857613438615670565b60209081029190910101515260015b818110156134ee5760001983828151811061346457613464615670565b6020026020010151600001818152505060008385838151811061348957613489615670565b60200260200101516000015160ff16815181106134a8576134a8615670565b602002602001015190506000198160000151036134c3578181525b6134ce826001615bbb565b6020820181905281516134e091615d70565b604090910152600101613447565b5050919050565b600085838151811061350957613509615670565b6020026020010151905080602001518260000190600581111561352e5761352e615496565b9081600581111561354157613541615496565b90525060408101516020830190601f81111561355f5761355f615496565b9081601f81111561357257613572615496565b8152505084838151811061358857613588615670565b60200260200101518260400181815250508383815181106135ab576135ab615670565b6020026020010151604001516000036135c457506136ce565b60008484815181106135d8576135d8615670565b602002602001015160000151905060008585815181106135fa576135fa615670565b6020026020010151604001519050806001600160401b0381111561362057613620614ef9565b60405190808252806020026020018201604052801561367d57816020015b61366a604080516080810190915280600081526020016000815260006020820152606060409091015290565b81526020019060019003908161363e5790505b50606085015260005b818110156136c9576136c189898961369e8588615bbb565b896060015186815181106136b4576136b4615670565b60200260200101516134f5565b600101613686565b505050505b5050505050565b8251606090826001600160401b038111156136f2576136f2614ef9565b60405190808252806020026020018201604052801561373d57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816137105790505b5091506000805b828110156138ab57601c87828151811061376057613760615670565b602002602001015160400151601f81111561377d5761377d615496565b1061389b57600086828151811061379657613796615670565b6020026020010151905060006137ac8683613c03565b91505080156137bc57505061389b565b818685815181106137cf576137cf615670565b602090810291909101810151919091526000838152606a8252604090819020815160a08101835281546001600160801b038082168352600160801b9091048116948201949094526001909101546001600160401b0380821693830193909352600160401b81049093166060820152600160c01b9092041660808201526138559042612522565b5086858151811061386857613868615670565b6020026020010151602001816001600160801b03166001600160801b0316815250508380613895906157e1565b94505050505b6138a4816157e1565b9050613744565b50838110156138b8578083525b50509392505050565b6138c9614bf0565b60018260200151601f8111156138e1576138e1615496565b10158015613905575060038260200151601f81111561390257613902615496565b11155b156139465760008260600151511161391f5761391f615865565b6108ca826060015160008151811061393957613939615670565b60200260200101516138c1565b81518190600581111561395b5761395b615496565b9081600581111561396e5761396e615496565b90525060608201515115613a4c57600060048351600581111561399357613993615496565b146139a3578260600151516139a6565b60015b9050806001600160401b038111156139c0576139c0614ef9565b6040519080825280602002602001820160405280156139f957816020015b6139e6614bf0565b8152602001906001900390816139de5790505b50602083015260005b818110156134ee57613a238460600151828151811061393957613939615670565b83602001518281518110613a3957613a39615670565b6020908102919091010152600101613a02565b919050565b826001600160401b03811115613a6957613a69614ef9565b604051908082528060200260200182016040528015613abe57816020015b613aab60405180606001604052806000815260200160008152602001606081525090565b815260200190600190039081613a875790505b50604082015260008215613af657613af38560200151600081518110613ae657613ae6615670565b6020026020010151614627565b90505b6000805b85811015613bf75784613b2357613b2087602001518281518110613ae657613ae6615670565b92505b613b838a8a613b358d8d8d888a6146f5565b8a6020015189613b455785613b48565b60005b81518110613b5857613b58615670565b602002602001015188604001518681518110613b7657613b76615670565b6020026020010151614733565b600084604001518281518110613b9b57613b9b615670565b602002602001015160200151905083613bbe57613bb9816020615bbb565b613bc0565b805b85602001818151613bd19190615bbb565b90525083613be0576020613be2565b805b613bec9084615bbb565b925050600101613afa565b50505050505050505050565b81516000908190815b81811015613c4d5784868281518110613c2757613c27615670565b60200260200101516000015103613c45579250600191506126109050565b600101613c0c565b506000958695509350505050565b6000613c65614bae565b60408051808201825284815260006020820152908501515160608701515114613c9357600a925090506128e3565b60005b866060015151811015613d3a57613cef8a8a8a8a606001518581518110613cbf57613cbf615670565b60200260200101518a604001518681518110613cdd57613cdd615670565b60200260200101518760000151612e83565b90945091506000846013811115613d0857613d08615496565b14613d325783604051806040016040528087815260200184602001518152509350935050506128e3565b600101613c96565b506000999098509650505050505050565b6000613d55614bae565b50604080518082019091528281526000602082018190525b856060015151811015613def57613da989898989606001518581518110613d9657613d96615670565b6020026020010151898760000151612e83565b90935091506000836013811115613dc257613dc2615496565b14613de7575060408051808201909152838152602091820151918101919091526128e3565b600101613d6d565b5060009150965096945050505050565b6000613e09614bae565b60005b856060015151811015613e7b57600080613e478b8b8b8b606001518781518110613e3857613e38615670565b60200260200101518b8b612e83565b90925090506000826013811115613e6057613e60615496565b03613e715790935091506128e39050565b5050600101613e0c565b50506040805180820190915291825250600060208201526005969095509350505050565b6000613ea9614bae565b60005b856060015151811015613f2c576000613ee68a8a8a8a606001518681518110613ed757613ed7615670565b60200260200101518a8a612e83565b5090506000816013811115613efd57613efd615496565b03613f2357505060408051808201909152838152600060208201526006925090506128e3565b50600101613eac565b50506040805180820190915291825250600060208201819052969095509350505050565b6000613f5a614bae565b60005b846040015151811015613fea57600080613fb68b8b8b8b60600151600081518110613f8a57613f8a615670565b60200260200101518b604001518881518110613fa857613fa8615670565b60200260200101518b612e83565b90925090506000826013811115613fcf57613fcf615496565b03613fe05790935091506128e39050565b5050600101613f5d565b5050604080518082019091529182525060006020820152600c969095509350505050565b6000614018614bae565b50604080518082019091528281526000602082018190525b846040015151811015613def57614078898989896060015160008151811061405a5761405a615670565b602002602001015189604001518681518110613cdd57613cdd615670565b9093509150600083601381111561409157614091615496565b146140b55750506040805180820190915282815260006020820152600b91506128e3565b600101614030565b60006140c7614bae565b5060408051808201825283815260006020820152908401515115806140f55750846060015151846040015151115b1561410357600d91506128e3565b6000805b856040015151811015614200576000805b8860600151518110156141c6576001811b84166000036141b6576000806141818e8e8e8e60600151878151811061415157614151615670565b60200260200101518e604001518a8151811061416f5761416f615670565b60200260200101518c60000151612e83565b9092509050600082601381111561419a5761419a615496565b036141b357955050600180821b949094179391506141c6565b50505b6141bf816157e1565b9050614118565b50806141ef5750506040805180820190915284815260006020820152600d935091506128e39050565b506141f9816157e1565b9050614107565b506000925050965096945050505050565b602082015160408301516000919082601083601f81111561423457614234615496565b1461424d5761424888888760000151614891565b614278565b6142618888876000015188602001516148c9565b60405161426f929190615d9a565b60405180910390205b9050601083601f81111561428e5761428e615496565b14801561429b5750818114155b156142ac5760079350505050611fe6565b601183601f8111156142c0576142c0615496565b1480156142cd5750818111155b156142de5760089350505050611fe6565b601283601f8111156142f2576142f2615496565b1480156142ff5750818110155b156143105760099350505050611fe6565b60009350505050611fe6565b6020820151604083015182516000929190839061433c9089908990614891565b9050601383601f81111561435257614352615496565b14801561435f5750818113155b156143705760089350505050611fe6565b601483601f81111561438457614384615496565b1480156142ff57508181126143105760099350505050611fe6565b6040820151600090816001855160058111156143bd576143bd615496565b14905036600061440c8989856143d45760206143d7565b60005b89516143e69160ff1690615bbb565b866143f25760206143f5565b60005b60ff168a602001516144079190615d70565b6148c9565b909250905060f084901c81811061442b57600e95505050505050611fe6565b6001600160881b0319601086901b8116608887901b821660006144508686818a615bce565b61445991615daa565b9050818382161461446b57600f61446e565b60005b9e9d5050505050505050505050505050565b600061448a614bae565b6000856040015160601c90506000866040015160001c60a01b9050600080836001600160a01b031663416ad87a8d8d8d8c600001518d60200151896040518763ffffffff1660e01b81526004016144e696959493929190615dc8565b6040805180830381865afa158015614502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145269190615e0a565b9150915081614536576010614539565b60005b6040518060400160405280898152602001838152509550955050505050965096945050505050565b600061456b614bae565b600061457c88888760000151614891565b90506145898187866148f3565b92509250509550959350505050565b60006145a2614bae565b6145ad8585856148f3565b909250905060008260138111156145c6576145c6615496565b146145d25760136145d5565b60005b91505b935093915050565b60006145ea614bae565b6145f6600185856148f3565b9092509050600082601381111561460f5761460f615496565b1461461b57601261461e565b60005b91509250929050565b8051600090600181600581111561464057614640615496565b0361464e5750600192915050565b600281600581111561466257614662615496565b148061467f5750600481600581111561467d5761467d615496565b145b8061469b5750600581600581111561469957614699615496565b145b156146a95750600092915050565b60208301515160005b818110156146ea576146d385602001518281518110613ae657613ae6615670565b6146e257506000949350505050565b6001016146b2565b506001949350505050565b6000806147028486615bbb565b9050821561471157905061472a565b61471c878783614891565b6147269086615bbb565b9150505b95945050505050565b8151600181600581111561474957614749615496565b0361475957602082810152614887565b600281600581111561476d5761476d615496565b0361479a57614785614780878787614891565b614a21565b614790906020615bbb565b6020830152614887565b60038160058111156147ae576147ae615496565b036147cd576147c886868686876020015151600088613a51565b614887565b60048160058111156147e1576147e1615496565b036148255761480a86866147f6876020615bbb565b866148028b8b8b614891565b600188613a51565b60208260200181815161481d9190615bbb565b905250614887565b600581600581111561483957614839615496565b0361488757614868868661484e876020615bbb565b614859906004615bbb565b86876020015151600088613a51565b614876614780878787614891565b614881906020615bbb565b60208301525b5091909152505050565b60008261489f836020615bbb565b11156148be57604051631d098e2d60e21b815260040160405180910390fd5b509190910135919050565b3660008584866148d98683615bbb565b926148e693929190615bce565b9150915094509492505050565b60006148fd614bae565b60008061490e858760400151613c03565b915091508061491f5761491f615865565b84828151811061493157614931615670565b6020026020010151602001516001600160801b031685838151811061495857614958615670565b6020026020010151604001516001600160801b0316886149789190615bbb565b11156149bd57601160405180604001604052808781526020018785815181106149a3576149a3615670565b6020026020010151600001518152509350935050506145d8565b6149c685614a50565b9450868583815181106149db576149db615670565b60200260200101516040018181516149f39190615c97565b6001600160801b03169052505060408051808201909152848152600060208201819052935091506145d89050565b600060206001614a318483615bbb565b614a3b9190615d70565b614a459190615e38565b6108ca906020615d83565b8051606090806001600160401b03811115614a6d57614a6d614ef9565b604051908082528060200260200182016040528015614ab857816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181614a8b5790505b50915060005b818110156134ee57838181518110614ad857614ad8615670565b602002602001015160000151838281518110614af657614af6615670565b60200260200101516000018181525050838181518110614b1857614b18615670565b602002602001015160200151838281518110614b3657614b36615670565b6020026020010151602001906001600160801b031690816001600160801b031681525050838181518110614b6c57614b6c615670565b602002602001015160400151838281518110614b8a57614b8a615670565b60209081029190910101516001600160801b03909116604090910152600101614abe565b60408051808201909152606081526000602082015290565b604080516080810190915260008082526020820190815260200160005b8152602001606081525090565b60408051808201909152806000614be3565b6001600160a01b038116811461177d57600080fd5b60008060408385031215614c2a57600080fd5b823591506020830135614c3c81614c02565b809150509250929050565b600060208284031215614c5957600080fd5b813561277381614c02565b80356001600160e01b031981168114613a4c57600080fd5b600080600060608486031215614c9157600080fd5b8335614c9c81614c02565b9250614caa60208501614c64565b91506040840135614cba81614c02565b809150509250925092565b600060208284031215614cd757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008083601f840112614d0457600080fd5b5081356001600160401b03811115614d1b57600080fd5b60208301915083602082850101111561261057600080fd5b6002811061177d57600080fd5b801515811461177d57600080fd5b600080600080600080600060c0888a031215614d6957600080fd5b8735614d7481614c02565b96506020880135955060408801356001600160401b03811115614d9657600080fd5b614da28a828b01614cf2565b9096509450506060880135614db681614d33565b92506080880135915060a0880135614dcd81614d40565b8091505092959891949750929550565b60005b83811015614df8578181015183820152602001614de0565b50506000910152565b60008151808452614e19816020860160208601614ddd565b601f01601f19169290920160200192915050565b8215158152604060208201526000611fe66040830184614e01565b600080600080600060808688031215614e6057600080fd5b8535614e6b81614c02565b94506020860135935060408601356001600160401b03811115614e8d57600080fd5b614e9988828901614cf2565b9094509250506060860135614ead81614d33565b809150509295509295909350565b600080600060608486031215614ed057600080fd5b833592506020840135614ee281614c02565b9150614ef060408501614c64565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715614f3157614f31614ef9565b60405290565b60405160a081016001600160401b0381118282101715614f3157614f31614ef9565b604051601f8201601f191681016001600160401b0381118282101715614f8157614f81614ef9565b604052919050565b60006001600160401b03821115614fa257614fa2614ef9565b5060051b60200190565b803560208110613a4c57600080fd5b60006001600160401b03821115614fd457614fd4614ef9565b50601f01601f191660200190565b600082601f830112614ff357600080fd5b813561500661500182614fbb565b614f59565b81815284602083860101111561501b57600080fd5b816020850160208301376000918101602001919091529392505050565b803560048110613a4c57600080fd5b600080600080600060a0868803121561505f57600080fd5b853594506150706020870135614c02565b6020860135935061508360408701614c64565b92506001600160401b036060870135111561509d57600080fd5b6060860135860187601f8201126150b357600080fd5b6150c06150018235614f89565b81358082526020808301929160051b8401018a8111156150df57600080fd5b602084015b818110156151a6576001600160401b038135111561510157600080fd5b803585016080818e03601f1901121561511957600080fd5b615121614f0f565b602082013560ff81161461513457600080fd5b60208201358152600660408301351061514c57600080fd5b6040820135602082015261516260608301614fac565b60408201526001600160401b036080830135111561517f57600080fd5b6151928e60206080850135850101614fe2565b6060820152855250602093840193016150e4565b50508094505050506151ba60808701615038565b90509295509295909350565b6000806000606084860312156151db57600080fd5b8335925060208401356151ed81614c02565b9150614ef060408501615038565b6000806040838503121561520e57600080fd5b823561521981614c02565b946020939093013593505050565b60008083601f84011261523957600080fd5b5081356001600160401b0381111561525057600080fd5b6020830191508360208260051b850101111561261057600080fd5b60008060008060006060868803121561528357600080fd5b853561528e81614c02565b945060208601356001600160401b03808211156152aa57600080fd5b6152b689838a01615227565b909650945060408801359150808211156152cf57600080fd5b506152dc88828901615227565b969995985093965092949392505050565b6000602082840312156152ff57600080fd5b81356001600160401b0381111561531557600080fd5b611fe684828501614fe2565b80356001600160801b0381168114613a4c57600080fd5b80356001600160401b0381168114613a4c57600080fd5b60008060008060008060c0878903121561536857600080fd5b8635955061537860208801615321565b945061538660408801615321565b935061539460608801615321565b92506153a260808801615338565b91506153b060a08801615338565b90509295509295509295565b600080600080608085870312156153d257600080fd5b8435935060208501356153e481614c02565b92506153f260408601614c64565b915061540060608601615038565b905092959194509250565b604080825283519082018190526000906020906060840190828701845b8281101561544d5781516001600160a01b031684529284019290840190600101615428565b5050506001600160a01b039490941692019190915250919050565b6000806040838503121561547b57600080fd5b823561548681614c02565b91506020830135614c3c81614c02565b634e487b7160e01b600052602160045260246000fd5b600681106154bc576154bc615496565b9052565b602081106154bc576154bc615496565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561556157603f198984030185528151608060ff8251168552888201516155238a8701826154ac565b5087820151615534898701826154c0565b5060609182015191850181905261554d85820183614e01565b9689019694505050908601906001016154f7565b509098975050505050505050565b600481106154bc576154bc615496565b600060a08201878352602060018060a01b03881681850152604063ffffffff60e01b881681860152606060a08187015283885180865260c08801915060c08160051b8901019550848a0160005b828110156156355760bf198a89030184528151608060ff8251168a52888201516155f88a8c01826154ac565b5087820151615609898c01826154c0565b5086820151915080878b0152615621818b0183614e01565b9950505092860192908601906001016155cc565b505050505050508091505061191d608083018461556f565b8381526001600160a01b038316602082015260608101611fe6604083018461556f565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561569857600080fd5b813561277381614d40565b634e487b7160e01b600052601160045260246000fd5b600061ffff8083168181036156d0576156d06156a3565b6001019392505050565b6001600160a01b0386168152606060208083018290529082018590526000906001600160fb1b0386111561570d57600080fd5b8560051b808860808601378301838103608090810160408601528101859052859060009060a0015b8682101561575e57823561574881614d40565b1515815291830191600191909101908301615735565b9a9950505050505050505050565b60008060006060848603121561578157600080fd5b835161578c81614c02565b602085015190935061579d81614c02565b6040850151909250614cba81614c02565b8481526001600160a01b03841660208201526001600160e01b0319831660408201526080810161472a606083018461556f565b6000600182016157f3576157f36156a3565b5060010190565b60006020828403121561580c57600080fd5b815161277381614d40565b6001600160e01b0319813581811691600485101561583f5780818660040360031b1b83161692505b505092915050565b604081016014841061585b5761585b615496565b9281526020015290565b634e487b7160e01b600052600160045260246000fd5b6001600160801b03828116828216039080821115612e7c57612e7c6156a3565b600281106154bc576154bc615496565b6001600160a01b038c81168252602082018c9052610160604083018190526000916158d88483018e614e01565b91506158e7606085018d61589b565b8a60808501528960a08501528860c085015280881660e085015280871661010085015283820361012085015261591d8287614e01565b925080851661014085015250509c9b505050505050505050505050565b60018060a01b03851681528360208201526080604082015260006159616080830185614e01565b905061472a606083018461589b565b600082601f83011261598157600080fd5b815161598f61500182614fbb565b8181528460208386010111156159a457600080fd5b611fe6826020830160208701614ddd565b600080604083850312156159c857600080fd5b82516159d381614d40565b60208401519092506001600160401b038111156159ef57600080fd5b6159fb85828601615970565b9150509250929050565b600060208284031215615a1757600080fd5b81516001600160401b03811115615a2d57600080fd5b611fe684828501615970565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152608060408201526000615ad5608083018587615a84565b905061191d606083018461589b565b60006020808385031215615af757600080fd5b82516001600160401b03811115615b0d57600080fd5b8301601f81018513615b1e57600080fd5b8051615b2c61500182614f89565b81815260a09182028301840191848201919088841115615b4b57600080fd5b938501935b838510156114185780858a031215615b685760008081fd5b615b70614f37565b8551615b7b81614d33565b815285870151615b8a81614c02565b8188015260408681015190820152606080870151908201526080808701519082015283529384019391850191615b50565b808201808211156108ca576108ca6156a3565b60008085851115615bde57600080fd5b83861115615beb57600080fd5b5050820193919092039150565b6001600160401b03818116838216019080821115612e7c57612e7c6156a3565b6001600160401b03828116828216039080821115612e7c57612e7c6156a3565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680615c6857615c68615c38565b92169190910492915050565b6001600160801b0381811683821602808216919082811461583f5761583f6156a3565b6001600160801b03818116838216019080821115612e7c57612e7c6156a3565b6001600160401b0381811683821602808216919082811461583f5761583f6156a3565b604081526000615ced6040830185614e01565b90508260208301529392505050565b600060208284031215615d0e57600080fd5b815161277381614c02565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000600e82018190528251615d6281600f850160208701614ddd565b91909101600f019392505050565b818103818111156108ca576108ca6156a3565b80820281158282048414176108ca576108ca6156a3565b8183823760009101908152919050565b803560208310156108ca57600019602084900360031b1b1692915050565b86815260a060208201526000615de260a083018789615a84565b60408301959095525060608101929092526001600160a01b0319166080909101529392505050565b60008060408385031215615e1d57600080fd5b8251615e2881614d40565b6020939093015192949293505050565b600082615e4757615e47615c38565b50049056fe82eaf0fca2207f91f5027fcf68136c84edb7e928c081c42aa5bbc2a771c7d376a26469706673582212203c89de6fbdf80ff2795147a6273647af5b7403d341c681eb87ab9a5a4561dec964736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206982eaf0fca2207f91f5027fcf68136c84edb7e928c081c42aa5bbc2a771c7d376000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"; diff --git a/sdk/initData/RolesV1.ts b/sdk/initData/RolesV1.ts new file mode 100644 index 00000000..836e5ee6 --- /dev/null +++ b/sdk/initData/RolesV1.ts @@ -0,0 +1,4 @@ +export const salt = + "0x0000000000000000000000000000000000000000000000000000000000000000"; +export const initCode = + "0x60806040523480156200001157600080fd5b5060405162006aa738038062006aa7833981810160405281019062000037919062000892565b6000838383604051602001620000509392919062000991565b604051602081830303815290604052905062000072816200007c60201b60201c565b5050505062000b8d565b60008060008380602001905181019062000097919062000836565b925092509250620000ad620001d460201b60201c565b81606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200014083620002d360201b60201c565b62000150620003e960201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d84604051620001c6919062000974565b60405180910390a450505050565b600060019054906101000a900460ff1680620001fb575060008054906101000a900460ff16155b6200023d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023490620009f0565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200028e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6200029e6200053260201b60201c565b620002ae6200061160201b60201c565b8015620002d05760008060016101000a81548160ff0219169083151502179055505b50565b620002e36200071060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003096200071860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000362576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003599062000a12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620003d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003cc90620009ce565b60405180910390fd5b620003e6816200074260201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620004b0576040517ff736703400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff168062000559575060008054906101000a900460ff16155b6200059b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200059290620009f0565b60405180910390fd5b60008060019054906101000a900460ff161590508015620005ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200060e5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000638575060008054906101000a900460ff16155b6200067a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067190620009f0565b60405180910390fd5b60008060019054906101000a900460ff161590508015620006cb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620006eb620006df6200071060201b60201c565b6200074260201b60201c565b80156200070d5760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620008198162000b59565b92915050565b600081519050620008308162000b73565b92915050565b60008060006060848603121562000852576200085162000a8d565b5b600062000862868287016200081f565b935050602062000875868287016200081f565b925050604062000888868287016200081f565b9150509250925092565b600080600060608486031215620008ae57620008ad62000a8d565b5b6000620008be8682870162000808565b9350506020620008d18682870162000808565b9250506040620008e48682870162000808565b9150509250925092565b620008f98162000a45565b82525050565b60006200090e60268362000a34565b91506200091b8262000a92565b604082019050919050565b600062000935602e8362000a34565b9150620009428262000ae1565b604082019050919050565b60006200095c60208362000a34565b9150620009698262000b30565b602082019050919050565b60006020820190506200098b6000830184620008ee565b92915050565b6000606082019050620009a86000830186620008ee565b620009b76020830185620008ee565b620009c66040830184620008ee565b949350505050565b60006020820190508181036000830152620009e981620008ff565b9050919050565b6000602082019050818103600083015262000a0b8162000926565b9050919050565b6000602082019050818103600083015262000a2d816200094d565b9050919050565b600082825260208201905092915050565b600062000a528262000a6d565b9050919050565b600062000a668262000a6d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000b648162000a45565b811462000b7057600080fd5b50565b62000b7e8162000a59565b811462000b8a57600080fd5b50565b615f0a8062000b9d6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c8063610b59251161011a578063a4f9edbf116100ad578063cc2f84521161007c578063cc2f8452146105a9578063d4b83992146105da578063e009cfde146105f8578063e19a9dd914610614578063f2fde38b1461063057610206565b8063a4f9edbf14610522578063a6edf38f1461053e578063b0c199121461055a578063c91063891461058b57610206565b80637ceab3b1116100e95780637ceab3b1146104ae5780638b95eccd146104cc5780638da5cb5b146104e8578063939337721461050657610206565b8063610b59251461043c5780636928e74b14610458578063715018a614610488578063776d1a011461049257610206565b80632e506a481161019d578063468721a71161016c578063468721a71461038557806351fa1d73146103b55780635229073f146103d15780635aef7de6146104025780635e8266951461042057610206565b80632e506a48146103155780632fcf52d11461033157806333a0480c1461034d5780633c1952b81461036957610206565b80632933ef1c116101d95780632933ef1c1461027b578063294402cc146102975780632d3c2547146102b55780632d9ad53d146102e557610206565b8063086cfca81461020b5780630de729c714610227578063102b7fe61461024357806315b77d3f1461025f575b600080fd5b61022560048036038101906102209190613f5e565b61064c565b005b610241600480360381019061023c919061479c565b61078e565b005b61025d600480360381019061025891906140b3565b610896565b005b6102796004803603810190610274919061455d565b6109a9565b005b610295600480360381019061029091906143d6565b610ab4565b005b61029f610bbc565b6040516102ac9190614f16565b60405180910390f35b6102cf60048036038101906102ca9190613f5e565b610be2565b6040516102dc91906155e6565b60405180910390f35b6102ff60048036038101906102fa9190613f5e565b610c03565b60405161030c91906150d8565b60405180910390f35b61032f600480360381019061032a9190614735565b610cd5565b005b61034b6004803603810190610346919061455d565b610de0565b005b61036760048036038101906103629190614429565b610eeb565b005b610383600480360381019061037e9190614673565b61100b565b005b61039f600480360381019061039a9190614133565b611122565b6040516103ac91906150d8565b60405180910390f35b6103cf60048036038101906103ca9190614396565b611349565b005b6103eb60048036038101906103e69190614133565b61144e565b6040516103f99291906150f3565b60405180910390f35b61040a61167b565b6040516104179190614f16565b60405180910390f35b61043a60048036038101906104359190614396565b6116a1565b005b61045660048036038101906104519190613f5e565b6117a6565b005b610472600480360381019061046d91906141bb565b611b30565b60405161047f91906150d8565b60405180910390f35b610490611d4e565b005b6104ac60048036038101906104a79190613f5e565b611dd6565b005b6104b6611f18565b6040516104c39190614f16565b60405180910390f35b6104e660048036038101906104e19190613f5e565b611f3e565b005b6104f0612057565b6040516104fd9190614f16565b60405180910390f35b610520600480360381019061051b91906145c4565b612081565b005b61053c60048036038101906105379190614320565b612195565b005b6105586004803603810190610553919061401e565b6122d1565b005b610574600480360381019061056f91906141bb565b6124d8565b6040516105829291906150f3565b60405180910390f35b610593612700565b6040516105a09190614f16565b60405180910390f35b6105c360048036038101906105be91906140f3565b61272a565b6040516105d19291906150a8565b60405180910390f35b6105e261292b565b6040516105ef9190614f16565b60405180910390f35b610612600480360381019061060d9190613fde565b612951565b005b61062e60048036038101906106299190613f5e565b612cda565b005b61064a60048036038101906106459190613f5e565b612f10565b005b610654613008565b73ffffffffffffffffffffffffffffffffffffffff16610672612057565b73ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf906151c7565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b610796613008565b73ffffffffffffffffffffffffffffffffffffffff166107b4612057565b73ffffffffffffffffffffffffffffffffffffffff161461080a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610801906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763a2f6f6d0606b60008661ffff1661ffff1681526020019081526020016000208585856040518563ffffffff1660e01b815260040161086194939291906155a1565b60006040518083038186803b15801561087957600080fd5b505af415801561088d573d6000803e3d6000fd5b50505050505050565b61089e613008565b73ffffffffffffffffffffffffffffffffffffffff166108bc612057565b73ffffffffffffffffffffffffffffffffffffffff1614610912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610909906151c7565b60405180910390fd5b80606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055507f197e61bb67ba4b0f657afcb5d2dbed385d50b697c51090f466cdbcc4c30a21ce828260405161099d929190614f7a565b60405180910390a15050565b6109b1613008565b73ffffffffffffffffffffffffffffffffffffffff166109cf612057565b73ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763163592dd606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610a7e9594939291906153fc565b60006040518083038186803b158015610a9657600080fd5b505af4158015610aaa573d6000803e3d6000fd5b5050505050505050565b610abc613008565b73ffffffffffffffffffffffffffffffffffffffff16610ada612057565b73ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b27906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa216989375976377cff804606b60008661ffff1661ffff1681526020019081526020016000208585856040518563ffffffff1660e01b8152600401610b879493929190615308565b60006040518083038186803b158015610b9f57600080fd5b505af4158015610bb3573d6000803e3d6000fd5b50505050505050565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a6020528060005260406000206000915054906101000a900461ffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff1614158015610cce5750600073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b610cdd613008565b73ffffffffffffffffffffffffffffffffffffffff16610cfb612057565b73ffffffffffffffffffffffffffffffffffffffff1614610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d48906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa21698937597633c5a24e2606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610daa95949392919061554e565b60006040518083038186803b158015610dc257600080fd5b505af4158015610dd6573d6000803e3d6000fd5b5050505050505050565b610de8613008565b73ffffffffffffffffffffffffffffffffffffffff16610e06612057565b73ffffffffffffffffffffffffffffffffffffffff1614610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e53906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa21698937597635ebbaa68606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610eb59594939291906153fc565b60006040518083038186803b158015610ecd57600080fd5b505af4158015610ee1573d6000803e3d6000fd5b5050505050505050565b610ef3613008565b73ffffffffffffffffffffffffffffffffffffffff16610f11612057565b73ffffffffffffffffffffffffffffffffffffffff1614610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa21698937597632af6aecb606b60008e61ffff1661ffff1681526020019081526020016000208d8d8d8d8d8d8d8d8d8d8d6040518d63ffffffff1660e01b8152600401610fce9c9b9a9998979695949392919061534d565b60006040518083038186803b158015610fe657600080fd5b505af4158015610ffa573d6000803e3d6000fd5b505050505050505050505050505050565b611013613008565b73ffffffffffffffffffffffffffffffffffffffff16611031612057565b73ffffffffffffffffffffffffffffffffffffffff1614611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763edf909e3606b60008b61ffff1661ffff1681526020019081526020016000208a8a8a8a8a8a8a8a6040518a63ffffffff1660e01b81526004016110e8999897969594939291906154c7565b60006040518083038186803b15801561110057600080fd5b505af4158015611114573d6000803e3d6000fd5b505050505050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e9906151e7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763db50e575606b6000606a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689898989896040518863ffffffff1660e01b81526004016112be9796959493929190615267565b60006040518083038186803b1580156112d657600080fd5b505af41580156112ea573d6000803e3d6000fd5b5050505061133e868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085613010565b905095945050505050565b611351613008565b73ffffffffffffffffffffffffffffffffffffffff1661136f612057565b73ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763cfe4317a606b60008561ffff1661ffff16815260200190815260200160002084846040518463ffffffff1660e01b815260040161141a939291906152d1565b60006040518083038186803b15801561143257600080fd5b505af4158015611446573d6000803e3d6000fd5b505050505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611518906151e7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763db50e575606b6000606a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a8a8a8a6040518863ffffffff1660e01b81526004016115ed9796959493929190615267565b60006040518083038186803b15801561160557600080fd5b505af4158015611619573d6000803e3d6000fd5b5050505061166d878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086613305565b915091509550959350505050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116a9613008565b73ffffffffffffffffffffffffffffffffffffffff166116c7612057565b73ffffffffffffffffffffffffffffffffffffffff161461171d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611714906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763ee54ca53606b60008561ffff1661ffff16815260200190815260200160002084846040518463ffffffff1660e01b8152600401611772939291906152d1565b60006040518083038186803b15801561178a57600080fd5b505af415801561179e573d6000803e3d6000fd5b505050505050565b6117ae613008565b73ffffffffffffffffffffffffffffffffffffffff166117cc612057565b73ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561188c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c290615247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090615227565b60405180910390fd5b60686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844081604051611b259190614f16565b60405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906151e7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763db50e575606b60008661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8b8b8b8b6040518863ffffffff1660e01b8152600401611c7f9796959493929190615267565b60006040518083038186803b158015611c9757600080fd5b505af4158015611cab573d6000803e3d6000fd5b50505050611cff888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087613010565b9050818015611d0c575080155b15611d43576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b979650505050505050565b611d56613008565b73ffffffffffffffffffffffffffffffffffffffff16611d74612057565b73ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc1906151c7565b60405180910390fd5b611dd46000613609565b565b611dde613008565b73ffffffffffffffffffffffffffffffffffffffff16611dfc612057565b73ffffffffffffffffffffffffffffffffffffffff1614611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e49906151c7565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f46613008565b73ffffffffffffffffffffffffffffffffffffffff16611f64612057565b73ffffffffffffffffffffffffffffffffffffffff1614611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb1906151c7565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5fe6aabf4e790843df43ae0e22b58620066fb389295bedc06a92df6c3b28777d606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161204c9190614f16565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612089613008565b73ffffffffffffffffffffffffffffffffffffffff166120a7612057565b73ffffffffffffffffffffffffffffffffffffffff16146120fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f4906151c7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763512ce0f2606b60008a61ffff1661ffff168152602001908152602001600020898989898989896040518963ffffffff1660e01b815260040161215c98979695949392919061544f565b60006040518083038186803b15801561217457600080fd5b505af4158015612188573d6000803e3d6000fd5b5050505050505050505050565b6000806000838060200190518101906121ae9190613f8b565b9250925092506121bc6136cf565b81606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061224783612f10565b61224f6137b8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d846040516122c39190614f16565b60405180910390a450505050565b6122d9613008565b73ffffffffffffffffffffffffffffffffffffffff166122f7612057565b73ffffffffffffffffffffffffffffffffffffffff161461234d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612344906151c7565b60405180910390fd5b81819050848490501461238c576040517f74f4d53700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b848490508161ffff16101561247a5782828261ffff168181106123b5576123b4615b73565b5b90506020020160208101906123ca919061426a565b606b600087878561ffff168181106123e5576123e4615b73565b5b90506020020160208101906123fa9190614369565b61ffff1661ffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061247290615aa1565b91505061238f565b5061248485610c03565b61249257612491856117a6565b5b7f4dcd99505817a4d3e4d3f751a4a49739ec38cb0f83319ff1224a3b289597e86c85858585856040516124c9959493929190614f31565b60405180910390a15050505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906151e7565b60405180910390fd5b7333d1c5a5b6a7f3885c7467e829aaa2169893759763db50e575606b60008761ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8c8c8c8c6040518863ffffffff1660e01b815260040161262a9796959493929190615267565b60006040518083038186803b15801561264257600080fd5b505af4158015612656573d6000803e3d6000fd5b505050506126aa898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505088613305565b80925081935050508280156126bd575081155b156126f4576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b97509795505050505050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060008267ffffffffffffffff81111561274857612747615ba2565b5b6040519080825280602002602001820160405280156127765781602001602082028036833780820191505090505b509150600080606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156128495750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561285457508482105b1561291c578084838151811061286d5761286c615b73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818061291490615acc565b9250506127df565b80925081845250509250929050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612959613008565b73ffffffffffffffffffffffffffffffffffffffff16612977612057565b73ffffffffffffffffffffffffffffffffffffffff16146129cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c4906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612a375750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90615247565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90615167565b60405180910390fd5b606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427681604051612cce9190614f16565b60405180910390a15050565b612ce2613008565b73ffffffffffffffffffffffffffffffffffffffff16612d00612057565b73ffffffffffffffffffffffffffffffffffffffff1614612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612e73578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612de3919061514c565b60206040518083038186803b158015612dfb57600080fd5b505afa158015612e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e339190614297565b612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6990615207565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051612f059190614f16565b60405180910390a150565b612f18613008565b73ffffffffffffffffffffffffffffffffffffffff16612f36612057565b73ffffffffffffffffffffffffffffffffffffffff1614612f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f83906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff390615187565b60405180910390fd5b61300581613609565b50565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314257606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b815260040161310f9b9a99989796959493929190614fef565b600060405180830381600087803b15801561312957600080fd5b505af115801561313d573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016131a39493929190614fa3565b602060405180830381600087803b1580156131bd57600080fd5b505af11580156131d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f59190614297565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132fd57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b81526004016132ca929190615123565b600060405180830381600087803b1580156132e457600080fd5b505af11580156132f8573d6000803e3d6000fd5b505050505b949350505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461343a57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528787878760008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016134079b9a99989796959493929190614fef565b600060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635229073f878787876040518563ffffffff1660e01b815260040161349b9493929190614fa3565b600060405180830381600087803b1580156134b557600080fd5b505af11580156134c9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134f291906142c4565b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461360057606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b81526004016135cd929190615123565b600060405180830381600087803b1580156135e757600080fd5b505af11580156135fb573d6000803e3d6000fd5b505050505b94509492505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff16806136f5575060008054906101000a900460ff16155b613734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372b906151a7565b60405180910390fd5b60008060019054906101000a900460ff161590508015613784576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61378c613900565b6137946139d9565b80156137b55760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461387e576040517ff736703400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680613926575060008054906101000a900460ff16155b613965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395c906151a7565b60405180910390fd5b60008060019054906101000a900460ff1615905080156139b5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156139d65760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806139ff575060008054906101000a900460ff16155b613a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a35906151a7565b60405180910390fd5b60008060019054906101000a900460ff161590508015613a8e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b613a9e613a99613008565b613609565b8015613abf5760008060016101000a81548160ff0219169083151502179055505b50565b6000613ad5613ad084615626565b615601565b90508083825260208201905082856020860282011115613af857613af7615be5565b5b60005b85811015613b4657813567ffffffffffffffff811115613b1e57613b1d615bdb565b5b808601613b2b8982613e6f565b85526020850194506020840193505050600181019050613afb565b5050509392505050565b6000613b63613b5e84615652565b615601565b905082815260208101848484011115613b7f57613b7e615bea565b5b613b8a848285615a2e565b509392505050565b6000613ba5613ba084615652565b615601565b905082815260208101848484011115613bc157613bc0615bea565b5b613bcc848285615a3d565b509392505050565b600081359050613be381615df3565b92915050565b600081519050613bf881615e0a565b92915050565b60008083601f840112613c1457613c13615bdb565b5b8235905067ffffffffffffffff811115613c3157613c30615bd6565b5b602083019150836020820283011115613c4d57613c4c615be5565b5b9250929050565b60008083601f840112613c6a57613c69615bdb565b5b8235905067ffffffffffffffff811115613c8757613c86615bd6565b5b602083019150836020820283011115613ca357613ca2615be5565b5b9250929050565b600082601f830112613cbf57613cbe615bdb565b5b8135613ccf848260208601613ac2565b91505092915050565b60008083601f840112613cee57613ced615bdb565b5b8235905067ffffffffffffffff811115613d0b57613d0a615bd6565b5b602083019150836020820283011115613d2757613d26615be5565b5b9250929050565b60008083601f840112613d4457613d43615bdb565b5b8235905067ffffffffffffffff811115613d6157613d60615bd6565b5b602083019150836020820283011115613d7d57613d7c615be5565b5b9250929050565b60008083601f840112613d9a57613d99615bdb565b5b8235905067ffffffffffffffff811115613db757613db6615bd6565b5b602083019150836020820283011115613dd357613dd2615be5565b5b9250929050565b600081359050613de981615e21565b92915050565b600081519050613dfe81615e21565b92915050565b600081359050613e1381615e38565b92915050565b60008083601f840112613e2f57613e2e615bdb565b5b8235905067ffffffffffffffff811115613e4c57613e4b615bd6565b5b602083019150836001820283011115613e6857613e67615be5565b5b9250929050565b600082601f830112613e8457613e83615bdb565b5b8135613e94848260208601613b50565b91505092915050565b600082601f830112613eb257613eb1615bdb565b5b8151613ec2848260208601613b92565b91505092915050565b600081359050613eda81615e4f565b92915050565b600081359050613eef81615e5f565b92915050565b600081359050613f0481615e6f565b92915050565b600081359050613f1981615e7f565b92915050565b600081359050613f2e81615e8f565b92915050565b600081359050613f4381615ea6565b92915050565b600081359050613f5881615ebd565b92915050565b600060208284031215613f7457613f73615bf9565b5b6000613f8284828501613bd4565b91505092915050565b600080600060608486031215613fa457613fa3615bf9565b5b6000613fb286828701613be9565b9350506020613fc386828701613be9565b9250506040613fd486828701613be9565b9150509250925092565b60008060408385031215613ff557613ff4615bf9565b5b600061400385828601613bd4565b925050602061401485828601613bd4565b9150509250929050565b60008060008060006060868803121561403a57614039615bf9565b5b600061404888828901613bd4565b955050602086013567ffffffffffffffff81111561406957614068615bef565b5b61407588828901613d84565b9450945050604086013567ffffffffffffffff81111561409857614097615bef565b5b6140a488828901613bfe565b92509250509295509295909350565b600080604083850312156140ca576140c9615bf9565b5b60006140d885828601613bd4565b92505060206140e985828601613f1f565b9150509250929050565b6000806040838503121561410a57614109615bf9565b5b600061411885828601613bd4565b925050602061412985828601613f34565b9150509250929050565b60008060008060006080868803121561414f5761414e615bf9565b5b600061415d88828901613bd4565b955050602061416e88828901613f34565b945050604086013567ffffffffffffffff81111561418f5761418e615bef565b5b61419b88828901613e19565b935093505060606141ae88828901613ef5565b9150509295509295909350565b600080600080600080600060c0888a0312156141da576141d9615bf9565b5b60006141e88a828b01613bd4565b97505060206141f98a828b01613f34565b965050604088013567ffffffffffffffff81111561421a57614219615bef565b5b6142268a828b01613e19565b955095505060606142398a828b01613ef5565b935050608061424a8a828b01613f1f565b92505060a061425b8a828b01613dda565b91505092959891949750929550565b6000602082840312156142805761427f615bf9565b5b600061428e84828501613dda565b91505092915050565b6000602082840312156142ad576142ac615bf9565b5b60006142bb84828501613def565b91505092915050565b600080604083850312156142db576142da615bf9565b5b60006142e985828601613def565b925050602083015167ffffffffffffffff81111561430a57614309615bef565b5b61431685828601613e9d565b9150509250929050565b60006020828403121561433657614335615bf9565b5b600082013567ffffffffffffffff81111561435457614353615bef565b5b61436084828501613e6f565b91505092915050565b60006020828403121561437f5761437e615bf9565b5b600061438d84828501613f1f565b91505092915050565b600080604083850312156143ad576143ac615bf9565b5b60006143bb85828601613f1f565b92505060206143cc85828601613bd4565b9150509250929050565b6000806000606084860312156143ef576143ee615bf9565b5b60006143fd86828701613f1f565b935050602061440e86828701613bd4565b925050604061441f86828701613e04565b9150509250925092565b60008060008060008060008060008060006101008c8e03121561444f5761444e615bf9565b5b600061445d8e828f01613f1f565b9b5050602061446e8e828f01613bd4565b9a5050604061447f8e828f01613e04565b99505060608c013567ffffffffffffffff8111156144a05761449f615bef565b5b6144ac8e828f01613bfe565b985098505060808c013567ffffffffffffffff8111156144cf576144ce615bef565b5b6144db8e828f01613d2e565b965096505060a08c013567ffffffffffffffff8111156144fe576144fd615bef565b5b61450a8e828f01613cd8565b945094505060c08c013567ffffffffffffffff81111561452d5761452c615bef565b5b6145398e828f01613caa565b92505060e061454a8e828f01613ee0565b9150509295989b509295989b9093969950565b6000806000806080858703121561457757614576615bf9565b5b600061458587828801613f1f565b945050602061459687828801613bd4565b93505060406145a787828801613e04565b92505060606145b887828801613ee0565b91505092959194509250565b600080600080600080600060c0888a0312156145e3576145e2615bf9565b5b60006145f18a828b01613f1f565b97505060206146028a828b01613bd4565b96505060406146138a828b01613e04565b95505060606146248a828b01613f34565b94505060806146358a828b01613f0a565b93505060a088013567ffffffffffffffff81111561465657614655615bef565b5b6146628a828b01613c54565b925092505092959891949750929550565b60008060008060008060008060e0898b03121561469357614692615bf9565b5b60006146a18b828c01613f1f565b98505060206146b28b828c01613bd4565b97505060406146c38b828c01613e04565b96505060606146d48b828c01613f34565b95505060806146e58b828c01613f0a565b94505060a06146f68b828c01613ecb565b93505060c089013567ffffffffffffffff81111561471757614716615bef565b5b6147238b828c01613e19565b92509250509295985092959890939650565b6000806000806080858703121561474f5761474e615bf9565b5b600061475d87828801613f1f565b945050602061476e87828801613bd4565b935050604061477f87828801613e04565b925050606061479087828801613f49565b91505092959194509250565b6000806000606084860312156147b5576147b4615bf9565b5b60006147c386828701613f1f565b93505060206147d486828701613bd4565b92505060406147e586828701613ee0565b9150509250925092565b60006147fb83836148b8565b60208301905092915050565b60006148138383614bff565b60208301905092915050565b600061482b8383614c1d565b60208301905092915050565b6000614844848484614c86565b90509392505050565b60006148598383614cec565b905092915050565b600061486d8383614d34565b60208301905092915050565b60006148858383614d7f565b60208301905092915050565b600061489d8383614ebc565b60208301905092915050565b6148b2816158dd565b82525050565b6148c1816158cb565b82525050565b6148d0816158cb565b82525050565b6148df816158cb565b82525050565b60006148f0826156d5565b6148fa8185615751565b935061490583615683565b8060005b8381101561493657815161491d88826147ef565b9750614928836156f6565b925050600181019050614909565b5085935050505092915050565b600061494f8385615762565b935061495a82615693565b8060005b8581101561499357614970828461580c565b61497a8882614807565b975061498583615703565b92505060018101905061495e565b5085925050509392505050565b60006149ac8385615773565b93506149b782615693565b8060005b858110156149f0576149cd828461580c565b6149d7888261481f565b97506149e283615703565b9250506001810190506149bb565b5085925050509392505050565b6000614a098385615784565b935083602084028501614a1b8461569d565b8060005b87811015614a61578484038952614a368284615823565b614a41868284614837565b9550614a4c84615710565b935060208b019a505050600181019050614a1f565b50829750879450505050509392505050565b6000614a7e826156e0565b614a888185615784565b935083602082028501614a9a856156a7565b8060005b85811015614ad65784840389528151614ab7858261484d565b9450614ac28361571d565b925060208a01995050600181019050614a9e565b50829750879550505050505092915050565b6000614af48385615795565b9350614aff826156b7565b8060005b85811015614b3857614b158284615886565b614b1f8882614861565b9750614b2a8361572a565b925050600181019050614b03565b5085925050509392505050565b6000614b5183856157a6565b9350614b5c826156c1565b8060005b85811015614b9557614b72828461589d565b614b7c8882614879565b9750614b8783615737565b925050600181019050614b60565b5085925050509392505050565b6000614bae83856157b7565b9350614bb9826156cb565b8060005b85811015614bf257614bcf82846158b4565b614bd98882614891565b9750614be483615744565b925050600181019050614bbd565b5085925050509392505050565b614c08816158ef565b82525050565b614c17816158ef565b82525050565b614c26816158ef565b82525050565b614c35816158fb565b82525050565b614c4481615905565b82525050565b614c5381615905565b82525050565b6000614c6583856157d9565b9350614c72838584615a2e565b614c7b83615bfe565b840190509392505050565b6000614c9283856157ea565b9350614c9f838584615a2e565b614ca883615bfe565b840190509392505050565b6000614cbe826156eb565b614cc881856157c8565b9350614cd8818560208601615a3d565b614ce181615bfe565b840191505092915050565b6000614cf7826156eb565b614d0181856157ea565b9350614d11818560208601615a3d565b614d1a81615bfe565b840191505092915050565b614d2e816159c2565b82525050565b614d3d816159c2565b82525050565b614d4c816159d4565b82525050565b614d5b816159e6565b82525050565b614d6a816159e6565b82525050565b614d79816159f8565b82525050565b614d88816159f8565b82525050565b614d9781615a0a565b82525050565b6000614daa6017836157fb565b9150614db582615c0f565b602082019050919050565b6000614dcd6026836157fb565b9150614dd882615c38565b604082019050919050565b6000614df0602e836157fb565b9150614dfb82615c87565b604082019050919050565b6000614e136020836157fb565b9150614e1e82615cd6565b602082019050919050565b6000614e366015836157fb565b9150614e4182615cff565b602082019050919050565b6000614e596020836157fb565b9150614e6482615d28565b602082019050919050565b6000614e7c6016836157fb565b9150614e8782615d51565b602082019050919050565b6000614e9f600e836157fb565b9150614eaa82615d7a565b602082019050919050565b8082525050565b614ec58161597d565b82525050565b614ed48161597d565b82525050565b614ee38161597d565b82525050565b614ef2816159ab565b82525050565b614f01816159ab565b82525050565b614f1081615a1c565b82525050565b6000602082019050614f2b60008301846148c7565b92915050565b6000606082019050614f4660008301886148c7565b8181036020830152614f59818688614ba2565b90508181036040830152614f6e818486614943565b90509695505050505050565b6000604082019050614f8f60008301856148c7565b614f9c6020830184614ecb565b9392505050565b6000608082019050614fb860008301876148c7565b614fc56020830186614ee9565b8181036040830152614fd78185614cb3565b9050614fe66060830184614d52565b95945050505050565b600061016082019050615005600083018e6148c7565b615012602083018d614ee9565b8181036040830152615024818c614cb3565b9050615033606083018b614d52565b615040608083018a614d8e565b61504d60a0830189614d8e565b61505a60c0830188614d8e565b61506760e08301876148c7565b6150756101008301866148a9565b8181036101208301526150888185614cb3565b90506150986101408301846148c7565b9c9b505050505050505050505050565b600060408201905081810360008301526150c281856148e5565b90506150d160208301846148c7565b9392505050565b60006020820190506150ed6000830184614c0e565b92915050565b60006040820190506151086000830185614c0e565b818103602083015261511a8184614cb3565b90509392505050565b60006040820190506151386000830185614c2c565b6151456020830184614c0e565b9392505050565b60006020820190506151616000830184614c3b565b92915050565b6000602082019050818103600083015261518081614d9d565b9050919050565b600060208201905081810360008301526151a081614dc0565b9050919050565b600060208201905081810360008301526151c081614de3565b9050919050565b600060208201905081810360008301526151e081614e06565b9050919050565b6000602082019050818103600083015261520081614e29565b9050919050565b6000602082019050818103600083015261522081614e4c565b9050919050565b6000602082019050818103600083015261524081614e6f565b9050919050565b6000602082019050818103600083015261526081614e92565b9050919050565b600060c08201905061527c600083018a614eb5565b61528960208301896148d6565b61529660408301886148d6565b6152a36060830187614ef8565b81810360808301526152b6818587614c59565b90506152c560a0830184614d61565b98975050505050505050565b60006060820190506152e66000830186614eb5565b6152f36020830185614eda565b61530060408301846148d6565b949350505050565b600060808201905061531d6000830187614eb5565b61532a6020830186614eda565b61533760408301856148d6565b6153446060830184614c4a565b95945050505050565b600061012082019050615363600083018f614eb5565b615370602083018e614eda565b61537d604083018d6148d6565b61538a606083018c614c4a565b818103608083015261539d818a8c6149a0565b905081810360a08301526153b281888a614b45565b905081810360c08301526153c7818688614ae8565b905081810360e08301526153db8185614a73565b90506153eb610100830184614d43565b9d9c50505050505050505050505050565b600060a0820190506154116000830188614eb5565b61541e6020830187614eda565b61542b60408301866148d6565b6154386060830185614c4a565b6154456080830184614d43565b9695505050505050565b600060e082019050615464600083018b614eb5565b615471602083018a614eda565b61547e60408301896148d6565b61548b6060830188614c4a565b6154986080830187614ef8565b6154a560a0830186614d70565b81810360c08301526154b88184866149fd565b90509998505050505050505050565b6000610100820190506154dd600083018c614eb5565b6154ea602083018b614eda565b6154f7604083018a6148d6565b6155046060830189614c4a565b6155116080830188614ef8565b61551e60a0830187614d70565b61552b60c0830186614d25565b81810360e083015261553e818486614c59565b90509a9950505050505050505050565b600060a0820190506155636000830188614eb5565b6155706020830187614eda565b61557d60408301866148d6565b61558a6060830185614c4a565b6155976080830184614f07565b9695505050505050565b60006080820190506155b66000830187614eb5565b6155c36020830186614eda565b6155d060408301856148d6565b6155dd6060830184614d43565b95945050505050565b60006020820190506155fb6000830184614ecb565b92915050565b600061560b61561c565b90506156178282615a70565b919050565b6000604051905090565b600067ffffffffffffffff82111561564157615640615ba2565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561566d5761566c615ba2565b5b61567682615bfe565b9050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050919050565b6000819050602082019050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061581b6020840184613dda565b905092915050565b600080833560016020038436030381126158405761583f615bf4565b5b83810192508235915060208301925067ffffffffffffffff82111561586857615867615bd1565b5b60018202360384131561587e5761587d615be0565b5b509250929050565b60006158956020840184613ecb565b905092915050565b60006158ac6020840184613f0a565b905092915050565b60006158c36020840184613f1f565b905092915050565b60006158d68261598b565b9050919050565b60006158e88261598b565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061593f82615da3565b919050565b600081905061595282615db7565b919050565b600081905061596582615dcb565b919050565b600081905061597882615ddf565b919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006159cd82615931565b9050919050565b60006159df82615944565b9050919050565b60006159f182615957565b9050919050565b6000615a038261596a565b9050919050565b6000615a15826159ab565b9050919050565b6000615a27826159b5565b9050919050565b82818337600083830152505050565b60005b83811015615a5b578082015181840152602081019050615a40565b83811115615a6a576000848401525b50505050565b615a7982615bfe565b810181811067ffffffffffffffff82111715615a9857615a97615ba2565b5b80604052505050565b6000615aac8261597d565b915061ffff821415615ac157615ac0615b15565b5b600182019050919050565b6000615ad7826159ab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615b0a57615b09615b15565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4d6f64756c6520616c72656164792064697361626c6564000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6f64756c65206e6f7420617574686f72697a65640000000000000000000000600082015250565b7f477561726420646f6573206e6f7420696d706c656d656e742049455243313635600082015250565b7f4d6f64756c6520616c726561647920656e61626c656400000000000000000000600082015250565b7f496e76616c6964206d6f64756c65000000000000000000000000000000000000600082015250565b60048110615db457615db3615b44565b5b50565b60048110615dc857615dc7615b44565b5b50565b60028110615ddc57615ddb615b44565b5b50565b60038110615df057615def615b44565b5b50565b615dfc816158cb565b8114615e0757600080fd5b50565b615e13816158dd565b8114615e1e57600080fd5b50565b615e2a816158ef565b8114615e3557600080fd5b50565b615e4181615905565b8114615e4c57600080fd5b50565b60048110615e5c57600080fd5b50565b60048110615e6c57600080fd5b50565b60028110615e7c57600080fd5b50565b60038110615e8c57600080fd5b50565b615e988161597d565b8114615ea357600080fd5b50565b615eaf816159ab565b8114615eba57600080fd5b50565b615ec6816159b5565b8114615ed157600080fd5b5056fea26469706673582212201b02673520ea9284b2f57287bb54a9784eae9a7d7b2ce9eb5f58478be826f60064736f6c63430008060033000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"; diff --git a/sdk/initData/RolesV2.ts b/sdk/initData/RolesV2.ts new file mode 100644 index 00000000..339c5ad8 --- /dev/null +++ b/sdk/initData/RolesV2.ts @@ -0,0 +1,4 @@ +export const salt = + "0x0000000000000000000000000000000000000000000000000000000000000000"; +export const initCode = + "0x608060405234801562000010575f80fd5b506040516200630a3803806200630a83398101604081905262000033916200035a565b604080516001600160a01b038581166020830152848116828401528316606080830191909152825180830390910181526080909101909152620000768162000080565b50505050620003ab565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f81158015620000ca5750825b90505f826001600160401b03166001148015620000e65750303b155b905081158015620000f5575080155b15620001145760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156200014357845460ff60401b1916680100000000000000001785555b5f805f888060200190518101906200015c91906200035a565b919450925090506200016e8362000240565b5f80546001600160a01b038085166001600160a01b0319928316179092556001805492841692909116919091179055620001a7620002b0565b6040516001600160a01b038281168252808416919085169033907f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d9060200160405180910390a450505083156200023857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b60015f5260036020527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c546001600160a01b031615620003035760405163dfd49ebd60e01b815260040160405180910390fd5b60015f81905260036020527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c80546001600160a01b0319169091179055565b6001600160a01b038116811462000357575f80fd5b50565b5f805f606084860312156200036d575f80fd5b83516200037a8162000342565b60208501519093506200038d8162000342565b6040850151909250620003a08162000342565b809150509250925092565b615f5180620003b95f395ff3fe608060405234801561000f575f80fd5b50600436106101ab575f3560e01c80637508dd98116100eb578063b3dd25c71161008f578063b3dd25c71461044a578063c6fe87471461045d578063cc2f845214610470578063d4b8399214610491578063d8afba76146104a4578063e009cfde146104b7578063e29dfba8146104ca578063f2fde38b146104f7575f80fd5b80637508dd98146103bd578063776d1a01146103d05780637b0da5b2146103e35780638da5cb5b146103f6578063946d364e146103fe578063957ed2b314610411578063a4f9edbf14610424578063a8ec43ee14610437575f80fd5b8063468721a711610152578063468721a7146102ac5780635229073f146102bf5780635aef7de6146102d25780635e7c9fe8146102e4578063610b59251461037c57806366523f7d1461038f57806369ecc3cf146103a2578063715018a6146103b5575f80fd5b80630172a43a146101af578063086cfca8146101c45780630c6c76b8146101d75780632916a9af146101ea5780632959513c146101fd5780632b99e5061461023b5780632d3c25471461025c5780632d9ad53d14610289575b5f80fd5b6101c26101bd366004614d45565b61050a565b005b6101c26101d2366004614d73565b6105e0565b6101c26101e5366004614d45565b610637565b6101c26101f8366004614da5565b61070b565b61022561020b366004614deb565b60066020525f90815260409020546001600160a01b031681565b6040516102329190614e02565b60405180910390f35b61024e610249366004614e6c565b6107b0565b604051610232929190614f42565b61027b61026a366004614d73565b60076020525f908152604090205481565b604051908152602001610232565b61029c610297366004614d73565b610854565b6040519015158152602001610232565b61029c6102ba366004614f5c565b61088d565b61024e6102cd366004614f5c565b61090f565b5f54610225906001600160a01b031681565b61033d6102f2366004614deb565b60056020525f9081526040902080546001909101546001600160801b0380831692600160801b90048116916001600160401b0380821692600160401b83041691600160c01b90041685565b604080516001600160801b03968716815294861660208601526001600160401b039384169085015293166060830152909116608082015260a001610232565b6101c261038a366004614d73565b610998565b6101c261039d366004614fca565b610aa7565b6101c26103b0366004614deb565b610b31565b6101c2610b83565b6101c26103cb366004615140565b610b96565b6101c26103de366004614d73565b610c69565b6101c26103f13660046152b3565b610cc2565b610225610d9d565b6101c261040c3660046152e5565b610dcb565b6101c261041f36600461534f565b610e23565b6101c26104323660046153cb565b610f38565b6101c2610445366004615428565b6110f1565b6101c2610458366004615491565b6112ea565b61029c61046b366004614e6c565b61136a565b61048361047e3660046152e5565b611408565b6040516102329291906154dd565b600154610225906001600160a01b031681565b61027b6104b2366004615539565b611598565b6101c26104c5366004615580565b6116b6565b61029c6104d83660046152e5565b600260209081525f928352604080842090915290825290205460ff1681565b6101c2610505366004614d73565b6117ad565b6105126117ea565b6040805180820182525f8082526020808301829052858252600481528382206001600160a01b0386168352600190810190915292902081518154929391929091839160ff19169083600281111561056b5761056b6155ac565b021790555060208201518154829061ff001916610100836003811115610593576105936155ac565b021790555050604080518481526001600160a01b03841660208201527f3ccf62aacc3286173cedf5c20ec550071636a2faf0a3b28d93841736a43f822b9250015b60405180910390a15050565b6105e86117ea565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce3429190a35050565b61063f6117ea565b6040805180820190915280600281526020015f90525f8381526004602090815260408083206001600160a01b038616845260019081019092529091208251815491929091839160ff199091169083600281111561069e5761069e6155ac565b021790555060208201518154829061ff0019166101008360038111156106c6576106c66155ac565b021790555050604080518481526001600160a01b03841660208201527f277465b84f512b759d745fab70327b693ee21ce592fca91a3f491739a25fa76a9250016105d4565b6107136117ea565b60a082901c63ffffffff60401b16606084811b6001600160601b031916919091175f9081526006602090815260409182902080546001600160a01b0319166001600160a01b03868116918217909255835191881682526001600160e01b0319871692820192909252918201527f1330d96b64c7e86736f77e027ca34223dd3d1d08049281281c9d597d8098ed5991015b60405180910390a1505050565b5f60605f6107c2858b8b8b8b8b61181c565b90506107cd81611a77565b61080f8a8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c9250611bd0915050565b909350915083801561081f575082155b1561083d5760405163d27b44a960e01b815260040160405180910390fd5b6108478184611c5a565b5097509795505050505050565b5f60016001600160a01b0383161480159061088757506001600160a01b038281165f908152600360205260409020541615155b92915050565b335f9081526007602052604081205481906108ac90888888888861181c565b90506108b781611a77565b6108f9878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250899250611d46915050565b91506109058183611c5a565b5095945050505050565b335f90815260076020526040812054606090829061093190898989898961181c565b905061093c81611a77565b61097e888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a9250611bd0915050565b909350915061098d8184611c5a565b509550959350505050565b6109a06117ea565b6001600160a01b03811615806109bf57506001600160a01b0381166001145b156109e85780604051635c93ff2f60e11b81526004016109df9190614e02565b60405180910390fd5b6001600160a01b038181165f908152600360205260409020541615610a225780604051632061897360e01b81526004016109df9190614e02565b60036020525f80516020615efc83398151915280546001600160a01b038381165f81815260408082208054949095166001600160a01b03199485161790945560019052835490911617909155517fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844090610a9c908390614e02565b60405180910390a150565b610aaf6117ea565b5f83815260046020526040812060020190610aca8484611dc7565b81526020019081526020015f205f90557f32a3a599b308fc900a0e6513db2ad40bf0c94367da90048a4b308d8c6b2dd6ea8383836040516107a3939291909283526001600160a01b039190911660208301526001600160e01b031916604082015260600190565b335f908152600260209081526040808320848452825291829020805460ff1916600117905590518281527f89a77869d7b8125ba16e08a92ddc8cc26fb1fa47241971167954489a5e66c2559101610a9c565b610b8b6117ea565b610b945f611de7565b565b610b9e6117ea565b60405163783a904760e01b8152736a6Af4b16458Bc39817e4019fB02BD3b26d410499063783a904790610bd59085906004016155e4565b5f6040518083038186803b158015610beb575f80fd5b505af4158015610bfd573d5f803e3d5ffd5b5050505f868152600460205260409020610c239150610c1c8686611dc7565b8484611e57565b7f4f6c340456f64db31a3d003c1224ba1de058557b1cdf71f21ae48ce4a4f64f528585858585604051610c5a959493929190615691565b60405180910390a15050505050565b610c716117ea565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d6905f90a35050565b610cca6117ea565b604080518082019091528060018152602001826003811115610cee57610cee6155ac565b90525f8481526004602090815260408083206001600160a01b038716845260019081019092529091208251815491929091839160ff1990911690836002811115610d3a57610d3a6155ac565b021790555060208201518154829061ff001916610100836003811115610d6257610d626155ac565b02179055509050507f05e4ec9b54e94ad676ef61d57214f6d57d752ed2022dea5e5f956d5df7ccb2508383836040516107a39392919061575d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b610dd36117ea565b6001600160a01b0382165f81815260076020908152604091829020849055815192835282018390527f60c85b61661a191efceebca036d48b290e04a1f08dd96472b920adbdd50c64e891016105d4565b610e2b6117ea565b828114610e4b576040516374f4d53760e01b815260040160405180910390fd5b5f5b61ffff8116841115610eea5782828261ffff16818110610e6f57610e6f615780565b9050602002016020810190610e849190615794565b60045f87878561ffff16818110610e9d57610e9d615780565b602090810292909201358352508181019290925260409081015f9081206001600160a01b038b1682529092529020805460ff1916911515919091179055610ee3816157c3565b9050610e4d565b50610ef485610854565b610f0157610f0185610998565b7f9f8368fa4ddcbd561efd7ad2a2174235bf5b840a73fb18f20db9705c114624988585858585604051610c5a9594939291906157e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f7c5750825b90505f826001600160401b03166001148015610f975750303b155b905081158015610fa5575080155b15610fc35760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fed57845460ff60401b1916600160401b1785555b5f805f888060200190518101906110049190615872565b92509250925061101383611de7565b5f80546001600160a01b038085166001600160a01b031992831617909255600180549284169290911691909117905561104a611f06565b816001600160a01b0316836001600160a01b0316336001600160a01b03167f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d846040516110979190614e02565b60405180910390a450505083156110e957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050565b6110f96117ea565b836001600160801b03165f03611116576001600160801b03611118565b835b9350806001600160401b03165f036111305742611132565b805b90506040518060a00160405280846001600160801b03168152602001856001600160801b03168152602001836001600160401b03168152602001866001600160801b03168152602001826001600160401b031681525060055f8881526020019081526020015f205f820151815f015f6101000a8154816001600160801b0302191690836001600160801b031602179055506020820151815f0160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160086101000a8154816001600160801b0302191690836001600160801b0316021790555060808201518160010160186101000a8154816001600160401b0302191690836001600160401b031602179055509050507f63d7ec44a20b176da1d60d75259d264ee67b3d8213706afa71a28f69ed8ebece8686868686866040516110e0969594939291909586526001600160801b0394851660208701529284166040860152921660608401526001600160401b0391821660808401521660a082015260c00190565b6112f26117ea565b6112fb81611f71565b5f858152600460205260408120600201906113168686611dc7565b81526020019081526020015f20819055507f9603b65b11492fec54ccc3d9feb93536f804d82e12228187ff730a253fc283ee8484848460405161135c94939291906158b1565b60405180910390a150505050565b5f8061137a848a8a8a8a8a61181c565b905061138581611a77565b6113c7898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b9250611d46915050565b91508280156113d4575081155b156113f25760405163d27b44a960e01b815260040160405180910390fd5b6113fc8183611c5a565b50979650505050505050565b60605f6001600160a01b03841660011480159061142b575061142984610854565b155b1561144b5783604051635c93ff2f60e11b81526004016109df9190614e02565b825f0361146b576040516372dbed9760e11b815260040160405180910390fd5b826001600160401b0381111561148357611483614ffc565b6040519080825280602002602001820160405280156114ac578160200160208202803683370190505b506001600160a01b038086165f90815260036020526040812054929450911691505b6001600160a01b038216158015906114f057506001600160a01b038216600114155b80156114fb57508381105b15611555578183828151811061151357611513615780565b6001600160a01b039283166020918202929092018101919091529281165f9081526003909352604090922054909116908061154d816158e4565b9150506114ce565b6001600160a01b03821660011461158d57826115726001836158fc565b8151811061158257611582615780565b602002602001015191505b808352509250929050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218602082015246918101919091523060608201525f9081906080016040516020818303038152906040528051906020012090505f601960f81b600160f81b837f2939aeeda3ca260200c9f7b436b19e13207547ccc65cfedc857751c5ea6d91d45f1b898960405161162e92919061590f565b6040805191829003822060208301939093528101919091526060810188905260800160408051808303601f190181529082905280516020918201206001600160f81b0319958616918301919091529290931660218401526022830152604282015260620160408051601f198184030181529190528051602090910120925050505b9392505050565b6116be6117ea565b6001600160a01b03811615806116dd57506001600160a01b0381166001145b156116fd5780604051635c93ff2f60e11b81526004016109df9190614e02565b6001600160a01b038281165f9081526003602052604090205481169082161461173b5780604051638b4189ff60e01b81526004016109df9190614e02565b6001600160a01b038181165f81815260036020526040808220805487861684528284208054919096166001600160a01b0319918216179095559290915281549092169055517faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace4054276906105d4908390614e02565b6117b56117ea565b6001600160a01b0381166117de575f604051631e4fbdf760e01b81526004016109df9190614e02565b6117e781611de7565b50565b336117f3610d9d565b6001600160a01b031614610b94573360405163118cdaa760e01b81526004016109df9190614e02565b335f908152600360205260409020546060906001600160a01b031661192c575f80611845611f94565b6001600160a01b038082165f90815260036020526040902054929450909250166118845733604051634a0bfec160e01b81526004016109df9190614e02565b6001600160a01b0381165f90815260026020908152604080832085845290915290205460ff16156118cb57604051639e1dc0c560e01b8152600481018390526024016109df565b6001600160a01b0381165f908152600260209081526040808320858452825291829020805460ff1916600117905590518381527f8c8e19e7e8e193118a05465d7676e82215052d3cb150628fbf598105dc2bb6ab910160405180910390a150505b5f87900361194d57604051631fb1d3e560e31b815260040160405180910390fd5b5f8781526004602052604081209081906119656120ef565b6001600160a01b0316815260208101919091526040015f205460ff1661199e57604051631fb1d3e560e31b815260040160405180910390fd5b5f6119e4886119ad878961591e565b60a01c63ffffffff60401b1660609190911b6001600160601b031916175f908152600660205260409020546001600160a01b031690565b90505f6119ef614ce1565b6001600160a01b038316611a1957611a0f848b8b8b8b8b875f015161214a565b9092509050611a2e565b611a2883858c8c8c8c8c612398565b90925090505b5f826013811115611a4157611a416155ac565b14611a66576020810151604051631a1537eb60e31b81526109df91849160040161594e565b5193505050505b9695505050505050565b80515f5b81811015611bcb575f838281518110611a9657611a96615780565b60209081029190910181015180516040808301515f83815260058652828120835160a08101855281546001600160801b038082168352600160801b90910481169882019890985260018201546001600160401b0380821696830196909652600160401b81049098166060820152600160c01b90970490931660808701529395509193919290918190611b2890426124dd565b9150915085602001516001600160801b0316826001600160801b031614611b5157611b5161596c565b816001600160801b0316846001600160801b03161115611b7357611b7361596c565b611b7d8483615980565b600193840180546001600160401b03938416600160c01b026001600160c01b036001600160801b0394909416600160401b029390931693169290921717905550939093019250611a7b915050565b505050565b600154604051635229073f60e01b81525f916060916001600160a01b0390911690635229073f90611c0b9089908990899089906004016159b0565b5f604051808303815f875af1158015611c26573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c4d9190810190615a27565b9150915094509492505050565b81515f5b81811015611d40575f848281518110611c7957611c79615780565b602002602001015190505f815f015190508415611cf657604082015160208301517f90355d540c2980efb4c360996dfc5405ee87e812e4f3db843857547cbdb5af65918391611cc9908290615980565b604080519384526001600160801b03928316602085015291169082015260600160405180910390a1611d36565b6020808301515f8381526005909252604090912060010180546001600160801b03909216600160401b02600160401b600160c01b03199092169190911790555b5050600101611c5e565b50505050565b60015460405163468721a760e01b81525f916001600160a01b03169063468721a790611d7c9088908890889088906004016159b0565b6020604051808303815f875af1158015611d98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dbc9190615a6a565b90505b949350505050565b60a01c63ffffffff60401b1660609190911b6001600160601b0319161790565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b604051634031b16960e11b81525f907361C5B1bE435391fDd7BC6703F3740C0d11728a8C9063806362d290611e909086906004016155e4565b5f60405180830381865af4158015611eaa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ed19190810190615a85565b90505f611edd82612600565b9050611eeb84518483612719565b5f958652600290960160205250506040909220929092555050565b60015f5260036020525f80516020615efc833981519152546001600160a01b031615611f455760405163dfd49ebd60e01b815260040160405180910390fd5b60015f81905260036020525f80516020615efc83398151915280546001600160a01b0319169091179055565b5f600160d81b60e0836003811115611f8b57611f8b6155ac565b901b1792915050565b5f8080366065811015611fac57505f93849350915050565b5f805f611fb9858561274a565b919450925090505f611fcc6061866158fc565b90505f611fdb8683818a615ab6565b611fe491615add565b90508460ff165f0361206a57826004811080611fff57508281115b1561201557505f998a9950975050505050505050565b845f61202c61202684838c8e615ab6565b86611598565b905061204a82828c8c87908a9261204593929190615ab6565b6127c0565b612055575f80612058565b80825b9b509b50505050505050505050509091565b5f61208061207a84838a8c615ab6565b84611598565b604080515f81526020810180835283905260ff8916918101919091526060810187905260808101869052909150819060019060a0016020604051602081039080840390855afa1580156120d5573d5f803e3d5ffd5b505050602060405103519950995050505050505050509091565b335f908152600360205260408120546001600160a01b03161561211157503390565b5f61211a611f94565b6001600160a01b038082165f908152600360205260409020549193501615905061214357919050565b5f91505090565b5f612153614ce1565b84158015906121625750600485105b1561218057604051632342609160e11b815260040160405180910390fd5b60026001600160a01b0389165f90815260018b01602052604090205460ff1660028111156121b0576121b06155ac565b036122f2575f6121c9896121c4888a61591e565b611dc7565b5f81815260028c01602052604081205491925081900361221b57600360405180604001604052808781526020018a8a90612203919061591e565b6001600160e01b03191681525093509350505061238c565b5f80612226836128a2565b915091505f6122368c8a846128cc565b90505f81601381111561224b5761224b6155ac565b1461227257604080518082019091528881525f6020820152909650945061238c9350505050565b821561229e575f60405180604001604052808a81526020015f801b81525096509650505050505061238c565b505050506122e88a82898960405180608001604052808f6001600160a01b031681526020018e81526020018a81526020018b60018111156122e1576122e16155ac565b9052612980565b925092505061238c565b60016001600160a01b0389165f90815260018b01602052604090205460ff166002811115612322576123226155ac565b03612373576001600160a01b0388165f90815260018a0160205260409020546123569088908690610100900460ff166128cc565b604080518082019091528481525f6020820152909250905061238c565b5050604080518082019091528181525f60208201526002905b97509795505050505050565b5f6123a1614ce1565b60405163c7a7b63560e01b81526001600160a01b038a169063c7a7b635906123d5908a908a908a908a908a90600401615b22565b5f60405180830381865afa92505050801561241157506040513d5f823e601f3d908101601f1916820160405261240e9190810190615b58565b60015b61242e576040516315e649e960e01b815260040160405180910390fd5b5f5b81518110156124cf575f82828151811061244c5761244c615780565b602002602001015190505f816060015190505f82608001518261246f9190615c29565b905061249a8d846020015185604001518d8d8790879261249193929190615ab6565b88518c5161214a565b90975095505f8760138111156124b2576124b26155ac565b146124c157505050505061238c565b836001019350505050612430565b505097509795505050505050565b5f8083604001516001600160401b03165f148061251e5750836040015184608001516125099190615c3c565b6001600160401b0316836001600160401b0316105b15612534575050606082015160808301516125f9565b5f846040015185608001518561254a9190615c5c565b6125549190615c90565b905084602001516001600160801b031685606001516001600160801b031610156125cf57845161258e906001600160401b03831690615cb5565b856060015161259d9190615cd8565b925084602001516001600160801b0316836001600160801b0316106125c65784602001516125c8565b825b92506125d7565b846060015192505b60408501516125e69082615cf8565b85608001516125f59190615c3c565b9150505b9250929050565b5f8061260b836129eb565b905061266d818051602091820120604080516001600160f81b03198185015273ce0042b868300000d44a59004da54a005ffdcf9f60601b60218201525f6035820152605580820193909352815180820390930183526075019052805191012090565b9150813b5f8190036127125760405163257b1f8160e11b815273ce0042b868300000d44a59004da54a005ffdcf9f90634af63f02906126b29085905f90600401615d1b565b6020604051808303815f875af11580156126ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f29190615d3c565b6001600160a01b0316836001600160a01b0316146127125761271261596c565b5050919050565b5f6001600160a01b03821660e0846003811115612738576127386155ac565b60f087901b911b171790509392505050565b5f8080848461275a6001826158fc565b612765928290615ab6565b61276e91615d57565b60f81c925084846127806041826158fc565b61278b928290615ab6565b61279491615add565b915084846127a36021826158fc565b6127ae928290615ab6565b6127b791615add565b90509250925092565b5f843b8082036127d3575f915050611dbf565b5f866001600160a01b0316631626ba7e60e01b8787876040516024016127fb93929190615d85565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516128399190615d9e565b5f60405180830381855afa9150503d805f8114612871576040519150601f19603f3d011682016040523d82523d5f602084013e612876565b606091505b509150630b135d3f60e11b905061288c82615db9565b6001600160e01b03191614979650505050505050565b600160d81b811615155f60e083901c60ff1660038111156128c5576128c56155ac565b9050915091565b5f80841180156128ee575060018260038111156128eb576128eb6155ac565b14155b801561290c57506003826003811115612909576129096155ac565b14155b15612919575060046116af565b600183600181111561292d5761292d6155ac565b14801561294c57506002826003811115612949576129496155ac565b14155b801561296a57506003826003811115612967576129676155ac565b14155b15612977575060016116af565b505f9392505050565b5f612989614ce1565b5f806129958989612a23565b915091505f6129a5888885612bea565b90505f866040015151116129b957816129c7565b6129c7866040015183612c3f565b60408701526129d9888885848a612f65565b945094505050505b9550959350505050565b6060815160016129fb9190615c29565b82604051602001612a0d929190615df0565b6040516020818303038152906040529050919050565b612a4c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b5f82815260028401602052604081205460609160f082901c916001600160a01b031690612a788261320b565b90505f80612a868386613283565b915091505f805b8351811015612baa575f848281518110612aa957612aa9615780565b6020026020010151604001519050601c601f811115612aca57612aca6155ac565b81601f811115612adc57612adc6155ac565b10612af157612aea836158e4565b9250612ba1565b600f81601f811115612b0557612b056155ac565b03612ba1576010858381518110612b1e57612b1e615780565b602002602001015160400190601f811115612b3b57612b3b6155ac565b9081601f811115612b4e57612b4e6155ac565b9052505f54604051612b6c916001600160a01b031690602001614e02565b60405160208183030381529060405280519060200120848381518110612b9457612b94615780565b6020026020010181815250505b50600101612a8d565b50612bc08383612bb986613473565b5f8c6135b6565b875f8211612bce5787612bd9565b612bd984848461378c565b975097505050505050509250929050565b612c0c60405180606001604052805f81526020015f8152602001606081525090565b5f612c1683613972565b9050612c2d85856004848560200151515f88613afe565b505f8152602081019290925250919050565b606082515f03612c50575080610887565b81515f03612c5f575081610887565b81518351612c6d9190615c29565b6001600160401b03811115612c8457612c84614ffc565b604051908082528060200260200182016040528015612ccd57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181612ca25790505b5083519091505f5b81811015612dc357848181518110612cef57612cef615780565b60200260200101515f0151838281518110612d0c57612d0c615780565b60200260200101515f018181525050848181518110612d2d57612d2d615780565b602002602001015160200151838281518110612d4b57612d4b615780565b6020026020010151602001906001600160801b031690816001600160801b031681525050848181518110612d8157612d81615780565b602002602001015160400151838281518110612d9f57612d9f615780565b60209081029190910101516001600160801b03909116604090910152600101612cd5565b505f5b8351811015612f50575f80612df787878581518110612de757612de7615780565b60200260200101515f0151613ca9565b915091508015612e5a57858381518110612e1357612e13615780565b602002602001015160400151858381518110612e3157612e31615780565b6020026020010151604001818151612e499190615cd8565b6001600160801b0316905250612f46565b858381518110612e6c57612e6c615780565b60200260200101515f0151858581518110612e8957612e89615780565b60200260200101515f018181525050858381518110612eaa57612eaa615780565b602002602001015160200151858581518110612ec857612ec8615780565b6020026020010151602001906001600160801b031690816001600160801b031681525050858381518110612efe57612efe615780565b602002602001015160400151858581518110612f1c57612f1c615780565b60209081029190910101516001600160801b0390911660409091015283612f42816158e4565b9450505b5050600101612dc6565b508151811015612f5e578082525b5092915050565b5f612f6e614ce1565b6020850151601081601f811115612f8757612f876155ac565b10156130e1575f81601f811115612fa057612fa06155ac565b03612fc55750506040805180820182529083015181525f6020820181905291506129e1565b600581601f811115612fd957612fd96155ac565b03612ff557612feb8888888888613cfe565b92509250506129e1565b600181601f811115613009576130096155ac565b0361301b57612feb8888888888613e19565b600281601f81111561302f5761302f6155ac565b0361304157612feb8888888888613ee9565b600381601f811115613055576130556155ac565b0361306757612feb8888888888613f71565b600681601f81111561307b5761307b6155ac565b0361308d57612feb8888888888614019565b600781601f8111156130a1576130a16155ac565b036130b357612feb8888888888614110565b600881601f8111156130c7576130c76155ac565b146130d4576130d461596c565b612feb888888888861418f565b601281601f8111156130f5576130f56155ac565b11613127576131068888888861430a565b6040805180820182529086015181525f602082015290935091506129e19050565b601481601f81111561313b5761313b6155ac565b1161314c5761310688888888614411565b601581601f811115613160576131606155ac565b036131715761310688888888614493565b601681601f811115613185576131856155ac565b0361319757612feb888888888861456e565b601c81601f8111156131ab576131ab6155ac565b036131bd57612feb8888888888614653565b601d81601f8111156131d1576131d16155ac565b036131e057612feb868561468d565b601e81601f8111156131f4576131f46155ac565b146132015761320161596c565b612feb86856146d8565b6060813b6001811161321f5761321f61596c565b60015f61322c82846158fc565b9050806001600160401b0381111561324657613246614ffc565b6040519080825280601f01601f191660200182016040528015613270576020820181803683370190505b509350808260208601873c505050919050565b606080826001600160401b0381111561329e5761329e614ffc565b6040519080825280602002602001820160405280156132d757816020015b6132c4614cf8565b8152602001906001900390816132bc5790505b509150826001600160401b038111156132f2576132f2614ffc565b60405190808252806020026020018201604052801561331b578160200160208202803683370190505b5090505f60208161332d600287615e46565b613338906020615c29565b90505f5b8681101561346857878301519350613355600284615c29565b92505f8460f01c90505f87838151811061337157613371615780565b6020908102919091010151600883901c60ff1681529050600582901c60071660068111156133a1576133a16155ac565b816020019060068111156133b7576133b76155ac565b908160068111156133ca576133ca6155ac565b905250601f828116908111156133e2576133e26155ac565b8160400190601f8111156133f8576133f86155ac565b9081601f81111561340b5761340b6155ac565b90525060108160400151601f811115613426576134266155ac565b1061345e5789840151955061343c602085615c29565b93508587848151811061345157613451615780565b6020026020010181815250505b505060010161333c565b505050509250929050565b8051606090806134855761348561596c565b806001600160401b0381111561349d5761349d614ffc565b6040519080825280602002602001820160405280156134ef57816020015b6134dc60405180606001604052805f81526020015f81526020015f81525090565b8152602001906001900390816134bb5790505b5091505f19825f8151811061350657613506615780565b60209081029190910101515260015b81811015612712575f1983828151811061353157613531615780565b60200260200101515f0181815250505f8385838151811061355457613554615780565b60200260200101515f015160ff168151811061357257613572615780565b602002602001015190505f19815f01510361358b578181525b613596826001615c29565b6020820181905281516135a8916158fc565b604090910152600101613515565b5f8583815181106135c9576135c9615780565b602002602001015190508060200151825f019060068111156135ed576135ed6155ac565b90816006811115613600576136006155ac565b90525060408101516020830190601f81111561361e5761361e6155ac565b9081601f811115613631576136316155ac565b8152505084838151811061364757613647615780565b602002602001015182604001818152505083838151811061366a5761366a615780565b6020026020010151604001515f036136825750613785565b5f84848151811061369557613695615780565b60200260200101515f015190505f8585815181106136b5576136b5615780565b6020026020010151604001519050806001600160401b038111156136db576136db614ffc565b60405190808252806020026020018201604052801561373557816020015b6137226040805160808101909152805f81526020015f81525f6020820152606060409091015290565b8152602001906001900390816136f95790505b5060608501525f5b81811015613780576137788989896137558588615c29565b8960600151868151811061376b5761376b615780565b60200260200101516135b6565b60010161373d565b505050505b5050505050565b8251606090826001600160401b038111156137a9576137a9614ffc565b6040519080825280602002602001820160405280156137f257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816137c75790505b5091505f805b8281101561395c57601c87828151811061381457613814615780565b602002602001015160400151601f811115613831576138316155ac565b1061394c575f86828151811061384957613849615780565b602002602001015190505f61385e8683613ca9565b915050801561386e57505061394c565b8186858151811061388157613881615780565b602090810291909101810151919091525f83815260058252604090819020815160a08101835281546001600160801b038082168352600160801b9091048116948201949094526001909101546001600160401b0380821693830193909352600160401b81049093166060820152600160c01b90920416608082015261390690426124dd565b5086858151811061391957613919615780565b6020026020010151602001816001600160801b03166001600160801b0316815250508380613946906158e4565b94505050505b613955816158e4565b90506137f8565b5083811015613969578083525b50509392505050565b61397a614d20565b60018260200151601f811115613992576139926155ac565b101580156139b6575060038260200151601f8111156139b3576139b36155ac565b11155b156139f5575f826060015151116139cf576139cf61596c565b61088782606001515f815181106139e8576139e8615780565b6020026020010151613972565b815181906006811115613a0a57613a0a6155ac565b90816006811115613a1d57613a1d6155ac565b90525060608201515115613af9575f600483516006811115613a4157613a416155ac565b14613a5157826060015151613a54565b60015b9050806001600160401b03811115613a6e57613a6e614ffc565b604051908082528060200260200182016040528015613aa757816020015b613a94614d20565b815260200190600190039081613a8c5790505b5060208301525f5b8181101561271257613ad0846060015182815181106139e8576139e8615780565b83602001518281518110613ae657613ae6615780565b6020908102919091010152600101613aaf565b919050565b826001600160401b03811115613b1657613b16614ffc565b604051908082528060200260200182016040528015613b6957816020015b613b5660405180606001604052805f81526020015f8152602001606081525090565b815260200190600190039081613b345790505b5060408201525f8215613b9f57613b9c85602001515f81518110613b8f57613b8f615780565b6020026020010151614715565b90505b5f805b85811015613c9d5784613bcb57613bc887602001518281518110613b8f57613b8f615780565b92505b613c2a8a8a613bdd8d8d8d888a6147fb565b8a6020015189613bed5785613bef565b5f5b81518110613bff57613bff615780565b602002602001015188604001518681518110613c1d57613c1d615780565b6020026020010151614838565b5f84604001518281518110613c4157613c41615780565b602002602001015160200151905083613c6457613c5f816020615c29565b613c66565b805b85602001818151613c779190615c29565b90525083613c86576020613c88565b805b613c929084615c29565b925050600101613ba2565b50505050505050505050565b81515f908190815b81811015613cf15784868281518110613ccc57613ccc615780565b60200260200101515f015103613ce9579250600191506125f99050565b600101613cb1565b505f958695509350505050565b5f613d07614ce1565b60408084015182528401515160608601515114613d2757600a91506129e1565b5f5b856060015151811015613e0b57613dc4888888606001518481518110613d5157613d51615780565b602002602001015188604001518581518110613d6f57613d6f615780565b602002602001015160405180608001604052808a5f01516001600160a01b031681526020018a602001518152602001885f015181526020018a606001516001811115613dbd57613dbd6155ac565b9052612f65565b90935091505f836013811115613ddc57613ddc6155ac565b14613e035750604080518082018252908401518152602091820151918101919091526129e1565b600101613d29565b505f91509550959350505050565b5f613e22614ce1565b604083015181525f5b856060015151811015613e0b57613ea2888888606001518481518110613e5357613e53615780565b60200260200101518860405180608001604052808a5f01516001600160a01b031681526020018a602001518152602001885f015181526020018a606001516001811115613dbd57613dbd6155ac565b90935091505f836013811115613eba57613eba6155ac565b14613ee15750604080518082018252908401518152602091820151918101919091526129e1565b600101613e2b565b5f613ef2614ce1565b604083015181525f5b856060015151811015613f4e57613f23888888606001518481518110613e5357613e53615780565b90935091505f836013811115613f3b57613f3b6155ac565b03613f4657506129e1565b600101613efb565b50506040805180820182529201518252505f602082015260059590945092505050565b5f613f7a614ce1565b5f5b856060015151811015613ff657613fb3888888606001518481518110613fa457613fa4615780565b60200260200101518888612f65565b5092505f836013811115613fc957613fc96155ac565b03613fee5750506040805180820182529083015181525f6020820152600691506129e1565b600101613f7c565b50506040805180820182529201518252505f602082018190529590945092505050565b5f614022614ce1565b604083015181526060850151515f5b818110156140ec576140c0898989606001515f8151811061405457614054615780565b60200260200101518960400151858151811061407257614072615780565b602002602001015160405180608001604052808b5f01516001600160a01b031681526020018b602001518152602001895f015181526020018b606001516001811115613dbd57613dbd6155ac565b90945092505f8460138111156140d8576140d86155ac565b036140e45750506129e1565b600101614031565b5050604080518082018252930151835250505f6020820152600c9590945092505050565b5f614119614ce1565b604083015181525f5b846040015151811015613e0b5761414a888888606001515f81518110613d5157613d51615780565b90935091505f836013811115614162576141626155ac565b146141875750506040805180820182529083015181525f6020820152600b91506129e1565b600101614122565b5f614198614ce1565b60408084015182528401515115806141b95750846060015151846040015151115b156141c757600d91506129e1565b5f805b8560400151518110156142fb575f805b8860600151518110156142c0576001811b84165f036142b0575f8061427c8d8d8d60600151868151811061421057614210615780565b60200260200101518d60400151898151811061422e5761422e615780565b602002602001015160405180608001604052808f5f01516001600160a01b031681526020018f6020015181526020018d5f015181526020018f606001516001811115613dbd57613dbd6155ac565b90925090505f826013811115614294576142946155ac565b036142ad57955050600180821b949094179391506142c0565b50505b6142b9816158e4565b90506141da565b50806142ea5750506040805180820182529085015181525f6020820152600d935091506129e19050565b506142f4816158e4565b90506141ca565b505f9250509550959350505050565b602082015160408301515f919082601083601f81111561432c5761432c6155ac565b146143445761433f8888875f01516149d5565b61436e565b6143578888875f01518860200151614a0c565b60405161436592919061590f565b60405180910390205b9050601083601f811115614384576143846155ac565b1480156143915750818114155b156143a25760079350505050611dbf565b601183601f8111156143b6576143b66155ac565b1480156143c35750818111155b156143d45760089350505050611dbf565b601283601f8111156143e8576143e86155ac565b1480156143f55750818110155b156144065760099350505050611dbf565b5f9350505050611dbf565b6020820151604083015182515f929190839061443090899089906149d5565b9050601383601f811115614446576144466155ac565b1480156144535750818113155b156144645760089350505050611dbf565b601483601f811115614478576144786155ac565b1480156143f557508181126144065760099350505050611dbf565b60408201515f90816001855160068111156144b0576144b06155ac565b149050365f6144fc8989856144c65760206144c8565b5f5b89516144d79160ff1690615c29565b866144e35760206144e5565b5f5b60ff168a602001516144f791906158fc565b614a0c565b909250905060f084901c81811061451b57600e95505050505050611dbf565b6001600160881b0319601086901b8116608887901b82165f61453f8686818a615ab6565b61454891615add565b9050818382161461455a57600f61455c565b5f5b9e9d5050505050505050505050505050565b5f614577614ce1565b5f856040015160601c90505f86604001515f1c60a01b90505f80836001600160a01b031663b0acb980885f015189602001518e8e8c606001518e5f01518f602001518b6040518963ffffffff1660e01b81526004016145dd989796959493929190615e5d565b6040805180830381865afa1580156145f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061461b9190615ebc565b915091508161462b57601061462d565b5f5b604080518082018252980151885260208801919091529a95995094975050505050505050565b5f61465c614ce1565b5f61466b8888875f01516149d5565b5f1c905061467e81878660400151614a28565b92509250509550959350505050565b5f614696614ce1565b6146a98360200151858560400151614a28565b90925090505f8260138111156146c1576146c16155ac565b146146cd5760136146cf565b5f5b91509250929050565b5f6146e1614ce1565b6146f16001858560400151614a28565b90925090505f826013811115614709576147096155ac565b146146cd5760126146cf565b80515f90600181600681111561472d5761472d6155ac565b0361473b5750600192915050565b600281600681111561474f5761474f6155ac565b148061476c5750600481600681111561476a5761476a6155ac565b145b8061478857506005816006811115614786576147866155ac565b145b806147a4575060068160068111156147a2576147a26155ac565b145b156147b157505f92915050565b6020830151515f5b818110156147f0576147da85602001518281518110613b8f57613b8f615780565b6147e857505f949350505050565b6001016147b9565b506001949350505050565b5f806148078486615c29565b9050821561481657905061482f565b6148218787836149d5565b61482b9086615c29565b9150505b95945050505050565b8151600181600681111561484e5761484e6155ac565b0361485e576020828101526149cb565b6002816006811115614872576148726155ac565b0361489f5761488a6148858787876149d5565b614b5a565b614895906020615c29565b60208301526149cb565b60038160068111156148b3576148b36155ac565b036148d1576148cc868686868760200151515f88613afe565b6149cb565b60048160068111156148e5576148e56155ac565b036149295761490e86866148fa876020615c29565b866149068b8b8b6149d5565b600188613afe565b6020826020018181516149219190615c29565b9052506149cb565b600581600681111561493d5761493d6155ac565b148061495a57506006816006811115614958576149586155ac565b145b156149cb576149ac86866005846006811115614978576149786155ac565b14614983575f614986565b60045b60ff16614994886020615c29565b61499e9190615c29565b868760200151515f88613afe565b6149ba6148858787876149d5565b6149c5906020615c29565b60208301525b5091909152505050565b5f826149e2836020615c29565b1115614a0157604051631d098e2d60e21b815260040160405180910390fd5b509190910135919050565b365f858486614a1b8683615c29565b92611c4d93929190615ab6565b5f614a31614ce1565b5f80614a41858760400151613ca9565b9150915080614a5257614a5261596c565b848281518110614a6457614a64615780565b6020026020010151602001516001600160801b0316858381518110614a8b57614a8b615780565b6020026020010151604001516001600160801b031688614aab9190615c29565b1115614aef5760116040518060400160405280878152602001878581518110614ad657614ad6615780565b60200260200101515f0151815250935093505050614b52565b614af885614b88565b945086858381518110614b0d57614b0d615780565b6020026020010151604001818151614b259190615cd8565b6001600160801b031690525050604080518082019091528481525f6020820181905293509150614b529050565b935093915050565b5f60206001614b698483615c29565b614b7391906158fc565b614b7d9190615ee8565b610887906020615e46565b8051606090806001600160401b03811115614ba557614ba5614ffc565b604051908082528060200260200182016040528015614bee57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181614bc35790505b5091505f5b8181101561271257838181518110614c0d57614c0d615780565b60200260200101515f0151838281518110614c2a57614c2a615780565b60200260200101515f018181525050838181518110614c4b57614c4b615780565b602002602001015160200151838281518110614c6957614c69615780565b6020026020010151602001906001600160801b031690816001600160801b031681525050838181518110614c9f57614c9f615780565b602002602001015160400151838281518110614cbd57614cbd615780565b60209081029190910101516001600160801b03909116604090910152600101614bf3565b60408051808201909152606081525f602082015290565b60408051608081019091525f808252602082019081526020015f5b8152602001606081525090565b60408051808201909152805f614d13565b6001600160a01b03811681146117e7575f80fd5b5f8060408385031215614d56575f80fd5b823591506020830135614d6881614d31565b809150509250929050565b5f60208284031215614d83575f80fd5b81356116af81614d31565b80356001600160e01b031981168114613af9575f80fd5b5f805f60608486031215614db7575f80fd5b8335614dc281614d31565b9250614dd060208501614d8e565b91506040840135614de081614d31565b809150509250925092565b5f60208284031215614dfb575f80fd5b5035919050565b6001600160a01b0391909116815260200190565b5f8083601f840112614e26575f80fd5b5081356001600160401b03811115614e3c575f80fd5b6020830191508360208285010111156125f9575f80fd5b600281106117e7575f80fd5b80151581146117e7575f80fd5b5f805f805f805f60c0888a031215614e82575f80fd5b8735614e8d81614d31565b96506020880135955060408801356001600160401b03811115614eae575f80fd5b614eba8a828b01614e16565b9096509450506060880135614ece81614e53565b92506080880135915060a0880135614ee581614e5f565b8091505092959891949750929550565b5f5b83811015614f0f578181015183820152602001614ef7565b50505f910152565b5f8151808452614f2e816020860160208601614ef5565b601f01601f19169290920160200192915050565b8215158152604060208201525f611dbf6040830184614f17565b5f805f805f60808688031215614f70575f80fd5b8535614f7b81614d31565b94506020860135935060408601356001600160401b03811115614f9c575f80fd5b614fa888828901614e16565b9094509250506060860135614fbc81614e53565b809150509295509295909350565b5f805f60608486031215614fdc575f80fd5b833592506020840135614fee81614d31565b91506127b760408501614d8e565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561503257615032614ffc565b60405290565b60405160a081016001600160401b038111828210171561503257615032614ffc565b604051601f8201601f191681016001600160401b038111828210171561508257615082614ffc565b604052919050565b5f6001600160401b038211156150a2576150a2614ffc565b5060051b60200190565b803560208110613af9575f80fd5b5f6001600160401b038211156150d2576150d2614ffc565b50601f01601f191660200190565b5f82601f8301126150ef575f80fd5b81356151026150fd826150ba565b61505a565b818152846020838601011115615116575f80fd5b816020850160208301375f918101602001919091529392505050565b803560048110613af9575f80fd5b5f805f805f60a08688031215615154575f80fd5b853594506151656020870135614d31565b6020860135935061517860408701614d8e565b92506001600160401b0360608701351115615191575f80fd5b6060860135860187601f8201126151a6575f80fd5b6151b36150fd823561508a565b81358082526020808301929160051b8401018a8111156151d1575f80fd5b602084015b81811015615293576001600160401b03813511156151f2575f80fd5b803585016080818e03601f19011215615209575f80fd5b615211615010565b602082013560ff811614615223575f80fd5b60208201358152600760408301351061523a575f80fd5b60408201356020820152615250606083016150ac565b60408201526001600160401b036080830135111561526c575f80fd5b61527f8e602060808501358501016150e0565b6060820152855250602093840193016151d6565b50508094505050506152a760808701615132565b90509295509295909350565b5f805f606084860312156152c5575f80fd5b8335925060208401356152d781614d31565b91506127b760408501615132565b5f80604083850312156152f6575f80fd5b823561530181614d31565b946020939093013593505050565b5f8083601f84011261531f575f80fd5b5081356001600160401b03811115615335575f80fd5b6020830191508360208260051b85010111156125f9575f80fd5b5f805f805f60608688031215615363575f80fd5b853561536e81614d31565b945060208601356001600160401b0380821115615389575f80fd5b61539589838a0161530f565b909650945060408801359150808211156153ad575f80fd5b506153ba8882890161530f565b969995985093965092949392505050565b5f602082840312156153db575f80fd5b81356001600160401b038111156153f0575f80fd5b611dbf848285016150e0565b80356001600160801b0381168114613af9575f80fd5b80356001600160401b0381168114613af9575f80fd5b5f805f805f8060c0878903121561543d575f80fd5b8635955061544d602088016153fc565b945061545b604088016153fc565b9350615469606088016153fc565b925061547760808801615412565b915061548560a08801615412565b90509295509295509295565b5f805f80608085870312156154a4575f80fd5b8435935060208501356154b681614d31565b92506154c460408601614d8e565b91506154d260608601615132565b905092959194509250565b604080825283519082018190525f906020906060840190828701845b8281101561551e5781516001600160a01b0316845292840192908401906001016154f9565b5050506001600160a01b039490941692019190915250919050565b5f805f6040848603121561554b575f80fd5b83356001600160401b03811115615560575f80fd5b61556c86828701614e16565b909790965060209590950135949350505050565b5f8060408385031215615591575f80fd5b823561559c81614d31565b91506020830135614d6881614d31565b634e487b7160e01b5f52602160045260245ffd5b600781106155d0576155d06155ac565b9052565b602081106155d0576155d06155ac565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101561567357603f198984030185528151608060ff8251168552888201516156358a8701826155c0565b5087820151615646898701826155d4565b5060609182015191850181905261565f85820183614f17565b968901969450505090860190600101615609565b509098975050505050505050565b600481106155d0576155d06155ac565b5f60a08201878352602060018060a01b03881681850152604063ffffffff60e01b881681860152606060a08187015283885180865260c08801915060c08160051b8901019550848a015f5b828110156157455760bf198a89030184528151608060ff8251168a52888201516157088a8c01826155c0565b5087820151615719898c01826155d4565b5086820151915080878b0152615731818b0183614f17565b9950505092860192908601906001016156dc565b5050505050505080915050611a6d6080830184615681565b8381526001600160a01b038316602082015260608101611dbf6040830184615681565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156157a4575f80fd5b81356116af81614e5f565b634e487b7160e01b5f52601160045260245ffd5b5f61ffff8083168181036157d9576157d96157af565b6001019392505050565b6001600160a01b0386168152606060208083018290529082018590525f906001600160fb1b03861115615814575f80fd5b8560051b80886080860137830183810360809081016040860152810185905285905f9060a0015b8682101561586457823561584e81614e5f565b151581529183019160019190910190830161583b565b9a9950505050505050505050565b5f805f60608486031215615884575f80fd5b835161588f81614d31565b60208501519093506158a081614d31565b6040850151909250614de081614d31565b8481526001600160a01b03841660208201526001600160e01b0319831660408201526080810161482f6060830184615681565b5f600182016158f5576158f56157af565b5060010190565b81810381811115610887576108876157af565b818382375f9101908152919050565b6001600160e01b031981358181169160048510156159465780818660040360031b1b83161692505b505092915050565b6040810160148410615962576159626155ac565b9281526020015290565b634e487b7160e01b5f52600160045260245ffd5b6001600160801b03828116828216039080821115612f5e57612f5e6157af565b600281106155d0576155d06155ac565b60018060a01b0385168152836020820152608060408201525f6159d66080830185614f17565b905061482f60608301846159a0565b5f82601f8301126159f4575f80fd5b8151615a026150fd826150ba565b818152846020838601011115615a16575f80fd5b611dbf826020830160208701614ef5565b5f8060408385031215615a38575f80fd5b8251615a4381614e5f565b60208401519092506001600160401b03811115615a5e575f80fd5b6125f5858286016159e5565b5f60208284031215615a7a575f80fd5b81516116af81614e5f565b5f60208284031215615a95575f80fd5b81516001600160401b03811115615aaa575f80fd5b611dbf848285016159e5565b5f8085851115615ac4575f80fd5b83861115615ad0575f80fd5b5050820193919092039150565b80356020831015610887575f19602084900360031b1b1692915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b0386168152846020820152608060408201525f615b49608083018587615afa565b9050611a6d60608301846159a0565b5f6020808385031215615b69575f80fd5b82516001600160401b03811115615b7e575f80fd5b8301601f81018513615b8e575f80fd5b8051615b9c6150fd8261508a565b81815260a09182028301840191848201919088841115615bba575f80fd5b938501935b838510156113fc5780858a031215615bd6575f8081fd5b615bde615038565b8551615be981614e53565b815285870151615bf881614d31565b8188015260408681015190820152606080870151908201526080808701519082015283529384019391850191615bbf565b80820180821115610887576108876157af565b6001600160401b03818116838216019080821115612f5e57612f5e6157af565b6001600160401b03828116828216039080821115612f5e57612f5e6157af565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0380841680615ca957615ca9615c7c565b92169190910492915050565b6001600160801b03818116838216028082169190828114615946576159466157af565b6001600160801b03818116838216019080821115612f5e57612f5e6157af565b6001600160401b03818116838216028082169190828114615946576159466157af565b604081525f615d2d6040830185614f17565b90508260208301529392505050565b5f60208284031215615d4c575f80fd5b81516116af81614d31565b6001600160f81b031981358181169160018510156159465760019490940360031b84901b1690921692915050565b838152604060208201525f611dbc604083018486615afa565b5f8251615daf818460208701614ef5565b9190910192915050565b805160208201516001600160e01b03198082169291906004831015615de85780818460040360031b1b83161693505b505050919050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e82018190528251615e3881600f850160208701614ef5565b91909101600f019392505050565b8082028115828204841417610887576108876157af565b60018060a01b038916815287602082015260e060408201525f615e8460e08301888a615afa565b9050615e9360608301876159a0565b608082019490945260a08101929092526001600160a01b03191660c09091015295945050505050565b5f8060408385031215615ecd575f80fd5b8251615ed881614e5f565b6020939093015192949293505050565b5f82615ef657615ef6615c7c565b50049056fea15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054ca2646970667358221220effee86583e9a9dfea71c1020808e6a7f1ab205668c8679fce5a2d2485ca407b64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"; diff --git a/tasks/deploy-replay.ts b/tasks/deploy-replay.ts index b9a34073..772026fe 100644 --- a/tasks/deploy-replay.ts +++ b/tasks/deploy-replay.ts @@ -1,5 +1,6 @@ import { task } from "hardhat/config"; import { HardhatRuntimeEnvironment } from "hardhat/types"; + import { KnownContracts, MasterCopyInitData, diff --git a/tasks/singleton-deployment.ts b/tasks/singleton-deployment.ts index 3c25ed9e..5e28fde0 100644 --- a/tasks/singleton-deployment.ts +++ b/tasks/singleton-deployment.ts @@ -1,5 +1,6 @@ import { task } from "hardhat/config"; import { HardhatRuntimeEnvironment } from "hardhat/types"; + import { KnownContracts, MasterCopyInitData } from "../sdk/factory"; import { deployModuleFactory } from "../sdk/factory/deployModuleFactory"; diff --git a/test/01_IAvatar.spec.ts b/test/01_IAvatar.spec.ts index 60efd22c..170fb283 100644 --- a/test/01_IAvatar.spec.ts +++ b/test/01_IAvatar.spec.ts @@ -1,17 +1,21 @@ import { AddressZero } from "@ethersproject/constants"; import { loadFixture } from "@nomicfoundation/hardhat-network-helpers"; - import { expect } from "chai"; import hre from "hardhat"; +import { TestAvatar__factory } from "../typechain-types"; + describe("IAvatar", async () => { async function setupTests() { + const [signer] = await hre.ethers.getSigners(); const Avatar = await hre.ethers.getContractFactory("TestAvatar"); - const avatar = await Avatar.deploy(); - const iAvatar = await hre.ethers.getContractAt("IAvatar", avatar.address); + const avatar = await Avatar.connect(signer).deploy(); + const iAvatar = TestAvatar__factory.connect( + await avatar.getAddress(), + signer + ); const tx = { - to: avatar.address, - + to: await avatar.getAddress(), value: 0, data: "0x", operation: 0, diff --git a/test/02_Module.spec.ts b/test/02_Module.spec.ts index 0e7fe537..fc6d60bd 100644 --- a/test/02_Module.spec.ts +++ b/test/02_Module.spec.ts @@ -7,14 +7,20 @@ describe("Module", async () => { async function setupTests() { const Avatar = await hre.ethers.getContractFactory("TestAvatar"); const avatar = await Avatar.deploy(); - const iAvatar = await hre.ethers.getContractAt("IAvatar", avatar.address); + const iAvatar = await hre.ethers.getContractAt( + "IAvatar", + await avatar.getAddress() + ); const Module = await hre.ethers.getContractFactory("TestModule"); - const module = await Module.deploy(iAvatar.address, iAvatar.address); - await avatar.enableModule(module.address); + const module = await Module.deploy( + await iAvatar.getAddress(), + await iAvatar.getAddress() + ); + await avatar.enableModule(await module.getAddress()); const Guard = await hre.ethers.getContractFactory("TestGuard"); - const guard = await Guard.deploy(module.address); + const guard = await Guard.deploy(await module.getAddress()); const tx = { - to: avatar.address, + to: await avatar.getAddress(), value: 0, data: "0x", operation: 0, @@ -37,17 +43,17 @@ describe("Module", async () => { it("reverts if caller is not the owner", async () => { const { iAvatar, module } = await loadFixture(setupTests); - const [, wallet1] = await hre.ethers.getSigners(); + const [owner, wallet1] = await hre.ethers.getSigners(); await module.transferOwnership(wallet1.address); - await expect(module.setAvatar(iAvatar.address)).to.be.revertedWith( - "Ownable: caller is not the owner" - ); + await expect(module.setAvatar(await iAvatar.getAddress())) + .to.be.revertedWithCustomError(module, "OwnableUnauthorizedAccount") + .withArgs(owner.address); }); it("allows owner to set avatar", async () => { const { iAvatar, module } = await loadFixture(setupTests); - await expect(module.setAvatar(iAvatar.address)); + await expect(module.setAvatar(await iAvatar.getAddress())); }); it("emits previous owner and new owner", async () => { @@ -57,23 +63,23 @@ describe("Module", async () => { await expect(module.setAvatar(wallet1.address)) .to.emit(module, "AvatarSet") - .withArgs(iAvatar.address, wallet1.address); + .withArgs(await iAvatar.getAddress(), wallet1.address); }); }); describe("setTarget", async () => { it("reverts if caller is not the owner", async () => { const { iAvatar, module } = await loadFixture(setupTests); - const [, wallet1] = await hre.ethers.getSigners(); + const [owner, wallet1] = await hre.ethers.getSigners(); await module.transferOwnership(wallet1.address); - await expect(module.setTarget(iAvatar.address)).to.be.revertedWith( - "Ownable: caller is not the owner" - ); + await expect(module.setTarget(await iAvatar.getAddress())) + .to.be.revertedWithCustomError(module, "OwnableUnauthorizedAccount") + .withArgs(owner.address); }); it("allows owner to set avatar", async () => { const { iAvatar, module } = await loadFixture(setupTests); - await expect(module.setTarget(iAvatar.address)); + await expect(module.setTarget(await iAvatar.getAddress())); }); it("emits previous owner and new owner", async () => { @@ -81,7 +87,7 @@ describe("Module", async () => { const [, wallet1] = await hre.ethers.getSigners(); await expect(module.setTarget(wallet1.address)) .to.emit(module, "TargetSet") - .withArgs(iAvatar.address, wallet1.address); + .withArgs(await iAvatar.getAddress(), wallet1.address); }); }); @@ -95,12 +101,10 @@ describe("Module", async () => { it("pre-checks transaction if guard is set", async () => { const { guard, module, tx } = await loadFixture(setupTests); - await module.setGuard(guard.address); + await module.setGuard(await guard.getAddress()); await expect( module.executeTransaction(tx.to, tx.value, tx.data, tx.operation) - ) - .to.emit(guard, "PreChecked") - .withArgs(true); + ).to.emit(guard, "PreChecked"); }); it("executes a transaction", async () => { @@ -119,7 +123,7 @@ describe("Module", async () => { it("post-checks transaction if guard is set", async () => { const { guard, module, tx } = await loadFixture(setupTests); - await module.setGuard(guard.address); + await module.setGuard(await guard.getAddress()); await expect( module.executeTransaction(tx.to, tx.value, tx.data, tx.operation) ) @@ -143,7 +147,7 @@ describe("Module", async () => { it("pre-checks transaction if guard is set", async () => { const { guard, module, tx } = await loadFixture(setupTests); - await module.setGuard(guard.address); + await module.setGuard(await guard.getAddress()); await expect( module.executeTransactionReturnData( tx.to, @@ -151,9 +155,7 @@ describe("Module", async () => { tx.data, tx.operation ) - ) - .to.emit(guard, "PreChecked") - .withArgs(true); + ).to.emit(guard, "PreChecked"); }); it("executes a transaction", async () => { @@ -182,7 +184,7 @@ describe("Module", async () => { it("post-checks transaction if guard is set", async () => { const { guard, module, tx } = await loadFixture(setupTests); - await module.setGuard(guard.address); + await module.setGuard(await guard.getAddress()); await expect( module.executeTransactionReturnData( tx.to, diff --git a/test/03_Modifier.spec.ts b/test/03_Modifier.spec.ts index dfef65e5..4af1621f 100644 --- a/test/03_Modifier.spec.ts +++ b/test/03_Modifier.spec.ts @@ -1,21 +1,41 @@ -import { AddressZero } from "@ethersproject/constants"; import { AddressOne } from "@gnosis.pm/safe-contracts"; import { loadFixture } from "@nomicfoundation/hardhat-network-helpers"; import { expect } from "chai"; +import { + TransactionLike, + keccak256, + toUtf8Bytes, + AbiCoder, + ZeroAddress, + Signer, +} from "ethers"; import hre from "hardhat"; +const AddressZero = ZeroAddress; +import { TestAvatar__factory, TestModifier__factory } from "../typechain-types"; + +import typedDataForTransaction from "./typedDataForTransaction"; + describe("Modifier", async () => { const SENTINEL_MODULES = "0x0000000000000000000000000000000000000001"; async function setupTests() { + const [signer, alice, bob, charlie] = await hre.ethers.getSigners(); const Avatar = await hre.ethers.getContractFactory("TestAvatar"); - const avatar = await Avatar.deploy(); - const iAvatar = await hre.ethers.getContractAt("IAvatar", avatar.address); + const avatar = await Avatar.connect(signer).deploy(); + const iAvatar = TestAvatar__factory.connect( + await avatar.getAddress(), + signer + ); const Modifier = await hre.ethers.getContractFactory("TestModifier"); - const modifier = await Modifier.deploy(iAvatar.address, iAvatar.address); - await iAvatar.enableModule(modifier.address); + const modifier = await Modifier.connect(signer).deploy( + await iAvatar.getAddress(), + await iAvatar.getAddress() + ); + + await iAvatar.enableModule(await modifier.getAddress()); const tx = { - to: avatar.address, + to: await avatar.getAddress(), value: 0, data: "0x", operation: 0, @@ -28,8 +48,14 @@ describe("Modifier", async () => { }; return { iAvatar, - modifier, + modifier: TestModifier__factory.connect( + await modifier.getAddress(), + signer + ), tx, + alice, + bob, + charlie, }; } @@ -47,9 +73,9 @@ describe("Modifier", async () => { const [, user2] = await hre.ethers.getSigners(); - await expect( - modifier.connect(user2).enableModule(user2.address) - ).to.be.revertedWith("Ownable: caller is not the owner"); + await expect(modifier.connect(user2).enableModule(user2.address)) + .to.be.revertedWithCustomError(modifier, "OwnableUnauthorizedAccount") + .withArgs(user2.address); }); it("reverts if module is zero address", async () => { @@ -94,7 +120,9 @@ describe("Modifier", async () => { const [, user2] = await hre.ethers.getSigners(); await expect( modifier.connect(user2).disableModule(SENTINEL_MODULES, user2.address) - ).to.be.revertedWith("Ownable: caller is not the owner"); + ) + .to.be.revertedWithCustomError(modifier, "OwnableUnauthorizedAccount") + .withArgs(user2.address); }); it("reverts if module is zero address", async () => { @@ -240,9 +268,9 @@ describe("Modifier", async () => { const { modifier } = await loadFixture(setupTests); const [user1, user2, user3] = await hre.ethers.getSigners(); - await expect(modifier.enableModule(user1.address)); - await expect(modifier.enableModule(user2.address)); - await expect(modifier.enableModule(user3.address)); + await modifier.enableModule(user1.address); + await modifier.enableModule(user2.address); + await modifier.enableModule(user3.address); await expect(await modifier.isModuleEnabled(user1.address)).to.be.true; await expect(await modifier.isModuleEnabled(user2.address)).to.be.true; @@ -291,7 +319,6 @@ describe("Modifier", async () => { .to.be.revertedWithCustomError(modifier, "NotAuthorized") .withArgs("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); }); - it("execute a transaction.", async () => { const { modifier, tx } = await loadFixture(setupTests); const [user1] = await hre.ethers.getSigners(); @@ -306,7 +333,180 @@ describe("Modifier", async () => { tx.data, tx.operation ) - ).to.emit(modifier, "executed"); + ).to.emit(modifier, "Executed"); + }); + it("execute a transaction with signature.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, relayer] = await hre.ethers.getSigners(); + await expect(await modifier.enableModule(user1.address)) + .to.emit(modifier, "EnabledModule") + .withArgs(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModule.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const signature = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user1 + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect( + relayer.sendTransaction(transaction) + ).to.be.revertedWithCustomError(modifier, "NotAuthorized"); + + await expect(relayer.sendTransaction(transactionWithSig)).to.emit( + modifier, + "Executed" + ); + }); + it("reverts if signature not valid.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, user2, relayer] = await hre.ethers.getSigners(); + await expect(await modifier.enableModule(user1.address)) + .to.emit(modifier, "EnabledModule") + .withArgs(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModule.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const signatureOk = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user1 + ); + const signatureBad = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user2 + ); + + const transactionWithBadSig = { + ...transaction, + data: `${transaction.data}${signatureBad.slice(2)}`, + }; + + const transactionWithOkSig = { + ...transaction, + data: `${transaction.data}${signatureOk.slice(2)}`, + }; + + await expect( + relayer.sendTransaction(transactionWithBadSig) + ).to.be.revertedWithCustomError(modifier, "NotAuthorized"); + + await expect(relayer.sendTransaction(transactionWithOkSig)).to.emit( + modifier, + "Executed" + ); + }); + it("reverts if signature previously used for execution.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, user2, relayer] = await hre.ethers.getSigners(); + await expect(await modifier.enableModule(user1.address)) + .to.emit(modifier, "EnabledModule") + .withArgs(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModule.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const signatureOk = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user1 + ); + const signatureBad = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user2 + ); + + const transactionWithBadSig = { + ...transaction, + data: `${transaction.data}${signatureBad.slice(2)}`, + }; + + const transactionWithOkSig = { + ...transaction, + data: `${transaction.data}${signatureOk.slice(2)}`, + }; + + await expect( + relayer.sendTransaction(transactionWithBadSig) + ).to.be.revertedWithCustomError(modifier, "NotAuthorized"); + + await expect(relayer.sendTransaction(transactionWithOkSig)).to.emit( + modifier, + "Executed" + ); + + await expect( + relayer.sendTransaction(transactionWithOkSig) + ).to.be.revertedWithCustomError(modifier, "HashAlreadyConsumed"); + }); + it("reverts if signature invalidated.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, relayer] = await hre.ethers.getSigners(); + + await modifier.enableModule(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModule.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const salt = keccak256(toUtf8Bytes("salt")); + + const signatureOk = await sign( + await modifier.getAddress(), + transaction, + salt, + user1 + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signatureOk.slice(2)}`, + }; + + const hash = await modifier.moduleTxHash( + transaction.data as string, + salt + ); + + await modifier.invalidate(hash); + + await expect( + relayer.sendTransaction(transactionWithSig) + ).to.be.revertedWithCustomError(modifier, "HashAlreadyConsumed"); }); }); @@ -324,7 +524,6 @@ describe("Modifier", async () => { .to.be.revertedWithCustomError(modifier, "NotAuthorized") .withArgs("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); }); - it("execute a transaction.", async () => { const { modifier, tx } = await loadFixture(setupTests); const [user1] = await hre.ethers.getSigners(); @@ -339,7 +538,290 @@ describe("Modifier", async () => { tx.data, tx.operation ) - ).to.emit(modifier, "executedAndReturnedData"); + ).to.emit(modifier, "ExecutedAndReturnedData"); + }); + it("execute a transaction with signature.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, relayer] = await hre.ethers.getSigners(); + await expect(await modifier.enableModule(user1.address)) + .to.emit(modifier, "EnabledModule") + .withArgs(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModuleReturnData.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const signature = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user1 + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect( + relayer.sendTransaction(transaction) + ).to.be.revertedWithCustomError(modifier, "NotAuthorized"); + + await expect(relayer.sendTransaction(transactionWithSig)).to.emit( + modifier, + "ExecutedAndReturnedData" + ); + }); + it("reverts if signature not valid.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, user2, relayer] = await hre.ethers.getSigners(); + await expect(await modifier.enableModule(user1.address)) + .to.emit(modifier, "EnabledModule") + .withArgs(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModuleReturnData.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const signatureBad = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user2 + ); + const signatureOk = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user1 + ); + + const transactionWithBadSig = { + ...transaction, + data: `${transaction.data}${signatureBad.slice(2)}`, + }; + + const transactionWithOkSig = { + ...transaction, + data: `${transaction.data}${signatureOk.slice(2)}`, + }; + + await expect( + relayer.sendTransaction(transactionWithBadSig) + ).to.be.revertedWithCustomError(modifier, "NotAuthorized"); + + await expect(relayer.sendTransaction(transactionWithOkSig)).to.emit( + modifier, + "ExecutedAndReturnedData" + ); + }); + it("reverts if signature previously used for execution.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, user2, relayer] = await hre.ethers.getSigners(); + await expect(await modifier.enableModule(user1.address)) + .to.emit(modifier, "EnabledModule") + .withArgs(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModuleReturnData.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const signatureOk = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user1 + ); + const signatureBad = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + user2 + ); + + const transactionWithBadSig = { + ...transaction, + data: `${transaction.data}${signatureBad.slice(2)}`, + }; + + const transactionWithOkSig = { + ...transaction, + data: `${transaction.data}${signatureOk.slice(2)}`, + }; + + await expect( + relayer.sendTransaction(transactionWithBadSig) + ).to.be.revertedWithCustomError(modifier, "NotAuthorized"); + + await expect(relayer.sendTransaction(transactionWithOkSig)).to.emit( + modifier, + "ExecutedAndReturnedData" + ); + + await expect( + relayer.sendTransaction(transactionWithOkSig) + ).to.be.revertedWithCustomError(modifier, "HashAlreadyConsumed"); + }); + it("reverts if signature invalidated.", async () => { + const { modifier, tx } = await loadFixture(setupTests); + const [user1, relayer] = await hre.ethers.getSigners(); + + await modifier.enableModule(user1.address); + + const { from, ...transaction } = + await modifier.execTransactionFromModuleReturnData.populateTransaction( + tx.to, + tx.value, + tx.data, + tx.operation + ); + + const salt = keccak256(toUtf8Bytes("salt")); + + const signatureOk = await sign( + await modifier.getAddress(), + transaction, + salt, + user1 + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signatureOk.slice(2)}`, + }; + + const hash = await modifier.moduleTxHash( + transaction.data as string, + salt + ); + + await modifier.invalidate(hash); + + await expect( + relayer.sendTransaction(transactionWithSig) + ).to.be.revertedWithCustomError(modifier, "HashAlreadyConsumed"); + }); + }); + + describe("sentOrSignedByModule", async () => { + it("returns msg.sender if msg.sender is module", async () => { + const { modifier, alice, bob } = await loadFixture(setupTests); + + await modifier.enableModule(alice.address); + expect( + await modifier.connect(alice).exposeSentOrSignedByModule() + ).to.equal(alice.address); + + expect(await modifier.connect(bob).exposeSentOrSignedByModule()).to.equal( + AddressZero + ); + }); + + it("returns msg.sender if msg.sender is module, even if valid sig appended", async () => { + const { modifier, alice, bob, charlie } = await loadFixture(setupTests); + + await modifier.enableModule(alice.address); + await modifier.enableModule(bob.address); + + const transaction = await signTransaction( + await modifier.getAddress(), + await modifier.exposeSentOrSignedByModule.populateTransaction(), + keccak256(toUtf8Bytes("something salty")), + bob + ); + + // if alice sends it, msg.sender is taken into account, because alice module + expect(await alice.call(transaction)).to.equal( + AbiCoder.defaultAbiCoder().encode(["address"], [alice.address]) + ); + + // if charlie sends it, signature is taken into account because bob module + expect(await charlie.call(transaction)).to.equal( + AbiCoder.defaultAbiCoder().encode(["address"], [bob.address]) + ); + }); + + it("returns signer if signer is module", async () => { + const { modifier, alice, charlie } = await loadFixture(setupTests); + + await modifier.enableModule(alice.address); + + const transaction = await signTransaction( + await modifier.getAddress(), + await modifier.exposeSentOrSignedByModule.populateTransaction(), + keccak256(toUtf8Bytes("something salty")), + alice + ); + + // if alice sends it, msg.sender is taken into account, because alice module + expect(await charlie.call(transaction)).to.equal( + AbiCoder.defaultAbiCoder().encode(["address"], [alice.address]) + ); + }); + + it("returns zero if signer is not module and message sender not a module", async () => { + const { modifier, alice, charlie } = await loadFixture(setupTests); + + // no modules enabled + + const transaction = await signTransaction( + await modifier.getAddress(), + await modifier.exposeSentOrSignedByModule.populateTransaction(), + keccak256(toUtf8Bytes("something salty")), + alice + ); + + // if alice sends it, msg.sender is taken into account, because alice module + expect(await charlie.call(transaction)).to.equal( + AbiCoder.defaultAbiCoder().encode(["address"], [AddressZero]) + ); }); }); }); + +async function sign( + contract: string, + transaction: TransactionLike, + salt: string, + signer: Signer +) { + const { domain, types, message } = typedDataForTransaction( + { contract, chainId: 31337, salt }, + transaction.data || "0x" + ); + + const signature = await signer.signTypedData(domain, types, message); + + return `${salt}${signature.slice(2)}`; +} + +async function signTransaction( + contract: string, + { from, ...transaction }: TransactionLike, + salt: string, + signer: Signer +) { + const { domain, types, message } = typedDataForTransaction( + { contract, chainId: 31337, salt }, + transaction.data || "0x" + ); + + const signature = await signer.signTypedData(domain, types, message); + + return { + ...transaction, + data: `${transaction.data as string}${salt.slice(2)}${signature.slice(2)}`, + }; +} diff --git a/test/04_Guard.spec.ts b/test/04_Guard.spec.ts index 0faced25..86cd7c79 100644 --- a/test/04_Guard.spec.ts +++ b/test/04_Guard.spec.ts @@ -3,42 +3,98 @@ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers"; import { expect } from "chai"; import hre from "hardhat"; -describe("Guardable", async () => { - async function setupTests() { - const Avatar = await hre.ethers.getContractFactory("TestAvatar"); - const avatar = await Avatar.deploy(); - const iAvatar = await hre.ethers.getContractAt("IAvatar", avatar.address); - const Module = await hre.ethers.getContractFactory("TestModule"); - const module = await Module.deploy(iAvatar.address, iAvatar.address); - await avatar.enableModule(module.address); - const Guard = await hre.ethers.getContractFactory("TestGuard"); - const guard = await Guard.deploy(module.address); - return { - iAvatar, - guard, - module, - }; - } +import { TestGuard__factory, TestModule__factory } from "../typechain-types"; + +async function setupTests() { + const [owner, other, relayer] = await hre.ethers.getSigners(); + const Avatar = await hre.ethers.getContractFactory("TestAvatar"); + const avatar = await Avatar.deploy(); + const Module = await hre.ethers.getContractFactory("TestModule"); + const module = TestModule__factory.connect( + await ( + await Module.connect(owner).deploy( + await avatar.getAddress(), + await avatar.getAddress() + ) + ).getAddress(), + owner + ); + await avatar.enableModule(await module.getAddress()); + + const Guard = await hre.ethers.getContractFactory("TestGuard"); + const guard = TestGuard__factory.connect( + await (await Guard.deploy(await module.getAddress())).getAddress(), + relayer + ); + + const GuardNonCompliant = await hre.ethers.getContractFactory( + "TestNonCompliantGuard" + ); + const guardNonCompliant = TestGuard__factory.connect( + await (await GuardNonCompliant.deploy()).getAddress(), + hre.ethers.provider + ); + + const tx = { + to: await avatar.getAddress(), + value: 0, + data: "0x", + operation: 0, + avatarTxGas: 0, + baseGas: 0, + gasPrice: 0, + gasToken: AddressZero, + refundReceiver: AddressZero, + signatures: "0x", + }; + return { + owner, + other, + module, + guard, + guardNonCompliant, + tx, + }; +} + +describe("Guardable", async () => { describe("setGuard", async () => { it("reverts if reverts if caller is not the owner", async () => { - const { module } = await loadFixture(setupTests); - const [, user1] = await hre.ethers.getSigners(); - await expect( - module.connect(user1).setGuard(user1.address) - ).to.be.revertedWith("Ownable: caller is not the owner"); + const { other, guard, module } = await loadFixture(setupTests); + await expect(module.connect(other).setGuard(await guard.getAddress())) + .to.be.revertedWithCustomError(module, "OwnableUnauthorizedAccount") + .withArgs(other.address); }); it("reverts if guard does not implement ERC165", async () => { const { module } = await loadFixture(setupTests); - await expect(module.setGuard(module.address)).to.be.reverted; + await expect(module.setGuard(await module.getAddress())).to.be.reverted; + }); + + it("reverts if guard implements ERC165 and returns false", async () => { + const { module, guardNonCompliant } = await loadFixture(setupTests); + await expect(module.setGuard(await guardNonCompliant.getAddress())) + .to.be.revertedWithCustomError(module, "NotIERC165Compliant") + .withArgs(await guardNonCompliant.getAddress()); }); it("sets module and emits event", async () => { const { module, guard } = await loadFixture(setupTests); - await expect(module.setGuard(guard.address)) + await expect(module.setGuard(await guard.getAddress())) + .to.emit(module, "ChangedGuard") + .withArgs(await guard.getAddress()); + }); + + it("sets guard back to zero", async () => { + const { module, guard } = await loadFixture(setupTests); + await expect(module.setGuard(await guard.getAddress())) .to.emit(module, "ChangedGuard") - .withArgs(guard.address); + .withArgs(await guard.getAddress()); + + await expect(module.setGuard(AddressZero)) + .to.emit(module, "ChangedGuard") + .withArgs(AddressZero); }); }); @@ -54,39 +110,15 @@ describe("BaseGuard", async () => { const txHash = "0x0000000000000000000000000000000000000000000000000000000000000001"; - async function setupTests() { - const Avatar = await hre.ethers.getContractFactory("TestAvatar"); - const avatar = await Avatar.deploy(); - const iAvatar = await hre.ethers.getContractAt("IAvatar", avatar.address); - const Module = await hre.ethers.getContractFactory("TestModule"); - const module = await Module.deploy(iAvatar.address, iAvatar.address); - await avatar.enableModule(module.address); - const Guard = await hre.ethers.getContractFactory("TestGuard"); - const guard = await Guard.deploy(module.address); - const tx = { - to: avatar.address, - value: 0, - data: "0x", - operation: 0, - avatarTxGas: 0, - baseGas: 0, - gasPrice: 0, - gasToken: AddressZero, - refundReceiver: AddressZero, - signatures: "0x", - }; - return { - iAvatar, - guard, - module, - tx, - }; - } + it("supports interface", async () => { + const { guard } = await loadFixture(setupTests); + expect(await guard.supportsInterface("0xe6d7a83a")).to.be.true; + expect(await guard.supportsInterface("0x01ffc9a7")).to.be.true; + }); describe("checkTransaction", async () => { it("reverts if test fails", async () => { const { guard, tx } = await loadFixture(setupTests); - const [user1] = await hre.ethers.getSigners(); await expect( guard.checkTransaction( tx.to, @@ -99,13 +131,12 @@ describe("BaseGuard", async () => { tx.gasToken, tx.refundReceiver, tx.signatures, - user1.address + AddressZero ) ).to.be.revertedWith("Cannot send 1337"); }); it("checks transaction", async () => { const { guard, tx } = await loadFixture(setupTests); - const [user1] = await hre.ethers.getSigners(); await expect( guard.checkTransaction( tx.to, @@ -118,11 +149,9 @@ describe("BaseGuard", async () => { tx.gasToken, tx.refundReceiver, tx.signatures, - user1.address + AddressZero ) - ) - .to.emit(guard, "PreChecked") - .withArgs(true); + ).to.emit(guard, "PreChecked"); }); }); @@ -135,9 +164,9 @@ describe("BaseGuard", async () => { }); it("checks state after execution", async () => { const { module, guard } = await loadFixture(setupTests); - await expect(module.setGuard(guard.address)) + await expect(module.setGuard(await guard.getAddress())) .to.emit(module, "ChangedGuard") - .withArgs(guard.address); + .withArgs(await guard.getAddress()); await expect(guard.checkAfterExecution(txHash, true)) .to.emit(guard, "PostChecked") .withArgs(true); diff --git a/test/05_ModuleProxyFactory.spec.ts b/test/05_ModuleProxyFactory.spec.ts index c6b8dd43..e1c63beb 100644 --- a/test/05_ModuleProxyFactory.spec.ts +++ b/test/05_ModuleProxyFactory.spec.ts @@ -1,10 +1,12 @@ -import { AddressZero } from "@ethersproject/constants"; import { AddressOne } from "@gnosis.pm/safe-contracts"; import { expect } from "chai"; -import { Contract } from "ethers"; +import { AbiCoder, Contract, ZeroAddress } from "ethers"; import { ethers } from "hardhat"; + import { calculateProxyAddress } from "../sdk/factory"; +const AddressZero = ZeroAddress; + describe("ModuleProxyFactory", async () => { let moduleFactory: Contract; let moduleMasterCopy: Contract; @@ -16,43 +18,42 @@ describe("ModuleProxyFactory", async () => { beforeEach(async () => { const Avatar = await ethers.getContractFactory("TestAvatar"); const avatar = await Avatar.deploy(); - const ModuleProxyFactory = await ethers.getContractFactory( - "ModuleProxyFactory" - ); + const ModuleProxyFactory = + await ethers.getContractFactory("ModuleProxyFactory"); moduleFactory = await ModuleProxyFactory.deploy(); const MasterCopyModule = await ethers.getContractFactory("TestModule"); moduleMasterCopy = await MasterCopyModule.deploy( - avatar.address, - avatar.address + await avatar.getAddress(), + await avatar.getAddress() ); - const encodedInitParams = new ethers.utils.AbiCoder().encode( + const encodedInitParams = AbiCoder.defaultAbiCoder().encode( ["address", "address"], - [avatar.address, avatar.address] + [await avatar.getAddress(), await avatar.getAddress()] ); initData = moduleMasterCopy.interface.encodeFunctionData("setUp", [ encodedInitParams, ]); - avatarAddress = avatar.address; + avatarAddress = await avatar.getAddress(); }); describe("createProxy", () => { it("should deploy the expected address ", async () => { const expectedAddress = await calculateProxyAddress( moduleFactory, - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), initData, saltNonce ); const deploymentTx = await moduleFactory.deployModule( - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), initData, saltNonce ); const transaction = await deploymentTx.wait(); - const [moduleAddress] = transaction.events[2].args; + const [moduleAddress] = transaction.logs[2].args; expect(moduleAddress).to.be.equal(expectedAddress); }); @@ -69,14 +70,14 @@ describe("ModuleProxyFactory", async () => { it("should fail to deploy because address its already taken ", async () => { await moduleFactory.deployModule( - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), initData, saltNonce ); await expect( moduleFactory.deployModule( - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), initData, saltNonce ) @@ -89,12 +90,12 @@ describe("ModuleProxyFactory", async () => { describe("deployModule ", () => { it("should deploy module", async () => { const deploymentTx = await moduleFactory.deployModule( - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), initData, saltNonce ); const transaction = await deploymentTx.wait(); - const [moduleAddress] = transaction.events[2].args; + const [moduleAddress] = transaction.logs[2].args; const newModule = await ethers.getContractAt("TestModule", moduleAddress); @@ -105,25 +106,25 @@ describe("ModuleProxyFactory", async () => { it("should emit event on module deployment", async () => { const moduleAddress = await calculateProxyAddress( moduleFactory, - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), initData, saltNonce ); await expect( moduleFactory.deployModule( - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), initData, saltNonce ) ) .to.emit(moduleFactory, "ModuleProxyCreation") - .withArgs(moduleAddress, moduleMasterCopy.address); + .withArgs(moduleAddress, await moduleMasterCopy.getAddress()); }); it("should fail to deploy because parameters are not valid ", async () => { await expect( moduleFactory.deployModule( - moduleMasterCopy.address, + await moduleMasterCopy.getAddress(), "0xaabc", saltNonce ) diff --git a/test/06_SignatureChecker.spec.ts b/test/06_SignatureChecker.spec.ts new file mode 100644 index 00000000..f9e30b9e --- /dev/null +++ b/test/06_SignatureChecker.spec.ts @@ -0,0 +1,485 @@ +import { loadFixture } from "@nomicfoundation/hardhat-network-helpers"; +import { expect } from "chai"; +import { + TransactionLike, + AbiCoder, + keccak256, + solidityPacked, + toUtf8Bytes, + Signer, +} from "ethers"; +import hre from "hardhat"; + +import { TestSignature__factory } from "../typechain-types"; + +import typedDataForTransaction from "./typedDataForTransaction"; + +describe("SignatureChecker", async () => { + async function setup() { + const [signer, relayer] = await hre.ethers.getSigners(); + const TestSignature = await hre.ethers.getContractFactory("TestSignature"); + const testSignature = await TestSignature.deploy(); + + return { + testSignature: TestSignature__factory.connect( + await testSignature.getAddress(), + relayer + ), + signer, + relayer, + }; + } + + const AddressZero = "0x0000000000000000000000000000000000000000"; + + it("correctly detects an appended signature, for an entrypoint no arguments", async () => { + const { testSignature, signer, relayer } = await loadFixture(setup); + + const transaction = await testSignature.hello.populateTransaction(); + const signature = await sign( + await testSignature.getAddress(), + transaction, + keccak256(toUtf8Bytes("Hello this is a salt")), + signer + ); + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transaction)) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(testSignature, "Hello") + .withArgs(signer.address); + }); + + it("correctly detects an appended signature, entrypoint with arguments", async () => { + const { testSignature, signer, relayer } = await loadFixture(setup); + + const transaction = await testSignature.goodbye.populateTransaction( + 0, + "0xbadfed" + ); + const signature = await sign( + await testSignature.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + signer + ); + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transaction)) + .to.emit(testSignature, "Goodbye") + .withArgs(AddressZero); + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(testSignature, "Goodbye") + .withArgs(signer.address); + }); + + describe("contract signature", () => { + it("s pointing out of bounds fails", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const ContractSigner = + await hre.ethers.getContractFactory("ContractSignerYes"); + const signer = await (await ContractSigner.deploy()).getAddress(); + + const transaction = await testSignature.hello.populateTransaction(); + + // 4 bytes of selector plus 3 bytes of custom signature + // an s of 4, 5 or 6 should be okay. 7 and higher should fail + let signature = makeContractSignature( + transaction, + "0xdddddd", + keccak256(toUtf8Bytes("salt")), + signer, + AbiCoder.defaultAbiCoder().encode(["uint256"], [1000]) + ); + + await expect( + await relayer.sendTransaction({ + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }) + ) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + + signature = makeContractSignature( + transaction, + "0xdddddd", + keccak256(toUtf8Bytes("salt")), + signer, + AbiCoder.defaultAbiCoder().encode(["uint256"], [6]) + ); + + await expect( + await relayer.sendTransaction({ + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }) + ) + .to.emit(testSignature, "Hello") + .withArgs(signer); + }); + it("s pointing to selector fails", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const ContractSigner = + await hre.ethers.getContractFactory("ContractSignerYes"); + const signer = await (await ContractSigner.deploy()).getAddress(); + + const transaction = await testSignature.hello.populateTransaction(); + + let signature = makeContractSignature( + transaction, + "0xdddddd", + keccak256(toUtf8Bytes("salt")), + signer, + AbiCoder.defaultAbiCoder().encode(["uint256"], [3]) + ); + + await expect( + await relayer.sendTransaction({ + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }) + ) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + + signature = makeContractSignature( + transaction, + "0xdddddd", + keccak256(toUtf8Bytes("salt")), + signer, + AbiCoder.defaultAbiCoder().encode(["uint256"], [4]) + ); + + await expect( + await relayer.sendTransaction({ + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }) + ) + .to.emit(testSignature, "Hello") + .withArgs(signer); + }); + it("s pointing to signature fails", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const ContractSigner = + await hre.ethers.getContractFactory("ContractSignerYes"); + const signer = await (await ContractSigner.deploy()).getAddress(); + + const transaction = await testSignature.hello.populateTransaction(); + + let signature = makeContractSignature( + transaction, + "0xdddddd", + keccak256(toUtf8Bytes("salt")), + signer, + AbiCoder.defaultAbiCoder().encode(["uint256"], [60]) + ); + + await expect( + await relayer.sendTransaction({ + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }) + ) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + + signature = makeContractSignature( + transaction, + "0xdddddd", + keccak256(toUtf8Bytes("salt")), + signer, + AbiCoder.defaultAbiCoder().encode(["uint256"], [6]) + ); + + await expect( + await relayer.sendTransaction({ + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }) + ) + .to.emit(testSignature, "Hello") + .withArgs(signer); + }); + it("signer returns isValid maybe", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const ContractSigner = await hre.ethers.getContractFactory( + "ContractSignerMaybe" + ); + const contractSigner = await ContractSigner.deploy(); + + const transaction = await testSignature.goodbye.populateTransaction( + 0, + "0xbadfed" + ); + + const signatureGood = makeContractSignature( + transaction, + "0x001122334455", + keccak256(toUtf8Bytes("some irrelevant salt")), + await contractSigner.getAddress() + ); + + const signatureBad = makeContractSignature( + transaction, + "0x00112233445566", + keccak256(toUtf8Bytes("some irrelevant salt")), + await contractSigner.getAddress() + ); + + const transactionWithGoodSig = { + ...transaction, + data: `${transaction.data}${signatureGood.slice(2)}`, + }; + const transactionWithBadSig = { + ...transaction, + data: `${transaction.data}${signatureBad.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transaction)) + .to.emit(testSignature, "Goodbye") + .withArgs(AddressZero); + + await expect(await relayer.sendTransaction(transactionWithGoodSig)) + .to.emit(testSignature, "Goodbye") + .withArgs(await contractSigner.getAddress()); + + await expect(await relayer.sendTransaction(transactionWithBadSig)) + .to.emit(testSignature, "Goodbye") + .withArgs(AddressZero); + }); + it("signer returns isValid yes", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const ContractSigner = + await hre.ethers.getContractFactory("ContractSignerYes"); + const contractSigner = await ContractSigner.deploy(); + + const transaction = await testSignature.goodbye.populateTransaction( + 0, + "0xbadfed" + ); + + const signature = makeContractSignature( + transaction, + "0xaabbccddeeff", + keccak256(toUtf8Bytes("salt")), + await contractSigner.getAddress() + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transaction)) + .to.emit(testSignature, "Goodbye") + .withArgs(AddressZero); + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(testSignature, "Goodbye") + .withArgs(await contractSigner.getAddress()); + }); + it("signer returns isValid no", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const Signer = await hre.ethers.getContractFactory("ContractSignerNo"); + const signer = await Signer.deploy(); + + const transaction = await testSignature.hello.populateTransaction(); + + const signature = makeContractSignature( + transaction, + "0xaabbccddeeff", + keccak256(toUtf8Bytes("salt")), + await signer.getAddress() + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + }); + + it("signer returns isValid for empty specific signature only", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const ContractSigner = await hre.ethers.getContractFactory( + "ContractSignerOnlyEmpty" + ); + const contractSigner = await ContractSigner.deploy(); + + const transaction = await testSignature.goodbye.populateTransaction( + 0, + "0xbadfed" + ); + + const signatureGood = makeContractSignature( + transaction, + "0x", + keccak256(toUtf8Bytes("some irrelevant salt")), + await contractSigner.getAddress() + ); + + const signatureBad = makeContractSignature( + transaction, + "0xffff", + keccak256(toUtf8Bytes("some irrelevant salt")), + await contractSigner.getAddress() + ); + + const transactionWithGoodSig = { + ...transaction, + data: `${transaction.data}${signatureGood.slice(2)}`, + }; + const transactionWithBadSig = { + ...transaction, + data: `${transaction.data}${signatureBad.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transaction)) + .to.emit(testSignature, "Goodbye") + .withArgs(AddressZero); + + await expect(await relayer.sendTransaction(transactionWithGoodSig)) + .to.emit(testSignature, "Goodbye") + .withArgs(await contractSigner.getAddress()); + + await expect(await relayer.sendTransaction(transactionWithBadSig)) + .to.emit(testSignature, "Goodbye") + .withArgs(AddressZero); + }); + it("signer bad return size", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const Signer = await hre.ethers.getContractFactory( + "ContractSignerReturnSize" + ); + const signer = await Signer.deploy(); + + const transaction = await testSignature.hello.populateTransaction(); + + const signature = makeContractSignature( + transaction, + "0xaabbccddeeff", + keccak256(toUtf8Bytes("salt")), + await signer.getAddress() + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + }); + it("signer with faulty entrypoint", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const Signer = await hre.ethers.getContractFactory( + "ContractSignerFaulty" + ); + const signer = await Signer.deploy(); + + const transaction = await testSignature.hello.populateTransaction(); + + const signature = makeContractSignature( + transaction, + "0xaabbccddeeff", + keccak256(toUtf8Bytes("salt")), + await signer.getAddress() + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + }); + it("signer with no code deployed", async () => { + const { testSignature, relayer } = await loadFixture(setup); + + const signerAddress = "0x1234567890000000000000000000000123456789"; + + await expect(await hre.ethers.provider.getCode(signerAddress)).to.equal( + "0x" + ); + + const transaction = await testSignature.hello.populateTransaction(); + + const signature = makeContractSignature( + transaction, + "0xaabbccddeeff", + keccak256(toUtf8Bytes("salt")), + signerAddress + ); + + const transactionWithSig = { + ...transaction, + data: `${transaction.data}${signature.slice(2)}`, + }; + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(testSignature, "Hello") + .withArgs(AddressZero); + }); + }); +}); + +async function sign( + contract: string, + transaction: TransactionLike, + salt: string, + signer: Signer +) { + const { domain, types, message } = typedDataForTransaction( + { contract, chainId: 31337, salt }, + transaction.data || "0x" + ); + + const signature = await signer.signTypedData(domain, types, message); + + return `${salt}${signature.slice(2)}`; +} + +function makeContractSignature( + transaction: TransactionLike, + signerSpecificSignature: string, + salt: string, + r: string, + s?: string +) { + const dataBytesLength = ((transaction.data?.length as number) - 2) / 2; + + r = AbiCoder.defaultAbiCoder().encode(["address"], [r]); + s = s || AbiCoder.defaultAbiCoder().encode(["uint256"], [dataBytesLength]); + const v = solidityPacked(["uint8"], [0]); + + return `${signerSpecificSignature}${salt.slice(2)}${r.slice(2)}${s.slice( + 2 + )}${v.slice(2)}`; +} diff --git a/test/07_GuardableModifier.spec.ts b/test/07_GuardableModifier.spec.ts new file mode 100644 index 00000000..90c29c6c --- /dev/null +++ b/test/07_GuardableModifier.spec.ts @@ -0,0 +1,297 @@ +import { loadFixture } from "@nomicfoundation/hardhat-network-helpers"; +import { expect } from "chai"; +import { Signer, TransactionLike, keccak256, toUtf8Bytes } from "ethers"; +import hre from "hardhat"; + +import { + TestAvatar__factory, + TestGuard__factory, + TestGuardableModifier__factory, +} from "../typechain-types"; + +import typedDataForTransaction from "./typedDataForTransaction"; + +describe("GuardableModifier", async () => { + async function setupTests() { + const [deployer, executor, signer, someone, relayer] = + await hre.ethers.getSigners(); + + const Avatar = await hre.ethers.getContractFactory("TestAvatar"); + const avatar = TestAvatar__factory.connect( + await (await Avatar.deploy()).getAddress(), + deployer + ); + + const Modifier = await hre.ethers.getContractFactory( + "TestGuardableModifier" + ); + const modifier = TestGuardableModifier__factory.connect( + await ( + await Modifier.connect(deployer).deploy( + await avatar.getAddress(), + await avatar.getAddress() + ) + ).getAddress(), + deployer + ); + const Guard = await hre.ethers.getContractFactory("TestGuard"); + const guard = TestGuard__factory.connect( + await (await Guard.deploy(await modifier.getAddress())).getAddress(), + hre.ethers.provider + ); + + await avatar.enableModule(await modifier.getAddress()); + await modifier.enableModule(await executor.getAddress()); + + return { + executor, + signer, + someone, + relayer, + avatar, + guard, + modifier, + }; + } + + describe("exec", async () => { + it("skips guard pre-check if no guard is set", async () => { + const { avatar, modifier, executor } = await loadFixture(setupTests); + + await expect( + modifier + .connect(executor) + .execTransactionFromModule(await avatar.getAddress(), 0, "0x", 0) + ).to.not.be.reverted; + }); + + it("pre-checks transaction if guard is set", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + await modifier.setGuard(await guard.getAddress()); + + await expect( + modifier + .connect(executor) + .execTransactionFromModule(await avatar.getAddress(), 0, "0x", 0) + ) + .to.emit(guard, "PreChecked") + .withArgs(await executor.getAddress()); + }); + + it("pre-check gets called with signer when transaction is relayed", async () => { + const { signer, modifier, relayer, avatar, guard } = + await loadFixture(setupTests); + + await modifier.enableModule(await signer.getAddress()); + await modifier.setGuard(await guard.getAddress()); + + const inner = await avatar.enableModule.populateTransaction( + "0xff00000000000000000000000000000000ff3456" + ); + + const { from, ...transaction } = + await modifier.execTransactionFromModule.populateTransaction( + await avatar.getAddress(), + 0, + inner.data as string, + 0 + ); + + const signature = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + signer + ); + const transactionWithSig = { + ...transaction, + to: await modifier.getAddress(), + data: `${transaction.data}${signature.slice(2)}`, + value: 0, + }; + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(guard, "PreChecked") + .withArgs(await signer.getAddress()); + }); + + it("pre-checks and reverts transaction if guard is set", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + await modifier.setGuard(await guard.getAddress()); + + await expect( + modifier + .connect(executor) + .execTransactionFromModule(await avatar.getAddress(), 1337, "0x", 0) + ).to.be.revertedWith("Cannot send 1337"); + }); + + it("skips post-check if no guard is enabled", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + + await expect( + modifier + .connect(executor) + .execTransactionFromModule(await avatar.getAddress(), 0, "0x", 0) + ).not.to.emit(guard, "PostChecked"); + }); + + it("post-checks transaction if guard is set", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + await modifier.setGuard(await guard.getAddress()); + + await expect( + modifier + .connect(executor) + .execTransactionFromModule(await avatar.getAddress(), 0, "0x", 0) + ) + .to.emit(guard, "PostChecked") + .withArgs(true); + }); + }); + + describe("execAndReturnData", async () => { + it("skips guard pre-check if no guard is set", async () => { + const { avatar, modifier, executor } = await loadFixture(setupTests); + + await expect( + modifier + .connect(executor) + .execTransactionFromModuleReturnData( + await avatar.getAddress(), + 0, + "0x", + 0 + ) + ).to.not.be.reverted; + }); + + it("pre-checks transaction if guard is set", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + await modifier.setGuard(await guard.getAddress()); + + await expect( + modifier + .connect(executor) + .execTransactionFromModuleReturnData( + await avatar.getAddress(), + 0, + "0x", + 0 + ) + ) + .to.emit(guard, "PreChecked") + .withArgs(await executor.getAddress()); + }); + + it("pre-check gets called with signer when transaction is relayed", async () => { + const { signer, modifier, relayer, avatar, guard } = + await loadFixture(setupTests); + + await modifier.enableModule(signer.address); + await modifier.setGuard(await guard.getAddress()); + + const inner = await avatar.enableModule.populateTransaction( + "0xff00000000000000000000000000000000ff3456" + ); + + const { from, ...transaction } = + await modifier.execTransactionFromModuleReturnData.populateTransaction( + await avatar.getAddress(), + 0, + inner.data as string, + 0 + ); + + const signature = await sign( + await modifier.getAddress(), + transaction, + keccak256(toUtf8Bytes("salt")), + signer + ); + const transactionWithSig = { + ...transaction, + to: await modifier.getAddress(), + data: `${transaction.data}${signature.slice(2)}`, + value: 0, + }; + + await expect(await relayer.sendTransaction(transactionWithSig)) + .to.emit(guard, "PreChecked") + .withArgs(signer.address); + }); + + it("pre-checks and reverts transaction if guard is set", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + await modifier.setGuard(await guard.getAddress()); + + await expect( + modifier + .connect(executor) + .execTransactionFromModuleReturnData( + await avatar.getAddress(), + 1337, + "0x", + 0 + ) + ).to.be.revertedWith("Cannot send 1337"); + }); + + it("skips post-check if no guard is enabled", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + + await expect( + modifier + .connect(executor) + .execTransactionFromModuleReturnData( + await avatar.getAddress(), + 0, + "0x", + 0 + ) + ).not.to.emit(guard, "PostChecked"); + }); + + it("post-checks transaction if guard is set", async () => { + const { avatar, executor, modifier, guard } = + await loadFixture(setupTests); + await modifier.setGuard(await guard.getAddress()); + + await expect( + modifier + .connect(executor) + .execTransactionFromModuleReturnData( + await avatar.getAddress(), + 0, + "0x", + 0 + ) + ) + .to.emit(guard, "PostChecked") + .withArgs(true); + }); + }); +}); + +async function sign( + contract: string, + transaction: TransactionLike, + salt: string, + signer: Signer +) { + const { domain, types, message } = typedDataForTransaction( + { contract, chainId: 31337, salt }, + transaction.data || "0x" + ); + + const signature = await signer.signTypedData(domain, types, message); + + return `${salt}${signature.slice(2)}`; +} diff --git a/test/typedDataForTransaction.ts b/test/typedDataForTransaction.ts new file mode 100644 index 00000000..81f4d175 --- /dev/null +++ b/test/typedDataForTransaction.ts @@ -0,0 +1,28 @@ +import { BigNumberish } from "ethers"; + +export default function typedDataForTransaction( + { + contract, + chainId, + salt, + }: { + contract: string; + chainId: BigNumberish; + salt: string; + }, + data: string +) { + const domain = { verifyingContract: contract, chainId }; + const types = { + ModuleTx: [ + { type: "bytes", name: "data" }, + { type: "bytes32", name: "salt" }, + ], + }; + const message = { + data, + salt, + }; + + return { domain, types, message }; +} diff --git a/yarn.lock b/yarn.lock index f25a8c38..22c3c819 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,25 +2,36 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + "@babel/code-frame@^7.0.0": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" "@chainsafe/as-sha256@^0.3.1": @@ -66,26 +77,26 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.2" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -93,12 +104,26 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.40.0": - version "8.40.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.40.0.tgz#3ba73359e11f5a7bd3e407f70b3528abfae69cec" - integrity sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA== +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": +"@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== @@ -440,6 +465,11 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@fastify/busboy@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" + integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ== + "@gnosis.pm/mock-contract@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@gnosis.pm/mock-contract/-/mock-contract-4.0.0.tgz#eaf500fddcab81b5f6c22280a7b22ff891dd6f87" @@ -450,12 +480,12 @@ resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-contracts/-/safe-contracts-1.3.0.tgz#316741a7690d8751a1f701538cfc9ec80866eedc" integrity sha512-1p+1HwGvxGUVzVkFjNzglwHrLNA67U/axP0Ct85FzzH8yhGJb4t9jDjPYocVMzLorDoWAfKicGy1akPY9jXRVw== -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -464,10 +494,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -510,19 +540,35 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@morgan-stanley/ts-mocking-bird@^0.6.2": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz#2e4b60d42957bab3b50b67dbf14c3da2f62a39f7" - integrity sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA== +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.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: - lodash "^4.17.16" - uuid "^7.0.3" + "@noble/hashes" "1.3.2" "@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.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + +"@noble/hashes@1.3.2", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + "@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" @@ -549,31 +595,31 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomicfoundation/ethereumjs-block@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d" - integrity sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw== - dependencies: - "@nomicfoundation/ethereumjs-common" "4.0.1" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" - "@nomicfoundation/ethereumjs-trie" "6.0.1" - "@nomicfoundation/ethereumjs-tx" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" +"@nomicfoundation/ethereumjs-block@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz#13a7968f5964f1697da941281b7f7943b0465d04" + integrity sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" ethereum-cryptography "0.1.3" ethers "^5.7.1" -"@nomicfoundation/ethereumjs-blockchain@7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz#80e0bd3535bfeb9baa29836b6f25123dab06a726" - integrity sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A== - dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.1" - "@nomicfoundation/ethereumjs-common" "4.0.1" - "@nomicfoundation/ethereumjs-ethash" "3.0.1" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" - "@nomicfoundation/ethereumjs-trie" "6.0.1" - "@nomicfoundation/ethereumjs-tx" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" +"@nomicfoundation/ethereumjs-blockchain@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz#45323b673b3d2fab6b5008535340d1b8fea7d446" + integrity sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-ethash" "3.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" abstract-level "^1.0.3" debug "^4.3.3" ethereum-cryptography "0.1.3" @@ -581,130 +627,152 @@ lru-cache "^5.1.1" memory-level "^1.0.0" -"@nomicfoundation/ethereumjs-common@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz#4702d82df35b07b5407583b54a45bf728e46a2f0" - integrity sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g== +"@nomicfoundation/ethereumjs-common@4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz#a15d1651ca36757588fdaf2a7d381a150662a3c3" + integrity sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg== dependencies: - "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.2" crc-32 "^1.2.0" -"@nomicfoundation/ethereumjs-ethash@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41" - integrity sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w== +"@nomicfoundation/ethereumjs-ethash@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz#da77147f806401ee996bfddfa6487500118addca" + integrity sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg== dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.1" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" abstract-level "^1.0.3" bigint-crypto-utils "^3.0.23" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-evm@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz#f35681e203363f69ce2b3d3bf9f44d4e883ca1f1" - integrity sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ== +"@nomicfoundation/ethereumjs-evm@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz#4c2f4b84c056047102a4fa41c127454e3f0cfcf6" + integrity sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ== dependencies: "@ethersproject/providers" "^5.7.1" - "@nomicfoundation/ethereumjs-common" "4.0.1" - "@nomicfoundation/ethereumjs-tx" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" debug "^4.3.3" ethereum-cryptography "0.1.3" mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/ethereumjs-rlp@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28" - integrity sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ== +"@nomicfoundation/ethereumjs-rlp@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" + integrity sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA== -"@nomicfoundation/ethereumjs-statemanager@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935" - integrity sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ== +"@nomicfoundation/ethereumjs-statemanager@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz#3ba4253b29b1211cafe4f9265fee5a0d780976e0" + integrity sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA== dependencies: - "@nomicfoundation/ethereumjs-common" "4.0.1" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" debug "^4.3.3" ethereum-cryptography "0.1.3" ethers "^5.7.1" js-sdsl "^4.1.4" -"@nomicfoundation/ethereumjs-trie@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz#662c55f6b50659fd4b22ea9f806a7401cafb7717" - integrity sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA== +"@nomicfoundation/ethereumjs-trie@6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz#9a6dbd28482dca1bc162d12b3733acab8cd12835" + integrity sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ== dependencies: - "@nomicfoundation/ethereumjs-rlp" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" "@types/readable-stream" "^2.3.13" ethereum-cryptography "0.1.3" readable-stream "^3.6.0" -"@nomicfoundation/ethereumjs-tx@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz#7629dc2036b4a33c34e9f0a592b43227ef4f0c7d" - integrity sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w== +"@nomicfoundation/ethereumjs-tx@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz#117813b69c0fdc14dd0446698a64be6df71d7e56" + integrity sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g== dependencies: "@chainsafe/ssz" "^0.9.2" "@ethersproject/providers" "^5.7.2" - "@nomicfoundation/ethereumjs-common" "4.0.1" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-util@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89" - integrity sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA== +"@nomicfoundation/ethereumjs-util@9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz#16bdc1bb36f333b8a3559bbb4b17dac805ce904d" + integrity sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ== dependencies: "@chainsafe/ssz" "^0.10.0" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-vm@7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz#7d035e0993bcad10716c8b36e61dfb87fa3ca05f" - integrity sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ== - dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.1" - "@nomicfoundation/ethereumjs-blockchain" "7.0.1" - "@nomicfoundation/ethereumjs-common" "4.0.1" - "@nomicfoundation/ethereumjs-evm" "2.0.1" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" - "@nomicfoundation/ethereumjs-statemanager" "2.0.1" - "@nomicfoundation/ethereumjs-trie" "6.0.1" - "@nomicfoundation/ethereumjs-tx" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" +"@nomicfoundation/ethereumjs-vm@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz#3b0852cb3584df0e18c182d0672a3596c9ca95e6" + integrity sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" debug "^4.3.3" ethereum-cryptography "0.1.3" mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/hardhat-chai-matchers@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz#72a2e312e1504ee5dd73fe302932736432ba96bc" - integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== +"@nomicfoundation/hardhat-chai-matchers@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.3.tgz#f4c074d39b74bd283c99e2c2bf143e3cef51ae18" + integrity sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw== dependencies: - "@ethersproject/abi" "^5.1.2" "@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-network-helpers@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz#e4fe1be93e8a65508c46d73c41fa26c7e9f84931" - integrity sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q== + version "1.0.9" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.9.tgz#767449e8a2acda79306ac84626117583d95d25aa" + integrity sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q== dependencies: ethereumjs-util "^7.1.4" -"@nomicfoundation/hardhat-toolbox@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz#ec95f23b53cb4e71a1a7091380fa223aad18f156" - integrity sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg== +"@nomicfoundation/hardhat-toolbox@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz#eb1f619218dd1414fa161dfec92d3e5e53a2f407" + integrity sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA== + +"@nomicfoundation/hardhat-verify@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.3.tgz#173557f8cfa53c8c9da23a326f54d24fe459ae68" + integrity sha512-ESbRu9by53wu6VvgwtMtm108RSmuNsVqXtzg061D+/4R7jaWh/Wl/8ve+p6SdDX7vA1Z3L02hDO1Q3BY4luLXQ== + 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/solidity-analyzer-darwin-arm64@0.1.1": version "0.1.1" @@ -772,7 +840,7 @@ "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" -"@nomiclabs/hardhat-ethers@2.2.3": +"@nomiclabs/hardhat-ethers@^2.2.3": version "2.2.3" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== @@ -793,25 +861,63 @@ table "^6.8.0" undici "^5.14.0" -"@openzeppelin/contracts-upgradeable@^4.8.1": - version "4.8.3" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.3.tgz#6b076a7b751811b90fe3a172a7faeaa603e13a3f" - integrity sha512-SXDRl7HKpl2WDoJpn7CK/M9U4Z8gNXDHHChAKh0Iz+Wew3wu6CmFYBeie3je8V0GSXZAIYYwUktSrnW/kwVPtg== +"@openzeppelin/contracts-upgradeable@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.0.0.tgz#859c00c55f04b6dda85b3c88bce507d65019888f" + integrity sha512-D54RHzkOKHQ8xUssPgQe2d/U92mwaiBDY7qCCVGq6VqwQjsT3KekEQ3bonev+BLP30oZ0R1U6YC8/oLpizgC5Q== -"@openzeppelin/contracts@^4.8.1": - version "4.8.3" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.3.tgz#cbef3146bfc570849405f59cba18235da95a252a" - integrity sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg== +"@openzeppelin/contracts@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-5.0.0.tgz#ee0e4b4564f101a5c4ee398cd4d73c0bd92b289c" + integrity sha512-bv2sdS6LKqVVMLI5+zqnNrNU/CA+6z6CmwFXm/MzmOPBRSO5reEJN7z0Gbzvs0/bv/MZZXNklubpwy3v2+azsw== "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/utils@^2.3.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== + dependencies: + cross-spawn "^7.0.3" + fast-glob "^3.3.0" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.6.0" + +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@prettier/sync@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@prettier/sync/-/sync-0.3.0.tgz#91f2cfc23490a21586d1cf89c6f72157c000ca1e" + integrity sha512-3dcmCyAxIcxy036h1I7MQU/uEEBq8oLwf1CE3xeze+MPlgkdlb/+w6rGR/1dhp6Hqi17fRS6nvwnOzkESxEkOw== + "@scure/base@~1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" - integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== "@scure/bip32@1.1.5": version "1.1.5" @@ -822,6 +928,15 @@ "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== + dependencies: + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" + "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" @@ -830,6 +945,14 @@ "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + "@sentry/core@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" @@ -898,6 +1021,11 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" +"@sindresorhus/is@^5.2.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" + integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== + "@solidity-parser/parser@^0.14.0": version "0.14.5" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" @@ -906,12 +1034,19 @@ antlr4ts "^0.5.0-alpha.4" "@solidity-parser/parser@^0.16.0": - version "0.16.0" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.0.tgz#1fb418c816ca1fc3a1e94b08bcfe623ec4e1add4" - integrity sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q== + version "0.16.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.1.tgz#f7c8a686974e1536da0105466c4db6727311253c" + integrity sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw== dependencies: antlr4ts "^0.5.0-alpha.4" +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -928,22 +1063,22 @@ integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + 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-v5@^11.1.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.0.tgz#98cac1788ef8b22c0482bb6797edcd22d69b8f0f" - integrity sha512-7P+fLol3faUi/WPFwUo9tfo+IHSsvMBvSM/ECNU9mFHcF8eFI84ygauCdwPgP41k8bhsPb29XhwZiYDTUDXU8Q== +"@typechain/ethers-v6@^0.5.1": + 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@^6.1.5": - version "6.1.6" - resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-6.1.6.tgz#1a749eb35e5054c80df531cf440819cb347c62ea" - integrity sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA== +"@typechain/hardhat@^9.1.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" @@ -955,23 +1090,23 @@ "@types/node" "*" "@types/bn.js@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" - integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + version "5.1.4" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.4.tgz#0853d5f92dfdbc8fe1ae60700411a60845fa7d27" + integrity sha512-ZtBd9L8hVtoBpPMSWfbwjC4dhQtJdlPS+e1A0Rydb7vg7bDcUwiRklPx24sMYtXcmAMST/k0Wze7JLbNU/5SkA== dependencies: "@types/node" "*" "@types/chai-as-promised@^7.1.3": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz#6e016811f6c7a64f2eed823191c3a6955094e255" - integrity sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ== + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.7.tgz#fd16a981ba9542c83d4e1d2f40c7899aae82aa38" + integrity sha512-APucaP5rlmTRYKtRA6FE5QPP87x76ejw5t5guRJ4y5OgMnwtsvigw7HHhKZlx2MGXLeZd6R/GNZR/IqDHcbtQw== dependencies: "@types/chai" "*" "@types/chai@*", "@types/chai@^4.3.3": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b" - integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== + version "4.3.9" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.9.tgz#144d762491967db8c6dea38e03d2206c2623feec" + integrity sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg== "@types/concat-stream@^1.6.0": version "1.6.1" @@ -995,10 +1130,15 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/http-cache-semantics@^4.0.2": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#a3ff232bf7d5c55f38e4e45693eda2ebb545794d" + integrity sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA== + +"@types/json-schema@^7.0.12": + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/json5@^0.0.29": version "0.0.29" @@ -1016,14 +1156,21 @@ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/mocha@^10.0.0": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" - integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== + version "10.0.3" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.3.tgz#4804fe9cd39da26eb62fa65c15ea77615a187812" + integrity sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ== "@types/node@*": - version "20.1.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.1.tgz#afc492e8dbe7f672dd3a13674823522b467a45ad" - integrity sha512-uKBEevTNb+l6/aCQaKVnUModfEMjAl98lw2Si9P5y4hLu9tm6AlX2ZIoXZX6Wh9lJueYPrGPKk5WMCNHg/u6/A== + version "20.8.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" + integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w== + 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" @@ -1031,9 +1178,11 @@ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^18.8.5": - version "18.16.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.6.tgz#d0ffffe201b253989b17ea157ddabec677a4f4fe" - integrity sha512-N7KINmeB8IN3vRR8dhgHEp+YpWvGFcpDoh5XZ8jB5a00AdFKCKEyyGTOPTddUf4JqU1ZKTVxkOxakDvchNVI2Q== + version "18.18.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.8.tgz#2b285361f2357c8c8578ec86b5d097c7f464cfd6" + integrity sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ== + dependencies: + undici-types "~5.26.4" "@types/node@^8.0.0": version "8.10.66" @@ -1041,21 +1190,21 @@ integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== "@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.1.tgz#c290c1f0d3dc364af94c2c5ee92046a13b7f89fd" + integrity sha512-4HCoGwR3221nOc7G0Z/6KgTNGgaaFGkbGrtUJsB+zlKX2LBVjFHHIUkieMBgHHXgBH5Gq6dZHJKdBYdtlhBQvw== dependencies: "@types/node" "*" "@types/prettier@^2.1.1": - version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + 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", "@types/qs@^6.9.7": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + version "6.9.9" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.9.tgz#66f7b26288f6799d279edf13da7ccd40d2fa9197" + integrity sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg== "@types/readable-stream@^2.3.13": version "2.3.15" @@ -1066,112 +1215,123 @@ safe-buffer "~5.1.1" "@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.5.tgz#14b1766b4fbc198b0af5599d9fd21c89056633ce" + integrity sha512-aIonTBMErtE3T9MxDvTZRzcrT/mCqpEZBw3CCY/i+oG9n57N/+7obBkhFgavUAIrX21bU0LHg1XRgtaLdelBhA== dependencies: "@types/node" "*" -"@types/semver@^7.3.12": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== +"@types/semver@^7.5.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^17.0.13": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" + integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.40.0": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz#f156827610a3f8cefc56baeaa93cd4a5f32966b4" - integrity sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg== +"@typescript-eslint/eslint-plugin@^6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz#d8ce497dc0ed42066e195c8ecc40d45c7b1254f4" + integrity sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg== dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.5" - "@typescript-eslint/type-utils" "5.59.5" - "@typescript-eslint/utils" "5.59.5" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.9.1" + "@typescript-eslint/type-utils" "6.9.1" + "@typescript-eslint/utils" "6.9.1" + "@typescript-eslint/visitor-keys" "6.9.1" debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.40.0": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.5.tgz#63064f5eafbdbfb5f9dfbf5c4503cdf949852981" - integrity sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw== - dependencies: - "@typescript-eslint/scope-manager" "5.59.5" - "@typescript-eslint/types" "5.59.5" - "@typescript-eslint/typescript-estree" "5.59.5" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.9.1.tgz#4f685f672f8b9580beb38d5fb99d52fc3e34f7a3" + integrity sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg== + dependencies: + "@typescript-eslint/scope-manager" "6.9.1" + "@typescript-eslint/types" "6.9.1" + "@typescript-eslint/typescript-estree" "6.9.1" + "@typescript-eslint/visitor-keys" "6.9.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz#33ffc7e8663f42cfaac873de65ebf65d2bce674d" - integrity sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A== +"@typescript-eslint/scope-manager@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz#e96afeb9a68ad1cd816dba233351f61e13956b75" + integrity sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg== dependencies: - "@typescript-eslint/types" "5.59.5" - "@typescript-eslint/visitor-keys" "5.59.5" + "@typescript-eslint/types" "6.9.1" + "@typescript-eslint/visitor-keys" "6.9.1" -"@typescript-eslint/type-utils@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz#485b0e2c5b923460bc2ea6b338c595343f06fc9b" - integrity sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg== +"@typescript-eslint/type-utils@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz#efd5db20ed35a74d3c7d8fba51b830ecba09ce32" + integrity sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg== dependencies: - "@typescript-eslint/typescript-estree" "5.59.5" - "@typescript-eslint/utils" "5.59.5" + "@typescript-eslint/typescript-estree" "6.9.1" + "@typescript-eslint/utils" "6.9.1" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" -"@typescript-eslint/types@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.5.tgz#e63c5952532306d97c6ea432cee0981f6d2258c7" - integrity sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w== +"@typescript-eslint/types@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.1.tgz#a6cfc20db0fcedcb2f397ea728ef583e0ee72459" + integrity sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ== -"@typescript-eslint/typescript-estree@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz#9b252ce55dd765e972a7a2f99233c439c5101e42" - integrity sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg== +"@typescript-eslint/typescript-estree@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz#8c77910a49a04f0607ba94d78772da07dab275ad" + integrity sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw== dependencies: - "@typescript-eslint/types" "5.59.5" - "@typescript-eslint/visitor-keys" "5.59.5" + "@typescript-eslint/types" "6.9.1" + "@typescript-eslint/visitor-keys" "6.9.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.1.tgz#763da41281ef0d16974517b5f0d02d85897a1c1e" + integrity sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.9.1" + "@typescript-eslint/types" "6.9.1" + "@typescript-eslint/typescript-estree" "6.9.1" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz#6753a9225a0ba00459b15d6456b9c2780b66707d" + integrity sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw== + dependencies: + "@typescript-eslint/types" "6.9.1" + eslint-visitor-keys "^3.4.1" -"@typescript-eslint/utils@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.5.tgz#15b3eb619bb223302e60413adb0accd29c32bcae" - integrity sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.5" - "@typescript-eslint/types" "5.59.5" - "@typescript-eslint/typescript-estree" "5.59.5" - eslint-scope "^5.1.1" - semver "^7.3.7" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@typescript-eslint/visitor-keys@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz#ba5b8d6791a13cf9fea6716af1e7626434b29b9b" - integrity sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA== - dependencies: - "@typescript-eslint/types" "5.59.5" - eslint-visitor-keys "^3.3.0" +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== abbrev@1: version "1.1.1" @@ -1183,13 +1343,6 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" @@ -1209,14 +1362,14 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== -acorn@^8.4.1, acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.4.1, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== address@^1.0.1: version "1.2.2" @@ -1233,6 +1386,11 @@ aes-js@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" @@ -1248,7 +1406,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: +ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1273,11 +1431,6 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== - ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -1300,11 +1453,6 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1315,7 +1463,7 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +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== @@ -1335,16 +1483,16 @@ ansi-styles@^6.1.0: integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== antlr4@^4.11.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.12.0.tgz#e2323fbb057c77068a174914b0533398aeaba56a" - integrity sha512-23iB5IzXJZRZeK9TigzUyrNc9pSmNqAerJRBcNq1ETrmttMWRgaYZzC561IgEO3ygKsDJTYDTozABXa4b/fTQQ== + version "4.13.1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1.tgz#1e0a1830a08faeb86217cb2e6c34716004e4253d" + integrity sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA== 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.1, anymatch@~3.1.2: +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== @@ -1387,15 +1535,15 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-union@^2.1.0: @@ -1408,54 +1556,55 @@ array-uniq@1.0.3: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== -array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" - integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" @@ -1491,16 +1640,6 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -1508,6 +1647,15 @@ axios@^0.21.1: dependencies: follow-redirects "^1.14.0" +axios@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.0.tgz#f1e5292f26b2fd5c2e66876adc5b06cdbd7d2102" + integrity sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg== + dependencies: + follow-redirects "^1.15.0" + 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" @@ -1525,22 +1673,20 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - 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== +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + bigint-crypto-utils@^3.0.23: - version "3.2.2" - resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz#e30a49ec38357c6981cd3da5aaa6480b1f752ee4" - integrity sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw== + version "3.3.0" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" + integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg== binary-extensions@^2.0.0: version "2.2.0" @@ -1567,6 +1713,13 @@ bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1655,36 +1808,50 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== dependencies: - streamsearch "^1.1.0" + run-applescript "^5.0.0" 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.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.8: + version "10.2.14" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" + integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== + dependencies: + "@types/http-cache-semantics" "^4.0.2" + get-stream "^6.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.3" + mimic-response "^4.0.0" + normalize-url "^8.0.0" + responselike "^3.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelcase@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" @@ -1720,19 +1887,19 @@ chai-as-promised@^7.1.1: check-error "^1.0.2" chai@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" - integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== + version "4.3.10" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.10.tgz#d784cec635e3b7e2ffb66446a63b4e33bd390384" + integrity sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g== 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" + 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.5" + type-detect "^4.0.8" -chalk@^2.0.0, chalk@^2.4.2: +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== @@ -1754,25 +1921,12 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.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: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== - -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== +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: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.2.0" - optionalDependencies: - fsevents "~2.1.1" + get-func-name "^2.0.2" chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: version "3.5.3" @@ -1794,6 +1948,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.7.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + 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" @@ -1828,15 +1987,6 @@ cli-table3@^0.5.0: optionalDependencies: colors "^1.1.2" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1884,7 +2034,7 @@ colors@1.4.0, colors@^1.1.2: 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, combined-stream@~1.0.6: +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== @@ -1941,29 +2091,32 @@ concat-stream@^1.6.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + 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.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - 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== cosmiconfig@^8.0.0: - version "8.1.3" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689" - integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: - import-fresh "^3.2.1" + import-fresh "^3.3.0" js-yaml "^4.1.0" - parse-json "^5.0.0" + parse-json "^5.2.0" path-type "^4.0.0" crc-32@^1.2.0: @@ -1999,7 +2152,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2013,25 +2166,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - 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@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -2046,24 +2185,26 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - 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.2: +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +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: +deep-extend@^0.6.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== @@ -2073,11 +2214,49 @@ deep-is@^0.1.3, deep-is@~0.1.3: 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-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -2099,11 +2278,6 @@ detect-port@^1.3.0: address "^1.0.1" debug "4" -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -2143,23 +2317,15 @@ doctrine@^3.0.0: esutils "^2.0.2" dotenv@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -2173,11 +2339,6 @@ elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2194,11 +2355,12 @@ encode-utf8@^1.0.2: integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== enquirer@^2.3.0, enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + 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" @@ -2212,25 +2374,26 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: - version "1.21.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" - integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.0" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -2238,40 +2401,39 @@ es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + which-typed-array "^1.1.13" es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -2287,16 +2449,16 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@1.0.5, 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== - escape-string-regexp@4.0.0, 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" @@ -2309,21 +2471,21 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -eslint-config-prettier@^8.5.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" - integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== -eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-module-utils@^2.7.4: +eslint-module-utils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== @@ -2331,80 +2493,76 @@ eslint-module-utils@^2.7.4: debug "^3.2.7" eslint-plugin-import@^2.26.0: - version "2.27.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" - integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" + version "2.29.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.7.4" - has "^1.0.3" - is-core-module "^2.11.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.values "^1.1.6" - resolve "^1.22.1" - semver "^6.3.0" - tsconfig-paths "^3.14.1" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.14.2" eslint-plugin-no-only-tests@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz#f38e4935c6c6c4842bf158b64aaa20c366fe171b" integrity sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw== -eslint-plugin-prettier@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.25.0: - version "8.40.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.40.0.tgz#a564cd0099f38542c4e9a2f630fa45bf33bc42a4" - integrity sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ== + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.40.0" - "@humanwhocodes/config-array" "^0.11.8" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.5.2" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -2412,30 +2570,27 @@ eslint@^8.25.0: find-up "^5.0.0" glob-parent "^6.0.2" globals "^13.19.0" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" @@ -2468,11 +2623,6 @@ estraverse@^1.9.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -2484,23 +2634,21 @@ esutils@^2.0.2: integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== eth-gas-reporter@^0.2.25: - version "0.2.25" - resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz#546dfa946c1acee93cb1a94c2a1162292d6ff566" - integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== + 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: - "@ethersproject/abi" "^5.0.0-beta.146" "@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 "^4.0.40" + ethers "^5.7.2" fs-readdir-recursive "^1.1.0" lodash "^4.17.14" markdown-table "^1.1.3" - mocha "^7.1.1" + mocha "^10.2.0" req-cwd "^2.0.0" - request "^2.88.0" - request-promise-native "^1.0.5" sha1 "^1.1.1" sync-request "^6.0.0" @@ -2542,6 +2690,16 @@ ethereum-cryptography@^1.0.3: "@scure/bip32" "1.1.5" "@scure/bip39" "1.1.1" +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" + ethereumjs-abi@^0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" @@ -2563,7 +2721,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4: +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== @@ -2574,22 +2732,7 @@ ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4: ethereum-cryptography "^0.1.3" rlp "^2.2.4" -ethers@^4.0.40: - version "4.0.49" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" - integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== - dependencies: - aes-js "3.0.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^5.5.3, ethers@^5.7.1: +ethers@^5.7.0, ethers@^5.7.1, ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -2625,6 +2768,19 @@ ethers@^5.5.3, ethers@^5.7.1: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +ethers@^6.9.2: + version "6.9.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.9.2.tgz#6f4632f62e2350fa8354ff28624027a175ef85a4" + integrity sha512-YpkrtILnMQz5jSEsJQRTpduaGT/CXuLnUIuOYzHA0v/7c8IX91m2J48wSKjzGL5L9J/Us3tLoUdb+OwE3U+FFQ== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@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" @@ -2641,11 +2797,6 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -2654,20 +2805,35 @@ evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -2675,14 +2841,14 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2, fast-diff@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.0.3, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== +fast-glob@^3.0.3, fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -2728,13 +2894,6 @@ find-replace@^3.0.0: dependencies: array-back "^3.0.1" -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -2750,30 +2909,31 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + micromatch "^4.0.2" -flat@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" - integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== +flat-cache@^3.0.4: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - is-buffer "~2.0.3" + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" 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== -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== fmix@^0.1.0: version "0.1.0" @@ -2782,10 +2942,10 @@ fmix@^0.1.0: dependencies: imul "^1.0.0" -follow-redirects@^1.12.1, follow-redirects@^1.14.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.0: + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3: version "0.3.3" @@ -2802,10 +2962,10 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data-encoder@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" + integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== form-data@^2.2.0: version "2.5.1" @@ -2825,15 +2985,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - 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" @@ -2882,7 +3033,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0: +fs-extra@^9.0.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== @@ -2902,65 +3053,66 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + 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.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +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== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +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.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== +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.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + 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== +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -2969,13 +3121,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - ghost-testrpc@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" @@ -2984,7 +3129,7 @@ ghost-testrpc@^0.0.2: chalk "^2.4.2" node-emoji "^1.10.0" -glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +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== @@ -2998,18 +3143,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -3034,13 +3167,13 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.2.5: - version "10.3.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" - integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== +glob@^10.3.7: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" + jackspeak "^2.3.5" minimatch "^9.0.1" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" @@ -3096,9 +3229,9 @@ global-prefix@^3.0.0: which "^1.3.1" globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -3142,55 +3275,59 @@ gopd@^1.0.1: 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: +got@^12.1.0: + version "12.6.1" + resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" + integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@^4.1.11, 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== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== handlebars@^4.0.1: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + 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.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - hardhat-change-network@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/hardhat-change-network/-/hardhat-change-network-0.0.7.tgz#9f9b7943ff966515658b70bf5e44bc2f073af402" integrity sha512-Usp9fJan9SOJnOlVcv/jMJDchseE7bIDA5ZsBnracgVk4MiBwkvMqpmLWn5G1aDBvnUCthvS2gO3odfahgkV0Q== hardhat-deploy@^0.11.28: - version "0.11.34" - resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.11.34.tgz#61252ebf5dfdda7b0b31298dd5580b0735c05910" - integrity sha512-N6xcwD8LSMV/IyfEr8TfR2YRbOh9Q4QvitR9MKZRTXQmgQiiMGjX+2efMjKgNMxwCVlmpfnE1tyDxOJOOUseLQ== + version "0.11.43" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.11.43.tgz#b22ff15b3ea201b72ba0f17f4b2e182cc950e73e" + integrity sha512-D760CjDtinwjOCpKOvdyRtIJYLQIYXmhfgkFe+AkxlYM9bPZ/T4tZ/xIB2tR89ZT+z0hF1YuZFBXIL3/G/9T5g== dependencies: "@ethersproject/abi" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" @@ -3209,7 +3346,7 @@ hardhat-deploy@^0.11.28: chokidar "^3.5.2" debug "^4.3.2" enquirer "^2.3.6" - ethers "^5.5.3" + ethers "^5.7.0" form-data "^4.0.0" fs-extra "^10.0.0" match-all "^1.2.6" @@ -3227,27 +3364,26 @@ hardhat-gas-reporter@^1.0.9: sha1 "^1.1.1" hardhat@^2.14.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.0.tgz#574478790fa4f4a45c5ccf162e82e54f36671749" - integrity sha512-CaEGa13tkJNe2/rdaBiive4pmdNShwxvdWVhr1zfb6aVpRhQt9VNO0l/UIBt/zzajz38ZFjvhfM2bj8LDXo9gw== + version "2.18.3" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.18.3.tgz#8fd01348795c77086fff417a4d13c521dce28fcf" + integrity sha512-JuYaTG+4ZHVjEHCW5Hn6jCHH3LpO75dtgznZpM/dLv12RcSlw/xHbeQh3FAsGahQr1epKryZcZEMHvztVZHe0g== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/ethereumjs-block" "5.0.1" - "@nomicfoundation/ethereumjs-blockchain" "7.0.1" - "@nomicfoundation/ethereumjs-common" "4.0.1" - "@nomicfoundation/ethereumjs-evm" "2.0.1" - "@nomicfoundation/ethereumjs-rlp" "5.0.1" - "@nomicfoundation/ethereumjs-statemanager" "2.0.1" - "@nomicfoundation/ethereumjs-trie" "6.0.1" - "@nomicfoundation/ethereumjs-tx" "5.0.1" - "@nomicfoundation/ethereumjs-util" "9.0.1" - "@nomicfoundation/ethereumjs-vm" "7.0.1" + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-vm" "7.0.2" "@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" @@ -3302,18 +3438,18 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.2, 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== @@ -3325,13 +3461,6 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -3341,14 +3470,6 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.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" @@ -3357,6 +3478,13 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + 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" @@ -3386,6 +3514,11 @@ http-basic@^8.1.1: http-response-object "^3.0.1" parse-cache-control "^1.0.1" +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -3404,14 +3537,13 @@ http-response-object@^3.0.1: dependencies: "@types/node" "^10.0.3" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== +http2-wrapper@^2.1.10: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" https-proxy-agent@^5.0.0: version "5.0.1" @@ -3421,6 +3553,16 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + husky@^8.0.1: version "8.0.3" resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" @@ -3444,11 +3586,11 @@ ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immutable@^4.0.0-rc.12: - version "4.3.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" - integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -3484,18 +3626,18 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.5: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" interpret@^1.0.0: @@ -3546,7 +3688,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^2.0.5, is-buffer@~2.0.3: +is-buffer@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== @@ -3556,12 +3698,12 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== +is-core-module@^2.13.0, is-core-module@^2.13.1: + 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: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1: version "1.0.5" @@ -3570,6 +3712,16 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3597,6 +3749,13 @@ is-hex-prefixed@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-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -3639,6 +3798,16 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -3653,21 +3822,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + which-typed-array "^1.1.11" is-unicode-supported@^0.1.0: version "0.1.0" @@ -3681,6 +3841,13 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -3696,29 +3863,19 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: "@pkgjs/parseargs" "^0.11.0" js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - -js-sha3@0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + version "4.4.2" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" + integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" @@ -3730,14 +3887,6 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - js-yaml@3.x: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -3753,10 +3902,10 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-even-better-errors@^2.3.0: version "2.3.1" @@ -3773,20 +3922,20 @@ json-schema-traverse@^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-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -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== +json-stable-stringify@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz#43d39c7c8da34bfaf785a61a56808b0def9f747d" + integrity sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA== + dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" json5@^1.0.2: version "1.0.2" @@ -3818,35 +3967,44 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + jsonschema@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - keccak@^3.0.0, keccak@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" - integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + 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" +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + 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-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -3854,6 +4012,13 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== + dependencies: + package-json "^8.1.0" + level-supports@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" @@ -3904,14 +4069,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.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" @@ -3924,6 +4081,16 @@ lodash.camelcase@^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.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -3934,18 +4101,11 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, 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@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - log-symbols@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -3954,12 +4114,17 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -loupe@^2.3.1: - version "2.3.6" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" - integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== +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.0" + get-func-name "^2.0.1" + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== lru-cache@^5.1.1: version "5.1.1" @@ -3976,9 +4141,9 @@ lru-cache@^6.0.0: yallist "^4.0.0" "lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== lru_map@^0.3.3: version "0.3.3" @@ -4028,12 +4193,22 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +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.2, 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== @@ -4046,13 +4221,33 @@ mime-db@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, mime-types@~2.1.19: +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" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + 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" @@ -4070,13 +4265,6 @@ minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - 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" @@ -4104,16 +4292,9 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== - -mkdirp@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== mkdirp@0.5.x: version "0.5.6" @@ -4134,37 +4315,7 @@ mnemonist@^0.38.0: dependencies: obliterator "^2.0.0" -mocha@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.2.tgz#8e40d198acf91a52ace122cd7599c9ab857b29e6" - integrity sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA== - dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" - minimatch "3.0.4" - mkdirp "0.5.5" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.0" - -mocha@^10.0.0: +mocha@10.2.0, mocha@^10.0.0, mocha@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== @@ -4191,46 +4342,11 @@ mocha@^10.0.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" -mocha@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" - integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== - dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" - minimatch "3.0.4" - mkdirp "0.5.5" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.0" - module-error@^1.0.1, module-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -4260,17 +4376,12 @@ napi-macros@^2.2.2: resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.6.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== @@ -4287,18 +4398,10 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== nofilter@^3.1.0: version "3.1.0" @@ -4317,6 +4420,25 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" + integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + 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" @@ -4325,36 +4447,21 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - 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.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== -object-keys@^1.0.11, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" @@ -4365,25 +4472,33 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3: - version "2.1.6" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" - integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: - array.prototype.reduce "^1.0.5" call-bind "^1.0.2" define-properties "^1.2.0" - es-abstract "^1.21.2" - safe-array-concat "^1.0.0" + es-abstract "^1.22.1" -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" obliterator@^2.0.0: version "2.0.4" @@ -4397,6 +4512,38 @@ once@1.x, once@^1.3.0: dependencies: wrappy "1" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -4409,17 +4556,17 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" ordinal@^1.0.3: version "1.0.3" @@ -4431,6 +4578,11 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -4438,13 +4590,6 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.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" @@ -4459,13 +4604,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -4485,10 +4623,15 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== + dependencies: + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" parent-module@^1.0.0: version "1.0.1" @@ -4502,7 +4645,7 @@ parse-cache-control@^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== -parse-json@^5.0.0: +parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -4512,6 +4655,27 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -4527,11 +4691,16 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + 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" @@ -4566,10 +4735,10 @@ pbkdf2@^3.0.17: safe-buffer "^5.0.1" sha.js "^2.4.8" -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" @@ -4612,11 +4781,16 @@ prettier-plugin-solidity@^1.1.3: semver "^7.3.8" solidity-comments-extractor "^0.0.7" -prettier@^2.3.1, prettier@^2.8.3, prettier@^2.8.8: +prettier@^2.3.1, prettier@^2.8.3: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + 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" @@ -4629,33 +4803,38 @@ promise@^8.0.0: dependencies: asap "~2.0.6" -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -punycode@^2.1.0, punycode@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +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, qs@^6.9.4: - version "6.11.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" - integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== dependencies: side-channel "^1.0.4" -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -4673,6 +4852,16 @@ raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" +rc@1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.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" @@ -4695,13 +4884,6 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -4728,14 +4910,28 @@ reduce-flatten@^2.0.0: resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== -regexp.prototype.flags@^1.4.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" + +registry-auth-token@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== + dependencies: + "@pnpm/npm-conf" "^2.1.0" + +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" req-cwd@^2.0.0: version "2.0.0" @@ -4751,48 +4947,6 @@ req-from@^2.0.0: dependencies: resolve-from "^3.0.0" -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - 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" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4803,10 +4957,10 @@ require-from-string@^2.0.0, require-from-string@^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== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-from@^3.0.0: version "3.0.0" @@ -4830,21 +4984,28 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== +resolve@^1.1.6, resolve@^1.22.4: + 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.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.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: +rimraf@^2.2.8, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -4859,11 +5020,11 @@ rimraf@^3.0.2: glob "^7.1.3" rimraf@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.1.tgz#0881323ab94ad45fec7c0221f27ea1a142f3f0d0" - integrity sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg== + version "5.0.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== dependencies: - glob "^10.2.5" + glob "^10.3.7" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" @@ -4880,6 +5041,13 @@ rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^5.2.0" +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + run-parallel-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" @@ -4899,13 +5067,13 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -safe-array-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" - integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" isarray "^2.0.5" @@ -4928,7 +5096,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"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== @@ -4953,11 +5121,6 @@ sc-istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - 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" @@ -4972,20 +5135,20 @@ secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -semver@^5.5.0, semver@^5.7.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +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.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.0, semver@^6.3.1: + 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, semver@^7.3.7, semver@^7.3.8: - version "7.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" - integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== +semver@^7.3.4, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" @@ -4996,15 +5159,24 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" setimmediate@^1.0.5: version "1.0.5" @@ -5062,10 +5234,20 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + signal-exit@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" - integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== slash@^3.0.0: version "3.0.0" @@ -5096,17 +5278,18 @@ solc@0.7.3: semver "^5.5.0" tmp "0.0.33" -solhint-plugin-prettier@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz#e3b22800ba435cd640a9eca805a7f8bc3e3e6a6b" - integrity sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA== +solhint-plugin-prettier@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/solhint-plugin-prettier/-/solhint-plugin-prettier-0.1.0.tgz#2f46999e26d6c6bc80281c22a7a21e381175bef7" + integrity sha512-SDOTSM6tZxZ6hamrzl3GUgzF77FM6jZplgL2plFBclj/OjKP8Z3eIPojKU73gRr0MvOS8ACZILn8a5g0VTz/Gw== dependencies: + "@prettier/sync" "^0.3.0" prettier-linter-helpers "^1.0.0" -solhint@^3.3.7: - version "3.4.1" - resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.4.1.tgz#8ea15b21c13d1be0b53fd46d605a24d0b36a0c46" - integrity sha512-pzZn2RlZhws1XwvLPVSsxfHrwsteFf5eySOhpAytzXwKQYbTCJV6z8EevYDiSVKMpWrvbKpEtJ055CuEmzp4Xg== +solhint@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-4.0.0.tgz#fbd27ec9c8348b4fea90b5b469a5c95d625d2e59" + integrity sha512-bFViMcFvhqVd/HK3Roo7xZXX5nbujS7Bxeg5vnZc9QvH0yCWCrQ38Yrn1pbAY9tlKROc6wFr+rK1mxYgYrjZgA== dependencies: "@solidity-parser/parser" "^0.16.0" ajv "^6.12.6" @@ -5119,9 +5302,10 @@ solhint@^3.3.7: glob "^8.0.3" ignore "^5.2.4" js-yaml "^4.1.0" + latest-version "^7.0.0" lodash "^4.17.21" pluralize "^8.0.0" - semver "^6.3.0" + semver "^7.5.2" strip-ansi "^6.0.1" table "^6.8.1" text-table "^0.2.0" @@ -5134,9 +5318,9 @@ solidity-comments-extractor@^0.0.7: integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== solidity-coverage@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.4.tgz#c57a21979f5e86859c5198de9fbae2d3bc6324a5" - integrity sha512-xeHOfBOjdMF6hWTbt42iH4x+7j1Atmrf5OldDPMxI+i/COdExUxszOswD9qqvcBTaLGiOrrpnh9UZjSpt4rBsg== + version "0.8.5" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.5.tgz#64071c3a0c06a0cecf9a7776c35f49edc961e875" + integrity sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ== dependencies: "@ethersproject/abi" "^5.0.9" "@solidity-parser/parser" "^0.16.0" @@ -5150,7 +5334,7 @@ solidity-coverage@^0.8.4: globby "^10.0.1" jsonschema "^1.2.4" lodash "^4.17.15" - mocha "7.1.2" + mocha "10.2.0" node-emoji "^1.10.0" pify "^4.0.1" recursive-readdir "^2.2.2" @@ -5184,21 +5368,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - 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" - stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -5211,16 +5380,6 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - string-format@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" @@ -5235,7 +5394,7 @@ string-format@^2.0.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -"string-width@^1.0.2 || 2", string-width@^2.1.1: +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== @@ -5243,15 +5402,6 @@ string-format@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -5261,32 +5411,32 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -5316,13 +5466,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -5335,6 +5478,16 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + 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" @@ -5342,22 +5495,15 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-json-comments@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, 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@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== - dependencies: - has-flag "^3.0.0" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== supports-color@8.1.1: version "8.1.1" @@ -5408,6 +5554,14 @@ sync-rpc@^1.2.1: dependencies: get-port "^3.1.0" +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" + table-layout@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -5451,7 +5605,12 @@ then-request@^6.0.0: promise "^8.0.0" qs "^6.4.0" -tmp@0.0.33: +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + +tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -5470,20 +5629,16 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== ts-command-line-args@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz#7eeed3a6937b2612ea08a0794cf9d43fbbea89c4" - integrity sha512-Ff7Xt04WWCjj/cmPO9eWTJX3qpBZWuPWyQYG1vnxJao+alWWYjwJBc5aYz3h5p5dE08A6AnpkgiCtP/0KXXBYw== + 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: - "@morgan-stanley/ts-mocking-bird" "^0.6.2" chalk "^4.1.0" command-line-args "^5.1.1" command-line-usage "^6.1.0" @@ -5513,7 +5668,7 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths@^3.14.1: +tsconfig-paths@^3.14.2: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== @@ -5523,40 +5678,31 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.3: +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== +tslib@^2.5.0, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - 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@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" @@ -5576,7 +5722,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@^4.0.0, type-detect@^4.0.5: +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== @@ -5596,10 +5742,10 @@ type-fest@^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.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.0.tgz#d95566de822332651152bd682ed1ec7b0e1b8610" - integrity sha512-AxtAYyOA7f2p28/JkcqrF+gnzam94VNTIbXcaUKodkrKzMX6P/XqBaP6d/OPuBZOi0WgOOmkg1zOSojX8uGkOg== +typechain@^8.3.2: + 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" @@ -5612,6 +5758,36 @@ typechain@^8.3.0: ts-command-line-args "^2.2.0" ts-essentials "^7.0.1" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -5626,10 +5802,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== typical@^4.0.0: version "4.0.0" @@ -5656,12 +5832,17 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +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.22.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.0.tgz#5e205d82a5aecc003fc4388ccd3d2c6e8674a0ad" - integrity sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA== + version "5.27.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.27.0.tgz#789f2e40ce982b5507899abc2c2ddeb2712b4554" + integrity sha512-l3ydWhlhOJzMVOYkymLykcRRXqbUaQriERtR70B9LzNkZ4bX52Fc8wbTDneMiwo8T+AemZXvXaTx+9o5ROxrXg== dependencies: - busboy "^1.6.0" + "@fastify/busboy" "^2.0.0" universalify@^0.1.0: version "0.1.2" @@ -5678,6 +5859,11 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -5695,21 +5881,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" - integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -5720,23 +5891,15 @@ v8-compile-cache-lib@^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== -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - web3-utils@^1.3.6: - version "1.9.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.9.0.tgz#7c5775a47586cefb4ad488831be8f6627be9283d" - integrity sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ== + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.3.tgz#f1db99c82549c7d9f8348f04ffe4e0188b449714" + integrity sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ== dependencies: + "@ethereumjs/util" "^8.1.0" bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" + ethereum-cryptography "^2.1.2" ethjs-unit "0.1.6" number-to-bn "1.7.0" randombytes "^2.1.0" @@ -5753,24 +5916,18 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" -which@1.3.1, which@^1.1.1, which@^1.3.1: +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== @@ -5784,17 +5941,10 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +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" @@ -5823,15 +5973,6 @@ workerpool@6.2.1: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -5851,21 +5992,16 @@ ws@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== -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -5881,13 +6017,10 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@13.1.2, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yaml@^2.2.2: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== yargs-parser@20.2.4: version "20.2.4" @@ -5904,15 +6037,6 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" - integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== - dependencies: - flat "^4.1.0" - lodash "^4.17.15" - yargs "^13.3.0" - yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -5923,22 +6047,6 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@13.3.2, yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - yargs@16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -5978,4 +6086,4 @@ yocto-queue@^0.1.0: zksync-web3@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.3.tgz#64ac2a16d597464c3fc4ae07447a8007631c57c9" - integrity sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ== \ No newline at end of file + integrity sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ==