diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1919e379..593ab46a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,10 +13,10 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Setup NodeJS 16 + - name: Setup NodeJS 20.5.0 uses: actions/setup-node@v3 with: - node-version: 16.17.0 + node-version: 20.5.0 - name: Show NodeJS version run: npm --version diff --git a/.gitignore b/.gitignore index 4ec8db2f..5ed6cc2b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ bin/* .vscode/ #PlantUML out +docOut #drawio *.bkp *.dtmp @@ -17,4 +18,4 @@ cache #manticore mcore_* #secrets -.env \ No newline at end of file +.env diff --git a/CHANGELOG.md b/CHANGELOG.md index 803535f3..55abf03d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,83 @@ Please follow conventions. +## 2.4.0 + +The modifications between the version v2.3.0 and this version are not audited !!! + +- Improve tests & update the code +- `ERC20SnapshotInternal` inherits from `ICMTATSnapshot` + + + +## 2.4.0-rc.1 - 20240319 + +The modifications between the version v2.3.0 and this version are not audited !!! + +**snapshotModule** + +- Create an interface `ICMTATSnapshot` with the main public functions for the SnapshotModule to make easier the calls to a contract including a snapshotModule, useful e.g. for debt payment. +- Replace `getSnapshotInfoBatch` by `SnapshotInfo`. This function gets a user's balance specified in parameter and the total supply. +- Add a new function `SnapshotInfoBatch` to get several user's balances and the total supply. + +**ERC20BaseModule** +Add a function `balanceInfo` to get the balance for a list of addresses and the total supply + Useful to perform transfer restriction based on the user's balance (e.g vesting rule or partial lock). + +**ValidationModule** +Create an internal function ` _validateTransferByModule` which performs check with others module (PauseModule & EnforcementModule) + +**Other** + +- Upgrade OpenZeppelin to the version [v5.0.2](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/releases/tag/v5.0.2) +- Upgrade Solidity to the version [0.8.22](https://soliditylang.org/blog/2023/10/25/solidity-0.8.22-release-announcement/) in the truffle and hardhat config files. + +## 2.4.0-rc.0 - 20240129 + The modifications between the version v2.3.0 and this version are not audited !!! +**New architecture for the RuleEngine** [#250](https://github.com/CMTA/CMTAT/pull/250) + +- A new function `operateOnTransfer` is added and use inside the ValidationModule. +- Contrary to `validateTransfer`, this function has to be protected by an access control (if not implemented as view or pure) +- This function can be used to perform operation which modifies the state of the blockchain (storage) by the RuleEngine. +- The RuleEngine inherits now from *IRuleEngine* wich contains in its interface the function `operateOnTransfer` + IERC-1404 +- The function `validateTransfer` is still available to verify a transfer without performing operation. The behavior is the same than with the previous CMTAT version. + +**snapshotModule** [#256](https://github.com/CMTA/CMTAT/pull/256) + +- Split the snapshotModuleInternal in two parts : one with the inheritance with ERC-20 and the other part with the base function and does not inherit from ERC-20. + Thus, if we want to build a snapshotModule with the RuleEngine, we can use the base contract to avoid the inheritance with ERC-20. +- Add a function `getSnapshotInfoBatch` to avoid multiple calls when computing debt payment + +**AuthorizationEngine** [#254](https://github.com/CMTA/CMTAT/pull/254) + +- Add the AuthorizationEngine. With that, it is possible to add supplementary check on the functions `grantRole` and `revokeRole`without modifying the CMTAT. + +**BurnModule** + +- rename `forceBurn` and `forceBurnBatch` in `burn` and `burnBatch` +- Add a function `burnFrom` with a specific role (useful for bridge) for compatibility with CCIP [Ccip #260](https://github.com/CMTA/CMTAT/pull/260) +- Add a function `burnAndMint` to perform a burn/mint operation atomically. + +**Gas optimization** + +- Add factory contract for deployment with Transparent and beacon proxy [Contract factory #259](https://github.com/CMTA/CMTAT/pull/259) +- Remove useless init function in internal modules (Done) [remove init functions in wrapper modules #237](https://github.com/CMTA/CMTAT/pull/237) + +**Other** + +- Remove custom approval function [Remove custom function allowance #225](https://github.com/CMTA/CMTAT/issues/225) (Done) +- upgrade some JS libraries +- Upgrade OpenZeppelin to the version [v5.0.1](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/releases/tag/v5.0.1) + +## 2.3.1 + This version contains breaking changes with the version v2.3.0. - Remove useless functions init in wrapper modules [#230](https://github.com/CMTA/CMTAT/issues/230) - Add missing tests in EnforcementModule [#239](https://github.com/CMTA/CMTAT/issues/239) -- Use calldate instead of memory [#224](https://github.com/CMTA/CMTAT/issues/224) +- Use calldata instead of memory [#224](https://github.com/CMTA/CMTAT/issues/224) - Upgrade OpenZeppelin to the version [v.5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/releases/tag/v5.0.0) ## 2.3.1-rc.0 - 20230925 diff --git a/FAQ.md b/FAQ.md index 78a1134f..0bc33b66 100644 --- a/FAQ.md +++ b/FAQ.md @@ -100,5 +100,5 @@ Normally, you can run the test suite and generate a code coverage report with `n Please clone the repository and open the file inside your browser. -You will find a summary of all automatic tests in +You will find a list of automatic tests in [test.pdf](https://github.com/CMTA/CMTAT/blob/master/doc/general/test/test.pdf). diff --git a/README.md b/README.md index 08b39597..c1ae38e1 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,24 @@ Please see the OpenZeppelin [Upgrades plugins](https://docs.openzeppelin.com/upg Note that deployment via a proxy is not mandatory, but is recommended by CMTA. + +#### Factory + +Factory contracts are available to deploy the CMTAT with a beacon proxy or a transparent proxy. + +[CMTAT_BEACON_FACTORY.sol](./contracts/deployment/CMTAT_BEACON_FACTORY.sol) + +[CMTAT_TRANSPARENT_FACTORY.sol](./contracts/deployment/CMTAT_TRANSPARENT_FACTORY.sol) + +Beacon Proxy factory: the factory will use the same beacon for each beacon proxy. This beacon provides the address of the implementation contract, a CMTAT_PROXY contract. If you upgrade the beacon to point to a new implementation, it will change the implementation contract for all beacon proxy. + +![factory-Beacon Factory.drawio](./doc/schema/drawio/factory-BeaconFactory.drawio.png) + +Transparent Proxy factory: the factory will use the same implementation for each transparent proxy deployed. Each transparent proxy has its owned proxy admin, deployed inside the constructor of the transparent proxy. Each transparent proxy can upgrade their implementation to a new one independently and without impact on other proxies. + +![factory-Transparent Factory.drawio](./doc/schema/drawio/factory-TransparentFactory.drawio.png) + + ### Gasless support The CMTAT supports client-side gasless transactions using the [Gas Station Network](https://docs.opengsn.org/#the-problem) (GSN) pattern, the main open standard for transfering fee payment to another account than that of the transaction issuer. The contract uses the OpenZeppelin contract `ERC2771ContextUpgradeable`, which allows a contract to get the original client with `_msgSender()` instead of the fee payer given by `msg.sender` while allowing upgrades on the main contract (see *Deployment via a proxy* above). @@ -109,27 +127,56 @@ Generally, these modules are not required to be compliant with the CMTA specific | Name | Documentation | Main File | | ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | MetaTxModule | [metatx.md](doc/modules/presentation/extensions/metatx.md) | [MetaTxModule.sol](./contracts/modules/wrapper/extensions/MetaTxModule.sol) | -| SnapshotModule* | [snapshot.md](doc/modules/presentation/extensions/snapshot.md) | [SnapshotModule.sol](./contracts/modules/wrapper/extensions/SnapshotModule.sol) | +| SnapshotModule | [snapshot.md](doc/modules/presentation/extensions/snapshot.md) | [SnapshotModule.sol](./contracts/modules/wrapper/extensions/SnapshotModule.sol) | | creditEventModule | [creditEvents.md](doc/modules/presentation/extensions/Debt/creditEvents.md) | [CreditEventsModule.sol](./contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol) | | DebtBaseModule | [debtBase.md](doc/modules/presentation/extensions/Debt/debtBase.md) | [DebtBaseModule.sol](./contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol) | -*not imported by default - ### Security | Name | Documentation | Main File | | ------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | AuthorizationModule | [authorization.md](./doc/modules/presentation/security/authorization.md) | [AuthorizationModule.sol](./contracts/modules/security/AuthorizationModule.sol) | +## Engine + +### RuleEngine +The `RuleEngine` is an external contract used to apply transfer restriction to the CMTAT through whitelisting, blacklisting,... -### SnapshotModule +This contract is defined in the `ValidationModule`. -This module designed for future support of dividend and interest distribution, was not covered by the audit made by ABDK and it is no longer imported by default inside the CMTAT. +An example of RuleEngine is also available on [Github](https://github.com/CMTA/RuleEngine). -If you want to add this module, you have to uncomment the specific lines "SnapshotModule" in [CMTAT_BASE.sol](./contracts/modules/CMTAT_BASE.sol). +Here is the list of the different version available for each CMTAT version. -A CMTAT version inheriting from the SnapshotModule and used for **testing** purpose is available in [CMTATSnapshotStandaloneTest.sol](./contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol) and [CMTATSnapshotProxyTest.sol](./contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol). +| Name | RuleEngine | +| ----------------------- | ------------------------------------------------------------ | +| CMTAT 2.4.0 (unaudited) | Still in development | +| CMTAT 2.3.0 | [RuleEngine v1.0.2](https://github.com/CMTA/RuleEngine/releases/tag/v1.0.2) | +| CMTAT 2.0 (unaudited) | [RuleEngine 1.0](https://github.com/CMTA/RuleEngine/releases/tag/1.0) (unaudited) | +| CMTAT 1.0 | No ruleEngine available | + +This contract acts as a controller and can call different contract rule to apply rule on each transfer. + +A possible rule is a whitelist rule where only the address inside the whitelist can perform a transfer + +Since the version 2.4.0, the requirement to use a RuleEngine are the following: + +The `RuleEngine` has to import an implement the interface `IRuleEngine` which declares the function `operateOnTransfer`. + +This interface can be found in [./contracts/interfaces/engine/IRuleEngine.sol](./contracts/interfaces/engine/IRuleEngine.sol). + +Before each transfer, the CMTAT calls the function `operateOnTransfer` which is the entrypoint for the RuleEngine. + +### AuthorizationEngine + +The `AuthorizationEngine` is an external contract to add supplementary check on the functions `grantRole` and `revokeRole`from the CMTAT. + +This contract is managed in the `AuthorizationModule`. + +The `AuthorizationEngine` has to import an implement the interface `IAuthorizationEngine` which declares the functions `operateOnGrantRole` and `operateOnRevokeRole` + +This interface can be found in [./contracts/interfaces/engine/IAuthorizationEngine.sol](./contracts/interfaces/engine/IAuthorizationEngine.sol). ## Security @@ -172,18 +219,16 @@ The report is available in [ABDK_CMTA_CMTATRuleEngine_v_1_0.pdf](doc/audits/ABDK You will find the report produced by [Slither](https://github.com/crytic/slither) in -| Version | File | -| ------- | ------------------------------------------------------------ | -| v2.3.0 | [v2.3.0-slither-report.md](doc/audits/tools/v2.3.0-slither-report.md) | -| v2.3.1 | [v2.3.1-slither-report.md](doc/audits/tools/v2.3.1-slither-report.md) | +| Version | File | +| ------------ | ------------------------------------------------------------ | +| Last version | [slither-report.md](doc/audits/tools/slither-report.md) | +| v2.3.0 | [v2.3.0-slither-report.md](doc/audits/tools/v2.3.0-slither-report.md) | +| v2.3.1 | [v2.3.1-slither-report.md](doc/audits/tools/v2.3.1-slither-report.md) | ### Test -- A summary of automatic tests is available in [test.pdf](doc/general/test/test.pdf). -- A code coverage is available in [index.html](doc/general/test/coverage/index.html). - -> Note that we do not perform tests on the internal functions `init` of the different modules. +A code coverage is available in [index.html](doc/general/test/coverage/index.html). ### Remarks @@ -215,4 +260,4 @@ CMTA providers further documentation describing the CMTAT framework in a platfor ## Intellectual property -The code is copyright (c) Capital Market and Technology Association, 2018-2023, and is released under [Mozilla Public License 2.0](./LICENSE.md). +The code is copyright (c) Capital Market and Technology Association, 2018-2024, and is released under [Mozilla Public License 2.0](./LICENSE.md). diff --git a/contracts/CMTAT_STANDALONE.sol b/contracts/CMTAT_STANDALONE.sol index 29fbed43..dfe10c6d 100644 --- a/contracts/CMTAT_STANDALONE.sol +++ b/contracts/CMTAT_STANDALONE.sol @@ -9,6 +9,7 @@ contract CMTAT_STANDALONE is CMTAT_BASE { * @notice Contract version for standalone deployment * @param forwarderIrrevocable address of the forwarder, required for the gasless support * @param admin address of the admin of contract (Access Control) + * @param authorizationEngineIrrevocable * @param nameIrrevocable name of the token * @param symbolIrrevocable name of the symbol * @param decimalsIrrevocable number of decimals used to get its user representation, should be 0 to be compliant with the CMTAT specifications. @@ -22,13 +23,13 @@ contract CMTAT_STANDALONE is CMTAT_BASE { constructor( address forwarderIrrevocable, address admin, - uint48 initialDelay, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, + IRuleEngine ruleEngine_, string memory information_, uint256 flag_ ) MetaTxModule(forwarderIrrevocable) { @@ -36,7 +37,7 @@ contract CMTAT_STANDALONE is CMTAT_BASE { // Warning : do not initialize the proxy initialize( admin, - initialDelay, + authorizationEngineIrrevocable, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, diff --git a/contracts/deployment/CMTAT_BEACON_FACTORY.sol b/contracts/deployment/CMTAT_BEACON_FACTORY.sol new file mode 100644 index 00000000..c8c60d13 --- /dev/null +++ b/contracts/deployment/CMTAT_BEACON_FACTORY.sol @@ -0,0 +1,102 @@ +//SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol"; + +import '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol'; +import "../CMTAT_PROXY.sol"; +import "../modules/CMTAT_BASE.sol"; +import "../libraries/FactoryErrors.sol"; +import '@openzeppelin/contracts/access/AccessControl.sol'; + +/** +* @notice Factory to deploy beacon proxy +* +*/ +contract CMTAT_BEACON_FACTORY is AccessControl { + // Private + mapping(uint256 => address) private cmtats; + uint256 private cmtatCounterId; + // public + /// @dev Role to deploy CMTAT + bytes32 public constant CMTAT_DEPLOYER_ROLE = keccak256("CMTAT_DEPLOYER_ROLE"); + UpgradeableBeacon public immutable beacon; + address[] public cmtatsList; + event CMTAT(address indexed CMTAT, uint256 id); + + /** + * @param implementation_ contract implementation + * @param factoryAdmin admin + * @param beaconOwner owner + */ + constructor(address implementation_, address factoryAdmin, address beaconOwner) { + if(factoryAdmin == address(0)){ + revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin(); + } + if(beaconOwner == address(0)){ + revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner(); + } + if(implementation_ == address(0)){ + revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract(); + } + beacon = new UpgradeableBeacon(implementation_, beaconOwner); + _grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin); + _grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin); + } + + /** + * @notice deploy CMTAT with a beacon proxy + * + */ + function deployCMTAT( + // CMTAT function initialize + address admin, + IAuthorizationEngine authorizationEngineIrrevocable, + string memory nameIrrevocable, + string memory symbolIrrevocable, + uint8 decimalsIrrevocable, + string memory tokenId_, + string memory terms_, + IRuleEngine ruleEngine_, + string memory information_, + uint256 flag_ + ) public onlyRole(CMTAT_DEPLOYER_ROLE) returns(BeaconProxy cmtat) { + cmtat = new BeaconProxy( + address(beacon), + abi.encodeWithSelector( + CMTAT_PROXY(address(0)).initialize.selector, + admin, + authorizationEngineIrrevocable, + nameIrrevocable, + symbolIrrevocable, + decimalsIrrevocable, + tokenId_, + terms_, + ruleEngine_, + information_, + flag_ + ) + ); + cmtats[cmtatCounterId] = address(cmtat); + emit CMTAT(address(cmtat), cmtatCounterId); + cmtatCounterId++; + cmtatsList.push(address(cmtat)); + return cmtat; + } + + /** + * @notice get CMTAT proxy address + * + */ + function getAddress(uint256 cmtatID_) external view returns (address) { + return cmtats[cmtatID_]; + } + + /** + * @notice get the implementation address from the beacon + * @return implementation address + */ + function implementation() public view returns (address) { + return beacon.implementation(); + } +} \ No newline at end of file diff --git a/contracts/deployment/CMTAT_TP_FACTORY.sol b/contracts/deployment/CMTAT_TP_FACTORY.sol new file mode 100644 index 00000000..785747c2 --- /dev/null +++ b/contracts/deployment/CMTAT_TP_FACTORY.sol @@ -0,0 +1,86 @@ +//SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "../CMTAT_PROXY.sol"; +import "../libraries/FactoryErrors.sol"; +import '@openzeppelin/contracts/access/AccessControl.sol'; +/** +* @notice Factory to deploy transparent proxy +* +*/ +contract CMTAT_TP_FACTORY is AccessControl { + // Private + mapping(uint256 => address) private cmtats; + uint256 private cmtatID; + event CMTAT(address indexed CMTAT, uint256 id); + // Public + /// @dev Role to deploy CMTAT + bytes32 public constant CMTAT_DEPLOYER_ROLE = keccak256("CMTAT_DEPLOYER_ROLE"); + address public immutable logic; + address[] public cmtatsList; + + + + /** + * @param logic_ contract implementation + * @param factoryAdmin admin + */ + constructor(address logic_, address factoryAdmin) { + if(logic_ == address(0)){ + revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract(); + } + if(factoryAdmin == address(0)){ + revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin(); + } + logic = logic_; + _grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin); + _grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin); + } + + function deployCMTAT( + address proxyAdminOwner, + // CMTAT function initialize + address admin, + IAuthorizationEngine authorizationEngineIrrevocable, + string memory nameIrrevocable, + string memory symbolIrrevocable, + uint8 decimalsIrrevocable, + string memory tokenId_, + string memory terms_, + IRuleEngine ruleEngine_, + string memory information_, + uint256 flag_ + ) public onlyRole(CMTAT_DEPLOYER_ROLE) returns(TransparentUpgradeableProxy cmtat) { + cmtat = new TransparentUpgradeableProxy( + logic, + proxyAdminOwner, + abi.encodeWithSelector( + CMTAT_PROXY(address(0)).initialize.selector, + admin, + authorizationEngineIrrevocable, + nameIrrevocable, + symbolIrrevocable, + decimalsIrrevocable, + tokenId_, + terms_, + ruleEngine_, + information_, + flag_ + ) + ); + cmtats[cmtatID] = address(cmtat); + emit CMTAT(address(cmtat), cmtatID); + cmtatID++; + cmtatsList.push(address(cmtat)); + return cmtat; + } + + /** + * @notice get CMTAT proxy address + * + */ + function getAddress(uint256 cmtatID_) external view returns (address) { + return cmtats[cmtatID_]; + } +} \ No newline at end of file diff --git a/contracts/interfaces/ICCIPToken.sol b/contracts/interfaces/ICCIPToken.sol new file mode 100644 index 00000000..256b1c96 --- /dev/null +++ b/contracts/interfaces/ICCIPToken.sol @@ -0,0 +1,25 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +/** +* @notice CCIP Pool with mint +*/ +interface ICCIPMintERC20 { + /// @notice Mints new tokens for a given address. + /// @param account The address to mint the new tokens to. + /// @param value The number of tokens to be minted. + /// @dev this function increases the total supply. + function mint(address account, uint256 value) external; +} + +/** +* @notice CCIP Pool with burnFrom +*/ +interface ICCIPBurnFromERC20 { + /// @notice Burns tokens from a given address.. + /// @param account The address to burn tokens from. + /// @param value The number of tokens to be burned. + /// @dev this function decreases the total supply. + function burnFrom(address account, uint256 value) external; +} \ No newline at end of file diff --git a/contracts/interfaces/ICMTATSnapshot.sol b/contracts/interfaces/ICMTATSnapshot.sol new file mode 100644 index 00000000..4cbd4d38 --- /dev/null +++ b/contracts/interfaces/ICMTATSnapshot.sol @@ -0,0 +1,38 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +/** +* @notice interface to represent a CMTAT with snapshot +*/ +interface ICMTATSnapshot { + /** + * @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. + * @return value stored in the snapshot, or the actual balance if no snapshot + */ + function snapshotBalanceOf(uint256 time,address owner) external view returns (uint256); + /** + * @dev See {OpenZeppelin - ERC20Snapshot} + * Retrieves the total supply at the specified time. + * @return value stored in the snapshot, or the actual totalSupply if no snapshot + */ + function snapshotTotalSupply(uint256 time) external view returns (uint256); + /** + * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls + * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply + */ + function snapshotInfo(uint256 time, address owner) external view returns (uint256 ownerBalance, uint256 totalSupply); + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply + */ + function snapshotInfoBatch(uint256 time, address[] calldata addresses) external view returns (uint256[] memory ownerBalances, uint256 totalSupply); + + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply + */ + function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) external view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply); + + +} diff --git a/contracts/interfaces/IDebtGlobal.sol b/contracts/interfaces/IDebtGlobal.sol index 4f0fb116..cb743d6d 100644 --- a/contracts/interfaces/IDebtGlobal.sol +++ b/contracts/interfaces/IDebtGlobal.sol @@ -1,7 +1,10 @@ //SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.0; +pragma solidity ^0.8.20; +/** +* @notice interface to represent debt tokens +*/ interface IDebtGlobal { struct DebtBase { uint256 interestRate; diff --git a/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol b/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol index 28313c82..960856dc 100644 --- a/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol +++ b/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol @@ -1,9 +1,9 @@ //SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.0; +pragma solidity ^0.8.20; /* -@dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface +* @dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface */ interface IERC1404 { /** diff --git a/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol b/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol new file mode 100644 index 00000000..6f1e3a6f --- /dev/null +++ b/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +interface IERC1404EnumCode { + /* + * @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation + */ + enum REJECTED_CODE_BASE { + TRANSFER_OK, + TRANSFER_REJECTED_PAUSED, + TRANSFER_REJECTED_FROM_FROZEN, + TRANSFER_REJECTED_TO_FROZEN + } +} diff --git a/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol b/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol index 30ce9d78..571b6639 100644 --- a/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol +++ b/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol @@ -1,19 +1,11 @@ //SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.0; +pragma solidity ^0.8.20; import "./draft-IERC1404.sol"; +import "./draft-IERC1404EnumCode.sol"; -interface IERC1404Wrapper is IERC1404 { - /* - @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation - */ - enum REJECTED_CODE_BASE { - TRANSFER_OK, - TRANSFER_REJECTED_PAUSED, - TRANSFER_REJECTED_FROM_FROZEN, - TRANSFER_REJECTED_TO_FROZEN - } +interface IERC1404Wrapper is IERC1404, IERC1404EnumCode { /** * @dev Returns true if the transfer is valid, and false otherwise. diff --git a/contracts/interfaces/engine/IAuthorizationEngine.sol b/contracts/interfaces/engine/IAuthorizationEngine.sol new file mode 100644 index 00000000..000f4e0c --- /dev/null +++ b/contracts/interfaces/engine/IAuthorizationEngine.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +interface IAuthorizationEngine { + /** + * @dev Returns true if the operation is authorized, and false otherwise. + */ + function operateOnGrantRole( + bytes32 role, address account + ) external returns (bool isValid); + + /** + * @dev Returns true if the operation is authorized, and false otherwise. + */ + function operateOnRevokeRole( + bytes32 role, address account + ) external returns (bool isValid); + +} diff --git a/contracts/interfaces/engine/IRuleEngine.sol b/contracts/interfaces/engine/IRuleEngine.sol new file mode 100644 index 00000000..bd2586a1 --- /dev/null +++ b/contracts/interfaces/engine/IRuleEngine.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +import "../draft-IERC1404/draft-IERC1404Wrapper.sol"; + +interface IRuleEngine is IERC1404Wrapper { + /** + * @dev Returns true if the operation is a success, and false otherwise. + */ + function operateOnTransfer( + address _from, + address _to, + uint256 _amount + ) external returns (bool isValid); + +} diff --git a/contracts/libraries/Errors.sol b/contracts/libraries/Errors.sol index cd7801a8..28840db9 100644 --- a/contracts/libraries/Errors.sol +++ b/contracts/libraries/Errors.sol @@ -58,6 +58,8 @@ library Errors { // AuthorizationModule error CMTAT_AuthorizationModule_AddressZeroNotAllowed(); + error CMTAT_AuthorizationModule_InvalidAuthorization(); + error CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet(); // PauseModule error CMTAT_PauseModule_ContractIsDeactivated(); diff --git a/contracts/libraries/FactoryErrors.sol b/contracts/libraries/FactoryErrors.sol new file mode 100644 index 00000000..a64e226b --- /dev/null +++ b/contracts/libraries/FactoryErrors.sol @@ -0,0 +1,9 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +library FactoryErrors { + error CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin(); + error CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner(); + error CMTAT_Factory_AddressZeroNotAllowedForLogicContract(); +} diff --git a/contracts/mocks/AuthorizationEngineMock.sol b/contracts/mocks/AuthorizationEngineMock.sol new file mode 100644 index 00000000..fbe72d6f --- /dev/null +++ b/contracts/mocks/AuthorizationEngineMock.sol @@ -0,0 +1,60 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +import "../interfaces/engine/IAuthorizationEngine.sol"; + +/* +* @title a mock for testing, not suitable for production +*/ +contract AuthorizationEngineMock is IAuthorizationEngine { + address nextAdmin; + bool revokeAdminRoleAuthorized; + constructor() { + revokeAdminRoleAuthorized = true; + } + + /* + * @dev + * Warning: if you want to use this mock, you have to restrict the access to this function through an an access control + */ + function authorizeAdminChange(address newAdmin) external { + nextAdmin = newAdmin; + } + + function setRevokeAdminRoleAuthorized(bool + newValue) external { + revokeAdminRoleAuthorized = newValue; + } + + /* + * @dev + * Warning: if you want to use this mock, you have to restrict the access to this function through an an access control + */ + function operateOnGrantRole( + bytes32 role, address account + ) external returns (bool isValid){ + if(role == 0x0 && account == nextAdmin && account != address(0x0)){ + // Reset to 0 + nextAdmin = address(0x0); + return true; + }else{ + return false; + } + } + + /* + * @dev + * Warning: if you want to use this mock, you have to restrict the access to this function through an an access control + */ + function operateOnRevokeRole( + bytes32 role, address /*account*/ + ) external view returns (bool isValid){ + if(role == 0x0){ + return revokeAdminRoleAuthorized; + } else{ + // the tests will fail if this branch is taken + return !revokeAdminRoleAuthorized; + } + } +} diff --git a/contracts/mocks/RuleEngine/RuleEngineMock.sol b/contracts/mocks/RuleEngine/RuleEngineMock.sol index 46473108..4dc0a065 100644 --- a/contracts/mocks/RuleEngine/RuleEngineMock.sol +++ b/contracts/mocks/RuleEngine/RuleEngineMock.sol @@ -3,14 +3,13 @@ pragma solidity ^0.8.20; import "./interfaces/IRule.sol"; -import "./interfaces/IRuleEngine.sol"; +import "./interfaces/IRuleEngineMock.sol"; import "./RuleMock.sol"; -import "./CodeList.sol"; /* -@title a mock for testing, not suitable for production +* @title a mock for testing, not suitable for production */ -contract RuleEngineMock is IRuleEngine { +contract RuleEngineMock is IRuleEngineMock { IRule[] internal _rules; constructor() { @@ -18,8 +17,8 @@ contract RuleEngineMock is IRuleEngine { } /* - @dev - Warning: if you want to use this mock, you have to restrict the access to this function through an an access control + * @dev + * Warning: if you want to use this mock, you have to restrict the access to this function through an an access control */ function setRules(IRule[] calldata rules_) external override { _rules = rules_; @@ -67,9 +66,19 @@ contract RuleEngineMock is IRuleEngine { return detectTransferRestriction(_from, _to, _amount) == 0; } + /* + * @dev + * Warning: if you want to use this mock, you have to restrict the access to this function through an an access control + */ + function operateOnTransfer( address _from, + address _to, + uint256 _amount) view public override returns (bool){ + return validateTransfer(_from, _to, _amount); + } + /** - @dev - For all the rules, each restriction code has to be unique. + * @dev + * For all the rules, each restriction code has to be unique. */ function messageForTransferRestriction( uint8 _restrictionCode diff --git a/contracts/mocks/RuleEngine/RuleMock.sol b/contracts/mocks/RuleEngine/RuleMock.sol index 2c9337ea..1bf71277 100644 --- a/contracts/mocks/RuleEngine/RuleMock.sol +++ b/contracts/mocks/RuleEngine/RuleMock.sol @@ -6,7 +6,7 @@ import "./interfaces/IRule.sol"; import "./CodeList.sol"; /* -@title a mock for testing, not suitable for production +* @title a mock for testing, not suitable for production */ contract RuleMock is IRule, CodeList { function validateTransfer( @@ -18,7 +18,7 @@ contract RuleMock is IRule, CodeList { } /** - @dev 20 the limit of the maximum amount + * @dev 20 the limit of the maximum amount */ function detectTransferRestriction( address /* _from */, diff --git a/contracts/mocks/RuleEngine/interfaces/IRule.sol b/contracts/mocks/RuleEngine/interfaces/IRule.sol index fdb52276..752ea2d3 100644 --- a/contracts/mocks/RuleEngine/interfaces/IRule.sol +++ b/contracts/mocks/RuleEngine/interfaces/IRule.sol @@ -1,6 +1,6 @@ //SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.0; +pragma solidity ^0.8.20; import "../../../interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol"; diff --git a/contracts/mocks/RuleEngine/interfaces/IRuleEngine.sol b/contracts/mocks/RuleEngine/interfaces/IRuleEngineMock.sol similarity index 80% rename from contracts/mocks/RuleEngine/interfaces/IRuleEngine.sol rename to contracts/mocks/RuleEngine/interfaces/IRuleEngineMock.sol index 44720657..694125c8 100644 --- a/contracts/mocks/RuleEngine/interfaces/IRuleEngine.sol +++ b/contracts/mocks/RuleEngine/interfaces/IRuleEngineMock.sol @@ -1,11 +1,11 @@ //SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.0; +pragma solidity ^0.8.20; import "./IRule.sol"; -import "../../../interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol"; +import "../../../interfaces/engine/IRuleEngine.sol"; -interface IRuleEngine is IERC1404Wrapper { +interface IRuleEngineMock is IRuleEngine { /** * @dev define the rules, the precedent rules will be overwritten */ diff --git a/contracts/modules/CMTAT_BASE.sol b/contracts/modules/CMTAT_BASE.sol index bc0c284a..57bfc1bd 100644 --- a/contracts/modules/CMTAT_BASE.sol +++ b/contracts/modules/CMTAT_BASE.sol @@ -13,10 +13,11 @@ import "./wrapper/core/EnforcementModule.sol"; import "./wrapper/core/ERC20BaseModule.sol"; import "./wrapper/core/PauseModule.sol"; /* -SnapshotModule: -Add this import in case you add the SnapshotModule -import "./wrapper/optional/SnapshotModule.sol"; +* SnapshotModule: +* Add this import in case you add the SnapshotModule */ +import "./wrapper/extensions/ERC20SnapshotModule.sol"; + import "./wrapper/controllers/ValidationModule.sol"; import "./wrapper/extensions/MetaTxModule.sol"; import "./wrapper/extensions/DebtModule/DebtBaseModule.sol"; @@ -36,7 +37,7 @@ abstract contract CMTAT_BASE is ValidationModule, MetaTxModule, ERC20BaseModule, - // ERC20SnapshotModule, + ERC20SnapshotModule, DebtBaseModule, CreditEventsModule { @@ -56,19 +57,19 @@ abstract contract CMTAT_BASE is */ function initialize( address admin, - uint48 initialDelayToAcceptAdminRole, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, + IRuleEngine ruleEngine_, + string memory information_, uint256 flag_ ) public initializer { __CMTAT_init( admin, - initialDelayToAcceptAdminRole, + authorizationEngineIrrevocable, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -85,13 +86,13 @@ abstract contract CMTAT_BASE is */ function __CMTAT_init( address admin, - uint48 initialDelayToAcceptAdminRole, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, + IRuleEngine ruleEngine_, string memory information_, uint256 flag_ ) internal onlyInitializing { @@ -103,21 +104,22 @@ abstract contract CMTAT_BASE is __ERC165_init_unchained(); // AuthorizationModule inherits from AccessControlUpgradeable __AccessControl_init_unchained(); - __AccessControlDefaultAdminRules_init_unchained(initialDelayToAcceptAdminRole, admin); __Pausable_init_unchained(); /* Internal Modules */ __Enforcement_init_unchained(); /* SnapshotModule: - Add this call in case you add the SnapshotModule + Add these two calls in case you add the SnapshotModule + */ + __SnapshotModuleBase_init_unchained(); __ERC20Snapshot_init_unchained(); - */ + __Validation_init_unchained(ruleEngine_); /* Wrapper */ // AuthorizationModule_init_unchained is called firstly due to inheritance - __AuthorizationModule_init_unchained(); + __AuthorizationModule_init_unchained(admin, authorizationEngineIrrevocable); __ERC20BurnModule_init_unchained(); __ERC20MintModule_init_unchained(); // EnforcementModule_init_unchained is called before ValidationModule_init_unchained due to inheritance @@ -130,8 +132,9 @@ abstract contract CMTAT_BASE is /* SnapshotModule: Add this call in case you add the SnapshotModule - __ERC20SnasphotModule_init_unchained(); */ + __ERC20SnasphotModule_init_unchained(); + /* Other modules */ __DebtBaseModule_init_unchained(); @@ -172,40 +175,63 @@ abstract contract CMTAT_BASE is return ERC20BaseModule.transferFrom(sender, recipient, amount); } + /** + * @notice burn and mint atomically + * @param from current token holder to burn tokens + * @param to receiver to send the new minted tokens + * @param amountToBurn number of tokens to burn + * @param amountToMint number of tokens to mint + * @dev + * - The access control is managed by the functions burn (ERC20BurnModule) and mint (ERC20MintModule) + * - Input validation is also managed by the functions burn and mint + * - You can mint more tokens than burnt + */ + function burnAndMint(address from, address to, uint256 amountToBurn, uint256 amountToMint, string calldata reason) public { + burn(from, amountToBurn, reason); + mint(to, amountToMint); + } + /** * @dev - * SnapshotModule: - * - override SnapshotModuleInternal if you add the SnapshotModule - * e.g. override(ERC20SnapshotModuleInternal, ERC20Upgradeable) - * - remove the keyword view + * */ function _update( address from, address to, uint256 amount ) internal override(ERC20Upgradeable) { - if (!ValidationModule.validateTransfer(from, to, amount)) { + if (!ValidationModule._operateOnTransfer(from, to, amount)) { revert Errors.CMTAT_InvalidTransfer(from, to, amount); } - ERC20Upgradeable._update(from, to, amount); - // We call the SnapshotModule only if the transfer is valid /* SnapshotModule: - Add this call in case you add the SnapshotModule - ERC20SnapshotModuleInternal._update(from, to, amount); + Add this in case you add the SnapshotModule + We call the SnapshotModule only if the transfer is valid */ + ERC20SnapshotModuleInternal._snapshotUpdate(from, to); + ERC20Upgradeable._update(from, to, amount); } + /************* MetaTx Module *************/ /** * @dev This surcharge is not necessary if you do not use the MetaTxModule */ function _msgSender() internal view - override(MetaTxModule, ContextUpgradeable) + override(ERC2771ContextUpgradeable, ContextUpgradeable) returns (address sender) { - return MetaTxModule._msgSender(); + return ERC2771ContextUpgradeable._msgSender(); + } + + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _contextSuffixLength() internal view + override(ERC2771ContextUpgradeable, ContextUpgradeable) + returns (uint256) { + return ERC2771ContextUpgradeable._contextSuffixLength(); } /** @@ -214,10 +240,10 @@ abstract contract CMTAT_BASE is function _msgData() internal view - override(MetaTxModule, ContextUpgradeable) + override(ERC2771ContextUpgradeable, ContextUpgradeable) returns (bytes calldata) { - return MetaTxModule._msgData(); + return ERC2771ContextUpgradeable._msgData(); } uint256[50] private __gap; diff --git a/contracts/modules/internal/ERC20SnapshotModuleInternal.sol b/contracts/modules/internal/ERC20SnapshotModuleInternal.sol index c868a15a..24e9e713 100644 --- a/contracts/modules/internal/ERC20SnapshotModuleInternal.sol +++ b/contracts/modules/internal/ERC20SnapshotModuleInternal.sol @@ -2,15 +2,12 @@ pragma solidity ^0.8.20; -import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol'; - -import "../../libraries/Errors.sol"; - +import "./base/SnapshotModuleBase.sol"; +import "../../interfaces/ICMTATSnapshot.sol"; /** - * @dev Snapshot module. + * @dev Snapshot module internal. * * Useful to take a snapshot of token holder balance and total supply at a specific time * Inspired by Openzeppelin - ERC20Snapshot but use the time as Id instead of a counter. @@ -18,269 +15,62 @@ import "../../libraries/Errors.sol"; because overriding this function can break the contract. */ -abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { +abstract contract ERC20SnapshotModuleInternal is ICMTATSnapshot, SnapshotModuleBase, ERC20Upgradeable { using Arrays for uint256[]; - /** - @notice Emitted when the snapshot with the specified oldTime was scheduled or rescheduled at the specified newTime. - */ - event SnapshotSchedule(uint256 indexed oldTime, uint256 indexed newTime); - - /** - @notice Emitted when the scheduled snapshot with the specified time was cancelled. - */ - event SnapshotUnschedule(uint256 indexed time); - /** - @dev See {OpenZeppelin - ERC20Snapshot} - Snapshotted values have arrays of ids (time) and the value corresponding to that id. - ids is expected to be sorted in ascending order, and to contain no repeated elements - because we use findUpperBound in the function _valueAt - */ - struct Snapshots { - uint256[] ids; - uint256[] values; - } - - /** - @dev See {OpenZeppelin - ERC20Snapshot} - */ - mapping(address => Snapshots) private _accountBalanceSnapshots; - Snapshots private _totalSupplySnapshots; - - /** - @dev time instead of a counter for OpenZeppelin - */ - // Initialized to zero - uint256 private _currentSnapshotTime; - // Initialized to zero - uint256 private _currentSnapshotIndex; - - /** - @dev - list of scheduled snapshot (time) - This list is sorted in ascending order + * @dev + * list of scheduled snapshot (time) + * This list is sorted in ascending order */ uint256[] private _scheduledSnapshots; - /** - * @dev Initializes the contract - */ - function __ERC20Snapshot_init( - string memory name_, - string memory symbol_ - ) internal onlyInitializing { - __Context_init_unchained(); - __ERC20_init(name_, symbol_); - __ERC20Snapshot_init_unchained(); - } - function __ERC20Snapshot_init_unchained() internal onlyInitializing { // Nothing to do // _currentSnapshotTime & _currentSnapshotIndex are initialized to zero } - /** - @dev schedule a snapshot at the specified time - You can only add a snapshot after the last previous - */ - function _scheduleSnapshot(uint256 time) internal { - // Check the time firstly to avoid an useless read of storage - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - time, - block.timestamp - ); - } - - if (_scheduledSnapshots.length > 0) { - // We check the last snapshot on the list - uint256 nextSnapshotTime = _scheduledSnapshots[ - _scheduledSnapshots.length - 1 - ]; - if (time < nextSnapshotTime) { - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampBeforeLastSnapshot( - time, - nextSnapshotTime - ); - } else if (time == nextSnapshotTime) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - } - _scheduledSnapshots.push(time); - emit SnapshotSchedule(0, time); - } - - /** - @dev schedule a snapshot at the specified time - */ - function _scheduleSnapshotNotOptimized(uint256 time) internal { - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - time, - block.timestamp - ); - } - (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); - // Perfect match - if (isFound) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - // if no upper bound match found, we push the snapshot at the end of the list - if (index == _scheduledSnapshots.length) { - _scheduledSnapshots.push(time); - } else { - _scheduledSnapshots.push( - _scheduledSnapshots[_scheduledSnapshots.length - 1] - ); - for (uint256 i = _scheduledSnapshots.length - 2; i > index; ) { - _scheduledSnapshots[i] = _scheduledSnapshots[i - 1]; - unchecked { - --i; - } - } - _scheduledSnapshots[index] = time; - } - emit SnapshotSchedule(0, time); - } - - /** - @dev reschedule a scheduled snapshot at the specified newTime - */ - function _rescheduleSnapshot(uint256 oldTime, uint256 newTime) internal { - // Check the time firstly to avoid an useless read of storage - if (oldTime <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - if (newTime <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - newTime, - block.timestamp - ); - } - if (_scheduledSnapshots.length == 0) { - revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); - } - (bool foundOld, uint256 index) = _findScheduledSnapshotIndex(oldTime); - if (!foundOld) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); - } - if (index + 1 < _scheduledSnapshots.length) { - uint256 nextSnapshotTime = _scheduledSnapshots[index + 1]; - if (newTime > nextSnapshotTime) { - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampAfterNextSnapshot( - newTime, - nextSnapshotTime - ); - } else if (newTime == nextSnapshotTime) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - } - if (index > 0) { - if (newTime <= _scheduledSnapshots[index - 1]) - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampBeforePreviousSnapshot( - newTime, - _scheduledSnapshots[index - 1] - ); - } - _scheduledSnapshots[index] = newTime; - - emit SnapshotSchedule(oldTime, newTime); - } - /** - @dev unschedule the last scheduled snapshot + * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls + * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply */ - function _unscheduleLastSnapshot(uint256 time) internal { - // Check the time firstly to avoid an useless read of storage - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - if (_scheduledSnapshots.length == 0) { - revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); - } - // All snapshot time are unique, so we do not check the indice - if (time != _scheduledSnapshots[_scheduledSnapshots.length - 1]) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); - } - _scheduledSnapshots.pop(); - emit SnapshotUnschedule(time); + function snapshotInfo(uint256 time, address owner) public view returns (uint256 ownerBalance, uint256 totalSupply) { + ownerBalance = snapshotBalanceOf(time, owner); + totalSupply = snapshotTotalSupply(time); } - /** - @dev unschedule (remove) a scheduled snapshot in three steps: - - search the snapshot in the list - - If found, move all next snapshots one position to the left - - Reduce the array size by deleting the last snapshot + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply */ - function _unscheduleSnapshotNotOptimized(uint256 time) internal { - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); - if (!isFound) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); - } - for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ) { - _scheduledSnapshots[i] = _scheduledSnapshots[i + 1]; - unchecked { - ++i; - } + function snapshotInfoBatch(uint256 time, address[] calldata addresses) public view returns (uint256[] memory ownerBalances, uint256 totalSupply) { + ownerBalances = new uint256[](addresses.length); + for(uint256 i = 0; i < addresses.length; ++i){ + ownerBalances[i] = snapshotBalanceOf(time, addresses[i]); } - _scheduledSnapshots.pop(); + totalSupply = snapshotTotalSupply(time); } - /** - @dev - Get the next scheduled snapshots - */ - function getNextSnapshots() public view returns (uint256[] memory) { - uint256[] memory nextScheduledSnapshot = new uint256[](0); - // no snapshot were planned - if (_scheduledSnapshots.length > 0) { - ( - uint256 timeLowerBound, - uint256 indexLowerBound - ) = _findScheduledMostRecentPastSnapshot(); - // All snapshots are situated in the futur - if ((timeLowerBound == 0) && (_currentSnapshotTime == 0)) { - return _scheduledSnapshots; - } else { - // There are snapshots situated in the futur - if (indexLowerBound + 1 != _scheduledSnapshots.length) { - // All next snapshots are located after the snapshot specified by indexLowerBound - uint256 arraySize = _scheduledSnapshots.length - - indexLowerBound - - 1; - nextScheduledSnapshot = new uint256[](arraySize); - for (uint256 i; i < arraySize; ) { - nextScheduledSnapshot[i] = _scheduledSnapshots[ - indexLowerBound + 1 + i - ]; - unchecked { - ++i; - } - } - } + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply + */ + function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) public view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply) { + ownerBalances = new uint256[][](times.length); + totalSupply = new uint256[](times.length); + for(uint256 iT = 0; iT < times.length; ++iT){ + /*ownerBalances[iT] = new uint256[](addresses.length); + for(uint256 jA = 0; jA < addresses.length; ++jA){ + ownerBalances[iT][jA] = snapshotBalanceOf(times[iT], addresses[jA]); } + totalSupply[iT] = snapshotTotalSupply(times[iT]);*/ + (ownerBalances[iT], totalSupply[iT]) = snapshotInfoBatch(times[iT],addresses); } - return nextScheduledSnapshot; } /** - @dev - Get all snapshots - */ - function getAllSnapshots() public view returns (uint256[] memory) { - return _scheduledSnapshots; - } - - /** - @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. - @return value stored in the snapshot, or the actual balance if no snapshot + * @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. + * @return value stored in the snapshot, or the actual balance if no snapshot */ function snapshotBalanceOf( uint256 time, @@ -295,9 +85,9 @@ abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { } /** - @dev See {OpenZeppelin - ERC20Snapshot} - Retrieves the total supply at the specified time. - @return value stored in the snapshot, or the actual totalSupply if no snapshot + * @dev See {OpenZeppelin - ERC20Snapshot} + * Retrieves the total supply at the specified time. + * @return value stored in the snapshot, or the actual totalSupply if no snapshot */ function snapshotTotalSupply(uint256 time) public view returns (uint256) { (bool snapshotted, uint256 value) = _valueAt( @@ -307,15 +97,15 @@ abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { return snapshotted ? value : totalSupply(); } + /** - @dev Update balance and/or total supply snapshots before the values are modified. This is implemented - in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations. + * @dev Update balance and/or total supply snapshots before the values are modified. This is implemented + * in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations. */ - function _update( + function _snapshotUpdate( address from, - address to, - uint256 amount - ) internal virtual override { + address to + ) internal virtual { _setCurrentSnapshot(); if (from != address(0)) { // for both burn and transfer @@ -332,163 +122,21 @@ abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { _updateAccountSnapshot(to); _updateTotalSupplySnapshot(); } - ERC20Upgradeable._update(from, to, amount); } /** - @dev See {OpenZeppelin - ERC20Snapshot} - @param time where we want a snapshot - @param snapshots the struct where are stored the snapshots - @return snapshotExist true if a snapshot is found, false otherwise - value 0 if no snapshot, balance value if a snapshot exists - */ - function _valueAt( - uint256 time, - Snapshots storage snapshots - ) private view returns (bool snapshotExist, uint256 value) { - // When a valid snapshot is queried, there are three possibilities: - // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never - // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds - // to this id is the current one. - // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the - // requested id, and its value is the one to return. - // c) More snapshots were created after the requested one, and the queried value was later modified. There will be - // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is - // larger than the requested one. - // - // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if - // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does - // exactly this. - - uint256 index = snapshots.ids.findUpperBound(time); - - if (index == snapshots.ids.length) { - return (false, 0); - } else { - return (true, snapshots.values[index]); - } - } - - /** - @dev See {OpenZeppelin - ERC20Snapshot} + * @dev See {OpenZeppelin - ERC20Snapshot} */ function _updateAccountSnapshot(address account) private { _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account)); } /** - @dev See {OpenZeppelin - ERC20Snapshot} + * @dev See {OpenZeppelin - ERC20Snapshot} */ function _updateTotalSupplySnapshot() private { _updateSnapshot(_totalSupplySnapshots, totalSupply()); } - /** - @dev - Inside a struct Snapshots: - - Update the array ids to the current Snapshot time if this one is greater than the snapshot times stored in ids. - - Update the value to the corresponding value. - */ - function _updateSnapshot( - Snapshots storage snapshots, - uint256 currentValue - ) private { - uint256 current = _currentSnapshotTime; - if (_lastSnapshot(snapshots.ids) < current) { - snapshots.ids.push(current); - snapshots.values.push(currentValue); - } - } - - /** - @dev - Set the currentSnapshotTime by retrieving the most recent snapshot - if a snapshot exists, clear all past scheduled snapshot - */ - function _setCurrentSnapshot() internal { - ( - uint256 scheduleSnapshotTime, - uint256 scheduleSnapshotIndex - ) = _findScheduledMostRecentPastSnapshot(); - if (scheduleSnapshotTime > 0) { - _currentSnapshotTime = scheduleSnapshotTime; - _currentSnapshotIndex = scheduleSnapshotIndex; - } - } - - /** - @return the last snapshot time inside a snapshot ids array - */ - function _lastSnapshot( - uint256[] storage ids - ) private view returns (uint256) { - if (ids.length == 0) { - return 0; - } else { - return ids[ids.length - 1]; - } - } - - /** - @dev Find the snapshot index at the specified time - @return (true, index) if the snapshot exists, (false, 0) otherwise - */ - function _findScheduledSnapshotIndex( - uint256 time - ) private view returns (bool, uint256) { - uint256 indexFound = _scheduledSnapshots.findUpperBound(time); - uint256 _scheduledSnapshotsLength = _scheduledSnapshots.length; - // Exact match - if ( - indexFound != _scheduledSnapshotsLength && - _scheduledSnapshots[indexFound] == time - ) { - return (true, indexFound); - } - // Upper bound match - else if (indexFound != _scheduledSnapshotsLength) { - return (false, indexFound); - } - // no match - else { - return (false, _scheduledSnapshotsLength); - } - } - - /** - @dev find the most recent past snapshot - The complexity of this function is O(N) because we go through the whole list - */ - function _findScheduledMostRecentPastSnapshot() - private - view - returns (uint256 time, uint256 index) - { - uint256 currentArraySize = _scheduledSnapshots.length; - // no snapshot or the current snapshot already points on the last snapshot - if ( - currentArraySize == 0 || - ((_currentSnapshotIndex + 1 == currentArraySize) && (time != 0)) - ) { - return (0, currentArraySize); - } - // mostRecent is initialized in the loop - uint256 mostRecent; - index = currentArraySize; - for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ) { - if (_scheduledSnapshots[i] <= block.timestamp) { - mostRecent = _scheduledSnapshots[i]; - index = i; - } else { - // All snapshot are planned in the futur - break; - } - unchecked { - ++i; - } - } - return (mostRecent, index); - } - uint256[50] private __gap; } diff --git a/contracts/modules/internal/EnforcementModuleInternal.sol b/contracts/modules/internal/EnforcementModuleInternal.sol index 173db731..63230bfb 100644 --- a/contracts/modules/internal/EnforcementModuleInternal.sol +++ b/contracts/modules/internal/EnforcementModuleInternal.sol @@ -37,14 +37,6 @@ abstract contract EnforcementModuleInternal is mapping(address => bool) private _frozen; - /** - * @dev Initializes the contract - */ - function __Enforcement_init() internal onlyInitializing { - __Context_init_unchained(); - __Enforcement_init_unchained(); - } - function __Enforcement_init_unchained() internal onlyInitializing { // no variable to initialize } diff --git a/contracts/modules/internal/ValidationModuleInternal.sol b/contracts/modules/internal/ValidationModuleInternal.sol index 12c03c3e..6219f105 100644 --- a/contracts/modules/internal/ValidationModuleInternal.sol +++ b/contracts/modules/internal/ValidationModuleInternal.sol @@ -4,8 +4,7 @@ pragma solidity ^0.8.20; import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"; import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; -import "../../interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol"; - +import "../../interfaces/engine/IRuleEngine.sol"; /** * @dev Validation module. * @@ -18,22 +17,12 @@ abstract contract ValidationModuleInternal is /** * @dev Emitted when a rule engine is set. */ - event RuleEngine(IERC1404Wrapper indexed newRuleEngine); - - IERC1404Wrapper public ruleEngine; + event RuleEngine(IRuleEngine indexed newRuleEngine); - /** - * @dev Initializes the contract with rule engine. - */ - function __Validation_init( - IERC1404Wrapper ruleEngine_ - ) internal onlyInitializing { - __Context_init_unchained(); - __Validation_init_unchained(ruleEngine_); - } + IRuleEngine public ruleEngine; function __Validation_init_unchained( - IERC1404Wrapper ruleEngine_ + IRuleEngine ruleEngine_ ) internal onlyInitializing { if (address(ruleEngine_) != address(0)) { ruleEngine = ruleEngine_; @@ -42,7 +31,7 @@ abstract contract ValidationModuleInternal is } /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _validateTransfer( address from, @@ -53,7 +42,7 @@ abstract contract ValidationModuleInternal is } /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _messageForTransferRestriction( uint8 restrictionCode @@ -62,7 +51,7 @@ abstract contract ValidationModuleInternal is } /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _detectTransferRestriction( address from, @@ -72,5 +61,9 @@ abstract contract ValidationModuleInternal is return ruleEngine.detectTransferRestriction(from, to, amount); } + function _operateOnTransfer(address from, address to, uint256 amount) virtual internal returns (bool) { + return ruleEngine.operateOnTransfer(from, to, amount); + } + uint256[50] private __gap; } diff --git a/contracts/modules/internal/base/SnapshotModuleBase.sol b/contracts/modules/internal/base/SnapshotModuleBase.sol new file mode 100644 index 00000000..1290cbd2 --- /dev/null +++ b/contracts/modules/internal/base/SnapshotModuleBase.sol @@ -0,0 +1,405 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; +import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol'; + +import "../../../libraries/Errors.sol"; + +/** + * @dev Base for the Snapshot module + * + * Useful to take a snapshot of token holder balance and total supply at a specific time + * Inspired by Openzeppelin - ERC20Snapshot but use the time as Id instead of a counter. + * Contrary to OpenZeppelin, the function _getCurrentSnapshotId is not available + because overriding this function can break the contract. + */ + +abstract contract SnapshotModuleBase is Initializable { + using Arrays for uint256[]; + + /** + @notice Emitted when the snapshot with the specified oldTime was scheduled or rescheduled at the specified newTime. + */ + event SnapshotSchedule(uint256 indexed oldTime, uint256 indexed newTime); + + /** + * @notice Emitted when the scheduled snapshot with the specified time was cancelled. + */ + event SnapshotUnschedule(uint256 indexed time); + + /** + * @dev See {OpenZeppelin - ERC20Snapshot} + * Snapshotted values have arrays of ids (time) and the value corresponding to that id. + * ids is expected to be sorted in ascending order, and to contain no repeated elements + * because we use findUpperBound in the function _valueAt + */ + struct Snapshots { + uint256[] ids; + uint256[] values; + } + + /** + * @dev See {OpenZeppelin - ERC20Snapshot} + */ + mapping(address => Snapshots) internal _accountBalanceSnapshots; + Snapshots internal _totalSupplySnapshots; + + /** + * @dev time instead of a counter for OpenZeppelin + */ + // Initialized to zero + uint256 private _currentSnapshotTime; + // Initialized to zero + uint256 private _currentSnapshotIndex; + + /** + * @dev + * list of scheduled snapshot (time) + * This list is sorted in ascending order + */ + uint256[] private _scheduledSnapshots; + + function __SnapshotModuleBase_init_unchained() internal onlyInitializing { + // Nothing to do + // _currentSnapshotTime & _currentSnapshotIndex are initialized to zero + } + + + /** + * + * @notice Get all snapshots + */ + function getAllSnapshots() public view returns (uint256[] memory) { + return _scheduledSnapshots; + } + + /** + * @dev + * Get the next scheduled snapshots + */ + function getNextSnapshots() public view returns (uint256[] memory) { + uint256[] memory nextScheduledSnapshot = new uint256[](0); + // no snapshot were planned + if (_scheduledSnapshots.length > 0) { + ( + uint256 timeLowerBound, + uint256 indexLowerBound + ) = _findScheduledMostRecentPastSnapshot(); + // All snapshots are situated in the futur + if ((timeLowerBound == 0) && (_currentSnapshotTime == 0)) { + return _scheduledSnapshots; + } else { + // There are snapshots situated in the futur + if (indexLowerBound + 1 != _scheduledSnapshots.length) { + // All next snapshots are located after the snapshot specified by indexLowerBound + uint256 arraySize = _scheduledSnapshots.length - + indexLowerBound - + 1; + nextScheduledSnapshot = new uint256[](arraySize); + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i; i < arraySize; ++i) { + nextScheduledSnapshot[i] = _scheduledSnapshots[ + indexLowerBound + 1 + i + ]; + } + } + } + } + return nextScheduledSnapshot; + } + + + /** + * @dev schedule a snapshot at the specified time + * You can only add a snapshot after the last previous + */ + function _scheduleSnapshot(uint256 time) internal { + // Check the time firstly to avoid an useless read of storage + if (time <= block.timestamp) { + revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( + time, + block.timestamp + ); + } + + if (_scheduledSnapshots.length > 0) { + // We check the last snapshot on the list + uint256 nextSnapshotTime = _scheduledSnapshots[ + _scheduledSnapshots.length - 1 + ]; + if (time < nextSnapshotTime) { + revert Errors + .CMTAT_SnapshotModule_SnapshotTimestampBeforeLastSnapshot( + time, + nextSnapshotTime + ); + } else if (time == nextSnapshotTime) { + revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); + } + } + _scheduledSnapshots.push(time); + emit SnapshotSchedule(0, time); + } + + /** + * @dev schedule a snapshot at the specified time + */ + function _scheduleSnapshotNotOptimized(uint256 time) internal { + if (time <= block.timestamp) { + revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( + time, + block.timestamp + ); + } + (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); + // Perfect match + if (isFound) { + revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); + } + // if no upper bound match found, we push the snapshot at the end of the list + if (index == _scheduledSnapshots.length) { + _scheduledSnapshots.push(time); + } else { + _scheduledSnapshots.push( + _scheduledSnapshots[_scheduledSnapshots.length - 1] + ); + for (uint256 i = _scheduledSnapshots.length - 2; i > index; ) { + _scheduledSnapshots[i] = _scheduledSnapshots[i - 1]; + unchecked { + --i; + } + } + _scheduledSnapshots[index] = time; + } + emit SnapshotSchedule(0, time); + } + + /** + * @dev reschedule a scheduled snapshot at the specified newTime + */ + function _rescheduleSnapshot(uint256 oldTime, uint256 newTime) internal { + // Check the time firstly to avoid an useless read of storage + if (oldTime <= block.timestamp) { + revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); + } + if (newTime <= block.timestamp) { + revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( + newTime, + block.timestamp + ); + } + if (_scheduledSnapshots.length == 0) { + revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); + } + (bool foundOld, uint256 index) = _findScheduledSnapshotIndex(oldTime); + if (!foundOld) { + revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); + } + if (index + 1 < _scheduledSnapshots.length) { + uint256 nextSnapshotTime = _scheduledSnapshots[index + 1]; + if (newTime > nextSnapshotTime) { + revert Errors + .CMTAT_SnapshotModule_SnapshotTimestampAfterNextSnapshot( + newTime, + nextSnapshotTime + ); + } else if (newTime == nextSnapshotTime) { + revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); + } + } + if (index > 0) { + if (newTime <= _scheduledSnapshots[index - 1]) + revert Errors + .CMTAT_SnapshotModule_SnapshotTimestampBeforePreviousSnapshot( + newTime, + _scheduledSnapshots[index - 1] + ); + } + _scheduledSnapshots[index] = newTime; + + emit SnapshotSchedule(oldTime, newTime); + } + + /** + * @dev unschedule the last scheduled snapshot + */ + function _unscheduleLastSnapshot(uint256 time) internal { + // Check the time firstly to avoid an useless read of storage + if (time <= block.timestamp) { + revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); + } + if (_scheduledSnapshots.length == 0) { + revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); + } + // All snapshot time are unique, so we do not check the indice + if (time != _scheduledSnapshots[_scheduledSnapshots.length - 1]) { + revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); + } + _scheduledSnapshots.pop(); + emit SnapshotUnschedule(time); + } + + /** + * @dev unschedule (remove) a scheduled snapshot in three steps: + * - search the snapshot in the list + * - If found, move all next snapshots one position to the left + * - Reduce the array size by deleting the last snapshot + */ + function _unscheduleSnapshotNotOptimized(uint256 time) internal { + if (time <= block.timestamp) { + revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); + } + (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); + if (!isFound) { + revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); + } + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ++i ) { + _scheduledSnapshots[i] = _scheduledSnapshots[i + 1]; + } + _scheduledSnapshots.pop(); + } + + /** + * @dev See {OpenZeppelin - ERC20Snapshot} + * @param time where we want a snapshot + * @param snapshots the struct where are stored the snapshots + * @return snapshotExist true if a snapshot is found, false otherwise + * value 0 if no snapshot, balance value if a snapshot exists + */ + function _valueAt( + uint256 time, + Snapshots storage snapshots + ) internal view returns (bool snapshotExist, uint256 value) { + // When a valid snapshot is queried, there are three possibilities: + // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never + // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds + // to this id is the current one. + // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the + // requested id, and its value is the one to return. + // c) More snapshots were created after the requested one, and the queried value was later modified. There will be + // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is + // larger than the requested one. + // + // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if + // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does + // exactly this. + + uint256 index = snapshots.ids.findUpperBound(time); + + if (index == snapshots.ids.length) { + return (false, 0); + } else { + return (true, snapshots.values[index]); + } + } + + /** + * @dev + * Inside a struct Snapshots: + * - Update the array ids to the current Snapshot time if this one is greater than the snapshot times stored in ids. + * - Update the value to the corresponding value. + */ + function _updateSnapshot( + Snapshots storage snapshots, + uint256 currentValue + ) internal { + uint256 current = _currentSnapshotTime; + if (_lastSnapshot(snapshots.ids) < current) { + snapshots.ids.push(current); + snapshots.values.push(currentValue); + } + } + + /** + * @dev + * Set the currentSnapshotTime by retrieving the most recent snapshot + * if a snapshot exists, clear all past scheduled snapshot + */ + function _setCurrentSnapshot() internal { + ( + uint256 scheduleSnapshotTime, + uint256 scheduleSnapshotIndex + ) = _findScheduledMostRecentPastSnapshot(); + if (scheduleSnapshotTime > 0) { + _currentSnapshotTime = scheduleSnapshotTime; + _currentSnapshotIndex = scheduleSnapshotIndex; + } + } + + /** + * @return the last snapshot time inside a snapshot ids array + */ + function _lastSnapshot( + uint256[] storage ids + ) private view returns (uint256) { + if (ids.length == 0) { + return 0; + } else { + return ids[ids.length - 1]; + } + } + + /** + * @dev Find the snapshot index at the specified time + * @return (true, index) if the snapshot exists, (false, 0) otherwise + */ + function _findScheduledSnapshotIndex( + uint256 time + ) private view returns (bool, uint256) { + uint256 indexFound = _scheduledSnapshots.findUpperBound(time); + uint256 _scheduledSnapshotsLength = _scheduledSnapshots.length; + // Exact match + if ( + indexFound != _scheduledSnapshotsLength && + _scheduledSnapshots[indexFound] == time + ) { + return (true, indexFound); + } + // Upper bound match + else if (indexFound != _scheduledSnapshotsLength) { + return (false, indexFound); + } + // no match + else { + return (false, _scheduledSnapshotsLength); + } + } + + /** + * @dev find the most recent past snapshot + * The complexity of this function is O(N) because we go through the whole list + */ + function _findScheduledMostRecentPastSnapshot() + private + view + returns (uint256 time, uint256 index) + { + uint256 currentArraySize = _scheduledSnapshots.length; + // no snapshot or the current snapshot already points on the last snapshot + if ( + currentArraySize == 0 || + ((_currentSnapshotIndex + 1 == currentArraySize) && (time != 0)) + ) { + return (0, currentArraySize); + } + // mostRecent is initialized in the loop + uint256 mostRecent; + index = currentArraySize; + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ++i ) { + if (_scheduledSnapshots[i] <= block.timestamp) { + mostRecent = _scheduledSnapshots[i]; + index = i; + } else { + // All snapshot are planned in the futur + break; + } + } + return (mostRecent, index); + } + + uint256[50] private __gap; +} diff --git a/contracts/modules/security/AuthorizationModule.sol b/contracts/modules/security/AuthorizationModule.sol index 43dbf630..7870b318 100644 --- a/contracts/modules/security/AuthorizationModule.sol +++ b/contracts/modules/security/AuthorizationModule.sol @@ -2,45 +2,16 @@ pragma solidity ^0.8.20; -import "../../../openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; - +import "../../../openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol"; import "../../libraries/Errors.sol"; +import "../../interfaces/engine/IAuthorizationEngine.sol"; -abstract contract AuthorizationModule is AccessControlDefaultAdminRulesUpgradeable { - // BurnModule - bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); - // CreditEvents - bytes32 public constant DEBT_CREDIT_EVENT_ROLE = - keccak256("DEBT_CREDIT_EVENT_ROLE"); - // DebtModule - bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE"); - // EnforcementModule - bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE"); - // MintModule - bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); - // PauseModule - bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); - // SnapshotModule - bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE"); - - - - function __AuthorizationModule_init( - address admin, - uint48 initialDelay - ) internal onlyInitializing { - /* OpenZeppelin */ - __Context_init_unchained(); - // AccessControlUpgradeable inherits from ERC165Upgradeable - __ERC165_init_unchained(); - __AccessControl_init_unchained(); - __AccessControlDefaultAdminRules_init_unchained(initialDelay, admin); - - /* own function */ - __AuthorizationModule_init_unchained(); - } - +abstract contract AuthorizationModule is AccessControlUpgradeable { + IAuthorizationEngine private authorizationEngine; + /** + * @dev Emitted when a rule engine is set. + */ + event AuthorizationEngine(IAuthorizationEngine indexed newAuthorizationEngine); /** * @dev * @@ -48,17 +19,62 @@ abstract contract AuthorizationModule is AccessControlDefaultAdminRulesUpgradeab * - The control of the zero address is done by AccessControlDefaultAdminRules * */ - function __AuthorizationModule_init_unchained( - ) internal view onlyInitializing { + function __AuthorizationModule_init_unchained(address admin, IAuthorizationEngine authorizationEngine_) + internal onlyInitializing { + if(admin == address(0)){ + revert Errors.CMTAT_AuthorizationModule_AddressZeroNotAllowed(); + } + _grantRole(DEFAULT_ADMIN_ROLE, admin); + if (address(authorizationEngine) != address (0)) { + authorizationEngine = authorizationEngine_; + } + + } /* + * @notice set an authorizationEngine if not already set + * @dev once an AuthorizationEngine is set, it is not possible to unset it + */ + function setAuthorizationEngine( + IAuthorizationEngine authorizationEngine_ + ) external onlyRole(DEFAULT_ADMIN_ROLE) { + if (address(authorizationEngine) != address (0)){ + revert Errors.CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet(); + } + authorizationEngine = authorizationEngine_; + emit AuthorizationEngine(authorizationEngine_); + } + + function grantRole(bytes32 role, address account) public override onlyRole(getRoleAdmin(role)) { + if (address(authorizationEngine) != address (0)) { + bool result = authorizationEngine.operateOnGrantRole(role, account); + if(!result) { + // Operation rejected by the authorizationEngine + revert Errors.CMTAT_AuthorizationModule_InvalidAuthorization(); + } + } + return AccessControlUpgradeable.grantRole(role, account); + } + + function revokeRole(bytes32 role, address account) public override onlyRole(getRoleAdmin(role)) { + if (address(authorizationEngine) != address (0)) { + bool result = authorizationEngine.operateOnRevokeRole(role, account); + if(!result) { + // Operation rejected by the authorizationEngine + revert Errors.CMTAT_AuthorizationModule_InvalidAuthorization(); + } + } + return AccessControlUpgradeable.revokeRole(role, account); + } + + /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole( bytes32 role, address account - ) public view virtual override( IAccessControl, AccessControlUpgradeable) returns (bool) { + ) public view virtual override(AccessControlUpgradeable) returns (bool) { // The Default Admin has all roles if (AccessControlUpgradeable.hasRole(DEFAULT_ADMIN_ROLE, account)) { return true; @@ -66,16 +82,5 @@ abstract contract AuthorizationModule is AccessControlDefaultAdminRulesUpgradeab return AccessControlUpgradeable.hasRole(role, account); } - /** - @notice - Warning: this function should be called only in case of necessity (e.g private key leak) - Its goal is to transfer the adminship of the contract to a new admin, whithout delay. - The prefer way is to use the workflow of AccessControlDefaultAdminRulesUpgradeable - */ - function transferAdminshipDirectly(address newAdmin) public virtual onlyRole(DEFAULT_ADMIN_ROLE) { - // we revoke first the admin since we can only have one admin - _revokeRole(DEFAULT_ADMIN_ROLE, _msgSender()); - _grantRole(DEFAULT_ADMIN_ROLE, newAdmin); - } uint256[50] private __gap; } diff --git a/contracts/modules/wrapper/controllers/ValidationModule.sol b/contracts/modules/wrapper/controllers/ValidationModule.sol index d7b0ed86..63fe5183 100644 --- a/contracts/modules/wrapper/controllers/ValidationModule.sol +++ b/contracts/modules/wrapper/controllers/ValidationModule.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.20; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../internal/ValidationModuleInternal.sol"; import "../core/PauseModule.sol"; @@ -29,44 +28,20 @@ abstract contract ValidationModule is } /* - @notice set a RuleEngine - @param ruleEngine_ the call will be reverted if the new value of ruleEngine is the same as the current one + * @notice set a RuleEngine + * @param ruleEngine_ the call will be reverted if the new value of ruleEngine is the same as the current one */ function setRuleEngine( - IERC1404Wrapper ruleEngine_ + IRuleEngine ruleEngine_ ) external onlyRole(DEFAULT_ADMIN_ROLE) { - if (ruleEngine == ruleEngine_) - revert Errors.CMTAT_ValidationModule_SameValue(); + if (ruleEngine == ruleEngine_){ + revert Errors.CMTAT_ValidationModule_SameValue(); + } ruleEngine = ruleEngine_; emit RuleEngine(ruleEngine_); } - /** - * @dev ERC1404 check if _value token can be transferred from _from to _to - * @param from address The address which you want to send tokens from - * @param to address The address which you want to transfer to - * @param amount uint256 the amount of tokens to be transferred - * @return code of the rejection reason - */ - function detectTransferRestriction( - address from, - address to, - uint256 amount - ) public view override returns (uint8 code) { - if (paused()) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_PAUSED); - } else if (frozen(from)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_FROM_FROZEN); - } else if (frozen(to)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_TO_FROZEN); - } else if (address(ruleEngine) != address(0)) { - return _detectTransferRestriction(from, to, amount); - } else { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - } - - /** + /** * @dev ERC1404 returns the human readable explaination corresponding to the error code returned by detectTransferRestriction * @param restrictionCode The error code returned by detectTransferRestriction * @return message The human readable explaination corresponding to the error code returned by detectTransferRestriction @@ -97,13 +72,38 @@ abstract contract ValidationModule is return TEXT_UNKNOWN_CODE; } } + + /** + * @dev ERC1404 check if _value token can be transferred from _from to _to + * @param from address The address which you want to send tokens from + * @param to address The address which you want to transfer to + * @param amount uint256 the amount of tokens to be transferred + * @return code of the rejection reason + */ + function detectTransferRestriction( + address from, + address to, + uint256 amount + ) public view override returns (uint8 code) { + if (paused()) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_PAUSED); + } else if (frozen(from)) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_FROM_FROZEN); + } else if (frozen(to)) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_TO_FROZEN); + } else if (address(ruleEngine) != address(0)) { + return _detectTransferRestriction(from, to, amount); + } else { + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + } function validateTransfer( address from, address to, uint256 amount ) public view override returns (bool) { - if (paused() || frozen(from) || frozen(to)) { + if (!_validateTransferByModule(from, to, amount)) { return false; } if (address(ruleEngine) != address(0)) { @@ -112,5 +112,26 @@ abstract contract ValidationModule is return true; } + function _validateTransferByModule( + address from, + address to, + uint256 /*amount*/ + ) internal view returns (bool) { + if (paused() || frozen(from) || frozen(to)) { + return false; + } + return true; + } + + function _operateOnTransfer(address from, address to, uint256 amount) override internal returns (bool){ + if (!_validateTransferByModule(from, to, amount)){ + return false; + } + if (address(ruleEngine) != address(0)) { + return ValidationModuleInternal._operateOnTransfer(from, to, amount); + } + return true; + } + uint256[50] private __gap; } diff --git a/contracts/modules/wrapper/core/BaseModule.sol b/contracts/modules/wrapper/core/BaseModule.sol index 7fc46e74..1b2a3e86 100644 --- a/contracts/modules/wrapper/core/BaseModule.sol +++ b/contracts/modules/wrapper/core/BaseModule.sol @@ -3,16 +3,15 @@ pragma solidity ^0.8.20; // required OZ imports here -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../../libraries/Errors.sol"; abstract contract BaseModule is AuthorizationModule { - /* - @notice - Get the current version of the smart contract + /** + * @notice + * Get the current version of the smart contract */ - string public constant VERSION = "2.3.1"; + string public constant VERSION = "2.4.0"; /* Events */ event Term(string indexed newTermIndexed, string newTerm); event TokenId(string indexed newTokenIdIndexed, string newTokenId); @@ -26,6 +25,7 @@ abstract contract BaseModule is AuthorizationModule { string public tokenId; string public terms; string public information; + // additional attribute to store information as an uint256 uint256 public flag; @@ -50,8 +50,8 @@ abstract contract BaseModule is AuthorizationModule { } /* Methods */ - /* - @notice the tokenId will be changed even if the new value is the same as the current one + /** + * @notice the tokenId will be changed even if the new value is the same as the current one */ function setTokenId( string calldata tokenId_ @@ -60,8 +60,8 @@ abstract contract BaseModule is AuthorizationModule { emit TokenId(tokenId_, tokenId_); } - /* - @notice The terms will be changed even if the new value is the same as the current one + /** + * @notice The terms will be changed even if the new value is the same as the current one */ function setTerms( string calldata terms_ @@ -70,8 +70,8 @@ abstract contract BaseModule is AuthorizationModule { emit Term(terms_, terms_); } - /* - @notice The information will be changed even if the new value is the same as the current one + /** + * @notice The information will be changed even if the new value is the same as the current one */ function setInformation( string calldata information_ @@ -80,8 +80,8 @@ abstract contract BaseModule is AuthorizationModule { emit Information(information_, information_); } - /* - @notice The call will be reverted if the new value of flag is the same as the current one + /** + * @notice The call will be reverted if the new value of flag is the same as the current one */ function setFlag(uint256 flag_) public onlyRole(DEFAULT_ADMIN_ROLE) { if (flag == flag_) { diff --git a/contracts/modules/wrapper/core/ERC20BaseModule.sol b/contracts/modules/wrapper/core/ERC20BaseModule.sol index 0d36177d..ad0ee813 100644 --- a/contracts/modules/wrapper/core/ERC20BaseModule.sol +++ b/contracts/modules/wrapper/core/ERC20BaseModule.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; // required OZ imports here -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import "../../../libraries/Errors.sol"; @@ -11,6 +10,7 @@ abstract contract ERC20BaseModule is ERC20Upgradeable { /* Events */ /** * @notice Emitted when the specified `spender` spends the specified `value` tokens owned by the specified `owner` reducing the corresponding allowance. + * @dev The allowance can be also "spend" with the function BurnFrom, but in this case, the emitted event is BurnFrom. */ event Spend(address indexed owner, address indexed spender, uint256 value); @@ -65,14 +65,11 @@ abstract contract ERC20BaseModule is ERC20Upgradeable { if (bool(tos.length != values.length)) { revert Errors.CMTAT_ERC20BaseModule_TosValueslengthMismatch(); } - - for (uint256 i = 0; i < tos.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < tos.length; ++i) { // We call directly the internal function transfer // The reason is that the public function adds only the owner address recovery ERC20Upgradeable._transfer(_msgSender(), tos[i], values[i]); - unchecked { - ++i; - } } // not really useful // Here only to keep the same behaviour as transfer @@ -101,27 +98,16 @@ abstract contract ERC20BaseModule is ERC20Upgradeable { } /** - * @notice Allows `spender` to withdraw from your account multiple times, up to the `value` amount - * @dev see {OpenZeppelin ERC20 - approve} - */ - function approve( - address spender, - uint256 value, - uint256 currentAllowance - ) public virtual returns (bool) { - address owner = _msgSender(); - uint256 currentAllowanceFromSmartContract = allowance(owner, spender); - if (currentAllowanceFromSmartContract != currentAllowance) { - revert Errors.CMTAT_ERC20BaseModule_WrongAllowance( - spender, - currentAllowanceFromSmartContract, - currentAllowance - ); + * @param addresses list of address to know their balance + * @return balances ,totalSupply array with balance for each address, totalSupply + * @dev useful for the snapshot rule + */ + function balanceInfo(address[] calldata addresses) public view returns(uint256[] memory balances , uint256 totalSupply) { + balances = new uint256[](addresses.length); + for(uint256 i = 0; i < addresses.length; ++i){ + balances[i] = ERC20Upgradeable.balanceOf(addresses[i]); } - // We call directly the internal function _approve - // The reason is that the public function adds only the owner address recovery - ERC20Upgradeable._approve(owner, spender, value); - return true; + totalSupply = ERC20Upgradeable.totalSupply(); } uint256[50] private __gap; diff --git a/contracts/modules/wrapper/core/ERC20BurnModule.sol b/contracts/modules/wrapper/core/ERC20BurnModule.sol index ce4e36a6..b1482e9c 100644 --- a/contracts/modules/wrapper/core/ERC20BurnModule.sol +++ b/contracts/modules/wrapper/core/ERC20BurnModule.sol @@ -3,15 +3,19 @@ pragma solidity ^0.8.20; import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; - -abstract contract ERC20BurnModule is ERC20Upgradeable, AuthorizationModule { +import "../../../interfaces/ICCIPToken.sol"; +abstract contract ERC20BurnModule is ERC20Upgradeable, ICCIPBurnFromERC20, AuthorizationModule { + bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); + bytes32 public constant BURNER_FROM_ROLE = keccak256("BURNER_FROM_ROLE"); /** - * @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason` - */ + * @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason` + */ event Burn(address indexed owner, uint256 value, string reason); - + /** + * @notice Emitted when the specified `spender` burns the specified `value` tokens owned by the specified `owner` reducing the corresponding allowance. + */ + event BurnFrom(address indexed owner, address indexed spender, uint256 value); function __ERC20BurnModule_init_unchained() internal onlyInitializing { // no variable to initialize } @@ -25,7 +29,7 @@ abstract contract ERC20BurnModule is ERC20Upgradeable, AuthorizationModule { * Requirements: * - the caller must have the `BURNER_ROLE`. */ - function forceBurn( + function burn( address account, uint256 value, string calldata reason @@ -34,9 +38,10 @@ abstract contract ERC20BurnModule is ERC20Upgradeable, AuthorizationModule { emit Burn(account, value, reason); } + /** * - * @notice batch version of {forceBurn}. + * @notice batch version of {burn}. * @dev * See {ERC20-_burn} and {OpenZeppelin ERC1155_burnBatch}. * @@ -48,7 +53,7 @@ abstract contract ERC20BurnModule is ERC20Upgradeable, AuthorizationModule { * - `accounts` and `values` must have the same length * - the caller must have the `BURNER_ROLE`. */ - function forceBurnBatch( + function burnBatch( address[] calldata accounts, uint256[] calldata values, string calldata reason @@ -61,15 +66,49 @@ abstract contract ERC20BurnModule is ERC20Upgradeable, AuthorizationModule { if (bool(accounts.length != values.length)) { revert Errors.CMTAT_BurnModule_AccountsValueslengthMismatch(); } - - for (uint256 i = 0; i < accounts.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < accounts.length; ++i ) { _burn(accounts[i], values[i]); emit Burn(accounts[i], values[i], reason); - unchecked { - ++i; - } } } + /** + * @notice Destroys `amount` tokens from `account`, deducting from the caller's + * allowance. + * @dev + * Can be used to authorize a bridge (e.g. CCIP) to burn token owned by the bridge + * No string parameter reason to be compatible with Bridge, e.g. CCIP + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ``accounts``'s tokens of at least + * `value`. + */ + function burnFrom(address account, uint256 value) + public + onlyRole(BURNER_FROM_ROLE) + { + // Allowance check + address sender = _msgSender(); + uint256 currentAllowance = allowance(account, sender); + if(currentAllowance < value){ + // ERC-6093 + revert ERC20InsufficientAllowance(sender, currentAllowance, value); + } + // Update allowance + unchecked { + _approve(account, sender, currentAllowance - value); + } + // burn + _burn(account, value); + // We also emit a burn event since its a burn operation + emit Burn(account, value, "burnFrom"); + // Specific event for the operation + emit BurnFrom(account, sender, value); + } + uint256[50] private __gap; } diff --git a/contracts/modules/wrapper/core/ERC20MintModule.sol b/contracts/modules/wrapper/core/ERC20MintModule.sol index 3744a4f3..3fdafc82 100644 --- a/contracts/modules/wrapper/core/ERC20MintModule.sol +++ b/contracts/modules/wrapper/core/ERC20MintModule.sol @@ -3,10 +3,11 @@ pragma solidity ^0.8.20; import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; - -abstract contract ERC20MintModule is ERC20Upgradeable, AuthorizationModule { +import "../../../interfaces/ICCIPToken.sol"; +abstract contract ERC20MintModule is ERC20Upgradeable, ICCIPMintERC20, AuthorizationModule { + // MintModule + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); /** * @notice Emitted when the specified `value` amount of new tokens are created and * allocated to the specified `account`. @@ -19,6 +20,8 @@ abstract contract ERC20MintModule is ERC20Upgradeable, AuthorizationModule { /** * @notice Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0) + * @param account token receiver + * @param value amount of tokens * @dev * See {OpenZeppelin ERC20-_mint}. * Emits a {Mint} event. @@ -60,13 +63,10 @@ abstract contract ERC20MintModule is ERC20Upgradeable, AuthorizationModule { if (bool(accounts.length != values.length)) { revert Errors.CMTAT_MintModule_AccountsValueslengthMismatch(); } - - for (uint256 i = 0; i < accounts.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < accounts.length; ++i ) { _mint(accounts[i], values[i]); emit Mint(accounts[i], values[i]); - unchecked { - ++i; - } } } diff --git a/contracts/modules/wrapper/core/EnforcementModule.sol b/contracts/modules/wrapper/core/EnforcementModule.sol index 739cadf4..80562be5 100644 --- a/contracts/modules/wrapper/core/EnforcementModule.sol +++ b/contracts/modules/wrapper/core/EnforcementModule.sol @@ -14,11 +14,13 @@ abstract contract EnforcementModule is EnforcementModuleInternal, AuthorizationModule { + // EnforcementModule + bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE"); string internal constant TEXT_TRANSFER_REJECTED_FROM_FROZEN = - "The address FROM is frozen"; + "Address FROM is frozen"; string internal constant TEXT_TRANSFER_REJECTED_TO_FROZEN = - "The address TO is frozen"; + "Address TO is frozen"; function __EnforcementModule_init_unchained() internal onlyInitializing { // no variable to initialize diff --git a/contracts/modules/wrapper/core/PauseModule.sol b/contracts/modules/wrapper/core/PauseModule.sol index 4d999163..b94b9973 100644 --- a/contracts/modules/wrapper/core/PauseModule.sol +++ b/contracts/modules/wrapper/core/PauseModule.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "../../../../openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; /** @@ -17,6 +16,8 @@ import "../../security/AuthorizationModule.sol"; * event of a large bug. */ abstract contract PauseModule is PausableUpgradeable, AuthorizationModule { + // PauseModule + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); string internal constant TEXT_TRANSFER_REJECTED_PAUSED = "All transfers paused"; bool private isDeactivated; diff --git a/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol b/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol index 6b332a8e..1c878936 100644 --- a/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol +++ b/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol @@ -15,6 +15,9 @@ abstract contract CreditEventsModule is ContextUpgradeable, AuthorizationModule { + // CreditEvents + bytes32 public constant DEBT_CREDIT_EVENT_ROLE = + keccak256("DEBT_CREDIT_EVENT_ROLE"); CreditEvents public creditEvents; /* Events */ diff --git a/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol b/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol index 1fbfd8d8..62117776 100644 --- a/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol +++ b/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol @@ -15,6 +15,8 @@ abstract contract DebtBaseModule is ContextUpgradeable, AuthorizationModule { + // DebtModule + bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE"); DebtBase public debt; /* Events */ @@ -59,9 +61,9 @@ abstract contract DebtBaseModule is // no variable to initialize } - /* - @notice Set all attributes of debt - The values of all attributes will be changed even if the new values are the same as the current ones + /** + * @notice Set all attributes of debt + * The values of all attributes will be changed even if the new values are the same as the current ones */ function setDebt(DebtBase calldata debt_) public onlyRole(DEBT_ROLE) { debt = debt_; @@ -96,8 +98,8 @@ abstract contract DebtBaseModule is emit CouponFrequency(debt_.couponFrequency, debt_.couponFrequency); } - /* - @notice The call will be reverted if the new value of interestRate is the same as the current one + /** + * @notice The call will be reverted if the new value of interestRate is the same as the current one */ function setInterestRate(uint256 interestRate_) public onlyRole(DEBT_ROLE) { if (interestRate_ == debt.interestRate) { @@ -107,8 +109,8 @@ abstract contract DebtBaseModule is emit InterestRate(interestRate_); } - /* - @notice The call will be reverted if the new value of parValue is the same as the current one + /** + * @notice The call will be reverted if the new value of parValue is the same as the current one */ function setParValue(uint256 parValue_) public onlyRole(DEBT_ROLE) { if (parValue_ == debt.parValue) { @@ -118,8 +120,8 @@ abstract contract DebtBaseModule is emit ParValue(parValue_); } - /* - @notice The Guarantor will be changed even if the new value is the same as the current one + /** + * @notice The Guarantor will be changed even if the new value is the same as the current one */ function setGuarantor( string calldata guarantor_ @@ -128,8 +130,8 @@ abstract contract DebtBaseModule is emit Guarantor(guarantor_, guarantor_); } - /* - @notice The bonHolder will be changed even if the new value is the same as the current one + /** + * @notice The bonHolder will be changed even if the new value is the same as the current one */ function setBondHolder( string calldata bondHolder_ @@ -138,8 +140,8 @@ abstract contract DebtBaseModule is emit BondHolder(bondHolder_, bondHolder_); } - /* - @notice The maturityDate will be changed even if the new value is the same as the current one + /** + * @notice The maturityDate will be changed even if the new value is the same as the current one */ function setMaturityDate( string calldata maturityDate_ @@ -148,8 +150,8 @@ abstract contract DebtBaseModule is emit MaturityDate(maturityDate_, maturityDate_); } - /* - @notice The interestScheduleFormat will be changed even if the new value is the same as the current one + /** + * @notice The interestScheduleFormat will be changed even if the new value is the same as the current one */ function setInterestScheduleFormat( string calldata interestScheduleFormat_ @@ -161,8 +163,8 @@ abstract contract DebtBaseModule is ); } - /* - @notice The interestPaymentDate will be changed even if the new value is the same as the current one + /** + * @notice The interestPaymentDate will be changed even if the new value is the same as the current one */ function setInterestPaymentDate( string calldata interestPaymentDate_ @@ -171,8 +173,8 @@ abstract contract DebtBaseModule is emit InterestPaymentDate(interestPaymentDate_, interestPaymentDate_); } - /* - @notice The dayCountConvention will be changed even if the new value is the same as the current one + /** + * @notice The dayCountConvention will be changed even if the new value is the same as the current one */ function setDayCountConvention( string calldata dayCountConvention_ @@ -181,8 +183,8 @@ abstract contract DebtBaseModule is emit DayCountConvention(dayCountConvention_, dayCountConvention_); } - /* - @notice The businessDayConvention will be changed even if the new value is the same as the current one + /** + * @notice The businessDayConvention will be changed even if the new value is the same as the current one */ function setBusinessDayConvention( string calldata businessDayConvention_ @@ -194,8 +196,8 @@ abstract contract DebtBaseModule is ); } - /* - @notice The publicHolidayCalendar will be changed even if the new value is the same as the current one + /** + * @notice The publicHolidayCalendar will be changed even if the new value is the same as the current one */ function setPublicHolidaysCalendar( string calldata publicHolidaysCalendar_ @@ -207,8 +209,8 @@ abstract contract DebtBaseModule is ); } - /* - @notice The issuanceDate will be changed even if the new value is the same as the current one + /** + * @notice The issuanceDate will be changed even if the new value is the same as the current one */ function setIssuanceDate( string calldata issuanceDate_ @@ -217,8 +219,8 @@ abstract contract DebtBaseModule is emit IssuanceDate(issuanceDate_, issuanceDate_); } - /* - @notice The couponFrequency will be changed even if the new value is the same as the current one + /** + * @notice The couponFrequency will be changed even if the new value is the same as the current one */ function setCouponFrequency( string calldata couponFrequency_ diff --git a/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol b/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol index 9c167f35..b7142fb5 100644 --- a/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol +++ b/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.20; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../internal/ERC20SnapshotModuleInternal.sol"; @@ -16,6 +15,8 @@ abstract contract ERC20SnapshotModule is ERC20SnapshotModuleInternal, AuthorizationModule { + // SnapshotModule + bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE"); function __ERC20SnasphotModule_init_unchained() internal onlyInitializing { // no variable to initialize } diff --git a/contracts/modules/wrapper/extensions/MetaTxModule.sol b/contracts/modules/wrapper/extensions/MetaTxModule.sol index 1ddd0471..3df45f74 100644 --- a/contracts/modules/wrapper/extensions/MetaTxModule.sol +++ b/contracts/modules/wrapper/extensions/MetaTxModule.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "../../../../openzeppelin-contracts-upgradeable/contracts/metatx/ERC2771ContextUpgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; /** * @dev Meta transaction (gasless) module. @@ -20,25 +19,5 @@ abstract contract MetaTxModule is ERC2771ContextUpgradeable { // Nothing to do } - function _msgSender() - internal - view - virtual - override - returns (address sender) - { - return ERC2771ContextUpgradeable._msgSender(); - } - - function _msgData() - internal - view - virtual - override - returns (bytes calldata) - { - return ERC2771ContextUpgradeable._msgData(); - } - uint256[50] private __gap; } diff --git a/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol b/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol deleted file mode 100644 index 75525862..00000000 --- a/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol +++ /dev/null @@ -1,21 +0,0 @@ -//SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "./CMTAT_BASE_SnapshotTest.sol"; - -contract CMTATSnapshotProxyTest is CMTAT_BASE_SnapshotTest { - /** - @notice Contract version for the deployment with a proxy - @param forwarderIrrevocable address of the forwarder, required for the gasless support - */ - /// @custom:oz-upgrades-unsafe-allow constructor - constructor( - address forwarderIrrevocable - ) MetaTxModule(forwarderIrrevocable) { - // Disable the possibility to initialize the implementation - _disableInitializers(); - } - - uint256[50] private __gap; -} diff --git a/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol b/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol deleted file mode 100644 index 654c6b5d..00000000 --- a/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol +++ /dev/null @@ -1,51 +0,0 @@ -//SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "./CMTAT_BASE_SnapshotTest.sol"; - -contract CMTATSnapshotStandaloneTest is CMTAT_BASE_SnapshotTest { - /** - @notice Contract version for standalone deployment - @param forwarderIrrevocable address of the forwarder, required for the gasless support - @param admin address of the admin of contract (Access Control) - @param nameIrrevocable name of the token - @param symbolIrrevocable name of the symbol - @param tokenId name of the tokenId - @param terms terms associated with the token - @param ruleEngine address of the ruleEngine to apply rules to transfers - @param information additional information to describe the token - @param flag add information under the form of bit(0, 1) - */ - /// @custom:oz-upgrades-unsafe-allow constructor - constructor( - address forwarderIrrevocable, - address admin, - uint48 initialDelayToAcceptAdminRole, - string memory nameIrrevocable, - string memory symbolIrrevocable, - uint8 decimalsIrrevocable, - string memory tokenId_, - string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, - uint256 flag_ - ) MetaTxModule(forwarderIrrevocable) { - // Initialize the contract to avoid front-running - // Warning : do not initialize the proxy - initialize( - admin, - initialDelayToAcceptAdminRole, - nameIrrevocable, - symbolIrrevocable, - decimalsIrrevocable, - tokenId_, - terms_, - ruleEngine_, - information_, - flag_ - ); - } - - // No storage gap because the contract is deployed in standalone mode -} diff --git a/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol b/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol deleted file mode 100644 index ab588cfc..00000000 --- a/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol +++ /dev/null @@ -1,217 +0,0 @@ -//SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -// required OZ imports here -import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"; - -import "../../modules/wrapper/core/BaseModule.sol"; -import "../../modules/wrapper/core/ERC20BurnModule.sol"; -import "../../modules/wrapper/core/ERC20MintModule.sol"; -import "../../modules/wrapper/core/EnforcementModule.sol"; -import "../../modules/wrapper/core/ERC20BaseModule.sol"; -import "../../modules/wrapper/core/PauseModule.sol"; -/* -SnapshotModule: -Add this import in case you add the SnapshotModule -*/ -import "../../modules/wrapper/controllers/ValidationModule.sol"; -import "../../modules/wrapper/extensions/ERC20SnapshotModule.sol"; -import "../../modules/wrapper/extensions/MetaTxModule.sol"; -import "../../modules/wrapper/extensions/DebtModule/DebtBaseModule.sol"; -import "../../modules/wrapper/extensions/DebtModule/CreditEventsModule.sol"; -import "../../modules/security/AuthorizationModule.sol"; - -import "../../libraries/Errors.sol"; - -abstract contract CMTAT_BASE_SnapshotTest is - Initializable, - ContextUpgradeable, - BaseModule, - PauseModule, - ERC20MintModule, - ERC20BurnModule, - EnforcementModule, - ValidationModule, - MetaTxModule, - ERC20BaseModule, - ERC20SnapshotModule, - DebtBaseModule, - CreditEventsModule -{ - /** - @notice - initialize the proxy contract - The calls to this function will revert if the contract was deployed without a proxy - */ - function initialize( - address admin, - uint48 initialDelayToAcceptAdminRole, - string memory nameIrrevocable, - string memory symbolIrrevocable, - uint8 decimalsIrrevocable, - string memory tokenId_, - string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, - uint256 flag_ - ) public initializer { - __CMTAT_init( - admin, - initialDelayToAcceptAdminRole, - nameIrrevocable, - symbolIrrevocable, - decimalsIrrevocable, - tokenId_, - terms_, - ruleEngine_, - information_, - flag_ - ); - } - - /** - @dev calls the different initialize functions from the different modules - */ - function __CMTAT_init( - address admin, - uint48 initialDelayToAcceptAdminRole, - string memory nameIrrevocable, - string memory symbolIrrevocable, - uint8 decimalsIrrevocable, - string memory tokenId_, - string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, - uint256 flag_ - ) internal onlyInitializing { - /* OpenZeppelin library */ - // OZ init_unchained functions are called firstly due to inheritance - __Context_init_unchained(); - __ERC20_init_unchained(nameIrrevocable, symbolIrrevocable); - // AccessControlUpgradeable inherits from ERC165Upgradeable - __ERC165_init_unchained(); - // AuthorizationModule inherits from AccessControlUpgradeable - __AccessControl_init_unchained(); - __Pausable_init_unchained(); - - /* Internal Modules */ - __Enforcement_init_unchained(); - /* - SnapshotModule: - Add this call in case you add the SnapshotModule - */ - __ERC20Snapshot_init_unchained(); - - __Validation_init_unchained(ruleEngine_); - - /* Wrapper */ - // AuthorizationModule_init_unchained is called firstly due to inheritance - __AuthorizationModule_init_unchained(); - __AccessControlDefaultAdminRules_init_unchained(initialDelayToAcceptAdminRole, admin); - __ERC20BurnModule_init_unchained(); - __ERC20MintModule_init_unchained(); - // EnforcementModule_init_unchained is called before ValidationModule_init_unchained due to inheritance - __EnforcementModule_init_unchained(); - __ERC20BaseModule_init_unchained(decimalsIrrevocable); - // PauseModule_init_unchained is called before ValidationModule_init_unchained due to inheritance - __PauseModule_init_unchained(); - __ValidationModule_init_unchained(); - - /* - SnapshotModule: - Add this call in case you add the SnapshotModule - */ - __ERC20SnasphotModule_init_unchained(); - - /* Other modules */ - __DebtBaseModule_init_unchained(); - __CreditEvents_init_unchained(); - __Base_init_unchained(tokenId_, terms_, information_, flag_); - - /* own function */ - __CMTAT_init_unchained(); - } - - function __CMTAT_init_unchained() internal onlyInitializing { - // no variable to initialize - } - - /** - @notice Returns the number of decimals used to get its user representation. - */ - function decimals() - public - view - virtual - override(ERC20Upgradeable, ERC20BaseModule) - returns (uint8) - { - return ERC20BaseModule.decimals(); - } - - function transferFrom( - address sender, - address recipient, - uint256 amount - ) - public - virtual - override(ERC20Upgradeable, ERC20BaseModule) - returns (bool) - { - return ERC20BaseModule.transferFrom(sender, recipient, amount); - } - - /* - @dev - SnapshotModule: - - override SnapshotModuleInternal if you add the SnapshotModule - e.g. override(SnapshotModuleInternal, ERC20Upgradeable) - - remove the keyword view - */ - function _update( - address from, - address to, - uint256 amount - ) internal override(ERC20SnapshotModuleInternal, ERC20Upgradeable) { - // We call the SnapshotModule only if the transfer is valid - if (!ValidationModule.validateTransfer(from, to, amount)) - revert Errors.CMTAT_InvalidTransfer(from, to, amount); - /* - We do not call ERC20Upgradeable._update(from, to, amount) here because it is called inside the SnapshotModule - */ - /* - SnapshotModule: - Add this call in case you add the SnapshotModule - */ - ERC20SnapshotModuleInternal._update(from, to, amount); - } - - /** - @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgSender() - internal - view - override(MetaTxModule, ContextUpgradeable) - returns (address sender) - { - return MetaTxModule._msgSender(); - } - - /** - @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgData() - internal - view - override(MetaTxModule, ContextUpgradeable) - returns (bytes calldata) - { - return MetaTxModule._msgData(); - } - - uint256[50] private __gap; -} diff --git a/doc/TOOLCHAIN.md b/doc/TOOLCHAIN.md index d58ab52e..8d829fab 100644 --- a/doc/TOOLCHAIN.md +++ b/doc/TOOLCHAIN.md @@ -176,9 +176,7 @@ Warning: From the version v2.3.0, this command is not working and generates the following error -> Failed to convert dot to SVG. Error: lost 31 26 edge - - +> RangeError: Maximum call stack size exceeded | Description | Command | | ------------------------------------------------------------ | -------------------------------------- | @@ -221,6 +219,6 @@ npm run-script coverage Slither is a Solidity static analysis framework written in Python3 ```bash -slither . --checklist --filter-paths "openzeppelin-contracts-upgradeable|test" > slither-report.md +slither . --checklist --filter-paths "openzeppelin-contracts-upgradeable|openzeppelin-contracts|@openzeppelin|test" > slither-report.md ``` diff --git a/doc/USAGE.md b/doc/USAGE.md index b598e578..b0404e66 100644 --- a/doc/USAGE.md +++ b/doc/USAGE.md @@ -7,15 +7,15 @@ The instructions below have been tested on Ubuntu 20.04.5 LTS. The toolchain includes the following components, where the versions are the latest ones that we tested: -- npm 8.19.2 +- npm 10.2.5 - Hardhat-web3 2.0.0 - *Truffle 5.9.3 [depreciated]* -- Solidity 0.8.17 (via solc-js) -- Node 16.17.0 +- Solidity 0.8.22 (via solc-js) +- Node 20.5.0 - Web3.js 1.9.0 - OpenZeppelin - - OpenZeppelin Contracts Upgradeable (submodule) [v5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/releases/tag/v5.0.0) - - OpenZeppelin Contracts (Node.js module) [v5.0.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.0) + - OpenZeppelin Contracts Upgradeable (submodule) [v5.0.2](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/releases/tag/v5.0.2) + - OpenZeppelin Contracts (Node.js module) [v5.0.2](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.0.2) - Reason n°1: libraries and interfaces are no longer available inside the upgradeable version since the version v5.0.0. - Reason n°2: It is not installed as a github submodule because it will create conflicts with the imports inside OpenZeppelin which use the Node.js version. @@ -30,7 +30,7 @@ Clone the git repository, with the option `--recurse-submodules` to fetch the su - Node.js version -We recommend to install the [Node Version Manager `nvm`](https://github.com/nvm-sh/nvm) to manage multiple versions of Node.js on your machine. You can then, for example, install the version 16.17.0 of Node.js with the following command: `nvm install 16.17.0` +We recommend to install the [Node Version Manager `nvm`](https://github.com/nvm-sh/nvm) to manage multiple versions of Node.js on your machine. You can then, for example, install the version 20.5.0 of Node.js with the following command: `nvm install 20.5.0` The file [.nvmrc](../.nvmrc) at the root of the project set the Node.js version. `nvm use`will automatically use this version if no version is supplied on the command line. diff --git a/doc/audits/tools/slither-report.md b/doc/audits/tools/slither-report.md new file mode 100644 index 00000000..ffa903c3 --- /dev/null +++ b/doc/audits/tools/slither-report.md @@ -0,0 +1,709 @@ +**THIS CHECKLIST IS NOT COMPLETE**. Use `--show-ignored-findings` to show all the results. +Summary + - [shadowing-state](#shadowing-state) (1 results) (High) + - [reentrancy-no-eth](#reentrancy-no-eth) (1 results) (Medium) + - [uninitialized-local](#uninitialized-local) (1 results) (Medium) + - [missing-zero-check](#missing-zero-check) (2 results) (Low) + - [calls-loop](#calls-loop) (4 results) (Low) + - [reentrancy-benign](#reentrancy-benign) (3 results) (Low) + - [reentrancy-events](#reentrancy-events) (2 results) (Low) + - [timestamp](#timestamp) (6 results) (Low) + - [costly-loop](#costly-loop) (2 results) (Informational) + - [dead-code](#dead-code) (1 results) (Informational) + - [solc-version](#solc-version) (1 results) (Informational) + - [naming-convention](#naming-convention) (57 results) (Informational) +## shadowing-state +Impact: High +Confidence: High + - [ ] ID-0 + [ERC20SnapshotModuleInternal._scheduledSnapshots](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L25) shadows: + - [SnapshotModuleBase._scheduledSnapshots](contracts/modules/internal/base/SnapshotModuleBase.sol#L62) + +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L25 + + +## reentrancy-no-eth +Impact: Medium +Confidence: Medium + - [ ] ID-1 + Reentrancy in [CMTAT_BASE.burnAndMint(address,address,uint256,uint256,string)](contracts/modules/CMTAT_BASE.sol#L189-L192): + External calls: + - [burn(from,amountToBurn,reason)](contracts/modules/CMTAT_BASE.sol#L190) + - [ruleEngine.operateOnTransfer(from,to,amount)](contracts/modules/internal/ValidationModuleInternal.sol#L65) + - [mint(to,amountToMint)](contracts/modules/CMTAT_BASE.sol#L191) + - [ruleEngine.operateOnTransfer(from,to,amount)](contracts/modules/internal/ValidationModuleInternal.sol#L65) + State variables written after the call(s): + - [mint(to,amountToMint)](contracts/modules/CMTAT_BASE.sol#L191) + - [_currentSnapshotIndex = scheduleSnapshotIndex](contracts/modules/internal/base/SnapshotModuleBase.sol#L328) + [SnapshotModuleBase._currentSnapshotIndex](contracts/modules/internal/base/SnapshotModuleBase.sol#L55) can be used in cross function reentrancies: + - [SnapshotModuleBase._findScheduledMostRecentPastSnapshot()](contracts/modules/internal/base/SnapshotModuleBase.sol#L375-L402) + - [SnapshotModuleBase._setCurrentSnapshot()](contracts/modules/internal/base/SnapshotModuleBase.sol#L321-L330) + - [mint(to,amountToMint)](contracts/modules/CMTAT_BASE.sol#L191) + - [_currentSnapshotTime = scheduleSnapshotTime](contracts/modules/internal/base/SnapshotModuleBase.sol#L327) + [SnapshotModuleBase._currentSnapshotTime](contracts/modules/internal/base/SnapshotModuleBase.sol#L53) can be used in cross function reentrancies: + - [SnapshotModuleBase._setCurrentSnapshot()](contracts/modules/internal/base/SnapshotModuleBase.sol#L321-L330) + - [SnapshotModuleBase._updateSnapshot(SnapshotModuleBase.Snapshots,uint256)](contracts/modules/internal/base/SnapshotModuleBase.sol#L305-L314) + - [SnapshotModuleBase.getNextSnapshots()](contracts/modules/internal/base/SnapshotModuleBase.sol#L82-L111) + +contracts/modules/CMTAT_BASE.sol#L189-L192 + +## uninitialized-local + +> The concerned variable local `mostRecent` is initialized in the loop + +Impact: Medium +Confidence: Medium + + - [ ] ID-2 +[SnapshotModuleBase._findScheduledMostRecentPastSnapshot().mostRecent](contracts/modules/internal/base/SnapshotModuleBase.sol#L389) is a local variable never initialized + +contracts/modules/internal/base/SnapshotModuleBase.sol#L389 + +## missing-zero-check + +> Mock: not intended to be used in production + +Impact: Low +Confidence: Medium + + + - [ ] ID-4 + [AuthorizationEngineMock.authorizeAdminChange(address).newAdmin](contracts/mocks/AuthorizationEngineMock.sol#L21) lacks a zero-check on : + - [nextAdmin = newAdmin](contracts/mocks/AuthorizationEngineMock.sol#L22) + +contracts/mocks/AuthorizationEngineMock.sol#L21 + +## calls-loop + +>Mock: not intended to be used in production +>ValidationModuleInternal: the loop happens only for batch function. A relevant alternative could be the creation of a batch function for the RuleEngine, but for the moment we don't have an implemented solution. + +Impact: Low +Confidence: Medium + + - [ ] ID-5 +[RuleEngineMock.messageForTransferRestriction(uint8)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L83-L97) has external calls inside a loop: [_rules[i].canReturnTransferRestrictionCode(_restrictionCode)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L88) + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L83-L97 + + + - [ ] ID-6 +[RuleEngineMock.messageForTransferRestriction(uint8)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L83-L97) has external calls inside a loop: [_rules[i].messageForTransferRestriction(_restrictionCode)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L89-L90) + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L83-L97 + + + - [ ] ID-7 +[ValidationModuleInternal._operateOnTransfer(address,address,uint256)](contracts/modules/internal/ValidationModuleInternal.sol#L64-L66) has external calls inside a loop: [ruleEngine.operateOnTransfer(from,to,amount)](contracts/modules/internal/ValidationModuleInternal.sol#L65) + +contracts/modules/internal/ValidationModuleInternal.sol#L64-L66 + + + - [ ] ID-8 +[RuleEngineMock.detectTransferRestriction(address,address,uint256)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L39-L59) has external calls inside a loop: [restriction = _rules[i].detectTransferRestriction(_from,_to,_amount)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L46-L50) + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L39-L59 + +## reentrancy-benign + +> Factory contract : It is not a security issue since only authorized user can call the function +> CMTAT_BASE._update: the contract called is a trusted contract (RuleEngine) + + + +Impact: Low +Confidence: Medium + - [ ] ID-9 + Reentrancy in [CMTAT_BEACON_FACTORY.deployCMTAT(address,IAuthorizationEngine,string,string,uint8,string,string,IRuleEngine,string,uint256)](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L41-L75): + External calls: + - [cmtat = new BeaconProxy(address(beacon),abi.encodeWithSelector(CMTAT_PROXY(address(0)).initialize.selector,admin,authorizationEngineIrrevocable,nameIrrevocable,symbolIrrevocable,decimalsIrrevocable,tokenId_,terms_,ruleEngine_,information_,flag_))](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L54-L69) + State variables written after the call(s): + - [cmtatCounterId ++](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L72) + - [cmtats[cmtatCounterId] = address(cmtat)](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L70) + - [cmtatsList.push(address(cmtat))](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L73) + +contracts/deployment/CMTAT_BEACON_FACTORY.sol#L41-L75 + + + - [ ] ID-10 + Reentrancy in [CMTAT_TP_FACTORY.deployCMTAT(address,address,IAuthorizationEngine,string,string,uint8,string,string,IRuleEngine,string,uint256)](contracts/deployment/CMTAT_TP_FACTORY.sol#L32-L68): + External calls: + - [cmtat = new TransparentUpgradeableProxy(logic,proxyAdminOwner,abi.encodeWithSelector(CMTAT_PROXY(address(0)).initialize.selector,admin,authorizationEngineIrrevocable,nameIrrevocable,symbolIrrevocable,decimalsIrrevocable,tokenId_,terms_,ruleEngine_,information_,flag_))](contracts/deployment/CMTAT_TP_FACTORY.sol#L46-L62) + State variables written after the call(s): + - [cmtatID ++](contracts/deployment/CMTAT_TP_FACTORY.sol#L65) + - [cmtats[cmtatID] = address(cmtat)](contracts/deployment/CMTAT_TP_FACTORY.sol#L63) + - [cmtatsList.push(address(cmtat))](contracts/deployment/CMTAT_TP_FACTORY.sol#L66) + +contracts/deployment/CMTAT_TP_FACTORY.sol#L32-L68 + + + - [ ] ID-11 + Reentrancy in [CMTAT_BASE._update(address,address,uint256)](contracts/modules/CMTAT_BASE.sol#L198-L213): + External calls: + - [! ValidationModule._operateOnTransfer(from,to,amount)](contracts/modules/CMTAT_BASE.sol#L203) + - [ruleEngine.operateOnTransfer(from,to,amount)](contracts/modules/internal/ValidationModuleInternal.sol#L65) + State variables written after the call(s): + - [ERC20SnapshotModuleInternal._snapshotUpdate(from,to)](contracts/modules/CMTAT_BASE.sol#L211) + - [_currentSnapshotIndex = scheduleSnapshotIndex](contracts/modules/internal/base/SnapshotModuleBase.sol#L328) + - [ERC20SnapshotModuleInternal._snapshotUpdate(from,to)](contracts/modules/CMTAT_BASE.sol#L211) + - [_currentSnapshotTime = scheduleSnapshotTime](contracts/modules/internal/base/SnapshotModuleBase.sol#L327) + +contracts/modules/CMTAT_BASE.sol#L198-L213 + +## reentrancy-events + +> It is not a security issue since only authorized user can call the function + +Impact: Low +Confidence: Medium + - [ ] ID-12 + Reentrancy in [CMTAT_TP_FACTORY.deployCMTAT(address,address,IAuthorizationEngine,string,string,uint8,string,string,IRuleEngine,string,uint256)](contracts/deployment/CMTAT_TP_FACTORY.sol#L32-L68): + External calls: + - [cmtat = new TransparentUpgradeableProxy(logic,proxyAdminOwner,abi.encodeWithSelector(CMTAT_PROXY(address(0)).initialize.selector,admin,authorizationEngineIrrevocable,nameIrrevocable,symbolIrrevocable,decimalsIrrevocable,tokenId_,terms_,ruleEngine_,information_,flag_))](contracts/deployment/CMTAT_TP_FACTORY.sol#L46-L62) + Event emitted after the call(s): + - [CMTAT(address(cmtat),cmtatID)](contracts/deployment/CMTAT_TP_FACTORY.sol#L64) + +contracts/deployment/CMTAT_TP_FACTORY.sol#L32-L68 + + + - [ ] ID-13 + Reentrancy in [CMTAT_BEACON_FACTORY.deployCMTAT(address,IAuthorizationEngine,string,string,uint8,string,string,IRuleEngine,string,uint256)](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L41-L75): + External calls: + - [cmtat = new BeaconProxy(address(beacon),abi.encodeWithSelector(CMTAT_PROXY(address(0)).initialize.selector,admin,authorizationEngineIrrevocable,nameIrrevocable,symbolIrrevocable,decimalsIrrevocable,tokenId_,terms_,ruleEngine_,information_,flag_))](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L54-L69) + Event emitted after the call(s): + - [CMTAT(address(cmtat),cmtatCounterId)](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L71) + +contracts/deployment/CMTAT_BEACON_FACTORY.sol#L41-L75 + +## timestamp + +> With the Proof of Work, it was possible for a miner to modify the timestamp in a range of about 15 seconds +> +> With the Proof Of Stake, a new block is created every 12 seconds +> +> In all cases, we are not looking for such precision + +Impact: Low +Confidence: Medium + - [ ] ID-14 + [SnapshotModuleBase._scheduleSnapshotNotOptimized(uint256)](contracts/modules/internal/base/SnapshotModuleBase.sol#L149-L177) uses timestamp for comparisons + Dangerous comparisons: + - [time <= block.timestamp](contracts/modules/internal/base/SnapshotModuleBase.sol#L150) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L149-L177 + + + - [ ] ID-15 + [SnapshotModuleBase._rescheduleSnapshot(uint256,uint256)](contracts/modules/internal/base/SnapshotModuleBase.sol#L182-L223) uses timestamp for comparisons + Dangerous comparisons: + - [oldTime <= block.timestamp](contracts/modules/internal/base/SnapshotModuleBase.sol#L184) + - [newTime <= block.timestamp](contracts/modules/internal/base/SnapshotModuleBase.sol#L187) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L182-L223 + + + - [ ] ID-16 + [SnapshotModuleBase._unscheduleSnapshotNotOptimized(uint256)](contracts/modules/internal/base/SnapshotModuleBase.sol#L250-L263) uses timestamp for comparisons + Dangerous comparisons: + - [time <= block.timestamp](contracts/modules/internal/base/SnapshotModuleBase.sol#L251) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L250-L263 + + + - [ ] ID-17 + [SnapshotModuleBase._scheduleSnapshot(uint256)](contracts/modules/internal/base/SnapshotModuleBase.sol#L118-L144) uses timestamp for comparisons + Dangerous comparisons: + - [time <= block.timestamp](contracts/modules/internal/base/SnapshotModuleBase.sol#L120) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L118-L144 + + + - [ ] ID-18 + [SnapshotModuleBase._unscheduleLastSnapshot(uint256)](contracts/modules/internal/base/SnapshotModuleBase.sol#L228-L242) uses timestamp for comparisons + Dangerous comparisons: + - [time <= block.timestamp](contracts/modules/internal/base/SnapshotModuleBase.sol#L230) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L228-L242 + + + - [ ] ID-19 + [SnapshotModuleBase._findScheduledMostRecentPastSnapshot()](contracts/modules/internal/base/SnapshotModuleBase.sol#L375-L402) uses timestamp for comparisons + Dangerous comparisons: + - [_scheduledSnapshots[i] <= block.timestamp](contracts/modules/internal/base/SnapshotModuleBase.sol#L393) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L375-L402 + +## costly-loop + +> Inside the function, these two operations are not performed inside a loop. +> +> It seems that the only loops which calls`setCurrentSnapshot`are inside the batch functions(mintBatch, burnBatch, ...) through a call to the function update. +> At the moment, there is no trivial solution to resolve this. + +Impact: Informational +Confidence: Medium + - [ ] ID-20 + [SnapshotModuleBase._setCurrentSnapshot()](contracts/modules/internal/base/SnapshotModuleBase.sol#L321-L330) has costly operations inside a loop: + - [_currentSnapshotTime = scheduleSnapshotTime](contracts/modules/internal/base/SnapshotModuleBase.sol#L327) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L321-L330 + + + - [ ] ID-21 + [SnapshotModuleBase._setCurrentSnapshot()](contracts/modules/internal/base/SnapshotModuleBase.sol#L321-L330) has costly operations inside a loop: + - [_currentSnapshotIndex = scheduleSnapshotIndex](contracts/modules/internal/base/SnapshotModuleBase.sol#L328) + +contracts/modules/internal/base/SnapshotModuleBase.sol#L321-L330 + +## dead-code + +> - Implemented to be gasless compatible (see MetaTxModule) +> +> - If we remove this function, we will have the following error: +> +> "Derived contract must override function "_msgData". Two or more base classes define function with same name and parameter types." + +Impact: Informational +Confidence: Medium + + - [ ] ID-22 +[CMTAT_BASE._msgData()](contracts/modules/CMTAT_BASE.sol#L240-L247) is never used and should be removed + +contracts/modules/CMTAT_BASE.sol#L240-L247 + +## solc-version + +> The version set in the config file is 0.8.22 + +Impact: Informational +Confidence: High + - [ ] ID-23 + Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - VerbatimInvalidDeduplication + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess. + It is used by: + - node_modules/@openzeppelin/contracts/access/AccessControl.sol#4 + - node_modules/@openzeppelin/contracts/access/IAccessControl.sol#4 + - node_modules/@openzeppelin/contracts/access/Ownable.sol#4 + - node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol#4 + - node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol#4 + - node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol#3 + - node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol#4 + - node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol#4 + - node_modules/@openzeppelin/contracts/proxy/Proxy.sol#4 + - node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol#4 + - node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol#4 + - node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol#4 + - node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol#4 + - node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#4 + - node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4 + - node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4 + - node_modules/@openzeppelin/contracts/utils/Address.sol#4 + - node_modules/@openzeppelin/contracts/utils/Arrays.sol#4 + - node_modules/@openzeppelin/contracts/utils/Context.sol#4 + - node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#5 + - node_modules/@openzeppelin/contracts/utils/Strings.sol#4 + - node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol#4 + - node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol#4 + - node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol#4 + - node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#4 + - node_modules/@openzeppelin/contracts/utils/math/Math.sol#4 + - node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#4 + - contracts/CMTAT_PROXY.sol#3 + - contracts/CMTAT_STANDALONE.sol#3 + - contracts/deployment/CMTAT_BEACON_FACTORY.sol#2 + - contracts/deployment/CMTAT_TP_FACTORY.sol#2 + - contracts/interfaces/ICCIPToken.sol#3 + - contracts/interfaces/ICMTATSnapshot.sol#3 + - contracts/interfaces/IDebtGlobal.sol#3 + - contracts/interfaces/draft-IERC1404/draft-IERC1404.sol#3 + - contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol#3 + - contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol#3 + - contracts/interfaces/engine/IAuthorizationEngine.sol#3 + - contracts/interfaces/engine/IRuleEngine.sol#3 + - contracts/libraries/Errors.sol#3 + - contracts/mocks/AuthorizationEngineMock.sol#3 + - contracts/mocks/MinimalForwarderMock.sol#3 + - contracts/mocks/RuleEngine/CodeList.sol#3 + - contracts/mocks/RuleEngine/RuleEngineMock.sol#3 + - contracts/mocks/RuleEngine/RuleMock.sol#3 + - contracts/mocks/RuleEngine/interfaces/IRule.sol#3 + - contracts/mocks/RuleEngine/interfaces/IRuleEngineMock.sol#3 + - contracts/modules/CMTAT_BASE.sol#3 + - contracts/modules/internal/ERC20SnapshotModuleInternal.sol#3 + - contracts/modules/internal/EnforcementModuleInternal.sol#3 + - contracts/modules/internal/ValidationModuleInternal.sol#3 + - contracts/modules/internal/base/SnapshotModuleBase.sol#3 + - contracts/modules/security/AuthorizationModule.sol#3 + - contracts/modules/wrapper/controllers/ValidationModule.sol#3 + - contracts/modules/wrapper/core/BaseModule.sol#3 + - contracts/modules/wrapper/core/ERC20BaseModule.sol#3 + - contracts/modules/wrapper/core/ERC20BurnModule.sol#3 + - contracts/modules/wrapper/core/ERC20MintModule.sol#3 + - contracts/modules/wrapper/core/EnforcementModule.sol#3 + - contracts/modules/wrapper/core/PauseModule.sol#3 + - contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#3 + - contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#3 + - contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#3 + - contracts/modules/wrapper/extensions/MetaTxModule.sol#3 + - contracts/test/proxy/CMTAT_PROXY.sol#3 + - openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/metatx/ERC2771ContextUpgradeable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/metatx/ERC2771ForwarderUpgradeable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#3 + - openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#4 + - openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#4 + +## naming-convention + +> It is not really necessary to rename all the variables. It will generate a lot of work for a minor improvement. + +Impact: Informational +Confidence: High + + - [ ] ID-24 +Enum [IERC1404EnumCode.REJECTED_CODE_BASE](contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol#L9-L14) is not in CapWords + +contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol#L9-L14 + + + - [ ] ID-25 +Variable [CreditEventsModule.__gap](contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L83) is not in mixedCase + +contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L83 + + + - [ ] ID-26 +Parameter [RuleEngineMock.detectTransferRestriction(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleEngineMock.sol#L42) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L42 + + + - [ ] ID-27 +Contract [CMTAT_PROXY](contracts/CMTAT_PROXY.sol#L7-L21) is not in CapWords + +contracts/CMTAT_PROXY.sol#L7-L21 + + + - [ ] ID-28 +Function [PauseModule.__PauseModule_init_unchained()](contracts/modules/wrapper/core/PauseModule.sol#L26-L28) is not in mixedCase + +contracts/modules/wrapper/core/PauseModule.sol#L26-L28 + + + - [ ] ID-29 +Function [CreditEventsModule.__CreditEvents_init_unchained()](contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L28-L30) is not in mixedCase + +contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L28-L30 + + + - [ ] ID-30 +Variable [CMTAT_BASE.__gap](contracts/modules/CMTAT_BASE.sol#L249) is not in mixedCase + +contracts/modules/CMTAT_BASE.sol#L249 + + + - [ ] ID-31 +Function [EnforcementModuleInternal.__Enforcement_init_unchained()](contracts/modules/internal/EnforcementModuleInternal.sol#L40-L42) is not in mixedCase + +contracts/modules/internal/EnforcementModuleInternal.sol#L40-L42 + + + - [ ] ID-32 +Variable [ValidationModuleInternal.__gap](contracts/modules/internal/ValidationModuleInternal.sol#L68) is not in mixedCase + +contracts/modules/internal/ValidationModuleInternal.sol#L68 + + + - [ ] ID-33 +Function [ERC20BurnModule.__ERC20BurnModule_init_unchained()](contracts/modules/wrapper/core/ERC20BurnModule.sol#L19-L21) is not in mixedCase + +contracts/modules/wrapper/core/ERC20BurnModule.sol#L19-L21 + + + - [ ] ID-34 +Function [ValidationModuleInternal.__Validation_init_unchained(IRuleEngine)](contracts/modules/internal/ValidationModuleInternal.sol#L24-L31) is not in mixedCase + +contracts/modules/internal/ValidationModuleInternal.sol#L24-L31 + + + - [ ] ID-35 +Variable [BaseModule.__gap](contracts/modules/wrapper/core/BaseModule.sol#L94) is not in mixedCase + +contracts/modules/wrapper/core/BaseModule.sol#L94 + + + - [ ] ID-36 +Variable [ValidationModule.__gap](contracts/modules/wrapper/controllers/ValidationModule.sol#L136) is not in mixedCase + +contracts/modules/wrapper/controllers/ValidationModule.sol#L136 + + + - [ ] ID-37 +Variable [EnforcementModule.__gap](contracts/modules/wrapper/core/EnforcementModule.sol#L55) is not in mixedCase + +contracts/modules/wrapper/core/EnforcementModule.sol#L55 + + + - [ ] ID-38 +Contract [CMTAT_STANDALONE](contracts/CMTAT_STANDALONE.sol#L7-L53) is not in CapWords + +contracts/CMTAT_STANDALONE.sol#L7-L53 + + + - [ ] ID-39 +Variable [DebtBaseModule.__gap](contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L232) is not in mixedCase + +contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L232 + + + - [ ] ID-40 +Variable [AuthorizationModule.__gap](contracts/modules/security/AuthorizationModule.sol#L85) is not in mixedCase + +contracts/modules/security/AuthorizationModule.sol#L85 + + + - [ ] ID-41 +Parameter [RuleEngineMock.operateOnTransfer(address,address,uint256)._to](contracts/mocks/RuleEngine/RuleEngineMock.sol#L74) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L74 + + + - [ ] ID-42 +Parameter [RuleEngineMock.validateTransfer(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleEngineMock.sol#L64) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L64 + + + - [ ] ID-43 +Parameter [RuleEngineMock.operateOnTransfer(address,address,uint256)._from](contracts/mocks/RuleEngine/RuleEngineMock.sol#L73) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L73 + + + - [ ] ID-44 +Parameter [RuleMock.validateTransfer(address,address,uint256)._to](contracts/mocks/RuleEngine/RuleMock.sol#L14) is not in mixedCase + +contracts/mocks/RuleEngine/RuleMock.sol#L14 + + + - [ ] ID-45 +Parameter [RuleEngineMock.operateOnTransfer(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleEngineMock.sol#L75) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L75 + + + - [ ] ID-46 +Variable [EnforcementModuleInternal.__gap](contracts/modules/internal/EnforcementModuleInternal.sol#L87) is not in mixedCase + +contracts/modules/internal/EnforcementModuleInternal.sol#L87 + + + - [ ] ID-47 +Parameter [RuleMock.canReturnTransferRestrictionCode(uint8)._restrictionCode](contracts/mocks/RuleEngine/RuleMock.sol#L35) is not in mixedCase + +contracts/mocks/RuleEngine/RuleMock.sol#L35 + + + - [ ] ID-48 +Variable [SnapshotModuleBase.__gap](contracts/modules/internal/base/SnapshotModuleBase.sol#L404) is not in mixedCase + +contracts/modules/internal/base/SnapshotModuleBase.sol#L404 + + + - [ ] ID-49 +Parameter [RuleEngineMock.validateTransfer(address,address,uint256)._to](contracts/mocks/RuleEngine/RuleEngineMock.sol#L63) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L63 + + + - [ ] ID-50 +Function [BaseModule.__Base_init_unchained(string,string,string,uint256)](contracts/modules/wrapper/core/BaseModule.sol#L40-L50) is not in mixedCase + +contracts/modules/wrapper/core/BaseModule.sol#L40-L50 + + + - [ ] ID-51 +Function [AuthorizationModule.__AuthorizationModule_init_unchained(address,IAuthorizationEngine)](contracts/modules/security/AuthorizationModule.sol#L22-L33) is not in mixedCase + +contracts/modules/security/AuthorizationModule.sol#L22-L33 + + + - [ ] ID-52 +Parameter [RuleEngineMock.validateTransfer(address,address,uint256)._from](contracts/mocks/RuleEngine/RuleEngineMock.sol#L62) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L62 + + + - [ ] ID-53 +Parameter [RuleMock.validateTransfer(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleMock.sol#L15) is not in mixedCase + +contracts/mocks/RuleEngine/RuleMock.sol#L15 + + + - [ ] ID-54 +Variable [PauseModule.__gap](contracts/modules/wrapper/core/PauseModule.sol#L83) is not in mixedCase + +contracts/modules/wrapper/core/PauseModule.sol#L83 + + + - [ ] ID-55 +Function [CMTAT_BASE.__CMTAT_init_unchained()](contracts/modules/CMTAT_BASE.sol#L148-L150) is not in mixedCase + +contracts/modules/CMTAT_BASE.sol#L148-L150 + + + - [ ] ID-56 +Variable [ERC20SnapshotModule.__gap](contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L77) is not in mixedCase + +contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L77 + + + - [ ] ID-57 +Parameter [RuleMock.detectTransferRestriction(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleMock.sol#L26) is not in mixedCase + +contracts/mocks/RuleEngine/RuleMock.sol#L26 + + + - [ ] ID-58 +Function [ERC20BaseModule.__ERC20BaseModule_init_unchained(uint8)](contracts/modules/wrapper/core/ERC20BaseModule.sol#L28-L32) is not in mixedCase + +contracts/modules/wrapper/core/ERC20BaseModule.sol#L28-L32 + + + - [ ] ID-59 +Parameter [RuleMock.messageForTransferRestriction(uint8)._restrictionCode](contracts/mocks/RuleEngine/RuleMock.sol#L41) is not in mixedCase + +contracts/mocks/RuleEngine/RuleMock.sol#L41 + + + - [ ] ID-60 +Function [CMTAT_BASE.__CMTAT_init(address,IAuthorizationEngine,string,string,uint8,string,string,IRuleEngine,string,uint256)](contracts/modules/CMTAT_BASE.sol#L87-L146) is not in mixedCase + +contracts/modules/CMTAT_BASE.sol#L87-L146 + + + - [ ] ID-61 +Function [ERC20MintModule.__ERC20MintModule_init_unchained()](contracts/modules/wrapper/core/ERC20MintModule.sol#L17-L19) is not in mixedCase + +contracts/modules/wrapper/core/ERC20MintModule.sol#L17-L19 + + + - [ ] ID-62 +Parameter [RuleEngineMock.detectTransferRestriction(address,address,uint256)._to](contracts/mocks/RuleEngine/RuleEngineMock.sol#L41) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L41 + + + - [ ] ID-63 +Variable [MetaTxModule.__gap](contracts/modules/wrapper/extensions/MetaTxModule.sol#L22) is not in mixedCase + +contracts/modules/wrapper/extensions/MetaTxModule.sol#L22 + + + - [ ] ID-64 +Function [SnapshotModuleBase.__SnapshotModuleBase_init_unchained()](contracts/modules/internal/base/SnapshotModuleBase.sol#L64-L67) is not in mixedCase + +contracts/modules/internal/base/SnapshotModuleBase.sol#L64-L67 + + + - [ ] ID-65 +Variable [ERC20BurnModule.__gap](contracts/modules/wrapper/core/ERC20BurnModule.sol#L113) is not in mixedCase + +contracts/modules/wrapper/core/ERC20BurnModule.sol#L113 + + + - [ ] ID-66 +Variable [ERC20BaseModule.__gap](contracts/modules/wrapper/core/ERC20BaseModule.sol#L113) is not in mixedCase + +contracts/modules/wrapper/core/ERC20BaseModule.sol#L113 + + + - [ ] ID-67 +Contract [CMTAT_BEACON_FACTORY](contracts/deployment/CMTAT_BEACON_FACTORY.sol#L15-L93) is not in CapWords + +contracts/deployment/CMTAT_BEACON_FACTORY.sol#L15-L93 + + + - [ ] ID-68 +Contract [CMTAT_BASE](contracts/modules/CMTAT_BASE.sol#L29-L250) is not in CapWords + +contracts/modules/CMTAT_BASE.sol#L29-L250 + + + - [ ] ID-69 +Parameter [RuleEngineMock.messageForTransferRestriction(uint8)._restrictionCode](contracts/mocks/RuleEngine/RuleEngineMock.sol#L84) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L84 + + + - [ ] ID-70 +Variable [ERC20MintModule.__gap](contracts/modules/wrapper/core/ERC20MintModule.sol#L73) is not in mixedCase + +contracts/modules/wrapper/core/ERC20MintModule.sol#L73 + + + - [ ] ID-71 +Function [ValidationModule.__ValidationModule_init_unchained()](contracts/modules/wrapper/controllers/ValidationModule.sol#L26-L28) is not in mixedCase + +contracts/modules/wrapper/controllers/ValidationModule.sol#L26-L28 + + + - [ ] ID-72 +Function [DebtBaseModule.__DebtBaseModule_init_unchained()](contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L60-L62) is not in mixedCase + +contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L60-L62 + + + - [ ] ID-73 +Parameter [RuleEngineMock.detectTransferRestriction(address,address,uint256)._from](contracts/mocks/RuleEngine/RuleEngineMock.sol#L40) is not in mixedCase + +contracts/mocks/RuleEngine/RuleEngineMock.sol#L40 + + + - [ ] ID-74 +Function [ERC20SnapshotModule.__ERC20SnasphotModule_init_unchained()](contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L20-L22) is not in mixedCase + +contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L20-L22 + + + - [ ] ID-75 +Variable [ERC20SnapshotModuleInternal.__gap](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L140) is not in mixedCase + +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L140 + + + - [ ] ID-76 +Function [EnforcementModule.__EnforcementModule_init_unchained()](contracts/modules/wrapper/core/EnforcementModule.sol#L25-L27) is not in mixedCase + +contracts/modules/wrapper/core/EnforcementModule.sol#L25-L27 + + + - [ ] ID-77 +Function [ERC20SnapshotModuleInternal.__ERC20Snapshot_init_unchained()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L27-L30) is not in mixedCase + +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L27-L30 + + + - [ ] ID-78 +Contract [CMTAT_TP_FACTORY](contracts/deployment/CMTAT_TP_FACTORY.sol#L11-L78) is not in CapWords + +contracts/deployment/CMTAT_TP_FACTORY.sol#L11-L78 + + + - [ ] ID-79 +Parameter [RuleMock.validateTransfer(address,address,uint256)._from](contracts/mocks/RuleEngine/RuleMock.sol#L13) is not in mixedCase + +contracts/mocks/RuleEngine/RuleMock.sol#L13 + + + - [ ] ID-80 +Variable [CMTAT_PROXY.__gap](contracts/CMTAT_PROXY.sol#L20) is not in mixedCase + +contracts/CMTAT_PROXY.sol#L20 + diff --git a/doc/general/ARCHITECTURE.md b/doc/general/ARCHITECTURE.md index 6e67a9a3..9dbb66de 100644 --- a/doc/general/ARCHITECTURE.md +++ b/doc/general/ARCHITECTURE.md @@ -14,7 +14,9 @@ These contracts inherit from the same base contract [CMTAT_BASE.sol](../contracts/modules/CMTAT_BASE.sol), which inherits of the different modules. -The main schema describing the architecture can be found here: [architecture.pdf](schema/drawio/architecture.pdf) +The main schema describing the architecture can be found here: [architecture.pdf](../schema/drawio/architecture.pdf) + +Small change with the PDF: the snapshotModule is now included by default. ## Schema diff --git a/doc/general/Engine.md b/doc/general/Engine.md new file mode 100644 index 00000000..2f1ef62f --- /dev/null +++ b/doc/general/Engine.md @@ -0,0 +1,99 @@ +# Engine + +It is possible to add supplementary controls on the CMTAT through two Engines: the `RuleEngine`and the `AuthorizationEngine` + +## RuleEngine + +The **RuleEngine** is an external contract used to apply transfer restriction to the CMTAT. This contract is **optional** and its address can be left to zero. + +This contract acts as a controller and can call different contract rule to apply rule on each transfer. + +A possible rule is a whitelist rule where only the address inside the whitelist can perform a transfer. + +### Example + +In this example, the token holder calls the function `transfer` which triggers a call to the `RuleEngine` and the different rules associated. + +![RuleEngine](../../doc/schema/drawio/RuleEngine.png) + + + + + + + +### Implementation + +A **ruleEngine** contract has to implement the interface `IRuleEngine`, which inherits from the `IERC1404Wrapper`. These two interfaces defines mainly two functions. + +- `operateOnTransfer` + +```solidity +function operateOnTransfer(address _from,address _to, uint256 _amount) +external returns (bool); +``` + +- `validateTransfer` + +```solidity +function validateTransfer(address _from,address _to,uint256 _amount) +external returns (bool); +``` + +**Warning** + +The `RuleEngine` has to restrict the access of the function `operateOnTransfer` to only the `CMTAT contract`. + +### Schema + +![Engine-RuleEngine.drawio](../../doc/schema/drawio/Engine-RuleEngine.drawio.png) + + + + + +## AuthorizationEngine + +The `authorizationEngine` allows the possibility to add supplementary checks on AccessControl with an optional `AuthorizationEngine`, similar to the RuleEngine. +Main advantages : + +- Allow CMTAT user to add their own check on access control, typically the transfer of adminship, e.g. if this operations requires a multi signature or the authorization of guardians. +- Reduce the contract code size because theses supplementary checks are made in an external contract, which is good since the size of a contract is limited. + +- The` AccessControlDefaultAdminRules` introduces in CMTAT 2.3.1, has been removed because it has a large code size and introduces several restriction, good for security but can be too restrictive. With the `AuthorizationEngine`, it is possible to implement theses restrictions. + +### Implementation + +An **AuthorizationEngine** contract has to implement the interface `IAuthorizationEngine`. This interface defines mainly twos functions, one to grant a Role and the other one to revole a role. + +```solidity + /** + * @dev Returns true if the operation is authorized, and false otherwise. + */ + function operateOnGrantRole( + bytes32 role, address account + ) external returns (bool isValid); + + /** + * @dev Returns true if the operation is authorized, and false otherwise. + */ + function operateOnRevokeRole( + bytes32 role, address account + ) external returns (bool isValid); + +``` + +### Schema + + + +![Engine-AuthorizationEngine.drawio](../../doc/schema/drawio/Engine-AuthorizationEngine.drawio.png) + + + +### Warning + +- Once an `autorizationEngine` is set, it is not possible to update the address of the `AuthorizationEngine`. The goal is to protect against a change by the super-admin, e.g. the possibility to remove the `AuthorizationEngine`, to bypass the different restrictions. + +- With a deployment of proxy, the owner of the proxy contract can deactivate these controls by upgrading to a new implementation. To avoid this, the proxy owner should be different of the CMTAT super admin in case you want to use an `AuthorizationEngine`. +- The `AuthorizationEngine` has to restrict the access of the function `operateOnAuthorization` to only the `CMTAT contract`. \ No newline at end of file diff --git a/doc/general/contract-size.png b/doc/general/contract-size.png index f80d96f7..7f1d997a 100644 Binary files a/doc/general/contract-size.png and b/doc/general/contract-size.png differ diff --git a/doc/general/test/test.odt b/doc/general/test/archive/test.odt similarity index 100% rename from doc/general/test/test.odt rename to doc/general/test/archive/test.odt diff --git a/doc/general/test/test.pdf b/doc/general/test/archive/test.pdf similarity index 100% rename from doc/general/test/test.pdf rename to doc/general/test/archive/test.pdf diff --git a/doc/general/test/coverage/contracts/CMTAT_PROXY.sol.html b/doc/general/test/coverage/contracts/CMTAT_PROXY.sol.html index 3a25dea1..1f6a919f 100644 --- a/doc/general/test/coverage/contracts/CMTAT_PROXY.sol.html +++ b/doc/general/test/coverage/contracts/CMTAT_PROXY.sol.html @@ -80,7 +80,7 @@

      - +15×       @@ -112,7 +112,7 @@

diff --git a/doc/general/test/coverage/contracts/CMTAT_STANDALONE.sol.html b/doc/general/test/coverage/contracts/CMTAT_STANDALONE.sol.html index 7a72fda7..9c1ded84 100644 --- a/doc/general/test/coverage/contracts/CMTAT_STANDALONE.sol.html +++ b/doc/general/test/coverage/contracts/CMTAT_STANDALONE.sol.html @@ -95,7 +95,8 @@

50 51 52 -53  +53 +54        @@ -131,7 +132,8 @@

      -141× +  +189×       @@ -158,6 +160,7 @@

* @notice Contract version for standalone deployment * @param forwarderIrrevocable address of the forwarder, required for the gasless support * @param admin address of the admin of contract (Access Control) + * @param authorizationEngineIrrevocable * @param nameIrrevocable name of the token * @param symbolIrrevocable name of the symbol * @param decimalsIrrevocable number of decimals used to get its user representation, should be 0 to be compliant with the CMTAT specifications. @@ -171,13 +174,13 @@

constructor( address forwarderIrrevocable, address admin, - uint48 initialDelay, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, + IRuleEngine ruleEngine_, string memory information_, uint256 flag_ ) MetaTxModule(forwarderIrrevocable) { @@ -185,7 +188,7 @@

// Warning : do not initialize the proxy initialize( admin, - initialDelay, + authorizationEngineIrrevocable, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -205,7 +208,7 @@

diff --git a/doc/general/test/coverage/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html b/doc/general/test/coverage/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html new file mode 100644 index 00000000..92433794 --- /dev/null +++ b/doc/general/test/coverage/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html @@ -0,0 +1,368 @@ + + + + Code coverage report for contracts/deployment/CMTAT_BEACON_FACTORY.sol + + + + + + + +
+
+

+ all files / contracts/deployment/ CMTAT_BEACON_FACTORY.sol +

+
+
+ 100% + Statements + 10/10 +
+
+ 100% + Branches + 8/8 +
+
+ 100% + Functions + 4/4 +
+
+ 100% + Lines + 17/17 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + +  + + +  + + +  + + + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + + + +  +  +  +  +  +  +  + +  +  +  +  +  +  +  + +  + 
//SPDX-License-Identifier: MPL-2.0
+pragma solidity ^0.8.20;
+ 
+import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
+ 
+import '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';
+import "../CMTAT_PROXY.sol";
+import "../modules/CMTAT_BASE.sol";
+import "../libraries/FactoryErrors.sol";
+import '@openzeppelin/contracts/access/AccessControl.sol';
+ 
+/**
+* @notice Factory to deploy beacon proxy
+* 
+*/
+contract CMTAT_BEACON_FACTORY is AccessControl {
+    // Private
+    mapping(uint256 => address) private cmtats;
+    uint256 private cmtatCounterId;
+    // public
+    /// @dev Role to deploy CMTAT
+    bytes32 public constant CMTAT_DEPLOYER_ROLE = keccak256("CMTAT_DEPLOYER_ROLE");
+    UpgradeableBeacon public immutable beacon;
+    address[] public cmtatsList;
+    event CMTAT(address indexed CMTAT, uint256 id);
+ 
+    /**
+    * @param implementation_ contract implementation
+    * @param factoryAdmin admin
+    * @param beaconOwner owner
+    */
+    constructor(address implementation_, address factoryAdmin, address beaconOwner) {
+        if(factoryAdmin == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+        }
+        if(beaconOwner == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner();
+        }
+        if(implementation_ == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+        }
+        beacon = new UpgradeableBeacon(implementation_, beaconOwner);
+        _grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin);
+        _grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin);
+    }
+ 
+    /**
+    * @notice deploy CMTAT with a beacon proxy
+    * 
+    */
+    function deployCMTAT(
+        // CMTAT function initialize
+        address admin,
+        IAuthorizationEngine authorizationEngineIrrevocable,
+        string memory nameIrrevocable,
+        string memory symbolIrrevocable,
+        uint8 decimalsIrrevocable,
+        string memory tokenId_,
+        string memory terms_,
+        IRuleEngine ruleEngine_,
+        string memory information_, 
+        uint256 flag_
+    ) public onlyRole(CMTAT_DEPLOYER_ROLE) returns(BeaconProxy cmtat)   {
+        cmtat = new BeaconProxy(
+            address(beacon),
+            abi.encodeWithSelector(
+                 CMTAT_PROXY(address(0)).initialize.selector,
+                    admin,
+                    authorizationEngineIrrevocable,
+                    nameIrrevocable,
+                    symbolIrrevocable,
+                    decimalsIrrevocable,
+                    tokenId_,
+                    terms_,
+                    ruleEngine_,
+                    information_, 
+                    flag_
+            )
+        );
+        cmtats[cmtatCounterId] = address(cmtat);
+        emit CMTAT(address(cmtat), cmtatCounterId);
+        cmtatCounterId++;
+        cmtatsList.push(address(cmtat));
+        return cmtat;
+    }
+ 
+    /**
+    * @notice get CMTAT proxy address
+    *
+    */
+    function getAddress(uint256 cmtatID_) external view returns (address) {
+        return cmtats[cmtatID_];
+    }
+ 
+    /**
+    * @notice get the implementation address from the beacon
+    * @return implementation address
+    */
+    function implementation() public view returns (address) {
+        return beacon.implementation();
+    }
+}
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/deployment/CMTAT_TP_FACTORY.sol.html b/doc/general/test/coverage/contracts/deployment/CMTAT_TP_FACTORY.sol.html new file mode 100644 index 00000000..d87ce0c4 --- /dev/null +++ b/doc/general/test/coverage/contracts/deployment/CMTAT_TP_FACTORY.sol.html @@ -0,0 +1,320 @@ + + + + Code coverage report for contracts/deployment/CMTAT_TP_FACTORY.sol + + + + + + + +
+
+

+ all files / contracts/deployment/ CMTAT_TP_FACTORY.sol +

+
+
+ 100% + Statements + 8/8 +
+
+ 100% + Branches + 6/6 +
+
+ 100% + Functions + 3/3 +
+
+ 100% + Lines + 14/14 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + +  + + +  + + + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + + + +  +  +  +  +  +  +  + +  + 
//SPDX-License-Identifier: MPL-2.0
+pragma solidity ^0.8.20;
+ 
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "../CMTAT_PROXY.sol";
+import "../libraries/FactoryErrors.sol";
+import '@openzeppelin/contracts/access/AccessControl.sol';
+/**
+* @notice Factory to deploy transparent proxy
+* 
+*/
+contract CMTAT_TP_FACTORY is AccessControl {
+    // Private
+    mapping(uint256 => address) private cmtats;
+    uint256 private cmtatID;
+    event CMTAT(address indexed CMTAT, uint256 id);
+    // Public
+    /// @dev Role to deploy CMTAT
+    bytes32 public constant CMTAT_DEPLOYER_ROLE = keccak256("CMTAT_DEPLOYER_ROLE");
+    address public immutable logic;
+    address[] public cmtatsList;
+ 
+  
+ 
+    /**
+    * @param logic_ contract implementation
+    * @param factoryAdmin admin
+    */
+    constructor(address logic_, address factoryAdmin) {
+        if(logic_ == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+        }
+        if(factoryAdmin == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+        }
+        logic = logic_;
+        _grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin);
+        _grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin);
+    }
+ 
+    function deployCMTAT(
+        address proxyAdminOwner,
+        // CMTAT function initialize
+        address admin,
+        IAuthorizationEngine authorizationEngineIrrevocable,
+        string memory nameIrrevocable,
+        string memory symbolIrrevocable,
+        uint8 decimalsIrrevocable,
+        string memory tokenId_,
+        string memory terms_,
+        IRuleEngine ruleEngine_,
+        string memory information_, 
+        uint256 flag_
+    ) public onlyRole(CMTAT_DEPLOYER_ROLE) returns(TransparentUpgradeableProxy cmtat)   {
+        cmtat = new TransparentUpgradeableProxy(
+            logic,
+            proxyAdminOwner,
+            abi.encodeWithSelector(
+                CMTAT_PROXY(address(0)).initialize.selector,
+                    admin,
+                    authorizationEngineIrrevocable,
+                    nameIrrevocable,
+                    symbolIrrevocable,
+                    decimalsIrrevocable,
+                    tokenId_,
+                    terms_,
+                    ruleEngine_,
+                    information_, 
+                    flag_
+            )
+        );
+        cmtats[cmtatID] = address(cmtat);
+        emit CMTAT(address(cmtat), cmtatID);
+        cmtatID++;
+        cmtatsList.push(address(cmtat));
+        return cmtat;
+    }
+ 
+    /**
+    * @notice get CMTAT proxy address
+    *
+    */
+    function getAddress(uint256 cmtatID_) external view returns (address) {
+        return cmtats[cmtatID_];
+    }
+}
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/deployment/index.html b/doc/general/test/coverage/contracts/deployment/index.html new file mode 100644 index 00000000..946d15e3 --- /dev/null +++ b/doc/general/test/coverage/contracts/deployment/index.html @@ -0,0 +1,106 @@ + + + + Code coverage report for contracts/deployment/ + + + + + + + +
+
+

+ all files contracts/deployment/ +

+
+
+ 100% + Statements + 18/18 +
+
+ 100% + Branches + 14/14 +
+
+ 100% + Functions + 7/7 +
+
+ 100% + Lines + 31/31 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
CMTAT_BEACON_FACTORY.sol
100%10/10100%8/8100%4/4100%17/17
CMTAT_TP_FACTORY.sol
100%8/8100%6/6100%3/3100%14/14
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/index.html b/doc/general/test/coverage/contracts/index.html index edc600ab..65f726b6 100644 --- a/doc/general/test/coverage/contracts/index.html +++ b/doc/general/test/coverage/contracts/index.html @@ -90,7 +90,7 @@

diff --git a/doc/general/test/coverage/contracts/interfaces/ICCIPToken.sol.html b/doc/general/test/coverage/contracts/interfaces/ICCIPToken.sol.html new file mode 100644 index 00000000..e63184e5 --- /dev/null +++ b/doc/general/test/coverage/contracts/interfaces/ICCIPToken.sol.html @@ -0,0 +1,137 @@ + + + + Code coverage report for contracts/interfaces/ICCIPToken.sol + + + + + + + +
+
+

+ all files / contracts/interfaces/ ICCIPToken.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+/**
+* @notice CCIP Pool with mint
+*/
+interface ICCIPMintERC20 {
+  /// @notice Mints new tokens for a given address.
+  /// @param account The address to mint the new tokens to.
+  /// @param value The number of tokens to be minted.
+  /// @dev this function increases the total supply.
+  function mint(address account, uint256 value) external;
+}
+ 
+/**
+* @notice CCIP Pool with burnFrom
+*/
+interface ICCIPBurnFromERC20 {
+  /// @notice Burns tokens from a given address..
+  /// @param account The address to burn tokens from.
+  /// @param value The number of tokens to be burned.
+  /// @dev this function decreases the total supply.
+  function burnFrom(address account, uint256 value) external;
+}
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol.html b/doc/general/test/coverage/contracts/interfaces/ICMTATSnapshot.sol.html similarity index 54% rename from doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol.html rename to doc/general/test/coverage/contracts/interfaces/ICMTATSnapshot.sol.html index 816f0938..7c285dc9 100644 --- a/doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol.html +++ b/doc/general/test/coverage/contracts/interfaces/ICMTATSnapshot.sol.html @@ -1,14 +1,14 @@ - Code coverage report for contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol + Code coverage report for contracts/interfaces/ICMTATSnapshot.sol - - + + @@ -16,13 +16,13 @@

- all files / contracts/test/CMTATSnapshot/ CMTATSnapshotStandaloneTest.sol + all files / contracts/interfaces/ ICMTATSnapshot.sol

100% Statements - 1/1 + 0/0
100% @@ -32,12 +32,12 @@

100% Functions - 1/1 + 0/0
100% Lines - 1/1 + 0/0

@@ -81,28 +81,7 @@

36 37 38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52  -  -  -  -  -  -  -  -  +39        @@ -129,11 +108,6 @@

      -43× -  -  -  -        @@ -149,52 +123,39 @@

  pragma solidity ^0.8.20;   -import "./CMTAT_BASE_SnapshotTest.sol"; -  -contract CMTATSnapshotStandaloneTest is CMTAT_BASE_SnapshotTest { +/** +* @notice interface to represent a CMTAT with snapshot +*/ +interface ICMTATSnapshot { /** - @notice Contract version for standalone deployment - @param forwarderIrrevocable address of the forwarder, required for the gasless support - @param admin address of the admin of contract (Access Control) - @param nameIrrevocable name of the token - @param symbolIrrevocable name of the symbol - @param tokenId name of the tokenId - @param terms terms associated with the token - @param ruleEngine address of the ruleEngine to apply rules to transfers - @param information additional information to describe the token - @param flag add information under the form of bit(0, 1) + * @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. + * @return value stored in the snapshot, or the actual balance if no snapshot + */ + function snapshotBalanceOf(uint256 time,address owner) external view returns (uint256); + /** + * @dev See {OpenZeppelin - ERC20Snapshot} + * Retrieves the total supply at the specified time. + * @return value stored in the snapshot, or the actual totalSupply if no snapshot */ - /// @custom:oz-upgrades-unsafe-allow constructor - constructor( - address forwarderIrrevocable, - address admin, - uint48 initialDelayToAcceptAdminRole, - string memory nameIrrevocable, - string memory symbolIrrevocable, - uint8 decimalsIrrevocable, - string memory tokenId_, - string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, - uint256 flag_ - ) MetaTxModule(forwarderIrrevocable) { - // Initialize the contract to avoid front-running - // Warning : do not initialize the proxy - initialize( - admin, - initialDelayToAcceptAdminRole, - nameIrrevocable, - symbolIrrevocable, - decimalsIrrevocable, - tokenId_, - terms_, - ruleEngine_, - information_, - flag_ - ); - } + function snapshotTotalSupply(uint256 time) external view returns (uint256); + /** + * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls + * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply + */ + function snapshotInfo(uint256 time, address owner) external view returns (uint256 ownerBalance, uint256 totalSupply); + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply + */ + function snapshotInfoBatch(uint256 time, address[] calldata addresses) external view returns (uint256[] memory ownerBalances, uint256 totalSupply); +  + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply + */ + function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) external view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply); +    - // No storage gap because the contract is deployed in standalone mode }   @@ -202,10 +163,10 @@

- + - + diff --git a/doc/general/test/coverage/contracts/interfaces/IDebtGlobal.sol.html b/doc/general/test/coverage/contracts/interfaces/IDebtGlobal.sol.html index 8abc2b94..47fcaefb 100644 --- a/doc/general/test/coverage/contracts/interfaces/IDebtGlobal.sol.html +++ b/doc/general/test/coverage/contracts/interfaces/IDebtGlobal.sol.html @@ -69,7 +69,13 @@

24 25 26 -27  +27 +28 +29 +30  +  +  +        @@ -97,8 +103,11 @@

   
//SPDX-License-Identifier: MPL-2.0
  
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
  
+/**
+* @notice interface to represent debt tokens
+*/
 interface IDebtGlobal {
     struct DebtBase {
         uint256 interestRate;
@@ -127,7 +136,7 @@ 

diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html index 80221645..349aeece 100644 --- a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html +++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html @@ -97,10 +97,10 @@

   
//SPDX-License-Identifier: MPL-2.0
  
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
  
 /*
-@dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
+* @dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
 */
 interface IERC1404 {
     /**
@@ -127,7 +127,7 @@ 

diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html new file mode 100644 index 00000000..e44fda76 --- /dev/null +++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html @@ -0,0 +1,110 @@ + + + + Code coverage report for contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol + + + + + + + +
+
+

+ all files / contracts/interfaces/draft-IERC1404/ draft-IERC1404EnumCode.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+interface IERC1404EnumCode {
+    /* 
+    * @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
+    */
+    enum REJECTED_CODE_BASE {
+        TRANSFER_OK,
+        TRANSFER_REJECTED_PAUSED,
+        TRANSFER_REJECTED_FROM_FROZEN,
+        TRANSFER_REJECTED_TO_FROZEN
+    }
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html index af1a8d3f..86c0dea2 100644 --- a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html +++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html @@ -61,23 +61,7 @@

16 17 18 -19 -20 -21 -22 -23 -24 -25 -26 -27  -  -  -  -  -  -  -  -  +19        @@ -97,20 +81,12 @@

   
//SPDX-License-Identifier: MPL-2.0
  
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
  
 import "./draft-IERC1404.sol";
+import "./draft-IERC1404EnumCode.sol";
  
-interface IERC1404Wrapper is IERC1404 {
-    /* 
-    @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
-    */
-    enum REJECTED_CODE_BASE {
-        TRANSFER_OK,
-        TRANSFER_REJECTED_PAUSED,
-        TRANSFER_REJECTED_FROM_FROZEN,
-        TRANSFER_REJECTED_TO_FROZEN
-    }
+interface IERC1404Wrapper is IERC1404, IERC1404EnumCode  {
  
     /**
      * @dev Returns true if the transfer is valid, and false otherwise.
@@ -127,7 +103,7 @@ 

diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html index 37cf8a99..d1570445 100644 --- a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html +++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html @@ -71,6 +71,19 @@

0/0 + + draft-IERC1404EnumCode.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + + draft-IERC1404Wrapper.sol
@@ -90,7 +103,7 @@

diff --git a/doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol.html b/doc/general/test/coverage/contracts/interfaces/engine/IAuthorizationEngine.sol.html similarity index 72% rename from doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol.html rename to doc/general/test/coverage/contracts/interfaces/engine/IAuthorizationEngine.sol.html index ac916b62..efafbc17 100644 --- a/doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol.html +++ b/doc/general/test/coverage/contracts/interfaces/engine/IAuthorizationEngine.sol.html @@ -1,7 +1,7 @@ - Code coverage report for contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol + Code coverage report for contracts/interfaces/engine/IAuthorizationEngine.sol @@ -16,13 +16,13 @@

- all files / contracts/test/CMTATSnapshot/ CMTATSnapshotProxyTest.sol + all files / contracts/interfaces/engine/ IAuthorizationEngine.sol

100% Statements - 1/1 + 0/0
100% @@ -32,12 +32,12 @@

100% Functions - 1/1 + 0/0
100% Lines - 1/1 + 0/0

@@ -63,8 +63,7 @@

18 19 20 -21 -22  +21        @@ -80,31 +79,29 @@

      -         - 
//SPDX-License-Identifier: MPL-2.0
+ 
// SPDX-License-Identifier: MPL-2.0
  
 pragma solidity ^0.8.20;
  
-import "./CMTAT_BASE_SnapshotTest.sol";
- 
-contract CMTATSnapshotProxyTest is CMTAT_BASE_SnapshotTest {
-    /** 
-    @notice Contract version for the deployment with a proxy
-    @param forwarderIrrevocable address of the forwarder, required for the gasless support
-    */
-    /// @custom:oz-upgrades-unsafe-allow constructor
-    constructor(
-        address forwarderIrrevocable
-    ) MetaTxModule(forwarderIrrevocable) {
-        // Disable the possibility to initialize the implementation
-        _disableInitializers();
-    }
+interface IAuthorizationEngine {
+    /**
+     * @dev Returns true if the operation is authorized, and false otherwise.
+     */
+    function operateOnGrantRole(
+        bytes32 role, address account
+    ) external returns (bool isValid);
  
-    uint256[50] private __gap;
+    /**
+     * @dev Returns true if the operation is authorized, and false otherwise.
+     */
+    function operateOnRevokeRole(
+        bytes32 role, address account
+    ) external returns (bool isValid);
+   
 }
  
@@ -112,7 +109,7 @@

diff --git a/doc/general/test/coverage/contracts/interfaces/engine/IRuleEngine.sol.html b/doc/general/test/coverage/contracts/interfaces/engine/IRuleEngine.sol.html new file mode 100644 index 00000000..1bc8a4d2 --- /dev/null +++ b/doc/general/test/coverage/contracts/interfaces/engine/IRuleEngine.sol.html @@ -0,0 +1,116 @@ + + + + Code coverage report for contracts/interfaces/engine/IRuleEngine.sol + + + + + + + +
+
+

+ all files / contracts/interfaces/engine/ IRuleEngine.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+import "../draft-IERC1404/draft-IERC1404Wrapper.sol";
+ 
+interface IRuleEngine is IERC1404Wrapper {
+    /**
+     * @dev Returns true if the operation is a success, and false otherwise.
+     */
+    function operateOnTransfer(
+        address _from,
+        address _to,
+        uint256 _amount
+    ) external returns (bool isValid);
+   
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/index.html b/doc/general/test/coverage/contracts/interfaces/engine/index.html similarity index 63% rename from doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/index.html rename to doc/general/test/coverage/contracts/interfaces/engine/index.html index e91d5b68..38389bf0 100644 --- a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/index.html +++ b/doc/general/test/coverage/contracts/interfaces/engine/index.html @@ -1,7 +1,7 @@ - Code coverage report for contracts/test/CMTATSnapshot/ + Code coverage report for contracts/interfaces/engine/ @@ -16,28 +16,28 @@

- all files contracts/test/CMTATSnapshot/ + all files contracts/interfaces/engine/

- 90% + 100% Statements - 27/30 + 0/0
- 50% + 100% Branches - 4/8 + 0/0
- 70% + 100% Functions - 7/10 + 0/0
- 87.1% + 100% Lines - 27/31 + 0/0
@@ -59,42 +59,29 @@

- CMTATSnapshotProxyTest.sol + IAuthorizationEngine.sol
100% - 1/1 + 0/0 100% 0/0 100% - 1/1 + 0/0 100% - 1/1 + 0/0 - CMTATSnapshotStandaloneTest.sol + IRuleEngine.sol
100% - 1/1 + 0/0 100% 0/0 100% - 1/1 + 0/0 100% - 1/1 - - - - CMTAT_BASE_SnapshotTest.sol -
- 89.29% - 25/28 - 50% - 4/8 - 62.5% - 5/8 - 86.21% - 25/29 + 0/0 @@ -103,7 +90,7 @@

diff --git a/doc/general/test/coverage/contracts/interfaces/index.html b/doc/general/test/coverage/contracts/interfaces/index.html index 89381d4f..0eabfb3c 100644 --- a/doc/general/test/coverage/contracts/interfaces/index.html +++ b/doc/general/test/coverage/contracts/interfaces/index.html @@ -59,6 +59,32 @@

+ ICCIPToken.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + + + + ICMTATSnapshot.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + + + IDebtGlobal.sol
100% @@ -77,7 +103,7 @@

diff --git a/doc/general/test/coverage/contracts/libraries/Errors.sol.html b/doc/general/test/coverage/contracts/libraries/Errors.sol.html index 02e3926a..e6ba0ed7 100644 --- a/doc/general/test/coverage/contracts/libraries/Errors.sol.html +++ b/doc/general/test/coverage/contracts/libraries/Errors.sol.html @@ -107,7 +107,11 @@

62 63 64 -65  +65 +66 +67  +  +        @@ -231,6 +235,8 @@

  // AuthorizationModule error CMTAT_AuthorizationModule_AddressZeroNotAllowed(); + error CMTAT_AuthorizationModule_InvalidAuthorization(); + error CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet();   // PauseModule error CMTAT_PauseModule_ContractIsDeactivated(); @@ -241,7 +247,7 @@

diff --git a/doc/general/test/coverage/contracts/libraries/FactoryErrors.sol.html b/doc/general/test/coverage/contracts/libraries/FactoryErrors.sol.html new file mode 100644 index 00000000..053c177f --- /dev/null +++ b/doc/general/test/coverage/contracts/libraries/FactoryErrors.sol.html @@ -0,0 +1,92 @@ + + + + Code coverage report for contracts/libraries/FactoryErrors.sol + + + + + + + +
+
+

+ all files / contracts/libraries/ FactoryErrors.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10  +  +  +  +  +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+library FactoryErrors {
+    error CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+    error CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner();
+    error CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/libraries/index.html b/doc/general/test/coverage/contracts/libraries/index.html index cdf54c04..6f5a0847 100644 --- a/doc/general/test/coverage/contracts/libraries/index.html +++ b/doc/general/test/coverage/contracts/libraries/index.html @@ -71,13 +71,26 @@

0/0 + + FactoryErrors.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + +
diff --git a/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html b/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html index 5a403e66..e6372f2e 100644 --- a/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html +++ b/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html @@ -20,9 +20,9 @@

- 96.15% + 96.88% Statements - 25/26 + 31/32
75% @@ -30,14 +30,14 @@

6/8

- 87.5% + 90% Functions - 7/8 + 9/10
- 96.3% + 96.97% Lines - 26/27 + 32/33
@@ -267,7 +267,33 @@

222 223 224 -225  +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251        @@ -335,8 +361,8 @@

      -281×   +387×       @@ -366,49 +392,52 @@

      -281× -281×   -281× +387× +387×   -281× -281× -278× +387×   +387× +387×   -278×   +387×         -278× +387× +387×   +387×     -278× -278× -278×   -278× -278× +387× +384× +384×   -278× -278× +384× +384×   +384× +384×           +384×     -278× -278× -278×   +384× +384× +384×   -278× +  +384×       @@ -453,10 +482,31 @@

      -359× +10× + +  +  +  +  +  +  +  +  +  +  +  +464× 34×   -325× +  +  +  +  +  +430× +430× +  +        @@ -467,6 +517,7 @@

      +1591×       @@ -474,7 +525,8 @@

      -1029× +  +1591×       @@ -506,10 +558,11 @@

import "./wrapper/core/ERC20BaseModule.sol"; import "./wrapper/core/PauseModule.sol"; /* -SnapshotModule: -Add this import in case you add the SnapshotModule -import "./wrapper/optional/SnapshotModule.sol"; +* SnapshotModule: +* Add this import in case you add the SnapshotModule */ +import "./wrapper/extensions/ERC20SnapshotModule.sol"; +  import "./wrapper/controllers/ValidationModule.sol"; import "./wrapper/extensions/MetaTxModule.sol"; import "./wrapper/extensions/DebtModule/DebtBaseModule.sol"; @@ -529,7 +582,7 @@

ValidationModule, MetaTxModule, ERC20BaseModule, - // ERC20SnapshotModule, + ERC20SnapshotModule, DebtBaseModule, CreditEventsModule { @@ -549,19 +602,19 @@

*/ function initialize( address admin, - uint48 initialDelayToAcceptAdminRole, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, + IRuleEngine ruleEngine_, + string memory information_, uint256 flag_ ) public initializer { __CMTAT_init( admin, - initialDelayToAcceptAdminRole, + authorizationEngineIrrevocable, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -578,13 +631,13 @@

*/ function __CMTAT_init( address admin, - uint48 initialDelayToAcceptAdminRole, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, + IRuleEngine ruleEngine_, string memory information_, uint256 flag_ ) internal EonlyInitializing { @@ -596,21 +649,22 @@

__ERC165_init_unchained(); // AuthorizationModule inherits from AccessControlUpgradeable __AccessControl_init_unchained(); - __AccessControlDefaultAdminRules_init_unchained(initialDelayToAcceptAdminRole, admin); __Pausable_init_unchained();   /* Internal Modules */ __Enforcement_init_unchained(); /* SnapshotModule: - Add this call in case you add the SnapshotModule + Add these two calls in case you add the SnapshotModule + */ + __SnapshotModuleBase_init_unchained(); __ERC20Snapshot_init_unchained(); - */ + __Validation_init_unchained(ruleEngine_);   /* Wrapper */ // AuthorizationModule_init_unchained is called firstly due to inheritance - __AuthorizationModule_init_unchained(); + __AuthorizationModule_init_unchained(admin, authorizationEngineIrrevocable); __ERC20BurnModule_init_unchained(); __ERC20MintModule_init_unchained(); // EnforcementModule_init_unchained is called before ValidationModule_init_unchained due to inheritance @@ -623,8 +677,9 @@

/* SnapshotModule: Add this call in case you add the SnapshotModule - __ERC20SnasphotModule_init_unchained(); */ + __ERC20SnasphotModule_init_unchained(); +   /* Other modules */ __DebtBaseModule_init_unchained(); @@ -664,41 +719,64 @@

{ return ERC20BaseModule.transferFrom(sender, recipient, amount); } +  + /** + * @notice burn and mint atomically + * @param from current token holder to burn tokens + * @param to receiver to send the new minted tokens + * @param amountToBurn number of tokens to burn + * @param amountToMint number of tokens to mint + * @dev + * - The access control is managed by the functions burn (ERC20BurnModule) and mint (ERC20MintModule) + * - Input validation is also managed by the functions burn and mint + * - You can mint more tokens than burnt + */ + function burnAndMint(address from, address to, uint256 amountToBurn, uint256 amountToMint, string calldata reason) public { + burn(from, amountToBurn, reason); + mint(to, amountToMint); + }   /** * @dev - * SnapshotModule: - * - override SnapshotModuleInternal if you add the SnapshotModule - * e.g. override(ERC20SnapshotModuleInternal, ERC20Upgradeable) - * - remove the keyword view + * */ function _update( address from, address to, uint256 amount ) internal override(ERC20Upgradeable) { - if (!ValidationModule.validateTransfer(from, to, amount)) { + if (!ValidationModule._operateOnTransfer(from, to, amount)) { revert Errors.CMTAT_InvalidTransfer(from, to, amount); } - ERC20Upgradeable._update(from, to, amount); - // We call the SnapshotModule only if the transfer is valid /* SnapshotModule: - Add this call in case you add the SnapshotModule - ERC20SnapshotModuleInternal._update(from, to, amount); + Add this in case you add the SnapshotModule + We call the SnapshotModule only if the transfer is valid */ + ERC20SnapshotModuleInternal._snapshotUpdate(from, to); + ERC20Upgradeable._update(from, to, amount); }   + /************* MetaTx Module *************/ /** * @dev This surcharge is not necessary if you do not use the MetaTxModule */ function _msgSender() internal view - override(MetaTxModule, ContextUpgradeable) + override(ERC2771ContextUpgradeable, ContextUpgradeable) returns (address sender) { - return MetaTxModule._msgSender(); + return ERC2771ContextUpgradeable._msgSender(); + } +  + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _contextSuffixLength() internal view + override(ERC2771ContextUpgradeable, ContextUpgradeable) + returns (uint256) { + return ERC2771ContextUpgradeable._contextSuffixLength(); }   /** @@ -707,10 +785,10 @@

function _msgData() internal view - override(MetaTxModule, ContextUpgradeable) + override(ERC2771ContextUpgradeable, ContextUpgradeable) returns (bytes calldata) { - return MetaTxModule._msgData(); + return ERC2771ContextUpgradeable._msgData(); }   uint256[50] private __gap; @@ -721,7 +799,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/index.html b/doc/general/test/coverage/contracts/modules/index.html index d539691d..a21c1a14 100644 --- a/doc/general/test/coverage/contracts/modules/index.html +++ b/doc/general/test/coverage/contracts/modules/index.html @@ -20,9 +20,9 @@

- 96.15% + 96.88% Statements - 25/26 + 31/32
75% @@ -30,14 +30,14 @@

6/8

- 87.5% + 90% Functions - 7/8 + 9/10
- 96.3% + 96.97% Lines - 26/27 + 32/33
@@ -60,15 +60,15 @@

CMTAT_BASE.sol -
- 96.15% - 25/26 +
+ 96.88% + 31/32 75% 6/8 - 87.5% - 7/8 - 96.3% - 26/27 + 90% + 9/10 + 96.97% + 32/33 @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html b/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html index 29b17eec..62c41c3d 100644 --- a/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html +++ b/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html @@ -20,24 +20,24 @@

- 95.65% + 100% Statements - 88/92 + 16/16
- 92.31% + 90% Branches - 72/78 + 9/10
- 90% + 100% Functions - 18/20 + 9/9
- 95.24% + 100% Lines - 120/126 + 24/24
@@ -184,654 +184,56 @@

139 140 141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -170× - -  -  -  -  -  -166× +142    -94×     -94× -            -     -162× -162×             -16× -         -12×   -12× -     - -   -     - -10× -10× -10×     -   -             +480× +480×   -38× -   -34× -         -30× -   -26× -26× - -  -18× -14× -14× - -  -  -  -  -  - -  -  -10× - - -  -  -  -  -  - -  - -  -  -  -  -  -  -  -18× - -  -14× - -  -  -10× - -  - - -  -  -  -  -  -  -  -  -  -12× -  -  -12× -12× - -  - -16× -16× -16× -  -  - -  -  -  -  -  -  -  -76× -  -76× -68× -  -  -  -  -68× -48× -  -  -20× -  - -  -  - - -12× -  -  -12× -12× -  -  -  -  -  -28× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -240× -  -  -  -  -240× +160× +160× +480×   +160×       @@ -840,118 +242,18 @@

    80× -  -  -  80× -  -  -  -  -  -  -  -  -  -  -  -66× -66× -  -16× -16× -  -14× -  -  - -  -  -  -50× -50× -  -66× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -320× -  -320× -236× -  -84× -  -  -  -  -  -  -  80×           +80×   -52× -  -  -  -  -  -  -  -  -  -  -  -  -132× -132× -36× -36× -  -  -  -  -  -  -  -  -  -66×       -66× -18× -18×       @@ -959,13 +261,12 @@

      +1200×     -132× -124×   -   +1200×       @@ -974,59 +275,52 @@

      +720×   -50× -50×   -50×   +720×     -30×       -10×       -10×       +430× +430×   +99× +99×   +55×     +44×       +331× +331×     -134×   -134×       -48×   +485×   -86× -86× -86× -116× -52× -52×     -64×   -52× -52×     -86× +375×       @@ -1035,15 +329,11 @@

  pragma solidity ^0.8.20;   -import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ArraysUpgradeable.sol"; -  -import "../../libraries/Errors.sol"; -  +import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol'; +import "./base/SnapshotModuleBase.sol"; /** - * @dev Snapshot module. + * @dev Snapshot module internal. * * Useful to take a snapshot of token holder balance and total supply at a specific time * Inspired by Openzeppelin - ERC20Snapshot but use the time as Id instead of a counter. @@ -1051,269 +341,62 @@

because overriding this function can break the contract. */   -abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { - using ArraysUpgradeable for uint256[]; -  - /** - @notice Emitted when the snapshot with the specified oldTime was scheduled or rescheduled at the specified newTime. - */ - event SnapshotSchedule(uint256 indexed oldTime, uint256 indexed newTime); -  - /** - @notice Emitted when the scheduled snapshot with the specified time was cancelled. - */ - event SnapshotUnschedule(uint256 indexed time); -  - /** - @dev See {OpenZeppelin - ERC20Snapshot} - Snapshotted values have arrays of ids (time) and the value corresponding to that id. - ids is expected to be sorted in ascending order, and to contain no repeated elements - because we use findUpperBound in the function _valueAt - */ - struct Snapshots { - uint256[] ids; - uint256[] values; - } -  - /** - @dev See {OpenZeppelin - ERC20Snapshot} - */ - mapping(address => Snapshots) private _accountBalanceSnapshots; - Snapshots private _totalSupplySnapshots; -  - /** - @dev time instead of a counter for OpenZeppelin - */ - // Initialized to zero - uint256 private _currentSnapshotTime; - // Initialized to zero - uint256 private _currentSnapshotIndex; +abstract contract ERC20SnapshotModuleInternal is SnapshotModuleBase, ERC20Upgradeable { + using Arrays for uint256[];   /** - @dev - list of scheduled snapshot (time) - This list is sorted in ascending order + * @dev + * list of scheduled snapshot (time) + * This list is sorted in ascending order */ uint256[] private _scheduledSnapshots; -  - /** - * @dev Initializes the contract - */ - function __ERC20Snapshot_init( - string memory name_, - string memory symbol_ - ) internal onlyInitializing { - __Context_init_unchained(); - __ERC20_init(name_, symbol_); - __ERC20Snapshot_init_unchained(); - }   function __ERC20Snapshot_init_unchained() internal EonlyInitializing { // Nothing to do // _currentSnapshotTime & _currentSnapshotIndex are initialized to zero } -  - /** - @dev schedule a snapshot at the specified time - You can only add a snapshot after the last previous - */ - function _scheduleSnapshot(uint256 time) internal { - // Check the time firstly to avoid an useless read of storage - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - time, - block.timestamp - ); - } -  - if (_scheduledSnapshots.length > 0) { - // We check the last snapshot on the list - uint256 nextSnapshotTime = _scheduledSnapshots[ - _scheduledSnapshots.length - 1 - ]; - Iif (time < nextSnapshotTime) { - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampBeforeLastSnapshot( - time, - nextSnapshotTime - ); - } else if (time == nextSnapshotTime) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - } - _scheduledSnapshots.push(time); - emit SnapshotSchedule(0, time); - } -  - /** - @dev schedule a snapshot at the specified time - */ - function _scheduleSnapshotNotOptimized(uint256 time) internal { - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - time, - block.timestamp - ); - } - (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); - // Perfect match - if (isFound) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - // if no upper bound match found, we push the snapshot at the end of the list - if (index == _scheduledSnapshots.length) { - _scheduledSnapshots.push(time); - } else { - _scheduledSnapshots.push( - _scheduledSnapshots[_scheduledSnapshots.length - 1] - ); - for (uint256 i = _scheduledSnapshots.length - 2; i > index; ) { - _scheduledSnapshots[i] = _scheduledSnapshots[i - 1]; - unchecked { - --i; - } - } - _scheduledSnapshots[index] = time; - } - emit SnapshotSchedule(0, time); - } -  - /** - @dev reschedule a scheduled snapshot at the specified newTime - */ - function _rescheduleSnapshot(uint256 oldTime, uint256 newTime) internal { - // Check the time firstly to avoid an useless read of storage - if (oldTime <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - if (newTime <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - newTime, - block.timestamp - ); - } - if (_scheduledSnapshots.length == 0) { - revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); - } - (bool foundOld, uint256 index) = _findScheduledSnapshotIndex(oldTime); - if (!foundOld) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); - } - if (index + 1 < _scheduledSnapshots.length) { - uint256 nextSnapshotTime = _scheduledSnapshots[index + 1]; - if (newTime > nextSnapshotTime) { - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampAfterNextSnapshot( - newTime, - nextSnapshotTime - ); - } else if (newTime == nextSnapshotTime) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - } - if (index > 0) { - if (newTime <= _scheduledSnapshots[index - 1]) - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampBeforePreviousSnapshot( - newTime, - _scheduledSnapshots[index - 1] - ); - } - _scheduledSnapshots[index] = newTime; -  - emit SnapshotSchedule(oldTime, newTime); - }   /** - @dev unschedule the last scheduled snapshot + * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls + * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply */ - function _unscheduleLastSnapshot(uint256 time) internal { - // Check the time firstly to avoid an useless read of storage - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - if (_scheduledSnapshots.length == 0) { - revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); - } - // All snapshot time are unique, so we do not check the indice - if (time != _scheduledSnapshots[_scheduledSnapshots.length - 1]) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); - } - _scheduledSnapshots.pop(); - emit SnapshotUnschedule(time); + function snapshotInfo(uint256 time, address owner) public view returns (uint256 ownerBalance, uint256 totalSupply) { + ownerBalance = snapshotBalanceOf(time, owner); + totalSupply = snapshotTotalSupply(time); }   - /** - @dev unschedule (remove) a scheduled snapshot in three steps: - - search the snapshot in the list - - If found, move all next snapshots one position to the left - - Reduce the array size by deleting the last snapshot + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply */ - function _unscheduleSnapshotNotOptimized(uint256 time) internal { - Iif (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); - if (!isFound) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); + function snapshotInfoBatch(uint256 time, address[] calldata addresses) public view returns (uint256[] memory ownerBalances, uint256 totalSupply) { + ownerBalances = new uint256[](addresses.length); + for(uint256 i = 0; i < addresses.length; ++i){ + ownerBalances[i] = snapshotBalanceOf(time, addresses[i]); } - for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ) { - _scheduledSnapshots[i] = _scheduledSnapshots[i + 1]; - unchecked { - ++i; - } - } - _scheduledSnapshots.pop(); + totalSupply = snapshotTotalSupply(time); }   - /** - @dev - Get the next scheduled snapshots + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply */ - function getNextSnapshots() public view returns (uint256[] memory) { - uint256[] memory nextScheduledSnapshot = new uint256[](0); - // no snapshot were planned - if (_scheduledSnapshots.length > 0) { - ( - uint256 timeLowerBound, - uint256 indexLowerBound - ) = _findScheduledMostRecentPastSnapshot(); - // All snapshots are situated in the futur - if ((timeLowerBound == 0) && (_currentSnapshotTime == 0)) { - return _scheduledSnapshots; - } else { - // There are snapshots situated in the futur - if (indexLowerBound + 1 != _scheduledSnapshots.length) { - // All next snapshots are located after the snapshot specified by indexLowerBound - uint256 arraySize = _scheduledSnapshots.length - - indexLowerBound - - 1; - nextScheduledSnapshot = new uint256[](arraySize); - for (uint256 i; i < arraySize; ) { - nextScheduledSnapshot[i] = _scheduledSnapshots[ - indexLowerBound + 1 + i - ]; - unchecked { - ++i; - } - } - } + function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) public view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply) { + ownerBalances = new uint256[][](times.length); + totalSupply = new uint256[](times.length); + for(uint256 iT = 0; iT < times.length; ++iT){ + /*ownerBalances[iT] = new uint256[](addresses.length); + for(uint256 jA = 0; jA < addresses.length; ++jA){ + ownerBalances[iT][jA] = snapshotBalanceOf(times[iT], addresses[jA]); } + totalSupply[iT] = snapshotTotalSupply(times[iT]);*/ + (ownerBalances[iT], totalSupply[iT]) = snapshotInfoBatch(times[iT],addresses); } - return nextScheduledSnapshot; - } -  - /** - @dev - Get all snapshots - */ - function getAllSnapshots() public view returns (uint256[] memory) { - return _scheduledSnapshots; }   /** - @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. - @return value stored in the snapshot, or the actual balance if no snapshot + * @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. + * @return value stored in the snapshot, or the actual balance if no snapshot */ function snapshotBalanceOf( uint256 time, @@ -1328,9 +411,9 @@

}   /** - @dev See {OpenZeppelin - ERC20Snapshot} - Retrieves the total supply at the specified time. - @return value stored in the snapshot, or the actual totalSupply if no snapshot + * @dev See {OpenZeppelin - ERC20Snapshot} + * Retrieves the total supply at the specified time. + * @return value stored in the snapshot, or the actual totalSupply if no snapshot */ function snapshotTotalSupply(uint256 time) public view returns (uint256) { (bool snapshotted, uint256 value) = _valueAt( @@ -1339,16 +422,16 @@

); return snapshotted ? value : totalSupply(); } +    /** - @dev Update balance and/or total supply snapshots before the values are modified. This is implemented - in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations. + * @dev Update balance and/or total supply snapshots before the values are modified. This is implemented + * in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations. */ - function _update( + function _snapshotUpdate( address from, - address to, - uint256 amount - ) internal virtual override { + address to + ) internal virtual { _setCurrentSnapshot(); if (from != address(0)) { // for both burn and transfer @@ -1365,163 +448,21 @@

_updateAccountSnapshot(to); _updateTotalSupplySnapshot(); } - ERC20Upgradeable._update(from, to, amount); }   /** - @dev See {OpenZeppelin - ERC20Snapshot} - @param time where we want a snapshot - @param snapshots the struct where are stored the snapshots - @return snapshotExist true if a snapshot is found, false otherwise - value 0 if no snapshot, balance value if a snapshot exists - */ - function _valueAt( - uint256 time, - Snapshots storage snapshots - ) private view returns (bool snapshotExist, uint256 value) { - // When a valid snapshot is queried, there are three possibilities: - // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never - // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds - // to this id is the current one. - // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the - // requested id, and its value is the one to return. - // c) More snapshots were created after the requested one, and the queried value was later modified. There will be - // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is - // larger than the requested one. - // - // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if - // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does - // exactly this. -  - uint256 index = snapshots.ids.findUpperBound(time); -  - if (index == snapshots.ids.length) { - return (false, 0); - } else { - return (true, snapshots.values[index]); - } - } -  - /** - @dev See {OpenZeppelin - ERC20Snapshot} + * @dev See {OpenZeppelin - ERC20Snapshot} */ function _updateAccountSnapshot(address account) private { _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account)); }   /** - @dev See {OpenZeppelin - ERC20Snapshot} + * @dev See {OpenZeppelin - ERC20Snapshot} */ function _updateTotalSupplySnapshot() private { _updateSnapshot(_totalSupplySnapshots, totalSupply()); } -  - /** - @dev - Inside a struct Snapshots: - - Update the array ids to the current Snapshot time if this one is greater than the snapshot times stored in ids. - - Update the value to the corresponding value. - */ - function _updateSnapshot( - Snapshots storage snapshots, - uint256 currentValue - ) private { - uint256 current = _currentSnapshotTime; - if (_lastSnapshot(snapshots.ids) < current) { - snapshots.ids.push(current); - snapshots.values.push(currentValue); - } - } -  - /** - @dev - Set the currentSnapshotTime by retrieving the most recent snapshot - if a snapshot exists, clear all past scheduled snapshot - */ - function _setCurrentSnapshot() internal { - ( - uint256 scheduleSnapshotTime, - uint256 scheduleSnapshotIndex - ) = _findScheduledMostRecentPastSnapshot(); - if (scheduleSnapshotTime > 0) { - _currentSnapshotTime = scheduleSnapshotTime; - _currentSnapshotIndex = scheduleSnapshotIndex; - } - } -  - /** - @return the last snapshot time inside a snapshot ids array - */ - function _lastSnapshot( - uint256[] storage ids - ) private view returns (uint256) { - if (ids.length == 0) { - return 0; - } else { - return ids[ids.length - 1]; - } - } -  - /** - @dev Find the snapshot index at the specified time - @return (true, index) if the snapshot exists, (false, 0) otherwise - */ - function _findScheduledSnapshotIndex( - uint256 time - ) private view returns (bool, uint256) { - uint256 indexFound = _scheduledSnapshots.findUpperBound(time); - uint256 _scheduledSnapshotsLength = _scheduledSnapshots.length; - // Exact match - if ( - indexFound != _scheduledSnapshotsLength && - _scheduledSnapshots[indexFound] == time - ) { - return (true, indexFound); - } - // Upper bound match - else if (indexFound != _scheduledSnapshotsLength) { - return (false, indexFound); - } - // no match - else { - return (false, _scheduledSnapshotsLength); - } - } -  - /** - @dev find the most recent past snapshot - The complexity of this function is O(N) because we go through the whole list - */ - function _findScheduledMostRecentPastSnapshot() - private - view - returns (uint256 time, uint256 index) - { - uint256 currentArraySize = _scheduledSnapshots.length; - // no snapshot or the current snapshot already points on the last snapshot - if ( - currentArraySize == 0 || - ((_currentSnapshotIndex + 1 == currentArraySize) && (time != 0)) - ) { - return (0, currentArraySize); - } - // mostRecent is initialized in the loop - uint256 mostRecent; - index = currentArraySize; - for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ) { - if (_scheduledSnapshots[i] <= block.timestamp) { - mostRecent = _scheduledSnapshots[i]; - index = i; - } else { - // All snapshot are planned in the futur - break; - } - unchecked { - ++i; - } - } - return (mostRecent, index); - }   uint256[50] private __gap; } @@ -1531,7 +472,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html b/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html index 4349a578..76be6850 100644 --- a/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html +++ b/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html @@ -20,24 +20,24 @@

- 81.82% + 100% Statements - 9/11 + 9/9
- 62.5% + 83.33% Branches - 5/8 + 5/6
- 80% + 100% Functions - 4/5 + 4/4
- 84.62% + 100% Lines - 11/13 + 11/11
@@ -131,15 +131,7 @@

86 87 88 -89 -90 -91 -92 -93 -94 -95 -96 -97  +89        @@ -182,19 +174,11 @@

      -  -          -  -  -  -  -  -  -864× +974×       @@ -273,14 +257,6 @@

);   mapping(address => bool) private _frozen; -  - /** - * @dev Initializes the contract - */ - function __Enforcement_init() internal onlyInitializing { - __Context_init_unchained(); - __Enforcement_init_unchained(); - }   function __Enforcement_init_unchained() internal EonlyInitializing { // no variable to initialize @@ -337,7 +313,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html b/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html index c82120be..10dac068 100644 --- a/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html +++ b/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html @@ -20,28 +20,28 @@

- 71.43% + 100% Statements - 5/7 + 6/6
- 50% + 75% Branches - 3/6 + 3/4
- 80% + 100% Functions - 4/5 + 5/5
- 75% + 100% Lines - 6/8 + 7/7
-
+

-	
-	
-	
-	
-	
+	
+	
+	
-	
-	
-	
+	
+	
+	
+	
+	
-	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
-	
+	
+	
+	
+	
+	
@@ -103,7 +103,7 @@ 

diff --git a/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html b/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html index 85971c2b..81024f87 100644 --- a/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html @@ -20,28 +20,28 @@

- 50% + 100% Statements - 5/10 + 16/16
- 62.5% + 91.67% Branches - 5/8 + 22/24
- 75% + 100% Functions - 3/4 + 5/5
- 50% + 95.45% Lines - 5/10 + 21/22
-
+
1 2 @@ -112,17 +112,7 @@

67 68 69 -70 -71 -72 -73 -74 -75 -76 -77

  -  -  -  +70        @@ -148,38 +138,33 @@

      +387× +16× +16×   -  -            -364× -14× -14×           +12×             -51× -  -  -      +       -       @@ -187,10 +172,11 @@

      +       - +57×       @@ -201,8 +187,7 @@

  import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"; import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; -import "../../interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol"; -  +import "../../interfaces/engine/IRuleEngine.sol"; /** * @dev Validation module. * @@ -215,22 +200,12 @@

/** * @dev Emitted when a rule engine is set. */ - event RuleEngine(IERC1404Wrapper indexed newRuleEngine); + event RuleEngine(IRuleEngine indexed newRuleEngine);   - IERC1404Wrapper public ruleEngine; -  - /** - * @dev Initializes the contract with rule engine. - */ - function __Validation_init( - IERC1404Wrapper ruleEngine_ - ) internal onlyInitializing { - __Context_init_unchained(); - __Validation_init_unchained(ruleEngine_); - } + IRuleEngine public ruleEngine;   function __Validation_init_unchained( - IERC1404Wrapper ruleEngine_ + IRuleEngine ruleEngine_ ) internal EonlyInitializing { if (address(ruleEngine_) != address(0)) { ruleEngine = ruleEngine_; @@ -239,7 +214,7 @@

}   /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _validateTransfer( address from, @@ -250,7 +225,7 @@

}   /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _messageForTransferRestriction( uint8 restrictionCode @@ -259,7 +234,7 @@

}   /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _detectTransferRestriction( address from, @@ -268,6 +243,10 @@

) internal view returns (uint8) { return ruleEngine.detectTransferRestriction(from, to, amount); } +  + function _operateOnTransfer(address from, address to, uint256 amount) virtual internal returns (bool) { + return ruleEngine.operateOnTransfer(from, to, amount); + }   uint256[50] private __gap; } @@ -277,7 +256,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/internal/base/SnapshotModuleBase.sol.html b/doc/general/test/coverage/contracts/modules/internal/base/SnapshotModuleBase.sol.html new file mode 100644 index 00000000..dff594d5 --- /dev/null +++ b/doc/general/test/coverage/contracts/modules/internal/base/SnapshotModuleBase.sol.html @@ -0,0 +1,1280 @@ + + + + Code coverage report for contracts/modules/internal/base/SnapshotModuleBase.sol + + + + + + + +
+
+

+ all files / contracts/modules/internal/base/ SnapshotModuleBase.sol +

+
+
+ 100% + Statements + 74/74 +
+
+ 97.06% + Branches + 66/68 +
+
+ 100% + Functions + 14/14 +
+
+ 100% + Lines + 102/102 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +  +  +  +  +  +  +  +76× +  +76× +68× +  +  +  +  +68× +48× +  +  +20× +  + +  +  + +  + +12× +  +  +  +  +  +  +28× +  +  +  +  +  +  +  +  +  +176× + +  +  +  +  +  +172× +  +98× +  +  +98× + +  +  +  +  +  + +  +  +164× +164× +  +  +  +  +  +  +16× + +  +  +  +  +12× +  +12× + +  +  + + +  + +  +  + +10× +10× +10× +  +  + +  + +  +  +  +  +  +  +  +38× + +  +34× + +  +  +  +  +30× + +  +26× +26× + +  +18× +14× +14× + +  +  +  +  +  + +  +  +10× + + +  +  +  +  +  + +  + +  +  +  +  +  +  +  +18× + +  +14× + +  +  +10× + +  + + +  +  +  +  +  +  +  +  +  +16× + +  +12× +12× + +  +  + +16× +  + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1920× +  +1920× +1484× +  +436× +  +  +  +  +  +  +  +  +  +  +  +  +  +860× +860× +36× +36× +  +  +  +  +  +  +  +  +  +430× +  +  +  +430× +18× +18× +  +  +  +  +  +  +  +  +  +860× +852× +  + +  +  +  +  +  +  +  +  +  +  +50× +50× +  +50× +  +  +  +30× +  +  +  +10× +  +  +  +10× +  +  +  +  +  +  +  +  +  +  +  +  +498× +  +498× +  +  +  +412× +  +  +86× +86× +  +86× +116× +52× +52× +  +  +64× +  +  +86× +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
+import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol';
+ 
+import "../../../libraries/Errors.sol";
+ 
+/**
+ * @dev Base for the Snapshot module
+ *
+ * Useful to take a snapshot of token holder balance and total supply at a specific time
+ * Inspired by Openzeppelin - ERC20Snapshot but use the time as Id instead of a counter.
+ * Contrary to OpenZeppelin, the function _getCurrentSnapshotId is not available 
+   because overriding this function can break the contract.
+ */
+ 
+abstract contract SnapshotModuleBase is Initializable {
+    using Arrays for uint256[];
+ 
+    /**
+    @notice Emitted when the snapshot with the specified oldTime was scheduled or rescheduled at the specified newTime.
+    */
+    event SnapshotSchedule(uint256 indexed oldTime, uint256 indexed newTime);
+ 
+    /** 
+    * @notice Emitted when the scheduled snapshot with the specified time was cancelled.
+    */
+    event SnapshotUnschedule(uint256 indexed time);
+ 
+    /** 
+    * @dev See {OpenZeppelin - ERC20Snapshot}
+    * Snapshotted values have arrays of ids (time) and the value corresponding to that id.
+    * ids is expected to be sorted in ascending order, and to contain no repeated elements 
+    * because we use findUpperBound in the function _valueAt
+    */
+    struct Snapshots {
+        uint256[] ids;
+        uint256[] values;
+    }
+ 
+    /**
+    * @dev See {OpenZeppelin - ERC20Snapshot}
+    */
+    mapping(address => Snapshots) internal _accountBalanceSnapshots;
+    Snapshots internal _totalSupplySnapshots;
+ 
+    /**
+    * @dev time instead of a counter for OpenZeppelin
+    */
+    // Initialized to zero
+    uint256 private _currentSnapshotTime;
+    // Initialized to zero
+    uint256 private _currentSnapshotIndex;
+ 
+    /** 
+    * @dev 
+    * list of scheduled snapshot (time)
+    * This list is sorted in ascending order
+    */
+    uint256[] private _scheduledSnapshots;
+ 
+    function __SnapshotModuleBase_init_unchained() internal EonlyInitializing {
+        // Nothing to do
+        // _currentSnapshotTime & _currentSnapshotIndex are initialized to zero
+    }
+ 
+ 
+    /** 
+    *  
+    * @notice Get all snapshots
+    */
+    function getAllSnapshots() public view returns (uint256[] memory) {
+        return _scheduledSnapshots;
+    }
+ 
+        /** 
+    * @dev 
+    * Get the next scheduled snapshots
+    */
+    function getNextSnapshots() public view returns (uint256[] memory) {
+        uint256[] memory nextScheduledSnapshot = new uint256[](0);
+        // no snapshot were planned
+        if (_scheduledSnapshots.length > 0) {
+            (
+                uint256 timeLowerBound,
+                uint256 indexLowerBound
+            ) = _findScheduledMostRecentPastSnapshot();
+            // All snapshots are situated in the futur
+            if ((timeLowerBound == 0) && (_currentSnapshotTime == 0)) {
+                return _scheduledSnapshots;
+            } else {
+                // There are snapshots situated in the futur
+                if (indexLowerBound + 1 != _scheduledSnapshots.length) {
+                    // All next snapshots are located after the snapshot specified by indexLowerBound
+                    uint256 arraySize = _scheduledSnapshots.length -
+                        indexLowerBound -
+                        1;
+                    nextScheduledSnapshot = new uint256[](arraySize);
+                    // No need of unchecked block since Soliditiy 0.8.22
+                    for (uint256 i; i < arraySize; ++i) {
+                        nextScheduledSnapshot[i] = _scheduledSnapshots[
+                            indexLowerBound + 1 + i
+                        ];
+                    }
+                }
+            }
+        }
+        return nextScheduledSnapshot;
+    }
+ 
+ 
+    /** 
+    * @dev schedule a snapshot at the specified time
+    * You can only add a snapshot after the last previous
+    */
+    function _scheduleSnapshot(uint256 time) internal {
+        // Check the time firstly to avoid an useless read of storage
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast(
+                time,
+                block.timestamp
+            );
+        }
+ 
+        if (_scheduledSnapshots.length > 0) {
+            // We check the last snapshot on the list
+            uint256 nextSnapshotTime = _scheduledSnapshots[
+                _scheduledSnapshots.length - 1
+            ];
+            if (time < nextSnapshotTime) {
+                revert Errors
+                    .CMTAT_SnapshotModule_SnapshotTimestampBeforeLastSnapshot(
+                        time,
+                        nextSnapshotTime
+                    );
+            } else if (time == nextSnapshotTime) {
+                revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists();
+            }
+        }
+        _scheduledSnapshots.push(time);
+        emit SnapshotSchedule(0, time);
+    }
+ 
+    /** 
+    * @dev schedule a snapshot at the specified time
+    */
+    function _scheduleSnapshotNotOptimized(uint256 time) internal {
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast(
+                time,
+                block.timestamp
+            );
+        }
+        (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time);
+        // Perfect match
+        if (isFound) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists();
+        }
+        // if no upper bound match found, we push the snapshot at the end of the list
+        if (index == _scheduledSnapshots.length) {
+            _scheduledSnapshots.push(time);
+        } else {
+            _scheduledSnapshots.push(
+                _scheduledSnapshots[_scheduledSnapshots.length - 1]
+            );
+            for (uint256 i = _scheduledSnapshots.length - 2; i > index; ) {
+                _scheduledSnapshots[i] = _scheduledSnapshots[i - 1];
+                unchecked {
+                    --i;
+                }
+            }
+            _scheduledSnapshots[index] = time;
+        }
+        emit SnapshotSchedule(0, time);
+    }
+ 
+    /** 
+    * @dev reschedule a scheduled snapshot at the specified newTime
+    */
+    function _rescheduleSnapshot(uint256 oldTime, uint256 newTime) internal {
+        // Check the time firstly to avoid an useless read of storage
+        if (oldTime <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone();
+        }
+        if (newTime <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast(
+                newTime,
+                block.timestamp
+            );
+        }
+        if (_scheduledSnapshots.length == 0) {
+            revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled();
+        }
+        (bool foundOld, uint256 index) = _findScheduledSnapshotIndex(oldTime);
+        if (!foundOld) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
+        }
+        if (index + 1 < _scheduledSnapshots.length) {
+            uint256 nextSnapshotTime = _scheduledSnapshots[index + 1];
+            if (newTime > nextSnapshotTime) {
+                revert Errors
+                    .CMTAT_SnapshotModule_SnapshotTimestampAfterNextSnapshot(
+                        newTime,
+                        nextSnapshotTime
+                    );
+            } else if (newTime == nextSnapshotTime) {
+                revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists();
+            }
+        }
+        if (index > 0) {
+            if (newTime <= _scheduledSnapshots[index - 1])
+                revert Errors
+                    .CMTAT_SnapshotModule_SnapshotTimestampBeforePreviousSnapshot(
+                        newTime,
+                        _scheduledSnapshots[index - 1]
+                    );
+        }
+        _scheduledSnapshots[index] = newTime;
+ 
+        emit SnapshotSchedule(oldTime, newTime);
+    }
+ 
+    /**
+    * @dev unschedule the last scheduled snapshot
+    */
+    function _unscheduleLastSnapshot(uint256 time) internal {
+        // Check the time firstly to avoid an useless read of storage
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone();
+        }
+        if (_scheduledSnapshots.length == 0) {
+            revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled();
+        }
+        // All snapshot time are unique, so we do not check the indice
+        if (time != _scheduledSnapshots[_scheduledSnapshots.length - 1]) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
+        }
+        _scheduledSnapshots.pop();
+        emit SnapshotUnschedule(time);
+    }
+ 
+    /** 
+    * @dev unschedule (remove) a scheduled snapshot in three steps:
+    * - search the snapshot in the list
+    * - If found, move all next snapshots one position to the left
+    * - Reduce the array size by deleting the last snapshot
+    */
+    function _unscheduleSnapshotNotOptimized(uint256 time) internal {
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone();
+        }
+        (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time);
+        if (!isFound) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
+        }
+        // No need of unchecked block since Soliditiy 0.8.22
+        for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ++i ) {
+            _scheduledSnapshots[i] = _scheduledSnapshots[i + 1];
+        }
+        _scheduledSnapshots.pop();
+    }
+ 
+    /**
+    * @dev See {OpenZeppelin - ERC20Snapshot}
+    * @param time where we want a snapshot
+    * @param snapshots the struct where are stored the snapshots
+    * @return  snapshotExist true if a snapshot is found, false otherwise
+    * value 0 if no snapshot, balance value if a snapshot exists
+    */
+    function _valueAt(
+        uint256 time,
+        Snapshots storage snapshots
+    ) internal view returns (bool snapshotExist, uint256 value) {
+        // When a valid snapshot is queried, there are three possibilities:
+        //  a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never
+        //  created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds
+        //  to this id is the current one.
+        //  b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the
+        //  requested id, and its value is the one to return.
+        //  c) More snapshots were created after the requested one, and the queried value was later modified. There will be
+        //  no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is
+        //  larger than the requested one.
+        //
+        // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if
+        // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does
+        // exactly this.
+ 
+        uint256 index = snapshots.ids.findUpperBound(time);
+ 
+        if (index == snapshots.ids.length) {
+            return (false, 0);
+        } else {
+            return (true, snapshots.values[index]);
+        }
+    }
+ 
+    /** 
+    * @dev 
+    * Inside a struct Snapshots:
+    * - Update the array ids to the current Snapshot time if this one is greater than the snapshot times stored in ids.
+    * - Update the value to the corresponding value.
+    */
+    function _updateSnapshot(
+        Snapshots storage snapshots,
+        uint256 currentValue
+    ) internal {
+        uint256 current = _currentSnapshotTime;
+        if (_lastSnapshot(snapshots.ids) < current) {
+            snapshots.ids.push(current);
+            snapshots.values.push(currentValue);
+        }
+    }
+ 
+    /** 
+    * @dev
+    * Set the currentSnapshotTime by retrieving the most recent snapshot
+    * if a snapshot exists, clear all past scheduled snapshot
+    */
+    function _setCurrentSnapshot() internal {
+        (
+            uint256 scheduleSnapshotTime,
+            uint256 scheduleSnapshotIndex
+        ) = _findScheduledMostRecentPastSnapshot();
+        if (scheduleSnapshotTime > 0) {
+            _currentSnapshotTime = scheduleSnapshotTime;
+            _currentSnapshotIndex = scheduleSnapshotIndex;
+        }
+    }
+ 
+    /**
+    * @return the last snapshot time inside a snapshot ids array
+    */
+    function _lastSnapshot(
+        uint256[] storage ids
+    ) private view returns (uint256) {
+        if (ids.length == 0) {
+            return 0;
+        } else {
+            return ids[ids.length - 1];
+        }
+    }
+ 
+    /** 
+    * @dev Find the snapshot index at the specified time
+    * @return (true, index) if the snapshot exists, (false, 0) otherwise
+    */
+    function _findScheduledSnapshotIndex(
+        uint256 time
+    ) private view returns (bool, uint256) {
+        uint256 indexFound = _scheduledSnapshots.findUpperBound(time);
+        uint256 _scheduledSnapshotsLength = _scheduledSnapshots.length;
+        // Exact match
+        if (
+            indexFound != _scheduledSnapshotsLength &&
+            _scheduledSnapshots[indexFound] == time
+        ) {
+            return (true, indexFound);
+        }
+        // Upper bound match
+        else if (indexFound != _scheduledSnapshotsLength) {
+            return (false, indexFound);
+        }
+        // no match
+        else {
+            return (false, _scheduledSnapshotsLength);
+        }
+    }
+ 
+    /** 
+    * @dev find the most recent past snapshot
+    * The complexity of this function is O(N) because we go through the whole list
+    */
+    function _findScheduledMostRecentPastSnapshot()
+        private
+        view
+        returns (uint256 time, uint256 index)
+    {
+        uint256 currentArraySize = _scheduledSnapshots.length;
+        // no snapshot or the current snapshot already points on the last snapshot
+        if (
+            currentArraySize == 0 ||
+            ((_currentSnapshotIndex + 1 == currentArraySize) && (time != 0))
+        ) {
+            return (0, currentArraySize);
+        }
+        // mostRecent is initialized in the loop
+        uint256 mostRecent;
+        index = currentArraySize;
+        // No need of unchecked block since Soliditiy 0.8.22
+        for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ++i ) {
+            if (_scheduledSnapshots[i] <= block.timestamp) {
+                mostRecent = _scheduledSnapshots[i];
+                index = i;
+            } else {
+                // All snapshot are planned in the futur
+                break;
+            }
+        }
+        return (mostRecent, index);
+    }
+ 
+    uint256[50] private __gap;
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/modules/internal/base/index.html b/doc/general/test/coverage/contracts/modules/internal/base/index.html new file mode 100644 index 00000000..2d1fa4db --- /dev/null +++ b/doc/general/test/coverage/contracts/modules/internal/base/index.html @@ -0,0 +1,93 @@ + + + + Code coverage report for contracts/modules/internal/base/ + + + + + + + +
+
+

+ all files contracts/modules/internal/base/ +

+
+
+ 100% + Statements + 74/74 +
+
+ 97.06% + Branches + 66/68 +
+
+ 100% + Functions + 14/14 +
+
+ 100% + Lines + 102/102 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
SnapshotModuleBase.sol
100%74/7497.06%66/68100%14/14100%102/102
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/modules/internal/index.html b/doc/general/test/coverage/contracts/modules/internal/index.html index 5a64503d..94760538 100644 --- a/doc/general/test/coverage/contracts/modules/internal/index.html +++ b/doc/general/test/coverage/contracts/modules/internal/index.html @@ -20,24 +20,24 @@

- 92.73% + 100% Statements - 102/110 + 31/31
- 86.96% + 85% Branches - 80/92 + 17/20
- 86.67% + 100% Functions - 26/30 + 18/18
- 93.2% + 100% Lines - 137/147 + 42/42
@@ -60,41 +60,41 @@

ERC20SnapshotModuleInternal.sol
95.65%88/9292.31%72/78
100%16/16 90%18/2095.24%120/1269/10100%9/9100%24/24
EnforcementModuleInternal.sol
81.82%9/1162.5%5/880%4/584.62%11/13
100%9/983.33%5/6100%4/4100%11/11
ValidationModuleInternal.sol
71.43%5/750%3/680%4/5ValidationModuleInternal.sol
100%6/6 75%6/83/4100%5/5100%7/7
@@ -292,7 +307,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/security/index.html b/doc/general/test/coverage/contracts/modules/security/index.html index ce78591b..f33d7151 100644 --- a/doc/general/test/coverage/contracts/modules/security/index.html +++ b/doc/general/test/coverage/contracts/modules/security/index.html @@ -20,28 +20,28 @@

- 50% + 100% Statements - 5/10 + 16/16
- 62.5% + 91.67% Branches - 5/8 + 22/24
- 75% + 100% Functions - 3/4 + 5/5
- 50% + 95.45% Lines - 5/10 + 21/22
-
+
1 2 @@ -124,10 +124,12 @@

79 80 81 -82

  -  -  -  +82 +83 +84 +85 +86 +87        @@ -150,46 +152,53 @@

      +387× +   +384× +384× +              -  -  -  -  -  -  -  -  -              + +   + +       +35× + +   +     +33×       + + +   +     +   -1298× -710×   -588×       @@ -198,10 +207,11 @@

      +1443× +810×   +633×   - -       @@ -209,45 +219,16 @@

  pragma solidity ^0.8.20;   -import "../../../openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; -  +import "../../../openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol"; import "../../libraries/Errors.sol"; +import "../../interfaces/engine/IAuthorizationEngine.sol";   -abstract contract AuthorizationModule is AccessControlDefaultAdminRulesUpgradeable { - // BurnModule - bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); - // CreditEvents - bytes32 public constant DEBT_CREDIT_EVENT_ROLE = - keccak256("DEBT_CREDIT_EVENT_ROLE"); - // DebtModule - bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE"); - // EnforcementModule - bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE"); - // MintModule - bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); - // PauseModule - bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); - // SnapshotModule - bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE"); -  - -  - function __AuthorizationModule_init( - address admin, - uint48 initialDelay - ) internal onlyInitializing { - /* OpenZeppelin */ - __Context_init_unchained(); - // AccessControlUpgradeable inherits from ERC165Upgradeable - __ERC165_init_unchained(); - __AccessControl_init_unchained(); - __AccessControlDefaultAdminRules_init_unchained(initialDelay, admin); -  - /* own function */ - __AuthorizationModule_init_unchained(); - } -  +abstract contract AuthorizationModule is AccessControlUpgradeable { + IAuthorizationEngine private authorizationEngine; + /** + * @dev Emitted when a rule engine is set. + */ + event AuthorizationEngine(IAuthorizationEngine indexed newAuthorizationEngine); /** * @dev * @@ -255,17 +236,62 @@

* - The control of the zero address is done by AccessControlDefaultAdminRules * */ - function __AuthorizationModule_init_unchained( - ) internal view EonlyInitializing { + function __AuthorizationModule_init_unchained(address admin, IAuthorizationEngine authorizationEngine_) + internal EonlyInitializing { + if(admin == address(0)){ + revert Errors.CMTAT_AuthorizationModule_AddressZeroNotAllowed(); + } + _grantRole(DEFAULT_ADMIN_ROLE, admin); + Iif (address(authorizationEngine) != address (0)) { + authorizationEngine = authorizationEngine_; + } + +  }   /* + * @notice set an authorizationEngine if not already set + * @dev once an AuthorizationEngine is set, it is not possible to unset it + */ + function setAuthorizationEngine( + IAuthorizationEngine authorizationEngine_ + ) external onlyRole(DEFAULT_ADMIN_ROLE) { + if (address(authorizationEngine) != address (0)){ + revert Errors.CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet(); + } + authorizationEngine = authorizationEngine_; + emit AuthorizationEngine(authorizationEngine_); + } +  + function grantRole(bytes32 role, address account) public override onlyRole(getRoleAdmin(role)) { + if (address(authorizationEngine) != address (0)) { + bool result = authorizationEngine.operateOnGrantRole(role, account); + if(!result) { + // Operation rejected by the authorizationEngine + revert Errors.CMTAT_AuthorizationModule_InvalidAuthorization(); + } + } + return AccessControlUpgradeable.grantRole(role, account); + } +  + function revokeRole(bytes32 role, address account) public override onlyRole(getRoleAdmin(role)) { + if (address(authorizationEngine) != address (0)) { + bool result = authorizationEngine.operateOnRevokeRole(role, account); + if(!result) { + // Operation rejected by the authorizationEngine + revert Errors.CMTAT_AuthorizationModule_InvalidAuthorization(); + } + } + return AccessControlUpgradeable.revokeRole(role, account); + } +  + /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole( bytes32 role, address account - ) public view virtual override( IAccessControlUpgradeable, AccessControlUpgradeable) returns (bool) { + ) public view virtual override(AccessControlUpgradeable) returns (bool) { // The Default Admin has all roles if (AccessControlUpgradeable.hasRole(DEFAULT_ADMIN_ROLE, account)) { return true; @@ -273,17 +299,6 @@

return AccessControlUpgradeable.hasRole(role, account); }   - /** - @notice - Warning: this function should be called only in case of necessity (e.g private key leak) - Its goal is to transfer the adminship of the contract to a new admin, whithout delay. - The prefer way is to use the workflow of AccessControlDefaultAdminRulesUpgradeable - */ - function transferAdminshipDirectly(address newAdmin) public virtual onlyRole(DEFAULT_ADMIN_ROLE) { - // we revoke first the admin since we can only have one admin - _revokeRole(DEFAULT_ADMIN_ROLE, _msgSender()); - _grantRole(DEFAULT_ADMIN_ROLE, newAdmin); - } uint256[50] private __gap; }  

@@ -59,16 +59,16 @@

- - - - - - - - - - + + + + + + + + + + @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html index c55c5447..3d62462e 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html @@ -22,22 +22,22 @@

100% Statements - 27/27 + 35/35
- 96.88% + 97.37% Branches - 31/32 + 37/38
100% Functions - 5/5 + 7/7
100% Lines - 22/22 + 30/30
@@ -159,7 +159,28 @@

114 115 116 -117

- - - + + + - + - + @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html index e6d43fef..3bc3b0e3 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html @@ -183,10 +183,10 @@

      -364× -364× -364× -364× +384× +384× +384× +384×       @@ -238,16 +238,15 @@

pragma solidity ^0.8.20;   // required OZ imports here -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../../libraries/Errors.sol";   abstract contract BaseModule is AuthorizationModule { - /* - @notice - Get the current version of the smart contract + /** + * @notice + * Get the current version of the smart contract */ - string public constant VERSION = "2.3.1"; + string public constant VERSION = "2.4.0"; /* Events */ event Term(string indexed newTermIndexed, string newTerm); event TokenId(string indexed newTokenIdIndexed, string newTokenId); @@ -261,6 +260,7 @@

string public tokenId; string public terms; string public information; + // additional attribute to store information as an uint256 uint256 public flag;     @@ -285,8 +285,8 @@

}   /* Methods */ - /* - @notice the tokenId will be changed even if the new value is the same as the current one + /** + * @notice the tokenId will be changed even if the new value is the same as the current one */ function setTokenId( string calldata tokenId_ @@ -295,8 +295,8 @@

emit TokenId(tokenId_, tokenId_); }   - /* - @notice The terms will be changed even if the new value is the same as the current one + /** + * @notice The terms will be changed even if the new value is the same as the current one */ function setTerms( string calldata terms_ @@ -305,8 +305,8 @@

emit Term(terms_, terms_); }   - /* - @notice The information will be changed even if the new value is the same as the current one + /** + * @notice The information will be changed even if the new value is the same as the current one */ function setInformation( string calldata information_ @@ -315,8 +315,8 @@

emit Information(information_, information_); }   - /* - @notice The call will be reverted if the new value of flag is the same as the current one + /** + * @notice The call will be reverted if the new value of flag is the same as the current one */ function setFlag(uint256 flag_) public onlyRole(DEFAULT_ADMIN_ROLE) { if (flag == flag_) { @@ -334,7 +334,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html index 1028f2cd..34b30b36 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html @@ -22,12 +22,12 @@

100% Statements - 15/15 + 11/11
- 80% + 75% Branches - 8/10 + 6/8
100% @@ -37,7 +37,7 @@

100% Lines - 21/21 + 17/17

@@ -157,21 +157,7 @@

112 113 114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129

- - - + + + - + - - - + + + - + - + @@ -107,7 +107,7 @@

- + @@ -142,7 +142,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html index 968789b2..75060568 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html @@ -124,7 +124,13 @@

79 80 81 -82

+ + + + + + + + + + + + + @@ -97,6 +110,19 @@

+ + + + + + + + + + + + + @@ -112,80 +138,93 @@

- - - + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - - - + + + + + + + + + + - + + + + + + + - - - + + + - + - + - - - + + + - - - - + + + + @@ -201,19 +240,6 @@

- - - - - - - - - - - - - @@ -233,7 +259,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html b/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html index 3a25dea1..1f6a919f 100644 --- a/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html @@ -80,7 +80,7 @@

      - +15×       @@ -112,7 +112,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html b/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html index 7a72fda7..9c1ded84 100644 --- a/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html @@ -95,7 +95,8 @@

50 51 52 -53

AuthorizationModule.sol
50%5/1062.5%5/875%3/450%5/10AuthorizationModule.sol
100%16/1691.67%22/24100%5/595.45%21/22
  +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138        @@ -195,12 +216,11 @@

      -  -16× +20× -10× -10×   +14× +14×       @@ -211,14 +231,22 @@

      +20× + +        -17×   +  +  +    +  +  +    @@ -235,25 +263,33 @@

      -20× -         +17×   +   +   +   - +         -   - +  +  +  +19× + +  +15× +12×     @@ -263,14 +299,20 @@

      +483× +32× +  +451×   -425× +  +  +464× 28×   -397× -51× +436× +57×   -346× +379×       @@ -279,7 +321,6 @@

  pragma solidity ^0.8.20;   -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../internal/ValidationModuleInternal.sol"; import "../core/PauseModule.sol"; @@ -306,44 +347,20 @@

}   /* - @notice set a RuleEngine - @param ruleEngine_ the call will be reverted if the new value of ruleEngine is the same as the current one + * @notice set a RuleEngine + * @param ruleEngine_ the call will be reverted if the new value of ruleEngine is the same as the current one */ function setRuleEngine( - IERC1404Wrapper ruleEngine_ + IRuleEngine ruleEngine_ ) external onlyRole(DEFAULT_ADMIN_ROLE) { - if (ruleEngine == ruleEngine_) - revert Errors.CMTAT_ValidationModule_SameValue(); + if (ruleEngine == ruleEngine_){ + revert Errors.CMTAT_ValidationModule_SameValue(); + } ruleEngine = ruleEngine_; emit RuleEngine(ruleEngine_); }   - /** - * @dev ERC1404 check if _value token can be transferred from _from to _to - * @param from address The address which you want to send tokens from - * @param to address The address which you want to transfer to - * @param amount uint256 the amount of tokens to be transferred - * @return code of the rejection reason - */ - function detectTransferRestriction( - address from, - address to, - uint256 amount - ) public view override returns (uint8 code) { - if (paused()) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_PAUSED); - } else if (frozen(from)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_FROM_FROZEN); - } else if (frozen(to)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_TO_FROZEN); - } else if (address(ruleEngine) != address(0)) { - return _detectTransferRestriction(from, to, amount); - } else { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - } -  - /** + /** * @dev ERC1404 returns the human readable explaination corresponding to the error code returned by detectTransferRestriction * @param restrictionCode The error code returned by detectTransferRestriction * @return message The human readable explaination corresponding to the error code returned by detectTransferRestriction @@ -374,13 +391,38 @@

return TEXT_UNKNOWN_CODE; } } + + /** + * @dev ERC1404 check if _value token can be transferred from _from to _to + * @param from address The address which you want to send tokens from + * @param to address The address which you want to transfer to + * @param amount uint256 the amount of tokens to be transferred + * @return code of the rejection reason + */ + function detectTransferRestriction( + address from, + address to, + uint256 amount + ) public view override returns (uint8 code) { + if (paused()) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_PAUSED); + } else if (frozen(from)) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_FROM_FROZEN); + } else if (frozen(to)) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_TO_FROZEN); + } else if (address(ruleEngine) != address(0)) { + return _detectTransferRestriction(from, to, amount); + } else { + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + }   function validateTransfer( address from, address to, uint256 amount ) public view override returns (bool) { - if (paused() || frozen(from) || frozen(to)) { + if (!_validateTransferByModule(from, to, amount)) { return false; } if (address(ruleEngine) != address(0)) { @@ -388,6 +430,27 @@

} return true; } +  + function _validateTransferByModule( + address from, + address to, + uint256 /*amount*/ + ) internal view returns (bool) { + if (paused() || frozen(from) || frozen(to)) { + return false; + } + return true; + } +  + function _operateOnTransfer(address from, address to, uint256 amount) override internal returns (bool){ + if (!_validateTransferByModule(from, to, amount)){ + return false; + } + if (address(ruleEngine) != address(0)) { + return ValidationModuleInternal._operateOnTransfer(from, to, amount); + } + return true; + }   uint256[50] private __gap; } @@ -397,7 +460,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html b/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html index f39ec619..a6acad6f 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html @@ -22,22 +22,22 @@

100% Statements - 27/27 + 35/35
- 96.88% + 97.37% Branches - 31/32 + 37/38
100% Functions - 5/5 + 7/7
100% Lines - 22/22 + 30/30
@@ -62,13 +62,13 @@

ValidationModule.sol
100%27/2796.88%31/3235/3597.37%37/38 100%5/57/7 100%22/2230/30
  +115        @@ -201,7 +187,7 @@

      -364× +384×       @@ -243,9 +229,6 @@

    14× -10× -10× -        @@ -279,22 +262,11 @@

      -  -  -  - - - + +   -  -  -  -  -  -  - - +       @@ -304,7 +276,6 @@

pragma solidity ^0.8.20;   // required OZ imports here -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import "../../../libraries/Errors.sol";   @@ -312,6 +283,7 @@

/* Events */ /** * @notice Emitted when the specified `spender` spends the specified `value` tokens owned by the specified `owner` reducing the corresponding allowance. + * @dev The allowance can be also "spend" with the function BurnFrom, but in this case, the emitted event is BurnFrom. */ event Spend(address indexed owner, address indexed spender, uint256 value);   @@ -366,14 +338,11 @@

if (bool(tos.length != values.length)) { revert Errors.CMTAT_ERC20BaseModule_TosValueslengthMismatch(); } -  - for (uint256 i = 0; i < tos.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < tos.length; ++i) { // We call directly the internal function transfer // The reason is that the public function adds only the owner address recovery ERC20Upgradeable._transfer(_msgSender(), tos[i], values[i]); - unchecked { - ++i; - } } // not really useful // Here only to keep the same behaviour as transfer @@ -402,27 +371,16 @@

}   /** - * @notice Allows `spender` to withdraw from your account multiple times, up to the `value` amount - * @dev see {OpenZeppelin ERC20 - approve} - */ - function approve( - address spender, - uint256 value, - uint256 currentAllowance - ) public virtual returns (bool) { - address owner = _msgSender(); - uint256 currentAllowanceFromSmartContract = allowance(owner, spender); - if (currentAllowanceFromSmartContract != currentAllowance) { - revert Errors.CMTAT_ERC20BaseModule_WrongAllowance( - spender, - currentAllowanceFromSmartContract, - currentAllowance - ); + * @param addresses list of address to know their balance + * @return balances ,totalSupply array with balance for each address, totalSupply + * @dev useful for the snapshot rule + */ + function balanceInfo(address[] calldata addresses) public view returns(uint256[] memory balances , uint256 totalSupply) { + balances = new uint256[](addresses.length); + for(uint256 i = 0; i < addresses.length; ++i){ + balances[i] = ERC20Upgradeable.balanceOf(addresses[i]); } - // We call directly the internal function _approve - // The reason is that the public function adds only the owner address recovery - ERC20Upgradeable._approve(owner, spender, value); - return true; + totalSupply = ERC20Upgradeable.totalSupply(); }   uint256[50] private __gap; @@ -433,7 +391,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html index 60b8f856..b01c2741 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html @@ -22,22 +22,22 @@

100% Statements - 7/7 + 14/14
- 90% + 92.86% Branches - 9/10 + 13/14
100% Functions - 3/3 + 4/4
100% Lines - 11/11 + 18/18
@@ -118,7 +118,49 @@

73 74 75 -76

  +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115  +  +  +        @@ -150,8 +192,10 @@

      -12× - +  +18× +14× +        @@ -185,28 +229,66 @@

24× 20× -20× -20×             +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + +  + +  +  + + +  +  + +  + +  + +  +  +  +   

//SPDX-License-Identifier: MPL-2.0
  
 pragma solidity ^0.8.20;
  
 import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
 import "../../security/AuthorizationModule.sol";
- 
-abstract contract ERC20BurnModule is ERC20Upgradeable, AuthorizationModule {
+import "../../../interfaces/ICCIPToken.sol";
+abstract contract ERC20BurnModule is ERC20Upgradeable, ICCIPBurnFromERC20, AuthorizationModule {
+    bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+    bytes32 public constant BURNER_FROM_ROLE = keccak256("BURNER_FROM_ROLE");
     /**
-     * @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason`
-     */
+    * @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason`
+    */
     event Burn(address indexed owner, uint256 value, string reason);
- 
+    /**
+    * @notice Emitted when the specified `spender` burns the specified `value` tokens owned by the specified `owner` reducing the corresponding allowance.
+    */
+    event BurnFrom(address indexed owner, address indexed spender, uint256 value);
     function __ERC20BurnModule_init_unchained() internal EonlyInitializing {
         // no variable to initialize
     }
@@ -220,7 +302,7 @@ 

* Requirements: * - the caller must have the `BURNER_ROLE`. */ - function forceBurn( + function burn( address account, uint256 value, string calldata reason @@ -228,10 +310,11 @@

_burn(account, value); emit Burn(account, value, reason); } +    /** * - * @notice batch version of {forceBurn}. + * @notice batch version of {burn}. * @dev * See {ERC20-_burn} and {OpenZeppelin ERC1155_burnBatch}. * @@ -243,7 +326,7 @@

* - `accounts` and `values` must have the same length * - the caller must have the `BURNER_ROLE`. */ - function forceBurnBatch( + function burnBatch( address[] calldata accounts, uint256[] calldata values, string calldata reason @@ -256,15 +339,49 @@

if (bool(accounts.length != values.length)) { revert Errors.CMTAT_BurnModule_AccountsValueslengthMismatch(); } -  - for (uint256 i = 0; i < accounts.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < accounts.length; ++i ) { _burn(accounts[i], values[i]); emit Burn(accounts[i], values[i], reason); - unchecked { - ++i; - } } } +  + /** + * @notice Destroys `amount` tokens from `account`, deducting from the caller's + * allowance. + * @dev + * Can be used to authorize a bridge (e.g. CCIP) to burn token owned by the bridge + * No string parameter reason to be compatible with Bridge, e.g. CCIP + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ``accounts``'s tokens of at least + * `value`. + */ + function burnFrom(address account, uint256 value) + public + onlyRole(BURNER_FROM_ROLE) + { + // Allowance check + address sender = _msgSender(); + uint256 currentAllowance = allowance(account, sender); + if(currentAllowance < value){ + // ERC-6093 + revert ERC20InsufficientAllowance(sender, currentAllowance, value); + } + // Update allowance + unchecked { + _approve(account, sender, currentAllowance - value); + } + // burn + _burn(account, value); + // We also emit a burn event since its a burn operation + emit Burn(account, value, "burnFrom"); + // Specific event for the operation + emit BurnFrom(account, sender, value); + }   uint256[50] private __gap; } @@ -274,7 +391,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html index 88c90dad..f077c4e3 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html @@ -37,7 +37,7 @@

100% Lines - 11/11 + 9/9
@@ -148,8 +148,11 @@

      -246× -246× +  +  +  +277× +277×       @@ -183,9 +186,6 @@

18× 54× 54× -54× -54× -        @@ -196,10 +196,11 @@

pragma solidity ^0.8.20;   import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; -  -abstract contract ERC20MintModule is ERC20Upgradeable, AuthorizationModule { +import "../../../interfaces/ICCIPToken.sol"; +abstract contract ERC20MintModule is ERC20Upgradeable, ICCIPMintERC20, AuthorizationModule { + // MintModule + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); /** * @notice Emitted when the specified `value` amount of new tokens are created and * allocated to the specified `account`. @@ -212,6 +213,8 @@

  /** * @notice Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0) + * @param account token receiver + * @param value amount of tokens * @dev * See {OpenZeppelin ERC20-_mint}. * Emits a {Mint} event. @@ -253,13 +256,10 @@

if (bool(accounts.length != values.length)) { revert Errors.CMTAT_MintModule_AccountsValueslengthMismatch(); } -  - for (uint256 i = 0; i < accounts.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < accounts.length; ++i ) { _mint(accounts[i], values[i]); emit Mint(accounts[i], values[i]); - unchecked { - ++i; - } } }   @@ -271,7 +271,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html index 66fc14f8..d0f53140 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html @@ -97,7 +97,11 @@

52 53 54 -55

  +55 +56 +57  +  +        @@ -167,11 +171,13 @@

EnforcementModuleInternal, AuthorizationModule { + // EnforcementModule + bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE"); string internal constant TEXT_TRANSFER_REJECTED_FROM_FROZEN = - "The address FROM is frozen"; + "Address FROM is frozen";   string internal constant TEXT_TRANSFER_REJECTED_TO_FROZEN = - "The address TO is frozen"; + "Address TO is frozen";   function __EnforcementModule_init_unchained() internal EonlyInitializing { // no variable to initialize @@ -211,7 +217,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html index f80dbf69..5d2f5fd8 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html @@ -126,7 +126,9 @@

81 82 83 -84

  +84 +85  +        @@ -214,7 +216,6 @@

pragma solidity ^0.8.20;   import "../../../../openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol";   /** @@ -228,6 +229,8 @@

* event of a large bug. */ abstract contract PauseModule is PausableUpgradeable, AuthorizationModule { + // PauseModule + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); string internal constant TEXT_TRANSFER_REJECTED_PAUSED = "All transfers paused"; bool private isDeactivated; @@ -298,7 +301,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/index.html b/doc/general/test/coverage/contracts/modules/wrapper/core/index.html index 3c118ee8..a7da88fb 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/core/index.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/core/index.html @@ -22,22 +22,22 @@

100% Statements - 42/42 + 45/45
- 87.93% + 88.33% Branches - 51/58 + 53/60
100% Functions - 24/24 + 25/25
100% Lines - 67/67 + 68/68
@@ -75,26 +75,26 @@

ERC20BaseModule.sol
100%15/1580%8/1011/1175%6/8 100% 5/5 100%21/2117/17
ERC20BurnModule.sol
100%7/790%9/1014/1492.86%13/14 100%3/34/4 100%11/1118/18
100% 3/3 100%11/119/9
  +82 +83 +84 +85  +  +  +        @@ -222,6 +228,9 @@

ContextUpgradeable, AuthorizationModule { + // CreditEvents + bytes32 public constant DEBT_CREDIT_EVENT_ROLE = + keccak256("DEBT_CREDIT_EVENT_ROLE"); CreditEvents public creditEvents;   /* Events */ @@ -292,7 +301,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html index 77084e43..322d1741 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html @@ -274,7 +274,11 @@

229 230 231 -232

  +232 +233 +234  +  +        @@ -522,6 +526,8 @@

ContextUpgradeable, AuthorizationModule { + // DebtModule + bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE"); DebtBase public debt;   /* Events */ @@ -566,9 +572,9 @@

// no variable to initialize }   - /* - @notice Set all attributes of debt - The values of all attributes will be changed even if the new values are the same as the current ones + /** + * @notice Set all attributes of debt + * The values of all attributes will be changed even if the new values are the same as the current ones */ function setDebt(DebtBase calldata debt_) public onlyRole(DEBT_ROLE) { debt = debt_; @@ -603,8 +609,8 @@

emit CouponFrequency(debt_.couponFrequency, debt_.couponFrequency); }   - /* - @notice The call will be reverted if the new value of interestRate is the same as the current one + /** + * @notice The call will be reverted if the new value of interestRate is the same as the current one */ function setInterestRate(uint256 interestRate_) public onlyRole(DEBT_ROLE) { if (interestRate_ == debt.interestRate) { @@ -614,8 +620,8 @@

emit InterestRate(interestRate_); }   - /* - @notice The call will be reverted if the new value of parValue is the same as the current one + /** + * @notice The call will be reverted if the new value of parValue is the same as the current one */ function setParValue(uint256 parValue_) public onlyRole(DEBT_ROLE) { if (parValue_ == debt.parValue) { @@ -625,8 +631,8 @@

emit ParValue(parValue_); }   - /* - @notice The Guarantor will be changed even if the new value is the same as the current one + /** + * @notice The Guarantor will be changed even if the new value is the same as the current one */ function setGuarantor( string calldata guarantor_ @@ -635,8 +641,8 @@

emit Guarantor(guarantor_, guarantor_); }   - /* - @notice The bonHolder will be changed even if the new value is the same as the current one + /** + * @notice The bonHolder will be changed even if the new value is the same as the current one */ function setBondHolder( string calldata bondHolder_ @@ -645,8 +651,8 @@

emit BondHolder(bondHolder_, bondHolder_); }   - /* - @notice The maturityDate will be changed even if the new value is the same as the current one + /** + * @notice The maturityDate will be changed even if the new value is the same as the current one */ function setMaturityDate( string calldata maturityDate_ @@ -655,8 +661,8 @@

emit MaturityDate(maturityDate_, maturityDate_); }   - /* - @notice The interestScheduleFormat will be changed even if the new value is the same as the current one + /** + * @notice The interestScheduleFormat will be changed even if the new value is the same as the current one */ function setInterestScheduleFormat( string calldata interestScheduleFormat_ @@ -668,8 +674,8 @@

); }   - /* - @notice The interestPaymentDate will be changed even if the new value is the same as the current one + /** + * @notice The interestPaymentDate will be changed even if the new value is the same as the current one */ function setInterestPaymentDate( string calldata interestPaymentDate_ @@ -678,8 +684,8 @@

emit InterestPaymentDate(interestPaymentDate_, interestPaymentDate_); }   - /* - @notice The dayCountConvention will be changed even if the new value is the same as the current one + /** + * @notice The dayCountConvention will be changed even if the new value is the same as the current one */ function setDayCountConvention( string calldata dayCountConvention_ @@ -688,8 +694,8 @@

emit DayCountConvention(dayCountConvention_, dayCountConvention_); }   - /* - @notice The businessDayConvention will be changed even if the new value is the same as the current one + /** + * @notice The businessDayConvention will be changed even if the new value is the same as the current one */ function setBusinessDayConvention( string calldata businessDayConvention_ @@ -701,8 +707,8 @@

); }   - /* - @notice The publicHolidayCalendar will be changed even if the new value is the same as the current one + /** + * @notice The publicHolidayCalendar will be changed even if the new value is the same as the current one */ function setPublicHolidaysCalendar( string calldata publicHolidaysCalendar_ @@ -714,8 +720,8 @@

); }   - /* - @notice The issuanceDate will be changed even if the new value is the same as the current one + /** + * @notice The issuanceDate will be changed even if the new value is the same as the current one */ function setIssuanceDate( string calldata issuanceDate_ @@ -724,8 +730,8 @@

emit IssuanceDate(issuanceDate_, issuanceDate_); }   - /* - @notice The couponFrequency will be changed even if the new value is the same as the current one + /** + * @notice The couponFrequency will be changed even if the new value is the same as the current one */ function setCouponFrequency( string calldata couponFrequency_ @@ -742,7 +748,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html index 8b114961..b75db962 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html @@ -90,7 +90,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html index d73d7d2f..fe06161a 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html @@ -120,7 +120,8 @@

75 76 77 -78

  +78 +79        @@ -148,7 +149,8 @@

      -170× +  +176×       @@ -192,7 +194,7 @@

      -12× +16×       @@ -201,7 +203,6 @@

  pragma solidity ^0.8.20;   -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../internal/ERC20SnapshotModuleInternal.sol";   @@ -215,6 +216,8 @@

ERC20SnapshotModuleInternal, AuthorizationModule { + // SnapshotModule + bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE"); function __ERC20SnasphotModule_init_unchained() internal EonlyInitializing { // no variable to initialize } @@ -280,7 +283,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html index 082448fc..0d146d71 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html @@ -20,9 +20,9 @@

- 50% + 100% Statements - 1/2 + 0/0
100% @@ -30,18 +30,18 @@

0/0

- 66.67% + 100% Functions - 2/3 + 1/1
- 50% + 100% Lines - 1/2 + 0/0
-
+

-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
-	
-	
-	
-	
@@ -90,7 +90,7 @@ 

diff --git a/doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol.html b/doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol.html deleted file mode 100644 index dff5edb2..00000000 --- a/doc/general/test/coverage/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol.html +++ /dev/null @@ -1,716 +0,0 @@ - - - - Code coverage report for contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol - - - - - - - -
-
-

- all files / contracts/test/CMTATSnapshot/ CMTAT_BASE_SnapshotTest.sol -

-
-
- 89.29% - Statements - 25/28 -
-
- 50% - Branches - 4/8 -
-
- 62.5% - Functions - 5/8 -
-
- 86.21% - Lines - 25/29 -
-
-
-
-

1 2 @@ -66,37 +66,7 @@

21 22 23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45

  -  -  -  -  -  -  -  -  -  +24        @@ -116,18 +86,6 @@

      -1455× -  -  -  -  -  -  -  -  -  -  -        @@ -136,7 +94,6 @@

pragma solidity ^0.8.20;   import "../../../../openzeppelin-contracts-upgradeable/contracts/metatx/ERC2771ContextUpgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";   /** * @dev Meta transaction (gasless) module. @@ -152,26 +109,6 @@

) ERC2771ContextUpgradeable(trustedForwarder) { // Nothing to do } -  - function _msgSender() - internal - view - virtual - override - returns (address sender) - { - return ERC2771ContextUpgradeable._msgSender(); - } -  - function _msgData() - internal - view - virtual - override - returns (bytes calldata) - { - return ERC2771ContextUpgradeable._msgData(); - }   uint256[50] private __gap; } @@ -181,7 +118,7 @@

diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html index 99005e95..9b3e8d2d 100644 --- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html +++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html @@ -20,9 +20,9 @@

- 85.71% + 100% Statements - 6/7 + 5/5
91.67% @@ -30,14 +30,14 @@

11/12

- 88.89% + 100% Functions - 8/9 + 7/7
- 85.71% + 100% Lines - 6/7 + 5/5
@@ -72,16 +72,16 @@

MetaTxModule.sol
50%1/2MetaTxModule.sol
100%0/0100%0/0100%1/1 100% 0/066.67%2/350%1/2
- -
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -86× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -86× -86× -  -86× -  -86× -86× -  -  -86× -  -  -  -  -86× -  -86× -  -  -  -86× -86× -86× -86× -  -86× -86× -  -86× -86× -  -  -  -  -  -86× -  -  -86× -86× -86× -  -  -86× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -66× -  -  -  -  -  -  -  -  -66× -  -  -  -  -  -  -  -  -  -  -  -426× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
//SPDX-License-Identifier: MPL-2.0
- 
-pragma solidity ^0.8.20;
- 
-// required OZ imports here
-import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
-import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol";
- 
-import "../../modules/wrapper/core/BaseModule.sol";
-import "../../modules/wrapper/core/ERC20BurnModule.sol";
-import "../../modules/wrapper/core/ERC20MintModule.sol";
-import "../../modules/wrapper/core/EnforcementModule.sol";
-import "../../modules/wrapper/core/ERC20BaseModule.sol";
-import "../../modules/wrapper/core/PauseModule.sol";
-/*
-SnapshotModule:
-Add this import in case you add the SnapshotModule
-*/
-import "../../modules/wrapper/controllers/ValidationModule.sol";
-import "../../modules/wrapper/extensions/ERC20SnapshotModule.sol";
-import "../../modules/wrapper/extensions/MetaTxModule.sol";
-import "../../modules/wrapper/extensions/DebtModule/DebtBaseModule.sol";
-import "../../modules/wrapper/extensions/DebtModule/CreditEventsModule.sol";
-import "../../modules/security/AuthorizationModule.sol";
- 
-import "../../libraries/Errors.sol";
- 
-abstract contract CMTAT_BASE_SnapshotTest is
-    Initializable,
-    ContextUpgradeable,
-    BaseModule,
-    PauseModule,
-    ERC20MintModule,
-    ERC20BurnModule,
-    EnforcementModule,
-    ValidationModule,
-    MetaTxModule,
-    ERC20BaseModule,
-    ERC20SnapshotModule,
-    DebtBaseModule,
-    CreditEventsModule
-{
-    /**
-    @notice 
-    initialize the proxy contract
-    The calls to this function will revert if the contract was deployed without a proxy
-    */
-    function initialize(
-        address admin,
-        uint48 initialDelayToAcceptAdminRole, 
-        string memory nameIrrevocable,
-        string memory symbolIrrevocable,
-        uint8 decimalsIrrevocable,
-        string memory tokenId_,
-        string memory terms_,
-        IERC1404Wrapper ruleEngine_,
-        string memory information_,
-        uint256 flag_
-    ) public Einitializer {
-        __CMTAT_init(
-            admin,
-            initialDelayToAcceptAdminRole,
-            nameIrrevocable,
-            symbolIrrevocable,
-            decimalsIrrevocable,
-            tokenId_,
-            terms_,
-            ruleEngine_,
-            information_,
-            flag_
-        );
-    }
- 
-    /**
-    @dev calls the different initialize functions from the different modules
-    */
-    function __CMTAT_init(
-        address admin,
-        uint48 initialDelayToAcceptAdminRole, 
-        string memory nameIrrevocable,
-        string memory symbolIrrevocable,
-        uint8 decimalsIrrevocable,
-        string memory tokenId_,
-        string memory terms_,
-        IERC1404Wrapper ruleEngine_,
-        string memory information_,
-        uint256 flag_
-    ) internal EonlyInitializing {
-        /* OpenZeppelin library */
-        // OZ init_unchained functions are called firstly due to inheritance
-        __Context_init_unchained();
-        __ERC20_init_unchained(nameIrrevocable, symbolIrrevocable);
-        // AccessControlUpgradeable inherits from ERC165Upgradeable
-        __ERC165_init_unchained();
-        // AuthorizationModule inherits from AccessControlUpgradeable
-        __AccessControl_init_unchained();
-        __Pausable_init_unchained();
- 
-        /* Internal Modules */
-        __Enforcement_init_unchained();
-        /*
-        SnapshotModule:
-        Add this call in case you add the SnapshotModule
-        */
-        __ERC20Snapshot_init_unchained();
-        
-        __Validation_init_unchained(ruleEngine_);
- 
-        /* Wrapper */
-        // AuthorizationModule_init_unchained is called firstly due to inheritance
-        __AuthorizationModule_init_unchained();
-        __AccessControlDefaultAdminRules_init_unchained(initialDelayToAcceptAdminRole, admin);
-        __ERC20BurnModule_init_unchained();
-        __ERC20MintModule_init_unchained();
-        // EnforcementModule_init_unchained is called before ValidationModule_init_unchained due to inheritance
-        __EnforcementModule_init_unchained();
-        __ERC20BaseModule_init_unchained(decimalsIrrevocable);
-        // PauseModule_init_unchained is called before ValidationModule_init_unchained due to inheritance
-        __PauseModule_init_unchained();
-        __ValidationModule_init_unchained();
- 
-        /*
-        SnapshotModule:
-        Add this call in case you add the SnapshotModule
-        */
-        __ERC20SnasphotModule_init_unchained();
- 
-        /* Other modules */
-        __DebtBaseModule_init_unchained();
-        __CreditEvents_init_unchained();
-        __Base_init_unchained(tokenId_, terms_, information_, flag_);
- 
-        /* own function */
-        __CMTAT_init_unchained();
-    }
- 
-    function __CMTAT_init_unchained() internal EonlyInitializing {
-        // no variable to initialize
-    }
- 
-    /**
-    @notice Returns the number of decimals used to get its user representation.
-    */
-    function decimals()
-        public
-        view
-        virtual
-        override(ERC20Upgradeable, ERC20BaseModule)
-        returns (uint8)
-    {
-        return ERC20BaseModule.decimals();
-    }
- 
-    function transferFrom(
-        address sender,
-        address recipient,
-        uint256 amount
-    )
-        public
-        virtual
-        override(ERC20Upgradeable, ERC20BaseModule)
-        returns (bool)
-    {
-        return ERC20BaseModule.transferFrom(sender, recipient, amount);
-    }
- 
-    /*
-    @dev 
-    SnapshotModule:
-    - override SnapshotModuleInternal if you add the SnapshotModule
-    e.g. override(SnapshotModuleInternal, ERC20Upgradeable)
-    - remove the keyword view
-    */
-    function _update(
-        address from,
-        address to,
-        uint256 amount
-    ) internal override(ERC20SnapshotModuleInternal, ERC20Upgradeable) {
-        // We call the SnapshotModule only if the transfer is valid
-        Iif (!ValidationModule.validateTransfer(from, to, amount))
-            revert Errors.CMTAT_InvalidTransfer(from, to, amount);
-        /*
-        We do not call ERC20Upgradeable._update(from, to, amount) here because it is called inside the SnapshotModule
-        */
-        /*
-        SnapshotModule:
-        Add this call in case you add the SnapshotModule
-        */
-        ERC20SnapshotModuleInternal._update(from, to, amount);
-    }
- 
-    /** 
-    @dev This surcharge is not necessary if you do not use the MetaTxModule
-    */
-    function _msgSender()
-        internal
-        view
-        override(MetaTxModule, ContextUpgradeable)
-        returns (address sender)
-    {
-        return MetaTxModule._msgSender();
-    }
- 
-    /** 
-    @dev This surcharge is not necessary if you do not use the MetaTxModule
-    */
-    function _msgData()
-        internal
-        view
-        override(MetaTxModule, ContextUpgradeable)
-        returns (bytes calldata)
-    {
-        return MetaTxModule._msgData();
-    }
- 
-    uint256[50] private __gap;
-}
- 
-
- - - - - - - - diff --git a/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html b/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html index 7c1eec94..77a7b2e2 100644 --- a/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html +++ b/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html @@ -118,7 +118,7 @@

diff --git a/doc/general/test/coverage/contracts/test/proxy/index.html b/doc/general/test/coverage/contracts/test/proxy/index.html index 82e459fa..c64aa1d2 100644 --- a/doc/general/test/coverage/contracts/test/proxy/index.html +++ b/doc/general/test/coverage/contracts/test/proxy/index.html @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/coverage-final.json b/doc/general/test/coverage/coverage-final.json index d7154194..bff140ad 100644 --- a/doc/general/test/coverage/coverage-final.json +++ b/doc/general/test/coverage/coverage-final.json @@ -1,27 +1,33 @@ { -"contracts/CMTAT_PROXY.sol":{"l":{"17":4},"path":"/home/ryan/Pictures/CMTAT/contracts/CMTAT_PROXY.sol","s":{"1":4},"b":{},"f":{"1":4},"fnMap":{"1":{"name":"constructor","line":15,"loc":{"start":{"line":13,"column":4},"end":{"line":18,"column":4}}}},"statementMap":{"1":{"start":{"line":17,"column":8},"end":{"line":17,"column":29}}},"branchMap":{}}, -"contracts/CMTAT_STANDALONE.sol":{"l":{"37":141},"path":"/home/ryan/Pictures/CMTAT/contracts/CMTAT_STANDALONE.sol","s":{"1":141},"b":{},"f":{"1":141},"fnMap":{"1":{"name":"constructor","line":34,"loc":{"start":{"line":22,"column":4},"end":{"line":49,"column":4}}}},"statementMap":{"1":{"start":{"line":37,"column":8},"end":{"line":37,"column":1538}}},"branchMap":{}}, -"contracts/interfaces/draft-IERC1404/draft-IERC1404.sol":{"l":{},"path":"/home/ryan/Pictures/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, -"contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol":{"l":{},"path":"/home/ryan/Pictures/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, -"contracts/interfaces/IDebtGlobal.sol":{"l":{},"path":"/home/ryan/Pictures/CMTAT/contracts/interfaces/IDebtGlobal.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, -"contracts/libraries/Errors.sol":{"l":{},"path":"/home/ryan/Pictures/CMTAT/contracts/libraries/Errors.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, -"contracts/modules/CMTAT_BASE.sol":{"l":{"69":281,"100":281,"101":281,"103":281,"105":281,"106":281,"107":278,"110":278,"116":278,"120":278,"121":278,"122":278,"124":278,"125":278,"127":278,"128":278,"137":278,"138":278,"139":278,"142":278,"159":2,"172":18,"187":359,"188":34,"190":325,"208":1029,"220":0},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/CMTAT_BASE.sol","s":{"1":281,"2":281,"3":281,"4":281,"5":281,"6":281,"7":278,"8":278,"9":278,"10":278,"11":278,"12":278,"13":278,"14":278,"15":278,"16":278,"17":278,"18":278,"19":278,"20":278,"21":2,"22":18,"23":359,"24":325,"25":1029,"26":0},"b":{"1":[281,2],"2":[281,0],"3":[278,0],"4":[34,325]},"f":{"1":281,"2":281,"3":278,"4":2,"5":18,"6":359,"7":1029,"8":0},"fnMap":{"1":{"name":"initialize","line":68,"loc":{"start":{"line":57,"column":4},"end":{"line":81,"column":4}}},"2":{"name":"__CMTAT_init","line":97,"loc":{"start":{"line":86,"column":4},"end":{"line":143,"column":4}}},"3":{"name":"__CMTAT_init_unchained","line":145,"loc":{"start":{"line":145,"column":4},"end":{"line":147,"column":4}}},"4":{"name":"decimals","line":152,"loc":{"start":{"line":152,"column":4},"end":{"line":160,"column":4}}},"5":{"name":"transferFrom","line":162,"loc":{"start":{"line":162,"column":4},"end":{"line":173,"column":4}}},"6":{"name":"_update","line":182,"loc":{"start":{"line":182,"column":4},"end":{"line":197,"column":4}}},"7":{"name":"_msgSender","line":202,"loc":{"start":{"line":202,"column":4},"end":{"line":209,"column":4}}},"8":{"name":"_msgData","line":214,"loc":{"start":{"line":214,"column":4},"end":{"line":221,"column":4}}}},"statementMap":{"1":{"start":{"line":69,"column":8},"end":{"line":69,"column":2518}},"2":{"start":{"line":100,"column":8},"end":{"line":100,"column":33}},"3":{"start":{"line":101,"column":8},"end":{"line":101,"column":65}},"4":{"start":{"line":103,"column":8},"end":{"line":103,"column":32}},"5":{"start":{"line":105,"column":8},"end":{"line":105,"column":39}},"6":{"start":{"line":106,"column":8},"end":{"line":106,"column":92}},"7":{"start":{"line":107,"column":8},"end":{"line":107,"column":34}},"8":{"start":{"line":110,"column":8},"end":{"line":110,"column":37}},"9":{"start":{"line":116,"column":8},"end":{"line":116,"column":47}},"10":{"start":{"line":120,"column":8},"end":{"line":120,"column":45}},"11":{"start":{"line":121,"column":8},"end":{"line":121,"column":41}},"12":{"start":{"line":122,"column":8},"end":{"line":122,"column":41}},"13":{"start":{"line":124,"column":8},"end":{"line":124,"column":43}},"14":{"start":{"line":125,"column":8},"end":{"line":125,"column":60}},"15":{"start":{"line":127,"column":8},"end":{"line":127,"column":37}},"16":{"start":{"line":128,"column":8},"end":{"line":128,"column":42}},"17":{"start":{"line":137,"column":8},"end":{"line":137,"column":40}},"18":{"start":{"line":138,"column":8},"end":{"line":138,"column":38}},"19":{"start":{"line":139,"column":8},"end":{"line":139,"column":67}},"20":{"start":{"line":142,"column":8},"end":{"line":142,"column":31}},"21":{"start":{"line":159,"column":8},"end":{"line":159,"column":41}},"22":{"start":{"line":172,"column":8},"end":{"line":172,"column":70}},"23":{"start":{"line":187,"column":8},"end":{"line":187,"column":6273}},"24":{"start":{"line":190,"column":8},"end":{"line":190,"column":49}},"25":{"start":{"line":208,"column":8},"end":{"line":208,"column":40}},"26":{"start":{"line":220,"column":8},"end":{"line":220,"column":38}}},"branchMap":{"1":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":13},"end":{"line":68,"column":13}},{"start":{"line":68,"column":13},"end":{"line":68,"column":13}}]},"2":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":15},"end":{"line":97,"column":15}},{"start":{"line":97,"column":15},"end":{"line":97,"column":15}}]},"3":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":47},"end":{"line":145,"column":47}},{"start":{"line":145,"column":47},"end":{"line":145,"column":47}}]},"4":{"line":187,"type":"if","locations":[{"start":{"line":187,"column":8},"end":{"line":187,"column":8}},{"start":{"line":187,"column":8},"end":{"line":187,"column":8}}]}}}, -"contracts/modules/internal/EnforcementModuleInternal.sol":{"l":{"44":0,"45":0,"56":864,"69":22,"70":2,"72":20,"73":20,"74":20,"86":8,"87":2,"89":6,"90":6,"92":6},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/internal/EnforcementModuleInternal.sol","s":{"1":0,"2":0,"3":864,"4":22,"5":2,"6":20,"7":20,"8":8,"9":2,"10":6,"11":6},"b":{"1":[0,0],"2":[364,0],"3":[2,20],"4":[2,6]},"f":{"1":0,"2":364,"3":864,"4":22,"5":8},"fnMap":{"1":{"name":"__Enforcement_init","line":43,"loc":{"start":{"line":43,"column":4},"end":{"line":46,"column":4}}},"2":{"name":"__Enforcement_init_unchained","line":48,"loc":{"start":{"line":48,"column":4},"end":{"line":50,"column":4}}},"3":{"name":"frozen","line":55,"loc":{"start":{"line":55,"column":4},"end":{"line":57,"column":4}}},"4":{"name":"_freeze","line":65,"loc":{"start":{"line":65,"column":4},"end":{"line":75,"column":4}}},"5":{"name":"_unfreeze","line":82,"loc":{"start":{"line":82,"column":4},"end":{"line":93,"column":4}}}},"statementMap":{"1":{"start":{"line":44,"column":8},"end":{"line":44,"column":33}},"2":{"start":{"line":45,"column":8},"end":{"line":45,"column":37}},"3":{"start":{"line":56,"column":8},"end":{"line":56,"column":31}},"4":{"start":{"line":69,"column":8},"end":{"line":69,"column":1832}},"5":{"start":{"line":70,"column":12},"end":{"line":70,"column":24}},"6":{"start":{"line":73,"column":8},"end":{"line":73,"column":58}},"7":{"start":{"line":74,"column":8},"end":{"line":74,"column":19}},"8":{"start":{"line":86,"column":8},"end":{"line":86,"column":2297}},"9":{"start":{"line":87,"column":12},"end":{"line":87,"column":24}},"10":{"start":{"line":90,"column":8},"end":{"line":90,"column":60}},"11":{"start":{"line":92,"column":8},"end":{"line":92,"column":19}}},"branchMap":{"1":{"line":43,"type":"if","locations":[{"start":{"line":43,"column":43},"end":{"line":43,"column":43}},{"start":{"line":43,"column":43},"end":{"line":43,"column":43}}]},"2":{"line":48,"type":"if","locations":[{"start":{"line":48,"column":53},"end":{"line":48,"column":53}},{"start":{"line":48,"column":53},"end":{"line":48,"column":53}}]},"3":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":8},"end":{"line":69,"column":8}},{"start":{"line":69,"column":8},"end":{"line":69,"column":8}}]},"4":{"line":86,"type":"if","locations":[{"start":{"line":86,"column":8},"end":{"line":86,"column":8}},{"start":{"line":86,"column":8},"end":{"line":86,"column":8}}]}}}, -"contracts/modules/internal/ERC20SnapshotModuleInternal.sol":{"l":{"73":0,"74":0,"75":0,"89":170,"90":4,"96":166,"98":94,"101":94,"102":0,"108":4,"111":162,"112":162,"119":16,"120":4,"125":12,"127":12,"128":4,"131":8,"132":2,"134":6,"137":6,"138":10,"139":10,"140":10,"143":6,"145":8,"153":38,"154":4,"156":34,"157":4,"162":30,"163":4,"165":26,"166":26,"167":8,"169":18,"170":14,"171":14,"172":4,"178":4,"181":10,"182":6,"183":4,"189":6,"191":6,"199":18,"200":4,"202":14,"203":4,"206":10,"207":4,"209":6,"210":6,"220":12,"221":0,"223":12,"224":12,"225":4,"227":8,"228":16,"229":16,"230":16,"233":8,"241":76,"243":76,"244":68,"249":68,"250":48,"253":20,"255":8,"258":8,"259":8,"260":12,"263":12,"264":12,"270":28,"278":0,"289":240,"294":240,"303":80,"307":80,"319":66,"320":66,"322":16,"323":16,"325":14,"328":2,"332":50,"333":50,"335":66,"363":320,"365":320,"366":236,"368":84,"376":80,"383":52,"396":132,"397":132,"398":36,"399":36,"409":66,"413":66,"414":18,"415":18,"425":132,"426":124,"428":8,"439":50,"440":50,"442":50,"446":30,"450":10,"454":10,"467":134,"469":134,"473":48,"476":86,"477":86,"478":86,"479":116,"480":52,"481":52,"484":64,"486":52,"487":52,"490":86},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/internal/ERC20SnapshotModuleInternal.sol","s":{"1":0,"2":0,"3":0,"4":170,"5":166,"6":94,"7":94,"8":94,"9":162,"10":162,"11":16,"12":12,"13":12,"14":8,"15":2,"16":6,"17":6,"18":8,"19":38,"20":34,"21":30,"22":26,"23":26,"24":18,"25":14,"26":14,"27":10,"28":10,"29":6,"30":6,"31":18,"32":14,"33":10,"34":6,"35":6,"36":12,"37":12,"38":12,"39":8,"40":8,"41":76,"42":76,"43":68,"44":68,"45":48,"46":20,"47":8,"48":8,"49":28,"50":0,"51":240,"52":240,"53":80,"54":80,"55":66,"56":66,"57":16,"58":16,"59":14,"60":2,"61":50,"62":50,"63":66,"64":320,"65":320,"66":236,"67":84,"68":80,"69":52,"70":132,"71":132,"72":36,"73":36,"74":66,"75":66,"76":132,"77":124,"78":8,"79":50,"80":50,"81":50,"82":30,"83":20,"84":10,"85":10,"86":134,"87":134,"88":48,"89":86,"90":86,"91":116,"92":86},"b":{"1":[0,0],"2":[86,0],"3":[4,166],"4":[94,72],"5":[0,94],"6":[4,90],"7":[4,12],"8":[4,8],"9":[2,6],"10":[4,34],"11":[4,30],"12":[4,26],"13":[8,18],"14":[14,4],"15":[4,10],"16":[4,6],"17":[6,4],"18":[4,2],"19":[4,14],"20":[4,10],"21":[4,6],"22":[0,12],"23":[4,8],"24":[68,8],"25":[48,20],"26":[8,12],"27":[80,160],"28":[4,76],"29":[16,50],"30":[14,2],"31":[236,84],"32":[36,96],"33":[18,48],"34":[124,8],"35":[30,20],"36":[10,10],"37":[48,86],"38":[48,0],"39":[52,64]},"f":{"1":0,"2":86,"3":170,"4":16,"5":38,"6":18,"7":12,"8":76,"9":0,"10":240,"11":80,"12":66,"13":320,"14":80,"15":52,"16":132,"17":66,"18":132,"19":50,"20":134},"fnMap":{"1":{"name":"__ERC20Snapshot_init","line":72,"loc":{"start":{"line":69,"column":4},"end":{"line":76,"column":4}}},"2":{"name":"__ERC20Snapshot_init_unchained","line":78,"loc":{"start":{"line":78,"column":4},"end":{"line":81,"column":4}}},"3":{"name":"_scheduleSnapshot","line":87,"loc":{"start":{"line":87,"column":4},"end":{"line":113,"column":4}}},"4":{"name":"_scheduleSnapshotNotOptimized","line":118,"loc":{"start":{"line":118,"column":4},"end":{"line":146,"column":4}}},"5":{"name":"_rescheduleSnapshot","line":151,"loc":{"start":{"line":151,"column":4},"end":{"line":192,"column":4}}},"6":{"name":"_unscheduleLastSnapshot","line":197,"loc":{"start":{"line":197,"column":4},"end":{"line":211,"column":4}}},"7":{"name":"_unscheduleSnapshotNotOptimized","line":219,"loc":{"start":{"line":219,"column":4},"end":{"line":234,"column":4}}},"8":{"name":"getNextSnapshots","line":240,"loc":{"start":{"line":240,"column":4},"end":{"line":271,"column":4}}},"9":{"name":"getAllSnapshots","line":277,"loc":{"start":{"line":277,"column":4},"end":{"line":279,"column":4}}},"10":{"name":"snapshotBalanceOf","line":285,"loc":{"start":{"line":285,"column":4},"end":{"line":295,"column":4}}},"11":{"name":"snapshotTotalSupply","line":302,"loc":{"start":{"line":302,"column":4},"end":{"line":308,"column":4}}},"12":{"name":"_update","line":314,"loc":{"start":{"line":314,"column":4},"end":{"line":336,"column":4}}},"13":{"name":"_valueAt","line":345,"loc":{"start":{"line":345,"column":4},"end":{"line":370,"column":4}}},"14":{"name":"_updateAccountSnapshot","line":375,"loc":{"start":{"line":375,"column":4},"end":{"line":377,"column":4}}},"15":{"name":"_updateTotalSupplySnapshot","line":382,"loc":{"start":{"line":382,"column":4},"end":{"line":384,"column":4}}},"16":{"name":"_updateSnapshot","line":392,"loc":{"start":{"line":392,"column":4},"end":{"line":401,"column":4}}},"17":{"name":"_setCurrentSnapshot","line":408,"loc":{"start":{"line":408,"column":4},"end":{"line":417,"column":4}}},"18":{"name":"_lastSnapshot","line":422,"loc":{"start":{"line":422,"column":4},"end":{"line":430,"column":4}}},"19":{"name":"_findScheduledSnapshotIndex","line":436,"loc":{"start":{"line":436,"column":4},"end":{"line":456,"column":4}}},"20":{"name":"_findScheduledMostRecentPastSnapshot","line":462,"loc":{"start":{"line":462,"column":4},"end":{"line":491,"column":4}}}},"statementMap":{"1":{"start":{"line":73,"column":8},"end":{"line":73,"column":33}},"2":{"start":{"line":74,"column":8},"end":{"line":74,"column":35}},"3":{"start":{"line":75,"column":8},"end":{"line":75,"column":39}},"4":{"start":{"line":89,"column":8},"end":{"line":89,"column":2980}},"5":{"start":{"line":96,"column":8},"end":{"line":96,"column":3174}},"6":{"start":{"line":98,"column":12},"end":{"line":98,"column":3283}},"7":{"start":{"line":101,"column":12},"end":{"line":101,"column":3404}},"8":{"start":{"line":107,"column":19},"end":{"line":107,"column":3657}},"9":{"start":{"line":111,"column":8},"end":{"line":111,"column":37}},"10":{"start":{"line":112,"column":8},"end":{"line":112,"column":38}},"11":{"start":{"line":119,"column":8},"end":{"line":119,"column":4015}},"12":{"start":{"line":125,"column":8},"end":{"line":125,"column":73}},"13":{"start":{"line":127,"column":8},"end":{"line":127,"column":4308}},"14":{"start":{"line":131,"column":8},"end":{"line":131,"column":4499}},"15":{"start":{"line":132,"column":12},"end":{"line":132,"column":41}},"16":{"start":{"line":134,"column":12},"end":{"line":134,"column":4619}},"17":{"start":{"line":137,"column":12},"end":{"line":137,"column":4740}},"18":{"start":{"line":145,"column":8},"end":{"line":145,"column":38}},"19":{"start":{"line":153,"column":8},"end":{"line":153,"column":5296}},"20":{"start":{"line":156,"column":8},"end":{"line":156,"column":5418}},"21":{"start":{"line":162,"column":8},"end":{"line":162,"column":5617}},"22":{"start":{"line":165,"column":8},"end":{"line":165,"column":77}},"23":{"start":{"line":166,"column":8},"end":{"line":166,"column":5823}},"24":{"start":{"line":169,"column":8},"end":{"line":169,"column":5925}},"25":{"start":{"line":170,"column":12},"end":{"line":170,"column":69}},"26":{"start":{"line":171,"column":12},"end":{"line":171,"column":6058}},"27":{"start":{"line":177,"column":19},"end":{"line":177,"column":6316}},"28":{"start":{"line":181,"column":8},"end":{"line":181,"column":6455}},"29":{"start":{"line":182,"column":12},"end":{"line":182,"column":6497}},"30":{"start":{"line":191,"column":8},"end":{"line":191,"column":47}},"31":{"start":{"line":199,"column":8},"end":{"line":199,"column":7071}},"32":{"start":{"line":202,"column":8},"end":{"line":202,"column":7190}},"33":{"start":{"line":206,"column":8},"end":{"line":206,"column":7388}},"34":{"start":{"line":209,"column":8},"end":{"line":209,"column":32}},"35":{"start":{"line":210,"column":8},"end":{"line":210,"column":37}},"36":{"start":{"line":220,"column":8},"end":{"line":220,"column":7934}},"37":{"start":{"line":223,"column":8},"end":{"line":223,"column":73}},"38":{"start":{"line":224,"column":8},"end":{"line":224,"column":8128}},"39":{"start":{"line":227,"column":8},"end":{"line":227,"column":8229}},"40":{"start":{"line":233,"column":8},"end":{"line":233,"column":32}},"41":{"start":{"line":241,"column":8},"end":{"line":241,"column":65}},"42":{"start":{"line":243,"column":8},"end":{"line":243,"column":8716}},"43":{"start":{"line":244,"column":12},"end":{"line":244,"column":8812}},"44":{"start":{"line":249,"column":12},"end":{"line":249,"column":8975}},"45":{"start":{"line":250,"column":16},"end":{"line":250,"column":42}},"46":{"start":{"line":253,"column":16},"end":{"line":253,"column":9181}},"47":{"start":{"line":255,"column":20},"end":{"line":255,"column":9369}},"48":{"start":{"line":259,"column":20},"end":{"line":259,"column":9572}},"49":{"start":{"line":270,"column":8},"end":{"line":270,"column":36}},"50":{"start":{"line":278,"column":8},"end":{"line":278,"column":34}},"51":{"start":{"line":289,"column":8},"end":{"line":289,"column":10459}},"52":{"start":{"line":294,"column":8},"end":{"line":294,"column":53}},"53":{"start":{"line":303,"column":8},"end":{"line":303,"column":10924}},"54":{"start":{"line":307,"column":8},"end":{"line":307,"column":50}},"55":{"start":{"line":319,"column":8},"end":{"line":319,"column":28}},"56":{"start":{"line":320,"column":8},"end":{"line":320,"column":11473}},"57":{"start":{"line":322,"column":12},"end":{"line":322,"column":39}},"58":{"start":{"line":323,"column":12},"end":{"line":323,"column":11599}},"59":{"start":{"line":325,"column":16},"end":{"line":325,"column":41}},"60":{"start":{"line":328,"column":16},"end":{"line":328,"column":43}},"61":{"start":{"line":332,"column":12},"end":{"line":332,"column":37}},"62":{"start":{"line":333,"column":12},"end":{"line":333,"column":39}},"63":{"start":{"line":335,"column":8},"end":{"line":335,"column":49}},"64":{"start":{"line":363,"column":8},"end":{"line":363,"column":58}},"65":{"start":{"line":365,"column":8},"end":{"line":365,"column":13609}},"66":{"start":{"line":366,"column":12},"end":{"line":366,"column":29}},"67":{"start":{"line":368,"column":12},"end":{"line":368,"column":50}},"68":{"start":{"line":376,"column":8},"end":{"line":376,"column":77}},"69":{"start":{"line":383,"column":8},"end":{"line":383,"column":60}},"70":{"start":{"line":396,"column":8},"end":{"line":396,"column":46}},"71":{"start":{"line":397,"column":8},"end":{"line":397,"column":14547}},"72":{"start":{"line":398,"column":12},"end":{"line":398,"column":38}},"73":{"start":{"line":399,"column":12},"end":{"line":399,"column":46}},"74":{"start":{"line":409,"column":8},"end":{"line":409,"column":14952}},"75":{"start":{"line":413,"column":8},"end":{"line":413,"column":15056}},"76":{"start":{"line":425,"column":8},"end":{"line":425,"column":15404}},"77":{"start":{"line":426,"column":12},"end":{"line":426,"column":20}},"78":{"start":{"line":428,"column":12},"end":{"line":428,"column":38}},"79":{"start":{"line":439,"column":8},"end":{"line":439,"column":69}},"80":{"start":{"line":440,"column":8},"end":{"line":440,"column":70}},"81":{"start":{"line":442,"column":8},"end":{"line":442,"column":15947}},"82":{"start":{"line":446,"column":12},"end":{"line":446,"column":37}},"83":{"start":{"line":449,"column":13},"end":{"line":449,"column":16162}},"84":{"start":{"line":450,"column":12},"end":{"line":450,"column":38}},"85":{"start":{"line":454,"column":12},"end":{"line":454,"column":53}},"86":{"start":{"line":467,"column":8},"end":{"line":467,"column":61}},"87":{"start":{"line":469,"column":8},"end":{"line":469,"column":16794}},"88":{"start":{"line":473,"column":12},"end":{"line":473,"column":40}},"89":{"start":{"line":476,"column":8},"end":{"line":476,"column":26}},"90":{"start":{"line":478,"column":8},"end":{"line":478,"column":17096}},"91":{"start":{"line":479,"column":12},"end":{"line":479,"column":17178}},"92":{"start":{"line":490,"column":8},"end":{"line":490,"column":34}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":15},"end":{"line":72,"column":15}},{"start":{"line":72,"column":15},"end":{"line":72,"column":15}}]},"2":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":55},"end":{"line":78,"column":55}},{"start":{"line":78,"column":55},"end":{"line":78,"column":55}}]},"3":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":8},"end":{"line":89,"column":8}},{"start":{"line":89,"column":8},"end":{"line":89,"column":8}}]},"4":{"line":96,"type":"if","locations":[{"start":{"line":96,"column":8},"end":{"line":96,"column":8}},{"start":{"line":96,"column":8},"end":{"line":96,"column":8}}]},"5":{"line":101,"type":"if","locations":[{"start":{"line":101,"column":12},"end":{"line":101,"column":12}},{"start":{"line":101,"column":12},"end":{"line":101,"column":12}}]},"6":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":19},"end":{"line":107,"column":19}},{"start":{"line":107,"column":19},"end":{"line":107,"column":19}}]},"7":{"line":119,"type":"if","locations":[{"start":{"line":119,"column":8},"end":{"line":119,"column":8}},{"start":{"line":119,"column":8},"end":{"line":119,"column":8}}]},"8":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":8},"end":{"line":127,"column":8}},{"start":{"line":127,"column":8},"end":{"line":127,"column":8}}]},"9":{"line":131,"type":"if","locations":[{"start":{"line":131,"column":8},"end":{"line":131,"column":8}},{"start":{"line":131,"column":8},"end":{"line":131,"column":8}}]},"10":{"line":153,"type":"if","locations":[{"start":{"line":153,"column":8},"end":{"line":153,"column":8}},{"start":{"line":153,"column":8},"end":{"line":153,"column":8}}]},"11":{"line":156,"type":"if","locations":[{"start":{"line":156,"column":8},"end":{"line":156,"column":8}},{"start":{"line":156,"column":8},"end":{"line":156,"column":8}}]},"12":{"line":162,"type":"if","locations":[{"start":{"line":162,"column":8},"end":{"line":162,"column":8}},{"start":{"line":162,"column":8},"end":{"line":162,"column":8}}]},"13":{"line":166,"type":"if","locations":[{"start":{"line":166,"column":8},"end":{"line":166,"column":8}},{"start":{"line":166,"column":8},"end":{"line":166,"column":8}}]},"14":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":8},"end":{"line":169,"column":8}},{"start":{"line":169,"column":8},"end":{"line":169,"column":8}}]},"15":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":12},"end":{"line":171,"column":12}},{"start":{"line":171,"column":12},"end":{"line":171,"column":12}}]},"16":{"line":177,"type":"if","locations":[{"start":{"line":177,"column":19},"end":{"line":177,"column":19}},{"start":{"line":177,"column":19},"end":{"line":177,"column":19}}]},"17":{"line":181,"type":"if","locations":[{"start":{"line":181,"column":8},"end":{"line":181,"column":8}},{"start":{"line":181,"column":8},"end":{"line":181,"column":8}}]},"18":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":12},"end":{"line":182,"column":12}},{"start":{"line":182,"column":12},"end":{"line":182,"column":12}}]},"19":{"line":199,"type":"if","locations":[{"start":{"line":199,"column":8},"end":{"line":199,"column":8}},{"start":{"line":199,"column":8},"end":{"line":199,"column":8}}]},"20":{"line":202,"type":"if","locations":[{"start":{"line":202,"column":8},"end":{"line":202,"column":8}},{"start":{"line":202,"column":8},"end":{"line":202,"column":8}}]},"21":{"line":206,"type":"if","locations":[{"start":{"line":206,"column":8},"end":{"line":206,"column":8}},{"start":{"line":206,"column":8},"end":{"line":206,"column":8}}]},"22":{"line":220,"type":"if","locations":[{"start":{"line":220,"column":8},"end":{"line":220,"column":8}},{"start":{"line":220,"column":8},"end":{"line":220,"column":8}}]},"23":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":8},"end":{"line":224,"column":8}},{"start":{"line":224,"column":8},"end":{"line":224,"column":8}}]},"24":{"line":243,"type":"if","locations":[{"start":{"line":243,"column":8},"end":{"line":243,"column":8}},{"start":{"line":243,"column":8},"end":{"line":243,"column":8}}]},"25":{"line":249,"type":"if","locations":[{"start":{"line":249,"column":12},"end":{"line":249,"column":12}},{"start":{"line":249,"column":12},"end":{"line":249,"column":12}}]},"26":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":16},"end":{"line":253,"column":16}},{"start":{"line":253,"column":16},"end":{"line":253,"column":16}}]},"27":{"line":294,"type":"if","locations":[{"start":{"line":294,"column":29},"end":{"line":294,"column":33}},{"start":{"line":294,"column":37},"end":{"line":294,"column":52}}]},"28":{"line":307,"type":"if","locations":[{"start":{"line":307,"column":29},"end":{"line":307,"column":33}},{"start":{"line":307,"column":37},"end":{"line":307,"column":49}}]},"29":{"line":320,"type":"if","locations":[{"start":{"line":320,"column":8},"end":{"line":320,"column":8}},{"start":{"line":320,"column":8},"end":{"line":320,"column":8}}]},"30":{"line":323,"type":"if","locations":[{"start":{"line":323,"column":12},"end":{"line":323,"column":12}},{"start":{"line":323,"column":12},"end":{"line":323,"column":12}}]},"31":{"line":365,"type":"if","locations":[{"start":{"line":365,"column":8},"end":{"line":365,"column":8}},{"start":{"line":365,"column":8},"end":{"line":365,"column":8}}]},"32":{"line":397,"type":"if","locations":[{"start":{"line":397,"column":8},"end":{"line":397,"column":8}},{"start":{"line":397,"column":8},"end":{"line":397,"column":8}}]},"33":{"line":413,"type":"if","locations":[{"start":{"line":413,"column":8},"end":{"line":413,"column":8}},{"start":{"line":413,"column":8},"end":{"line":413,"column":8}}]},"34":{"line":425,"type":"if","locations":[{"start":{"line":425,"column":8},"end":{"line":425,"column":8}},{"start":{"line":425,"column":8},"end":{"line":425,"column":8}}]},"35":{"line":442,"type":"if","locations":[{"start":{"line":442,"column":8},"end":{"line":442,"column":8}},{"start":{"line":442,"column":8},"end":{"line":442,"column":8}}]},"36":{"line":449,"type":"if","locations":[{"start":{"line":449,"column":13},"end":{"line":449,"column":13}},{"start":{"line":449,"column":13},"end":{"line":449,"column":13}}]},"37":{"line":469,"type":"if","locations":[{"start":{"line":469,"column":8},"end":{"line":469,"column":8}},{"start":{"line":469,"column":8},"end":{"line":469,"column":8}}]},"38":{"line":470,"type":"cond-expr","locations":[{"start":{"line":470,"column":12},"end":{"line":470,"column":32}},{"start":{"line":471,"column":12},"end":{"line":471,"column":75}}]},"39":{"line":479,"type":"if","locations":[{"start":{"line":479,"column":12},"end":{"line":479,"column":12}},{"start":{"line":479,"column":12},"end":{"line":479,"column":12}}]}}}, -"contracts/modules/internal/ValidationModuleInternal.sol":{"l":{"31":0,"32":0,"38":364,"39":14,"40":14,"52":51,"61":6,"72":6},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/internal/ValidationModuleInternal.sol","s":{"1":0,"2":0,"3":364,"4":14,"5":51,"6":6,"7":6},"b":{"1":[0,0],"2":[364,0],"3":[14,350]},"f":{"1":0,"2":364,"3":51,"4":6,"5":6},"fnMap":{"1":{"name":"__Validation_init","line":30,"loc":{"start":{"line":28,"column":4},"end":{"line":33,"column":4}}},"2":{"name":"__Validation_init_unchained","line":37,"loc":{"start":{"line":35,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"_validateTransfer","line":47,"loc":{"start":{"line":47,"column":4},"end":{"line":53,"column":4}}},"4":{"name":"_messageForTransferRestriction","line":58,"loc":{"start":{"line":58,"column":4},"end":{"line":62,"column":4}}},"5":{"name":"_detectTransferRestriction","line":67,"loc":{"start":{"line":67,"column":4},"end":{"line":73,"column":4}}}},"statementMap":{"1":{"start":{"line":31,"column":8},"end":{"line":31,"column":33}},"2":{"start":{"line":32,"column":8},"end":{"line":32,"column":47}},"3":{"start":{"line":38,"column":8},"end":{"line":38,"column":1055}},"4":{"start":{"line":40,"column":12},"end":{"line":40,"column":39}},"5":{"start":{"line":52,"column":8},"end":{"line":52,"column":60}},"6":{"start":{"line":61,"column":8},"end":{"line":61,"column":72}},"7":{"start":{"line":72,"column":8},"end":{"line":72,"column":69}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":15},"end":{"line":30,"column":15}},{"start":{"line":30,"column":15},"end":{"line":30,"column":15}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":15},"end":{"line":37,"column":15}},{"start":{"line":37,"column":15},"end":{"line":37,"column":15}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":8},"end":{"line":38,"column":8}},{"start":{"line":38,"column":8},"end":{"line":38,"column":8}}]}}}, -"contracts/modules/security/AuthorizationModule.sol":{"l":{"34":0,"36":0,"37":0,"38":0,"41":0,"63":1298,"64":710,"66":588,"77":2,"78":2},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/security/AuthorizationModule.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":1298,"7":710,"8":588,"9":2,"10":2},"b":{"1":[0,0],"2":[364,0],"3":[710,588],"4":[2,4]},"f":{"1":0,"2":364,"3":1298,"4":2},"fnMap":{"1":{"name":"__AuthorizationModule_init","line":32,"loc":{"start":{"line":29,"column":4},"end":{"line":42,"column":4}}},"2":{"name":"__AuthorizationModule_init_unchained","line":52,"loc":{"start":{"line":51,"column":4},"end":{"line":53,"column":4}}},"3":{"name":"hasRole","line":58,"loc":{"start":{"line":58,"column":4},"end":{"line":67,"column":4}}},"4":{"name":"transferAdminshipDirectly","line":75,"loc":{"start":{"line":75,"column":4},"end":{"line":79,"column":4}}}},"statementMap":{"1":{"start":{"line":34,"column":8},"end":{"line":34,"column":33}},"2":{"start":{"line":36,"column":8},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":8},"end":{"line":37,"column":39}},"4":{"start":{"line":38,"column":8},"end":{"line":38,"column":75}},"5":{"start":{"line":41,"column":8},"end":{"line":41,"column":45}},"6":{"start":{"line":63,"column":8},"end":{"line":63,"column":2177}},"7":{"start":{"line":64,"column":12},"end":{"line":64,"column":23}},"8":{"start":{"line":66,"column":8},"end":{"line":66,"column":62}},"9":{"start":{"line":77,"column":8},"end":{"line":77,"column":52}},"10":{"start":{"line":78,"column":8},"end":{"line":78,"column":47}}},"branchMap":{"1":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":15},"end":{"line":32,"column":15}},{"start":{"line":32,"column":15},"end":{"line":32,"column":15}}]},"2":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":20},"end":{"line":52,"column":20}},{"start":{"line":52,"column":20},"end":{"line":52,"column":20}}]},"3":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":8}},{"start":{"line":63,"column":8},"end":{"line":63,"column":8}}]},"4":{"line":75,"type":"if","locations":[{"start":{"line":75,"column":72},"end":{"line":75,"column":72}},{"start":{"line":75,"column":72},"end":{"line":75,"column":72}}]}}}, -"contracts/modules/wrapper/controllers/ValidationModule.sol":{"l":{"38":16,"39":6,"40":10,"41":10,"56":17,"57":4,"59":2,"61":2,"63":6,"65":3,"77":20,"78":3,"83":4,"88":2,"93":2,"95":6,"97":3,"106":425,"107":28,"109":397,"110":51,"112":346},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/controllers/ValidationModule.sol","s":{"1":16,"2":10,"3":17,"4":4,"5":13,"6":2,"7":11,"8":2,"9":9,"10":6,"11":3,"12":20,"13":3,"14":17,"15":4,"16":13,"17":2,"18":11,"19":2,"20":9,"21":6,"22":3,"23":425,"24":28,"25":397,"26":51,"27":346},"b":{"1":[364,0],"2":[16,6],"3":[6,10],"4":[4,13],"5":[2,11],"6":[2,9],"7":[6,3],"8":[3,17],"9":[4,13],"10":[2,11],"11":[2,9],"12":[6,3],"13":[28,397],"14":[20,4],"15":[4,4],"16":[51,346]},"f":{"1":364,"2":16,"3":17,"4":20,"5":425},"fnMap":{"1":{"name":"__ValidationModule_init_unchained","line":27,"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":4}}},"2":{"name":"setRuleEngine","line":37,"loc":{"start":{"line":35,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"detectTransferRestriction","line":51,"loc":{"start":{"line":51,"column":4},"end":{"line":67,"column":4}}},"4":{"name":"messageForTransferRestriction","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":99,"column":4}}},"5":{"name":"validateTransfer","line":101,"loc":{"start":{"line":101,"column":4},"end":{"line":113,"column":4}}}},"statementMap":{"1":{"start":{"line":38,"column":8},"end":{"line":38,"column":1163}},"2":{"start":{"line":41,"column":8},"end":{"line":41,"column":36}},"3":{"start":{"line":56,"column":8},"end":{"line":56,"column":1794}},"4":{"start":{"line":57,"column":12},"end":{"line":57,"column":69}},"5":{"start":{"line":58,"column":15},"end":{"line":58,"column":1896}},"6":{"start":{"line":59,"column":12},"end":{"line":59,"column":74}},"7":{"start":{"line":60,"column":15},"end":{"line":60,"column":2007}},"8":{"start":{"line":61,"column":12},"end":{"line":61,"column":72}},"9":{"start":{"line":62,"column":15},"end":{"line":62,"column":2114}},"10":{"start":{"line":63,"column":12},"end":{"line":63,"column":63}},"11":{"start":{"line":65,"column":12},"end":{"line":65,"column":56}},"12":{"start":{"line":77,"column":8},"end":{"line":77,"column":2811}},"13":{"start":{"line":78,"column":12},"end":{"line":78,"column":35}},"14":{"start":{"line":79,"column":15},"end":{"line":79,"column":2927}},"15":{"start":{"line":83,"column":12},"end":{"line":83,"column":48}},"16":{"start":{"line":84,"column":15},"end":{"line":84,"column":3103}},"17":{"start":{"line":88,"column":12},"end":{"line":88,"column":53}},"18":{"start":{"line":89,"column":15},"end":{"line":89,"column":3289}},"19":{"start":{"line":93,"column":12},"end":{"line":93,"column":51}},"20":{"start":{"line":94,"column":15},"end":{"line":94,"column":3471}},"21":{"start":{"line":95,"column":12},"end":{"line":95,"column":66}},"22":{"start":{"line":97,"column":12},"end":{"line":97,"column":36}},"23":{"start":{"line":106,"column":8},"end":{"line":106,"column":3800}},"24":{"start":{"line":107,"column":12},"end":{"line":107,"column":24}},"25":{"start":{"line":109,"column":8},"end":{"line":109,"column":3890}},"26":{"start":{"line":110,"column":12},"end":{"line":110,"column":54}},"27":{"start":{"line":112,"column":8},"end":{"line":112,"column":19}}},"branchMap":{"1":{"line":27,"type":"if","locations":[{"start":{"line":27,"column":58},"end":{"line":27,"column":58}},{"start":{"line":27,"column":58},"end":{"line":27,"column":58}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":15},"end":{"line":37,"column":15}},{"start":{"line":37,"column":15},"end":{"line":37,"column":15}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":8},"end":{"line":38,"column":8}},{"start":{"line":38,"column":8},"end":{"line":38,"column":8}}]},"4":{"line":56,"type":"if","locations":[{"start":{"line":56,"column":8},"end":{"line":56,"column":8}},{"start":{"line":56,"column":8},"end":{"line":56,"column":8}}]},"5":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":15},"end":{"line":58,"column":15}},{"start":{"line":58,"column":15},"end":{"line":58,"column":15}}]},"6":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":15},"end":{"line":60,"column":15}},{"start":{"line":60,"column":15},"end":{"line":60,"column":15}}]},"7":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":15},"end":{"line":62,"column":15}},{"start":{"line":62,"column":15},"end":{"line":62,"column":15}}]},"8":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":8},"end":{"line":77,"column":8}},{"start":{"line":77,"column":8},"end":{"line":77,"column":8}}]},"9":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":15},"end":{"line":79,"column":15}},{"start":{"line":79,"column":15},"end":{"line":79,"column":15}}]},"10":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":15},"end":{"line":84,"column":15}},{"start":{"line":84,"column":15},"end":{"line":84,"column":15}}]},"11":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":15},"end":{"line":89,"column":15}},{"start":{"line":89,"column":15},"end":{"line":89,"column":15}}]},"12":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":15},"end":{"line":94,"column":15}},{"start":{"line":94,"column":15},"end":{"line":94,"column":15}}]},"13":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":8},"end":{"line":106,"column":8}},{"start":{"line":106,"column":8},"end":{"line":106,"column":8}}]},"14":{"line":106,"type":"cond-expr","locations":[{"start":{"line":106,"column":12},"end":{"line":106,"column":19}},{"start":{"line":106,"column":24},"end":{"line":106,"column":35}}]},"15":{"line":106,"type":"cond-expr","locations":[{"start":{"line":106,"column":12},"end":{"line":106,"column":35}},{"start":{"line":106,"column":40},"end":{"line":106,"column":49}}]},"16":{"line":109,"type":"if","locations":[{"start":{"line":109,"column":8},"end":{"line":109,"column":8}},{"start":{"line":109,"column":8},"end":{"line":109,"column":8}}]}}}, -"contracts/modules/wrapper/core/BaseModule.sol":{"l":{"46":364,"47":364,"48":364,"49":364,"59":2,"60":2,"69":2,"70":2,"79":2,"80":2,"87":6,"88":4,"90":2,"91":2},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/BaseModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2},"b":{"1":[364,0],"2":[2,4],"3":[2,4],"4":[2,4],"5":[6,4],"6":[4,2]},"f":{"1":364,"2":2,"3":2,"4":2,"5":6},"fnMap":{"1":{"name":"__Base_init_unchained","line":45,"loc":{"start":{"line":40,"column":4},"end":{"line":50,"column":4}}},"2":{"name":"setTokenId","line":58,"loc":{"start":{"line":56,"column":4},"end":{"line":61,"column":4}}},"3":{"name":"setTerms","line":68,"loc":{"start":{"line":66,"column":4},"end":{"line":71,"column":4}}},"4":{"name":"setInformation","line":78,"loc":{"start":{"line":76,"column":4},"end":{"line":81,"column":4}}},"5":{"name":"setFlag","line":86,"loc":{"start":{"line":86,"column":4},"end":{"line":92,"column":4}}}},"statementMap":{"1":{"start":{"line":60,"column":8},"end":{"line":60,"column":40}},"2":{"start":{"line":70,"column":8},"end":{"line":70,"column":33}},"3":{"start":{"line":80,"column":8},"end":{"line":80,"column":52}},"4":{"start":{"line":87,"column":8},"end":{"line":87,"column":2481}},"5":{"start":{"line":91,"column":8},"end":{"line":91,"column":24}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":15},"end":{"line":45,"column":15}},{"start":{"line":45,"column":15},"end":{"line":45,"column":15}}]},"2":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":13},"end":{"line":58,"column":13}},{"start":{"line":58,"column":13},"end":{"line":58,"column":13}}]},"3":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":13},"end":{"line":68,"column":13}},{"start":{"line":68,"column":13},"end":{"line":68,"column":13}}]},"4":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":13},"end":{"line":78,"column":13}},{"start":{"line":78,"column":13},"end":{"line":78,"column":13}}]},"5":{"line":86,"type":"if","locations":[{"start":{"line":86,"column":43},"end":{"line":86,"column":43}},{"start":{"line":86,"column":43},"end":{"line":86,"column":43}}]},"6":{"line":87,"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":87,"column":8}},{"start":{"line":87,"column":8},"end":{"line":87,"column":8}}]}}}, -"contracts/modules/wrapper/core/EnforcementModule.sol":{"l":{"36":22,"50":8},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/EnforcementModule.sol","s":{"1":22,"2":8},"b":{"1":[364,0],"2":[22,4],"3":[8,4]},"f":{"1":364,"2":22,"3":8},"fnMap":{"1":{"name":"__EnforcementModule_init_unchained","line":23,"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":4}}},"2":{"name":"freeze","line":35,"loc":{"start":{"line":32,"column":4},"end":{"line":37,"column":4}}},"3":{"name":"unfreeze","line":49,"loc":{"start":{"line":46,"column":4},"end":{"line":51,"column":4}}}},"statementMap":{"1":{"start":{"line":36,"column":8},"end":{"line":36,"column":39}},"2":{"start":{"line":50,"column":8},"end":{"line":50,"column":41}}},"branchMap":{"1":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":59},"end":{"line":23,"column":59}},{"start":{"line":23,"column":59},"end":{"line":23,"column":59}}]},"2":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":13},"end":{"line":35,"column":13}},{"start":{"line":35,"column":13},"end":{"line":35,"column":13}}]},"3":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":13},"end":{"line":49,"column":13}},{"start":{"line":49,"column":13},"end":{"line":49,"column":13}}]}}}, -"contracts/modules/wrapper/core/ERC20BaseModule.sol":{"l":{"31":364,"41":2,"60":18,"61":4,"65":14,"66":8,"69":6,"72":14,"73":10,"74":10,"79":2,"94":18,"96":2,"97":2,"100":2,"112":6,"113":6,"114":6,"115":4,"123":2,"124":2},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/ERC20BaseModule.sol","s":{"1":2,"2":18,"3":14,"4":6,"5":14,"6":2,"7":18,"8":2,"9":2,"10":2,"11":6,"12":6,"13":6,"14":2,"15":2},"b":{"1":[364,0],"2":[4,14],"3":[8,6],"4":[2,0],"5":[4,2]},"f":{"1":364,"2":2,"3":18,"4":18,"5":6},"fnMap":{"1":{"name":"__ERC20BaseModule_init_unchained","line":30,"loc":{"start":{"line":28,"column":4},"end":{"line":32,"column":4}}},"2":{"name":"decimals","line":40,"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"transferBatch","line":56,"loc":{"start":{"line":56,"column":4},"end":{"line":80,"column":4}}},"4":{"name":"transferFrom","line":89,"loc":{"start":{"line":89,"column":4},"end":{"line":101,"column":4}}},"5":{"name":"approve","line":107,"loc":{"start":{"line":107,"column":4},"end":{"line":125,"column":4}}}},"statementMap":{"1":{"start":{"line":41,"column":8},"end":{"line":41,"column":24}},"2":{"start":{"line":60,"column":8},"end":{"line":60,"column":1917}},"3":{"start":{"line":65,"column":8},"end":{"line":65,"column":2134}},"4":{"start":{"line":69,"column":8},"end":{"line":69,"column":2269}},"5":{"start":{"line":72,"column":12},"end":{"line":72,"column":70}},"6":{"start":{"line":79,"column":8},"end":{"line":79,"column":19}},"7":{"start":{"line":94,"column":8},"end":{"line":94,"column":68}},"8":{"start":{"line":96,"column":8},"end":{"line":96,"column":3275}},"9":{"start":{"line":97,"column":12},"end":{"line":97,"column":49}},"10":{"start":{"line":100,"column":8},"end":{"line":100,"column":21}},"11":{"start":{"line":112,"column":8},"end":{"line":112,"column":36}},"12":{"start":{"line":113,"column":8},"end":{"line":113,"column":77}},"13":{"start":{"line":114,"column":8},"end":{"line":114,"column":3813}},"14":{"start":{"line":123,"column":8},"end":{"line":123,"column":55}},"15":{"start":{"line":124,"column":8},"end":{"line":124,"column":19}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":15},"end":{"line":30,"column":15}},{"start":{"line":30,"column":15},"end":{"line":30,"column":15}}]},"2":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"3":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":65,"column":8}},{"start":{"line":65,"column":8},"end":{"line":65,"column":8}}]},"4":{"line":96,"type":"if","locations":[{"start":{"line":96,"column":8},"end":{"line":96,"column":8}},{"start":{"line":96,"column":8},"end":{"line":96,"column":8}}]},"5":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":8}},{"start":{"line":114,"column":8},"end":{"line":114,"column":8}}]}}}, -"contracts/modules/wrapper/core/ERC20BurnModule.sol":{"l":{"33":12,"34":8,"56":20,"57":4,"61":16,"62":8,"65":8,"66":24,"67":20,"68":20,"69":20},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/ERC20BurnModule.sol","s":{"1":12,"2":8,"3":20,"4":16,"5":8,"6":24,"7":20},"b":{"1":[364,0],"2":[12,4],"3":[20,4],"4":[4,16],"5":[8,8]},"f":{"1":364,"2":12,"3":20},"fnMap":{"1":{"name":"__ERC20BurnModule_init_unchained","line":15,"loc":{"start":{"line":15,"column":4},"end":{"line":17,"column":4}}},"2":{"name":"forceBurn","line":32,"loc":{"start":{"line":28,"column":4},"end":{"line":35,"column":4}}},"3":{"name":"forceBurnBatch","line":55,"loc":{"start":{"line":51,"column":4},"end":{"line":72,"column":4}}}},"statementMap":{"1":{"start":{"line":33,"column":8},"end":{"line":33,"column":28}},"2":{"start":{"line":34,"column":8},"end":{"line":34,"column":41}},"3":{"start":{"line":56,"column":8},"end":{"line":56,"column":1967}},"4":{"start":{"line":61,"column":8},"end":{"line":61,"column":2189}},"5":{"start":{"line":65,"column":8},"end":{"line":65,"column":2329}},"6":{"start":{"line":66,"column":12},"end":{"line":66,"column":40}},"7":{"start":{"line":67,"column":12},"end":{"line":67,"column":53}}},"branchMap":{"1":{"line":15,"type":"if","locations":[{"start":{"line":15,"column":57},"end":{"line":15,"column":57}},{"start":{"line":15,"column":57},"end":{"line":15,"column":57}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":13},"end":{"line":32,"column":13}},{"start":{"line":32,"column":13},"end":{"line":32,"column":13}}]},"3":{"line":55,"type":"if","locations":[{"start":{"line":55,"column":13},"end":{"line":55,"column":13}},{"start":{"line":55,"column":13},"end":{"line":55,"column":13}}]},"4":{"line":56,"type":"if","locations":[{"start":{"line":56,"column":8},"end":{"line":56,"column":8}},{"start":{"line":56,"column":8},"end":{"line":56,"column":8}}]},"5":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]}}}, -"contracts/modules/wrapper/core/ERC20MintModule.sol":{"l":{"32":246,"33":246,"55":30,"56":4,"60":26,"61":8,"64":18,"65":54,"66":54,"67":54,"68":54},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/ERC20MintModule.sol","s":{"1":246,"2":246,"3":30,"4":26,"5":18,"6":54,"7":54},"b":{"1":[364,0],"2":[246,4],"3":[30,4],"4":[4,26],"5":[8,18]},"f":{"1":364,"2":246,"3":30},"fnMap":{"1":{"name":"__ERC20MintModule_init_unchained","line":16,"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":4}}},"2":{"name":"mint","line":31,"loc":{"start":{"line":31,"column":4},"end":{"line":34,"column":4}}},"3":{"name":"mintBatch","line":54,"loc":{"start":{"line":51,"column":4},"end":{"line":71,"column":4}}}},"statementMap":{"1":{"start":{"line":32,"column":8},"end":{"line":32,"column":28}},"2":{"start":{"line":33,"column":8},"end":{"line":33,"column":33}},"3":{"start":{"line":55,"column":8},"end":{"line":55,"column":1982}},"4":{"start":{"line":60,"column":8},"end":{"line":60,"column":2204}},"5":{"start":{"line":64,"column":8},"end":{"line":64,"column":2344}},"6":{"start":{"line":65,"column":12},"end":{"line":65,"column":40}},"7":{"start":{"line":66,"column":12},"end":{"line":66,"column":45}}},"branchMap":{"1":{"line":16,"type":"if","locations":[{"start":{"line":16,"column":57},"end":{"line":16,"column":57}},{"start":{"line":16,"column":57},"end":{"line":16,"column":57}}]},"2":{"line":31,"type":"if","locations":[{"start":{"line":31,"column":57},"end":{"line":31,"column":57}},{"start":{"line":31,"column":57},"end":{"line":31,"column":57}}]},"3":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":13},"end":{"line":54,"column":13}},{"start":{"line":54,"column":13},"end":{"line":54,"column":13}}]},"4":{"line":55,"type":"if","locations":[{"start":{"line":55,"column":8},"end":{"line":55,"column":8}},{"start":{"line":55,"column":8},"end":{"line":55,"column":8}}]},"5":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]}}}, -"contracts/modules/wrapper/core/PauseModule.sol":{"l":{"39":14,"51":8,"52":4,"54":4,"70":2,"71":2,"72":2,"79":4},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/PauseModule.sol","s":{"1":14,"2":8,"3":4,"4":2,"5":2,"6":4},"b":{"1":[364,0],"2":[14,6],"3":[8,4],"4":[4,4],"5":[2,4]},"f":{"1":364,"2":14,"3":8,"4":2,"5":4},"fnMap":{"1":{"name":"__PauseModule_init_unchained","line":25,"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":4}}},"2":{"name":"pause","line":38,"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":4}}},"3":{"name":"unpause","line":50,"loc":{"start":{"line":50,"column":4},"end":{"line":55,"column":4}}},"4":{"name":"deactivateContract","line":68,"loc":{"start":{"line":66,"column":4},"end":{"line":73,"column":4}}},"5":{"name":"deactivated","line":78,"loc":{"start":{"line":78,"column":4},"end":{"line":80,"column":4}}}},"statementMap":{"1":{"start":{"line":39,"column":8},"end":{"line":39,"column":15}},"2":{"start":{"line":51,"column":8},"end":{"line":51,"column":1637}},"3":{"start":{"line":54,"column":8},"end":{"line":54,"column":17}},"4":{"start":{"line":71,"column":7},"end":{"line":71,"column":14}},"5":{"start":{"line":72,"column":7},"end":{"line":72,"column":37}},"6":{"start":{"line":79,"column":8},"end":{"line":79,"column":28}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":53},"end":{"line":25,"column":53}},{"start":{"line":25,"column":53},"end":{"line":25,"column":53}}]},"2":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":28},"end":{"line":38,"column":28}},{"start":{"line":38,"column":28},"end":{"line":38,"column":28}}]},"3":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":30},"end":{"line":50,"column":30}},{"start":{"line":50,"column":30},"end":{"line":50,"column":30}}]},"4":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":8},"end":{"line":51,"column":8}},{"start":{"line":51,"column":8},"end":{"line":51,"column":8}}]},"5":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":68,"column":8}},{"start":{"line":68,"column":8},"end":{"line":68,"column":8}}]}}}, -"contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol":{"l":{"38":2,"39":2,"40":2,"41":2,"50":6,"51":4,"53":2,"54":2,"63":6,"64":4,"66":2,"67":2,"76":2,"77":2},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2,"6":6,"7":2,"8":2},"b":{"1":[364,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4]},"f":{"1":364,"2":2,"3":6,"4":6,"5":2},"fnMap":{"1":{"name":"__CreditEvents_init_unchained","line":25,"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":4}}},"2":{"name":"setCreditEvents","line":37,"loc":{"start":{"line":33,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"setFlagDefault","line":49,"loc":{"start":{"line":47,"column":4},"end":{"line":55,"column":4}}},"4":{"name":"setFlagRedeemed","line":62,"loc":{"start":{"line":60,"column":4},"end":{"line":68,"column":4}}},"5":{"name":"setRating","line":75,"loc":{"start":{"line":73,"column":4},"end":{"line":78,"column":4}}}},"statementMap":{"1":{"start":{"line":39,"column":8},"end":{"line":39,"column":38}},"2":{"start":{"line":40,"column":8},"end":{"line":40,"column":40}},"3":{"start":{"line":41,"column":8},"end":{"line":41,"column":37}},"4":{"start":{"line":50,"column":8},"end":{"line":50,"column":1670}},"5":{"start":{"line":54,"column":8},"end":{"line":54,"column":38}},"6":{"start":{"line":63,"column":8},"end":{"line":63,"column":2113}},"7":{"start":{"line":67,"column":8},"end":{"line":67,"column":40}},"8":{"start":{"line":77,"column":8},"end":{"line":77,"column":37}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":54},"end":{"line":25,"column":54}},{"start":{"line":25,"column":54},"end":{"line":25,"column":54}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":13},"end":{"line":37,"column":13}},{"start":{"line":37,"column":13},"end":{"line":37,"column":13}}]},"3":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":13},"end":{"line":49,"column":13}},{"start":{"line":49,"column":13},"end":{"line":49,"column":13}}]},"4":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":50,"column":8}},{"start":{"line":50,"column":8},"end":{"line":50,"column":8}}]},"5":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":13},"end":{"line":62,"column":13}},{"start":{"line":62,"column":13},"end":{"line":62,"column":13}}]},"6":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":8}},{"start":{"line":63,"column":8},"end":{"line":63,"column":8}}]},"7":{"line":75,"type":"if","locations":[{"start":{"line":75,"column":13},"end":{"line":75,"column":13}},{"start":{"line":75,"column":13},"end":{"line":75,"column":13}}]}}}, -"contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol":{"l":{"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"77":2,"81":2,"85":2,"89":2,"94":2,"96":2,"103":6,"104":4,"106":2,"107":2,"114":6,"115":4,"117":2,"118":2,"127":2,"128":2,"137":2,"138":2,"147":2,"148":2,"157":2,"158":2,"170":2,"171":2,"180":2,"181":2,"190":2,"191":2,"203":2,"204":2,"216":2,"217":2,"226":2,"227":2},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol","s":{"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":6,"14":2,"15":6,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2},"b":{"1":[364,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4],"8":[2,4],"9":[2,4],"10":[2,4],"11":[2,4],"12":[2,4],"13":[2,4],"14":[2,4],"15":[2,4],"16":[2,4]},"f":{"1":364,"2":2,"3":6,"4":6,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2},"fnMap":{"1":{"name":"__DebtBaseModule_init_unchained","line":58,"loc":{"start":{"line":58,"column":4},"end":{"line":60,"column":4}}},"2":{"name":"setDebt","line":66,"loc":{"start":{"line":66,"column":4},"end":{"line":97,"column":4}}},"3":{"name":"setInterestRate","line":102,"loc":{"start":{"line":102,"column":4},"end":{"line":108,"column":4}}},"4":{"name":"setParValue","line":113,"loc":{"start":{"line":113,"column":4},"end":{"line":119,"column":4}}},"5":{"name":"setGuarantor","line":126,"loc":{"start":{"line":124,"column":4},"end":{"line":129,"column":4}}},"6":{"name":"setBondHolder","line":136,"loc":{"start":{"line":134,"column":4},"end":{"line":139,"column":4}}},"7":{"name":"setMaturityDate","line":146,"loc":{"start":{"line":144,"column":4},"end":{"line":149,"column":4}}},"8":{"name":"setInterestScheduleFormat","line":156,"loc":{"start":{"line":154,"column":4},"end":{"line":162,"column":4}}},"9":{"name":"setInterestPaymentDate","line":169,"loc":{"start":{"line":167,"column":4},"end":{"line":172,"column":4}}},"10":{"name":"setDayCountConvention","line":179,"loc":{"start":{"line":177,"column":4},"end":{"line":182,"column":4}}},"11":{"name":"setBusinessDayConvention","line":189,"loc":{"start":{"line":187,"column":4},"end":{"line":195,"column":4}}},"12":{"name":"setPublicHolidaysCalendar","line":202,"loc":{"start":{"line":200,"column":4},"end":{"line":208,"column":4}}},"13":{"name":"setIssuanceDate","line":215,"loc":{"start":{"line":213,"column":4},"end":{"line":218,"column":4}}},"14":{"name":"setCouponFrequency","line":225,"loc":{"start":{"line":223,"column":4},"end":{"line":228,"column":4}}}},"statementMap":{"1":{"start":{"line":68,"column":8},"end":{"line":68,"column":45}},"2":{"start":{"line":69,"column":8},"end":{"line":69,"column":37}},"3":{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},"4":{"start":{"line":71,"column":8},"end":{"line":71,"column":59}},"5":{"start":{"line":72,"column":8},"end":{"line":72,"column":65}},"6":{"start":{"line":73,"column":8},"end":{"line":73,"column":2501}},"7":{"start":{"line":77,"column":8},"end":{"line":77,"column":2632}},"8":{"start":{"line":81,"column":8},"end":{"line":81,"column":2754}},"9":{"start":{"line":85,"column":8},"end":{"line":85,"column":2873}},"10":{"start":{"line":89,"column":8},"end":{"line":89,"column":3001}},"11":{"start":{"line":94,"column":8},"end":{"line":94,"column":65}},"12":{"start":{"line":96,"column":8},"end":{"line":96,"column":74}},"13":{"start":{"line":103,"column":8},"end":{"line":103,"column":3480}},"14":{"start":{"line":107,"column":8},"end":{"line":107,"column":40}},"15":{"start":{"line":114,"column":8},"end":{"line":114,"column":3873}},"16":{"start":{"line":118,"column":8},"end":{"line":118,"column":32}},"17":{"start":{"line":128,"column":8},"end":{"line":128,"column":46}},"18":{"start":{"line":138,"column":8},"end":{"line":138,"column":49}},"19":{"start":{"line":148,"column":8},"end":{"line":148,"column":55}},"20":{"start":{"line":158,"column":8},"end":{"line":158,"column":5291}},"21":{"start":{"line":171,"column":8},"end":{"line":171,"column":76}},"22":{"start":{"line":181,"column":8},"end":{"line":181,"column":73}},"23":{"start":{"line":191,"column":8},"end":{"line":191,"column":6470}},"24":{"start":{"line":204,"column":8},"end":{"line":204,"column":6902}},"25":{"start":{"line":217,"column":8},"end":{"line":217,"column":55}},"26":{"start":{"line":227,"column":8},"end":{"line":227,"column":64}}},"branchMap":{"1":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":56},"end":{"line":58,"column":56}},{"start":{"line":58,"column":56},"end":{"line":58,"column":56}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":53},"end":{"line":66,"column":53}},{"start":{"line":66,"column":53},"end":{"line":66,"column":53}}]},"3":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":59},"end":{"line":102,"column":59}},{"start":{"line":102,"column":59},"end":{"line":102,"column":59}}]},"4":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":8},"end":{"line":103,"column":8}},{"start":{"line":103,"column":8},"end":{"line":103,"column":8}}]},"5":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":51},"end":{"line":113,"column":51}},{"start":{"line":113,"column":51},"end":{"line":113,"column":51}}]},"6":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":8}},{"start":{"line":114,"column":8},"end":{"line":114,"column":8}}]},"7":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":13},"end":{"line":126,"column":13}},{"start":{"line":126,"column":13},"end":{"line":126,"column":13}}]},"8":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":13},"end":{"line":136,"column":13}},{"start":{"line":136,"column":13},"end":{"line":136,"column":13}}]},"9":{"line":146,"type":"if","locations":[{"start":{"line":146,"column":13},"end":{"line":146,"column":13}},{"start":{"line":146,"column":13},"end":{"line":146,"column":13}}]},"10":{"line":156,"type":"if","locations":[{"start":{"line":156,"column":13},"end":{"line":156,"column":13}},{"start":{"line":156,"column":13},"end":{"line":156,"column":13}}]},"11":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":13},"end":{"line":169,"column":13}},{"start":{"line":169,"column":13},"end":{"line":169,"column":13}}]},"12":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":13},"end":{"line":179,"column":13}},{"start":{"line":179,"column":13},"end":{"line":179,"column":13}}]},"13":{"line":189,"type":"if","locations":[{"start":{"line":189,"column":13},"end":{"line":189,"column":13}},{"start":{"line":189,"column":13},"end":{"line":189,"column":13}}]},"14":{"line":202,"type":"if","locations":[{"start":{"line":202,"column":13},"end":{"line":202,"column":13}},{"start":{"line":202,"column":13},"end":{"line":202,"column":13}}]},"15":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":13},"end":{"line":215,"column":13}},{"start":{"line":215,"column":13},"end":{"line":215,"column":13}}]},"16":{"line":225,"type":"if","locations":[{"start":{"line":225,"column":13},"end":{"line":225,"column":13}},{"start":{"line":225,"column":13},"end":{"line":225,"column":13}}]}}}, -"contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol":{"l":{"29":170,"40":16,"52":38,"63":18,"73":12},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol","s":{"1":170,"2":16,"3":38,"4":18,"5":12},"b":{"1":[86,0],"2":[170,4],"3":[16,4],"4":[38,4],"5":[18,4],"6":[12,4]},"f":{"1":86,"2":170,"3":16,"4":38,"5":18,"6":12},"fnMap":{"1":{"name":"__ERC20SnasphotModule_init_unchained","line":19,"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":4}}},"2":{"name":"scheduleSnapshot","line":28,"loc":{"start":{"line":28,"column":4},"end":{"line":30,"column":4}}},"3":{"name":"scheduleSnapshotNotOptimized","line":39,"loc":{"start":{"line":37,"column":4},"end":{"line":41,"column":4}}},"4":{"name":"rescheduleSnapshot","line":51,"loc":{"start":{"line":48,"column":4},"end":{"line":53,"column":4}}},"5":{"name":"unscheduleLastSnapshot","line":62,"loc":{"start":{"line":60,"column":4},"end":{"line":64,"column":4}}},"6":{"name":"unscheduleSnapshotNotOptimized","line":72,"loc":{"start":{"line":70,"column":4},"end":{"line":74,"column":4}}}},"statementMap":{"1":{"start":{"line":29,"column":8},"end":{"line":29,"column":30}},"2":{"start":{"line":40,"column":8},"end":{"line":40,"column":42}},"3":{"start":{"line":52,"column":8},"end":{"line":52,"column":44}},"4":{"start":{"line":63,"column":8},"end":{"line":63,"column":36}},"5":{"start":{"line":73,"column":8},"end":{"line":73,"column":44}}},"branchMap":{"1":{"line":19,"type":"if","locations":[{"start":{"line":19,"column":61},"end":{"line":19,"column":61}},{"start":{"line":19,"column":61},"end":{"line":19,"column":61}}]},"2":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":51},"end":{"line":28,"column":51}},{"start":{"line":28,"column":51},"end":{"line":28,"column":51}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":13},"end":{"line":39,"column":13}},{"start":{"line":39,"column":13},"end":{"line":39,"column":13}}]},"4":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":13},"end":{"line":51,"column":13}},{"start":{"line":51,"column":13},"end":{"line":51,"column":13}}]},"5":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":13},"end":{"line":62,"column":13}},{"start":{"line":62,"column":13},"end":{"line":62,"column":13}}]},"6":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":13},"end":{"line":72,"column":13}},{"start":{"line":72,"column":13},"end":{"line":72,"column":13}}]}}}, -"contracts/modules/wrapper/extensions/MetaTxModule.sol":{"l":{"30":1455,"40":0},"path":"/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/MetaTxModule.sol","s":{"1":1455,"2":0},"b":{},"f":{"1":189,"2":1455,"3":0},"fnMap":{"1":{"name":"constructor","line":19,"loc":{"start":{"line":17,"column":4},"end":{"line":21,"column":4}}},"2":{"name":"_msgSender","line":23,"loc":{"start":{"line":23,"column":4},"end":{"line":31,"column":4}}},"3":{"name":"_msgData","line":33,"loc":{"start":{"line":33,"column":4},"end":{"line":41,"column":4}}}},"statementMap":{"1":{"start":{"line":30,"column":8},"end":{"line":30,"column":53}},"2":{"start":{"line":40,"column":8},"end":{"line":40,"column":51}}},"branchMap":{}}, -"contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol":{"l":{"60":86,"91":86,"92":86,"94":86,"96":86,"97":86,"100":86,"105":86,"107":86,"111":86,"112":86,"113":86,"114":86,"116":86,"117":86,"119":86,"120":86,"126":86,"129":86,"130":86,"131":86,"134":86,"151":0,"164":0,"180":66,"181":0,"189":66,"201":426,"213":0},"path":"/home/ryan/Pictures/CMTAT/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol","s":{"1":86,"2":86,"3":86,"4":86,"5":86,"6":86,"7":86,"8":86,"9":86,"10":86,"11":86,"12":86,"13":86,"14":86,"15":86,"16":86,"17":86,"18":86,"19":86,"20":86,"21":86,"22":86,"23":0,"24":0,"25":66,"26":66,"27":426,"28":0},"b":{"1":[86,0],"2":[86,0],"3":[86,0],"4":[0,66]},"f":{"1":86,"2":86,"3":86,"4":0,"5":0,"6":66,"7":426,"8":0},"fnMap":{"1":{"name":"initialize","line":59,"loc":{"start":{"line":48,"column":4},"end":{"line":72,"column":4}}},"2":{"name":"__CMTAT_init","line":88,"loc":{"start":{"line":77,"column":4},"end":{"line":135,"column":4}}},"3":{"name":"__CMTAT_init_unchained","line":137,"loc":{"start":{"line":137,"column":4},"end":{"line":139,"column":4}}},"4":{"name":"decimals","line":144,"loc":{"start":{"line":144,"column":4},"end":{"line":152,"column":4}}},"5":{"name":"transferFrom","line":154,"loc":{"start":{"line":154,"column":4},"end":{"line":165,"column":4}}},"6":{"name":"_update","line":174,"loc":{"start":{"line":174,"column":4},"end":{"line":190,"column":4}}},"7":{"name":"_msgSender","line":195,"loc":{"start":{"line":195,"column":4},"end":{"line":202,"column":4}}},"8":{"name":"_msgData","line":207,"loc":{"start":{"line":207,"column":4},"end":{"line":214,"column":4}}}},"statementMap":{"1":{"start":{"line":60,"column":8},"end":{"line":60,"column":2002}},"2":{"start":{"line":91,"column":8},"end":{"line":91,"column":33}},"3":{"start":{"line":92,"column":8},"end":{"line":92,"column":65}},"4":{"start":{"line":94,"column":8},"end":{"line":94,"column":32}},"5":{"start":{"line":96,"column":8},"end":{"line":96,"column":39}},"6":{"start":{"line":97,"column":8},"end":{"line":97,"column":34}},"7":{"start":{"line":100,"column":8},"end":{"line":100,"column":37}},"8":{"start":{"line":105,"column":8},"end":{"line":105,"column":39}},"9":{"start":{"line":107,"column":8},"end":{"line":107,"column":47}},"10":{"start":{"line":111,"column":8},"end":{"line":111,"column":45}},"11":{"start":{"line":112,"column":8},"end":{"line":112,"column":92}},"12":{"start":{"line":113,"column":8},"end":{"line":113,"column":41}},"13":{"start":{"line":114,"column":8},"end":{"line":114,"column":41}},"14":{"start":{"line":116,"column":8},"end":{"line":116,"column":43}},"15":{"start":{"line":117,"column":8},"end":{"line":117,"column":60}},"16":{"start":{"line":119,"column":8},"end":{"line":119,"column":37}},"17":{"start":{"line":120,"column":8},"end":{"line":120,"column":42}},"18":{"start":{"line":126,"column":8},"end":{"line":126,"column":45}},"19":{"start":{"line":129,"column":8},"end":{"line":129,"column":40}},"20":{"start":{"line":130,"column":8},"end":{"line":130,"column":38}},"21":{"start":{"line":131,"column":8},"end":{"line":131,"column":67}},"22":{"start":{"line":134,"column":8},"end":{"line":134,"column":31}},"23":{"start":{"line":151,"column":8},"end":{"line":151,"column":41}},"24":{"start":{"line":164,"column":8},"end":{"line":164,"column":70}},"25":{"start":{"line":180,"column":8},"end":{"line":180,"column":5890}},"26":{"start":{"line":189,"column":8},"end":{"line":189,"column":60}},"27":{"start":{"line":201,"column":8},"end":{"line":201,"column":40}},"28":{"start":{"line":213,"column":8},"end":{"line":213,"column":38}}},"branchMap":{"1":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":13},"end":{"line":59,"column":13}},{"start":{"line":59,"column":13},"end":{"line":59,"column":13}}]},"2":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":15},"end":{"line":88,"column":15}},{"start":{"line":88,"column":15},"end":{"line":88,"column":15}}]},"3":{"line":137,"type":"if","locations":[{"start":{"line":137,"column":47},"end":{"line":137,"column":47}},{"start":{"line":137,"column":47},"end":{"line":137,"column":47}}]},"4":{"line":180,"type":"if","locations":[{"start":{"line":180,"column":8},"end":{"line":180,"column":8}},{"start":{"line":180,"column":8},"end":{"line":180,"column":8}}]}}}, -"contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol":{"l":{"17":1},"path":"/home/ryan/Pictures/CMTAT/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol","s":{"1":1},"b":{},"f":{"1":1},"fnMap":{"1":{"name":"constructor","line":15,"loc":{"start":{"line":13,"column":4},"end":{"line":18,"column":4}}}},"statementMap":{"1":{"start":{"line":17,"column":8},"end":{"line":17,"column":29}}},"branchMap":{}}, -"contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol":{"l":{"36":43},"path":"/home/ryan/Pictures/CMTAT/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol","s":{"1":43},"b":{},"f":{"1":43},"fnMap":{"1":{"name":"constructor","line":33,"loc":{"start":{"line":21,"column":4},"end":{"line":48,"column":4}}}},"statementMap":{"1":{"start":{"line":36,"column":8},"end":{"line":36,"column":1399}}},"branchMap":{}}, -"contracts/test/proxy/CMTAT_PROXY.sol":{"l":{},"path":"/home/ryan/Pictures/CMTAT/contracts/test/proxy/CMTAT_PROXY.sol","s":{},"b":{},"f":{"1":1},"fnMap":{"1":{"name":"constructor","line":18,"loc":{"start":{"line":16,"column":4},"end":{"line":20,"column":4}}}},"statementMap":{},"branchMap":{}}} +"contracts/CMTAT_PROXY.sol":{"l":{"17":15},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_PROXY.sol","s":{"1":15},"b":{},"f":{"1":15},"fnMap":{"1":{"name":"constructor","line":15,"loc":{"start":{"line":13,"column":4},"end":{"line":18,"column":4}}}},"statementMap":{"1":{"start":{"line":17,"column":8},"end":{"line":17,"column":29}}},"branchMap":{}}, +"contracts/CMTAT_STANDALONE.sol":{"l":{"38":189},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_STANDALONE.sol","s":{"1":189},"b":{},"f":{"1":189},"fnMap":{"1":{"name":"constructor","line":35,"loc":{"start":{"line":23,"column":4},"end":{"line":50,"column":4}}}},"statementMap":{"1":{"start":{"line":38,"column":8},"end":{"line":38,"column":1611}}},"branchMap":{}}, +"contracts/deployment/CMTAT_BEACON_FACTORY.sol":{"l":{"33":9,"34":2,"36":7,"37":2,"39":5,"40":2,"42":3,"43":3,"44":3,"64":2,"80":2,"81":2,"82":2,"83":2,"84":2,"92":1,"100":1},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_BEACON_FACTORY.sol","s":{"1":9,"2":7,"3":5,"4":3,"5":3,"6":2,"7":2,"8":2,"9":1,"10":1},"b":{"1":[2,7],"2":[2,5],"3":[2,3],"4":[2,2]},"f":{"1":9,"2":2,"3":1,"4":1},"fnMap":{"1":{"name":"constructor","line":32,"loc":{"start":{"line":32,"column":4},"end":{"line":45,"column":4}}},"2":{"name":"deployCMTAT","line":63,"loc":{"start":{"line":51,"column":4},"end":{"line":85,"column":4}}},"3":{"name":"getAddress","line":91,"loc":{"start":{"line":91,"column":4},"end":{"line":93,"column":4}}},"4":{"name":"implementation","line":99,"loc":{"start":{"line":99,"column":4},"end":{"line":101,"column":4}}}},"statementMap":{"1":{"start":{"line":33,"column":8},"end":{"line":33,"column":1058}},"2":{"start":{"line":36,"column":8},"end":{"line":36,"column":1196}},"3":{"start":{"line":39,"column":8},"end":{"line":39,"column":1332}},"4":{"start":{"line":43,"column":8},"end":{"line":43,"column":51}},"5":{"start":{"line":44,"column":8},"end":{"line":44,"column":52}},"6":{"start":{"line":81,"column":8},"end":{"line":81,"column":50}},"7":{"start":{"line":83,"column":8},"end":{"line":83,"column":38}},"8":{"start":{"line":84,"column":8},"end":{"line":84,"column":20}},"9":{"start":{"line":92,"column":8},"end":{"line":92,"column":31}},"10":{"start":{"line":100,"column":8},"end":{"line":100,"column":38}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":8},"end":{"line":33,"column":8}},{"start":{"line":33,"column":8},"end":{"line":33,"column":8}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":8},"end":{"line":36,"column":8}},{"start":{"line":36,"column":8},"end":{"line":36,"column":8}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":39,"column":8}},{"start":{"line":39,"column":8},"end":{"line":39,"column":8}}]},"4":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":13},"end":{"line":63,"column":13}},{"start":{"line":63,"column":13},"end":{"line":63,"column":13}}]}}}, +"contracts/deployment/CMTAT_TP_FACTORY.sol":{"l":{"30":7,"31":2,"33":5,"34":2,"36":3,"37":3,"38":3,"55":2,"72":2,"73":2,"74":2,"75":2,"76":2,"84":1},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_TP_FACTORY.sol","s":{"1":7,"2":5,"3":3,"4":3,"5":2,"6":2,"7":2,"8":1},"b":{"1":[2,5],"2":[2,3],"3":[2,2]},"f":{"1":7,"2":2,"3":1},"fnMap":{"1":{"name":"constructor","line":29,"loc":{"start":{"line":29,"column":4},"end":{"line":39,"column":4}}},"2":{"name":"deployCMTAT","line":54,"loc":{"start":{"line":41,"column":4},"end":{"line":77,"column":4}}},"3":{"name":"getAddress","line":83,"loc":{"start":{"line":83,"column":4},"end":{"line":85,"column":4}}}},"statementMap":{"1":{"start":{"line":30,"column":8},"end":{"line":30,"column":889}},"2":{"start":{"line":33,"column":8},"end":{"line":33,"column":1022}},"3":{"start":{"line":37,"column":8},"end":{"line":37,"column":51}},"4":{"start":{"line":38,"column":8},"end":{"line":38,"column":52}},"5":{"start":{"line":73,"column":8},"end":{"line":73,"column":43}},"6":{"start":{"line":75,"column":8},"end":{"line":75,"column":38}},"7":{"start":{"line":76,"column":8},"end":{"line":76,"column":20}},"8":{"start":{"line":84,"column":8},"end":{"line":84,"column":31}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":8},"end":{"line":30,"column":8}},{"start":{"line":30,"column":8},"end":{"line":30,"column":8}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":8},"end":{"line":33,"column":8}},{"start":{"line":33,"column":8},"end":{"line":33,"column":8}}]},"3":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":13},"end":{"line":54,"column":13}},{"start":{"line":54,"column":13},"end":{"line":54,"column":13}}]}}}, +"contracts/interfaces/draft-IERC1404/draft-IERC1404.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/interfaces/engine/IAuthorizationEngine.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/engine/IAuthorizationEngine.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/interfaces/engine/IRuleEngine.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/engine/IRuleEngine.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/interfaces/ICCIPToken.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/ICCIPToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/interfaces/ICMTATSnapshot.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/ICMTATSnapshot.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/interfaces/IDebtGlobal.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/IDebtGlobal.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/libraries/Errors.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/libraries/Errors.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/libraries/FactoryErrors.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/libraries/FactoryErrors.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}}, +"contracts/modules/CMTAT_BASE.sol":{"l":{"70":387,"101":387,"102":387,"104":387,"106":387,"107":387,"110":387,"115":387,"116":387,"118":387,"122":387,"123":384,"124":384,"126":384,"127":384,"129":384,"130":384,"136":384,"140":384,"141":384,"142":384,"145":384,"162":2,"175":18,"190":10,"191":6,"203":464,"204":34,"211":430,"212":430,"225":1591,"234":1591,"246":0},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/CMTAT_BASE.sol","s":{"1":387,"2":387,"3":387,"4":387,"5":387,"6":387,"7":387,"8":387,"9":387,"10":387,"11":387,"12":384,"13":384,"14":384,"15":384,"16":384,"17":384,"18":384,"19":384,"20":384,"21":384,"22":384,"23":2,"24":18,"25":10,"26":6,"27":464,"28":430,"29":430,"30":1591,"31":1591,"32":0},"b":{"1":[387,2],"2":[387,0],"3":[384,0],"4":[34,430]},"f":{"1":387,"2":387,"3":384,"4":2,"5":18,"6":10,"7":464,"8":1591,"9":1591,"10":0},"fnMap":{"1":{"name":"initialize","line":69,"loc":{"start":{"line":58,"column":4},"end":{"line":82,"column":4}}},"2":{"name":"__CMTAT_init","line":98,"loc":{"start":{"line":87,"column":4},"end":{"line":146,"column":4}}},"3":{"name":"__CMTAT_init_unchained","line":148,"loc":{"start":{"line":148,"column":4},"end":{"line":150,"column":4}}},"4":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":4},"end":{"line":163,"column":4}}},"5":{"name":"transferFrom","line":165,"loc":{"start":{"line":165,"column":4},"end":{"line":176,"column":4}}},"6":{"name":"burnAndMint","line":189,"loc":{"start":{"line":189,"column":4},"end":{"line":192,"column":4}}},"7":{"name":"_update","line":198,"loc":{"start":{"line":198,"column":4},"end":{"line":213,"column":4}}},"8":{"name":"_msgSender","line":219,"loc":{"start":{"line":219,"column":4},"end":{"line":226,"column":4}}},"9":{"name":"_contextSuffixLength","line":231,"loc":{"start":{"line":231,"column":4},"end":{"line":235,"column":4}}},"10":{"name":"_msgData","line":240,"loc":{"start":{"line":240,"column":4},"end":{"line":247,"column":4}}}},"statementMap":{"1":{"start":{"line":70,"column":8},"end":{"line":70,"column":2538}},"2":{"start":{"line":101,"column":8},"end":{"line":101,"column":33}},"3":{"start":{"line":102,"column":8},"end":{"line":102,"column":65}},"4":{"start":{"line":104,"column":8},"end":{"line":104,"column":32}},"5":{"start":{"line":106,"column":8},"end":{"line":106,"column":39}},"6":{"start":{"line":107,"column":8},"end":{"line":107,"column":34}},"7":{"start":{"line":110,"column":8},"end":{"line":110,"column":37}},"8":{"start":{"line":115,"column":8},"end":{"line":115,"column":44}},"9":{"start":{"line":116,"column":8},"end":{"line":116,"column":39}},"10":{"start":{"line":118,"column":8},"end":{"line":118,"column":47}},"11":{"start":{"line":122,"column":8},"end":{"line":122,"column":82}},"12":{"start":{"line":123,"column":8},"end":{"line":123,"column":41}},"13":{"start":{"line":124,"column":8},"end":{"line":124,"column":41}},"14":{"start":{"line":126,"column":8},"end":{"line":126,"column":43}},"15":{"start":{"line":127,"column":8},"end":{"line":127,"column":60}},"16":{"start":{"line":129,"column":8},"end":{"line":129,"column":37}},"17":{"start":{"line":130,"column":8},"end":{"line":130,"column":42}},"18":{"start":{"line":136,"column":8},"end":{"line":136,"column":45}},"19":{"start":{"line":140,"column":8},"end":{"line":140,"column":40}},"20":{"start":{"line":141,"column":8},"end":{"line":141,"column":38}},"21":{"start":{"line":142,"column":8},"end":{"line":142,"column":67}},"22":{"start":{"line":145,"column":8},"end":{"line":145,"column":31}},"23":{"start":{"line":162,"column":8},"end":{"line":162,"column":41}},"24":{"start":{"line":175,"column":8},"end":{"line":175,"column":70}},"25":{"start":{"line":190,"column":8},"end":{"line":190,"column":39}},"26":{"start":{"line":191,"column":8},"end":{"line":191,"column":29}},"27":{"start":{"line":203,"column":8},"end":{"line":203,"column":6833}},"28":{"start":{"line":211,"column":8},"end":{"line":211,"column":60}},"29":{"start":{"line":212,"column":8},"end":{"line":212,"column":49}},"30":{"start":{"line":225,"column":8},"end":{"line":225,"column":53}},"31":{"start":{"line":234,"column":9},"end":{"line":234,"column":64}},"32":{"start":{"line":246,"column":8},"end":{"line":246,"column":51}}},"branchMap":{"1":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":13},"end":{"line":69,"column":13}},{"start":{"line":69,"column":13},"end":{"line":69,"column":13}}]},"2":{"line":98,"type":"if","locations":[{"start":{"line":98,"column":15},"end":{"line":98,"column":15}},{"start":{"line":98,"column":15},"end":{"line":98,"column":15}}]},"3":{"line":148,"type":"if","locations":[{"start":{"line":148,"column":47},"end":{"line":148,"column":47}},{"start":{"line":148,"column":47},"end":{"line":148,"column":47}}]},"4":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":8},"end":{"line":203,"column":8}},{"start":{"line":203,"column":8},"end":{"line":203,"column":8}}]}}}, +"contracts/modules/internal/base/SnapshotModuleBase.sol":{"l":{"75":2,"83":76,"85":76,"86":68,"91":68,"92":48,"95":20,"97":8,"100":8,"102":8,"103":12,"110":28,"120":176,"121":4,"127":172,"129":98,"132":98,"133":4,"139":4,"142":164,"143":164,"150":16,"151":4,"156":12,"158":12,"159":4,"162":8,"163":2,"165":6,"168":6,"169":10,"170":10,"171":10,"174":6,"176":8,"184":38,"185":4,"187":34,"188":4,"193":30,"194":4,"196":26,"197":26,"198":8,"200":18,"201":14,"202":14,"203":4,"209":4,"212":10,"213":6,"214":4,"220":6,"222":6,"230":18,"231":4,"233":14,"234":4,"237":10,"238":4,"240":6,"241":6,"251":16,"252":4,"254":12,"255":12,"256":4,"259":8,"260":16,"262":8,"290":1920,"292":1920,"293":1484,"295":436,"309":860,"310":860,"311":36,"312":36,"322":430,"326":430,"327":18,"328":18,"338":860,"339":852,"341":8,"352":50,"353":50,"355":50,"359":30,"363":10,"367":10,"380":498,"382":498,"386":412,"389":86,"390":86,"392":86,"393":116,"394":52,"395":52,"398":64,"401":86},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/base/SnapshotModuleBase.sol","s":{"1":2,"2":76,"3":76,"4":68,"5":68,"6":48,"7":20,"8":8,"9":8,"10":28,"11":176,"12":172,"13":98,"14":98,"15":94,"16":164,"17":164,"18":16,"19":12,"20":12,"21":8,"22":2,"23":6,"24":6,"25":8,"26":38,"27":34,"28":30,"29":26,"30":26,"31":18,"32":14,"33":14,"34":10,"35":10,"36":6,"37":6,"38":18,"39":14,"40":10,"41":6,"42":6,"43":16,"44":12,"45":12,"46":8,"47":8,"48":1920,"49":1920,"50":1484,"51":436,"52":860,"53":860,"54":36,"55":36,"56":430,"57":430,"58":860,"59":852,"60":8,"61":50,"62":50,"63":50,"64":30,"65":20,"66":10,"67":10,"68":498,"69":498,"70":412,"71":86,"72":86,"73":116,"74":86},"b":{"1":[387,0],"2":[68,8],"3":[48,20],"4":[8,12],"5":[4,172],"6":[98,74],"7":[4,94],"8":[4,90],"9":[4,12],"10":[4,8],"11":[2,6],"12":[4,34],"13":[4,30],"14":[4,26],"15":[8,18],"16":[14,4],"17":[4,10],"18":[4,6],"19":[6,4],"20":[4,2],"21":[4,14],"22":[4,10],"23":[4,6],"24":[4,12],"25":[4,8],"26":[1484,436],"27":[36,824],"28":[18,412],"29":[852,8],"30":[30,20],"31":[10,10],"32":[412,86],"33":[412,0],"34":[52,64]},"f":{"1":387,"2":2,"3":76,"4":176,"5":16,"6":38,"7":18,"8":16,"9":1920,"10":860,"11":430,"12":860,"13":50,"14":498},"fnMap":{"1":{"name":"__SnapshotModuleBase_init_unchained","line":64,"loc":{"start":{"line":64,"column":4},"end":{"line":67,"column":4}}},"2":{"name":"getAllSnapshots","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":76,"column":4}}},"3":{"name":"getNextSnapshots","line":82,"loc":{"start":{"line":82,"column":4},"end":{"line":111,"column":4}}},"4":{"name":"_scheduleSnapshot","line":118,"loc":{"start":{"line":118,"column":4},"end":{"line":144,"column":4}}},"5":{"name":"_scheduleSnapshotNotOptimized","line":149,"loc":{"start":{"line":149,"column":4},"end":{"line":177,"column":4}}},"6":{"name":"_rescheduleSnapshot","line":182,"loc":{"start":{"line":182,"column":4},"end":{"line":223,"column":4}}},"7":{"name":"_unscheduleLastSnapshot","line":228,"loc":{"start":{"line":228,"column":4},"end":{"line":242,"column":4}}},"8":{"name":"_unscheduleSnapshotNotOptimized","line":250,"loc":{"start":{"line":250,"column":4},"end":{"line":263,"column":4}}},"9":{"name":"_valueAt","line":272,"loc":{"start":{"line":272,"column":4},"end":{"line":297,"column":4}}},"10":{"name":"_updateSnapshot","line":305,"loc":{"start":{"line":305,"column":4},"end":{"line":314,"column":4}}},"11":{"name":"_setCurrentSnapshot","line":321,"loc":{"start":{"line":321,"column":4},"end":{"line":330,"column":4}}},"12":{"name":"_lastSnapshot","line":335,"loc":{"start":{"line":335,"column":4},"end":{"line":343,"column":4}}},"13":{"name":"_findScheduledSnapshotIndex","line":349,"loc":{"start":{"line":349,"column":4},"end":{"line":369,"column":4}}},"14":{"name":"_findScheduledMostRecentPastSnapshot","line":375,"loc":{"start":{"line":375,"column":4},"end":{"line":402,"column":4}}}},"statementMap":{"1":{"start":{"line":75,"column":8},"end":{"line":75,"column":34}},"2":{"start":{"line":83,"column":8},"end":{"line":83,"column":65}},"3":{"start":{"line":85,"column":8},"end":{"line":85,"column":2651}},"4":{"start":{"line":86,"column":12},"end":{"line":86,"column":2747}},"5":{"start":{"line":91,"column":12},"end":{"line":91,"column":2910}},"6":{"start":{"line":92,"column":16},"end":{"line":92,"column":42}},"7":{"start":{"line":95,"column":16},"end":{"line":95,"column":3116}},"8":{"start":{"line":97,"column":20},"end":{"line":97,"column":3304}},"9":{"start":{"line":102,"column":20},"end":{"line":102,"column":3580}},"10":{"start":{"line":110,"column":8},"end":{"line":110,"column":36}},"11":{"start":{"line":120,"column":8},"end":{"line":120,"column":4128}},"12":{"start":{"line":127,"column":8},"end":{"line":127,"column":4322}},"13":{"start":{"line":129,"column":12},"end":{"line":129,"column":4431}},"14":{"start":{"line":132,"column":12},"end":{"line":132,"column":4552}},"15":{"start":{"line":138,"column":19},"end":{"line":138,"column":4805}},"16":{"start":{"line":142,"column":8},"end":{"line":142,"column":37}},"17":{"start":{"line":143,"column":8},"end":{"line":143,"column":38}},"18":{"start":{"line":150,"column":8},"end":{"line":150,"column":5165}},"19":{"start":{"line":156,"column":8},"end":{"line":156,"column":73}},"20":{"start":{"line":158,"column":8},"end":{"line":158,"column":5458}},"21":{"start":{"line":162,"column":8},"end":{"line":162,"column":5649}},"22":{"start":{"line":163,"column":12},"end":{"line":163,"column":41}},"23":{"start":{"line":165,"column":12},"end":{"line":165,"column":5769}},"24":{"start":{"line":168,"column":12},"end":{"line":168,"column":5890}},"25":{"start":{"line":176,"column":8},"end":{"line":176,"column":38}},"26":{"start":{"line":184,"column":8},"end":{"line":184,"column":6448}},"27":{"start":{"line":187,"column":8},"end":{"line":187,"column":6570}},"28":{"start":{"line":193,"column":8},"end":{"line":193,"column":6769}},"29":{"start":{"line":196,"column":8},"end":{"line":196,"column":77}},"30":{"start":{"line":197,"column":8},"end":{"line":197,"column":6975}},"31":{"start":{"line":200,"column":8},"end":{"line":200,"column":7077}},"32":{"start":{"line":201,"column":12},"end":{"line":201,"column":69}},"33":{"start":{"line":202,"column":12},"end":{"line":202,"column":7210}},"34":{"start":{"line":208,"column":19},"end":{"line":208,"column":7468}},"35":{"start":{"line":212,"column":8},"end":{"line":212,"column":7607}},"36":{"start":{"line":213,"column":12},"end":{"line":213,"column":7649}},"37":{"start":{"line":222,"column":8},"end":{"line":222,"column":47}},"38":{"start":{"line":230,"column":8},"end":{"line":230,"column":8225}},"39":{"start":{"line":233,"column":8},"end":{"line":233,"column":8344}},"40":{"start":{"line":237,"column":8},"end":{"line":237,"column":8542}},"41":{"start":{"line":240,"column":8},"end":{"line":240,"column":32}},"42":{"start":{"line":241,"column":8},"end":{"line":241,"column":37}},"43":{"start":{"line":251,"column":8},"end":{"line":251,"column":9096}},"44":{"start":{"line":254,"column":8},"end":{"line":254,"column":73}},"45":{"start":{"line":255,"column":8},"end":{"line":255,"column":9290}},"46":{"start":{"line":259,"column":8},"end":{"line":259,"column":9452}},"47":{"start":{"line":262,"column":8},"end":{"line":262,"column":32}},"48":{"start":{"line":290,"column":8},"end":{"line":290,"column":58}},"49":{"start":{"line":292,"column":8},"end":{"line":292,"column":11273}},"50":{"start":{"line":293,"column":12},"end":{"line":293,"column":29}},"51":{"start":{"line":295,"column":12},"end":{"line":295,"column":50}},"52":{"start":{"line":309,"column":8},"end":{"line":309,"column":46}},"53":{"start":{"line":310,"column":8},"end":{"line":310,"column":11830}},"54":{"start":{"line":311,"column":12},"end":{"line":311,"column":38}},"55":{"start":{"line":312,"column":12},"end":{"line":312,"column":46}},"56":{"start":{"line":322,"column":8},"end":{"line":322,"column":12241}},"57":{"start":{"line":326,"column":8},"end":{"line":326,"column":12345}},"58":{"start":{"line":338,"column":8},"end":{"line":338,"column":12695}},"59":{"start":{"line":339,"column":12},"end":{"line":339,"column":20}},"60":{"start":{"line":341,"column":12},"end":{"line":341,"column":38}},"61":{"start":{"line":352,"column":8},"end":{"line":352,"column":69}},"62":{"start":{"line":353,"column":8},"end":{"line":353,"column":70}},"63":{"start":{"line":355,"column":8},"end":{"line":355,"column":13242}},"64":{"start":{"line":359,"column":12},"end":{"line":359,"column":37}},"65":{"start":{"line":362,"column":13},"end":{"line":362,"column":13457}},"66":{"start":{"line":363,"column":12},"end":{"line":363,"column":38}},"67":{"start":{"line":367,"column":12},"end":{"line":367,"column":53}},"68":{"start":{"line":380,"column":8},"end":{"line":380,"column":61}},"69":{"start":{"line":382,"column":8},"end":{"line":382,"column":14093}},"70":{"start":{"line":386,"column":12},"end":{"line":386,"column":40}},"71":{"start":{"line":389,"column":8},"end":{"line":389,"column":26}},"72":{"start":{"line":392,"column":8},"end":{"line":392,"column":14456}},"73":{"start":{"line":393,"column":12},"end":{"line":393,"column":14542}},"74":{"start":{"line":401,"column":8},"end":{"line":401,"column":34}}},"branchMap":{"1":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":60},"end":{"line":64,"column":60}},{"start":{"line":64,"column":60},"end":{"line":64,"column":60}}]},"2":{"line":85,"type":"if","locations":[{"start":{"line":85,"column":8},"end":{"line":85,"column":8}},{"start":{"line":85,"column":8},"end":{"line":85,"column":8}}]},"3":{"line":91,"type":"if","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":12}},{"start":{"line":91,"column":12},"end":{"line":91,"column":12}}]},"4":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":16},"end":{"line":95,"column":16}},{"start":{"line":95,"column":16},"end":{"line":95,"column":16}}]},"5":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"6":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":8},"end":{"line":127,"column":8}},{"start":{"line":127,"column":8},"end":{"line":127,"column":8}}]},"7":{"line":132,"type":"if","locations":[{"start":{"line":132,"column":12},"end":{"line":132,"column":12}},{"start":{"line":132,"column":12},"end":{"line":132,"column":12}}]},"8":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":19},"end":{"line":138,"column":19}},{"start":{"line":138,"column":19},"end":{"line":138,"column":19}}]},"9":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":8},"end":{"line":150,"column":8}},{"start":{"line":150,"column":8},"end":{"line":150,"column":8}}]},"10":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":8},"end":{"line":158,"column":8}},{"start":{"line":158,"column":8},"end":{"line":158,"column":8}}]},"11":{"line":162,"type":"if","locations":[{"start":{"line":162,"column":8},"end":{"line":162,"column":8}},{"start":{"line":162,"column":8},"end":{"line":162,"column":8}}]},"12":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":8},"end":{"line":184,"column":8}},{"start":{"line":184,"column":8},"end":{"line":184,"column":8}}]},"13":{"line":187,"type":"if","locations":[{"start":{"line":187,"column":8},"end":{"line":187,"column":8}},{"start":{"line":187,"column":8},"end":{"line":187,"column":8}}]},"14":{"line":193,"type":"if","locations":[{"start":{"line":193,"column":8},"end":{"line":193,"column":8}},{"start":{"line":193,"column":8},"end":{"line":193,"column":8}}]},"15":{"line":197,"type":"if","locations":[{"start":{"line":197,"column":8},"end":{"line":197,"column":8}},{"start":{"line":197,"column":8},"end":{"line":197,"column":8}}]},"16":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":8},"end":{"line":200,"column":8}},{"start":{"line":200,"column":8},"end":{"line":200,"column":8}}]},"17":{"line":202,"type":"if","locations":[{"start":{"line":202,"column":12},"end":{"line":202,"column":12}},{"start":{"line":202,"column":12},"end":{"line":202,"column":12}}]},"18":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":19},"end":{"line":208,"column":19}},{"start":{"line":208,"column":19},"end":{"line":208,"column":19}}]},"19":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":8},"end":{"line":212,"column":8}},{"start":{"line":212,"column":8},"end":{"line":212,"column":8}}]},"20":{"line":213,"type":"if","locations":[{"start":{"line":213,"column":12},"end":{"line":213,"column":12}},{"start":{"line":213,"column":12},"end":{"line":213,"column":12}}]},"21":{"line":230,"type":"if","locations":[{"start":{"line":230,"column":8},"end":{"line":230,"column":8}},{"start":{"line":230,"column":8},"end":{"line":230,"column":8}}]},"22":{"line":233,"type":"if","locations":[{"start":{"line":233,"column":8},"end":{"line":233,"column":8}},{"start":{"line":233,"column":8},"end":{"line":233,"column":8}}]},"23":{"line":237,"type":"if","locations":[{"start":{"line":237,"column":8},"end":{"line":237,"column":8}},{"start":{"line":237,"column":8},"end":{"line":237,"column":8}}]},"24":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":8},"end":{"line":251,"column":8}},{"start":{"line":251,"column":8},"end":{"line":251,"column":8}}]},"25":{"line":255,"type":"if","locations":[{"start":{"line":255,"column":8},"end":{"line":255,"column":8}},{"start":{"line":255,"column":8},"end":{"line":255,"column":8}}]},"26":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":8},"end":{"line":292,"column":8}},{"start":{"line":292,"column":8},"end":{"line":292,"column":8}}]},"27":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":8},"end":{"line":310,"column":8}},{"start":{"line":310,"column":8},"end":{"line":310,"column":8}}]},"28":{"line":326,"type":"if","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":8}},{"start":{"line":326,"column":8},"end":{"line":326,"column":8}}]},"29":{"line":338,"type":"if","locations":[{"start":{"line":338,"column":8},"end":{"line":338,"column":8}},{"start":{"line":338,"column":8},"end":{"line":338,"column":8}}]},"30":{"line":355,"type":"if","locations":[{"start":{"line":355,"column":8},"end":{"line":355,"column":8}},{"start":{"line":355,"column":8},"end":{"line":355,"column":8}}]},"31":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":13},"end":{"line":362,"column":13}},{"start":{"line":362,"column":13},"end":{"line":362,"column":13}}]},"32":{"line":382,"type":"if","locations":[{"start":{"line":382,"column":8},"end":{"line":382,"column":8}},{"start":{"line":382,"column":8},"end":{"line":382,"column":8}}]},"33":{"line":383,"type":"cond-expr","locations":[{"start":{"line":383,"column":12},"end":{"line":383,"column":32}},{"start":{"line":384,"column":12},"end":{"line":384,"column":75}}]},"34":{"line":393,"type":"if","locations":[{"start":{"line":393,"column":12},"end":{"line":393,"column":12}},{"start":{"line":393,"column":12},"end":{"line":393,"column":12}}]}}}, +"contracts/modules/internal/EnforcementModuleInternal.sol":{"l":{"48":974,"61":22,"62":2,"64":20,"65":20,"66":20,"78":8,"79":2,"81":6,"82":6,"84":6},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/EnforcementModuleInternal.sol","s":{"1":974,"2":22,"3":2,"4":20,"5":20,"6":8,"7":2,"8":6,"9":6},"b":{"1":[387,0],"2":[2,20],"3":[2,6]},"f":{"1":387,"2":974,"3":22,"4":8},"fnMap":{"1":{"name":"__Enforcement_init_unchained","line":40,"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":4}}},"2":{"name":"frozen","line":47,"loc":{"start":{"line":47,"column":4},"end":{"line":49,"column":4}}},"3":{"name":"_freeze","line":57,"loc":{"start":{"line":57,"column":4},"end":{"line":67,"column":4}}},"4":{"name":"_unfreeze","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":85,"column":4}}}},"statementMap":{"1":{"start":{"line":48,"column":8},"end":{"line":48,"column":31}},"2":{"start":{"line":61,"column":8},"end":{"line":61,"column":1634}},"3":{"start":{"line":62,"column":12},"end":{"line":62,"column":24}},"4":{"start":{"line":65,"column":8},"end":{"line":65,"column":58}},"5":{"start":{"line":66,"column":8},"end":{"line":66,"column":19}},"6":{"start":{"line":78,"column":8},"end":{"line":78,"column":2099}},"7":{"start":{"line":79,"column":12},"end":{"line":79,"column":24}},"8":{"start":{"line":82,"column":8},"end":{"line":82,"column":60}},"9":{"start":{"line":84,"column":8},"end":{"line":84,"column":19}}},"branchMap":{"1":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":53},"end":{"line":40,"column":53}},{"start":{"line":40,"column":53},"end":{"line":40,"column":53}}]},"2":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]},"3":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":78,"column":8}},{"start":{"line":78,"column":8},"end":{"line":78,"column":8}}]}}}, +"contracts/modules/internal/ERC20SnapshotModuleInternal.sol":{"l":{"37":480,"38":480,"46":160,"47":160,"48":480,"50":160,"58":80,"59":80,"60":80,"66":80,"78":1200,"83":1200,"92":720,"96":720,"108":430,"109":430,"111":99,"112":99,"114":55,"117":44,"121":331,"122":331,"130":485,"137":375},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ERC20SnapshotModuleInternal.sol","s":{"1":160,"2":80,"3":1200,"4":1200,"5":720,"6":720,"7":430,"8":430,"9":99,"10":99,"11":55,"12":44,"13":331,"14":331,"15":485,"16":375},"b":{"1":[387,0],"2":[400,800],"3":[36,684],"4":[99,331],"5":[55,44]},"f":{"1":387,"2":480,"3":160,"4":80,"5":1200,"6":720,"7":430,"8":485,"9":375},"fnMap":{"1":{"name":"__ERC20Snapshot_init_unchained","line":27,"loc":{"start":{"line":27,"column":4},"end":{"line":30,"column":4}}},"2":{"name":"snapshotInfo","line":36,"loc":{"start":{"line":36,"column":4},"end":{"line":39,"column":4}}},"3":{"name":"snapshotInfoBatch","line":45,"loc":{"start":{"line":45,"column":4},"end":{"line":51,"column":4}}},"4":{"name":"snapshotInfoBatch","line":57,"loc":{"start":{"line":57,"column":4},"end":{"line":68,"column":4}}},"5":{"name":"snapshotBalanceOf","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":84,"column":4}}},"6":{"name":"snapshotTotalSupply","line":91,"loc":{"start":{"line":91,"column":4},"end":{"line":97,"column":4}}},"7":{"name":"_snapshotUpdate","line":104,"loc":{"start":{"line":104,"column":4},"end":{"line":124,"column":4}}},"8":{"name":"_updateAccountSnapshot","line":129,"loc":{"start":{"line":129,"column":4},"end":{"line":131,"column":4}}},"9":{"name":"_updateTotalSupplySnapshot","line":136,"loc":{"start":{"line":136,"column":4},"end":{"line":138,"column":4}}}},"statementMap":{"1":{"start":{"line":47,"column":8},"end":{"line":47,"column":1933}},"2":{"start":{"line":60,"column":8},"end":{"line":60,"column":2596}},"3":{"start":{"line":78,"column":8},"end":{"line":78,"column":3393}},"4":{"start":{"line":83,"column":8},"end":{"line":83,"column":53}},"5":{"start":{"line":92,"column":8},"end":{"line":92,"column":3864}},"6":{"start":{"line":96,"column":8},"end":{"line":96,"column":50}},"7":{"start":{"line":108,"column":8},"end":{"line":108,"column":28}},"8":{"start":{"line":109,"column":8},"end":{"line":109,"column":4394}},"9":{"start":{"line":111,"column":12},"end":{"line":111,"column":39}},"10":{"start":{"line":112,"column":12},"end":{"line":112,"column":4520}},"11":{"start":{"line":114,"column":16},"end":{"line":114,"column":41}},"12":{"start":{"line":117,"column":16},"end":{"line":117,"column":43}},"13":{"start":{"line":121,"column":12},"end":{"line":121,"column":37}},"14":{"start":{"line":122,"column":12},"end":{"line":122,"column":39}},"15":{"start":{"line":130,"column":8},"end":{"line":130,"column":77}},"16":{"start":{"line":137,"column":8},"end":{"line":137,"column":60}}},"branchMap":{"1":{"line":27,"type":"if","locations":[{"start":{"line":27,"column":55},"end":{"line":27,"column":55}},{"start":{"line":27,"column":55},"end":{"line":27,"column":55}}]},"2":{"line":83,"type":"if","locations":[{"start":{"line":83,"column":29},"end":{"line":83,"column":33}},{"start":{"line":83,"column":37},"end":{"line":83,"column":52}}]},"3":{"line":96,"type":"if","locations":[{"start":{"line":96,"column":29},"end":{"line":96,"column":33}},{"start":{"line":96,"column":37},"end":{"line":96,"column":49}}]},"4":{"line":109,"type":"if","locations":[{"start":{"line":109,"column":8},"end":{"line":109,"column":8}},{"start":{"line":109,"column":8},"end":{"line":109,"column":8}}]},"5":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":12},"end":{"line":112,"column":12}},{"start":{"line":112,"column":12},"end":{"line":112,"column":12}}]}}}, +"contracts/modules/internal/ValidationModuleInternal.sol":{"l":{"27":387,"28":16,"29":16,"41":12,"50":6,"61":6,"65":57},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ValidationModuleInternal.sol","s":{"1":387,"2":16,"3":12,"4":6,"5":6,"6":57},"b":{"1":[387,0],"2":[16,371]},"f":{"1":387,"2":12,"3":6,"4":6,"5":57},"fnMap":{"1":{"name":"__Validation_init_unchained","line":26,"loc":{"start":{"line":24,"column":4},"end":{"line":31,"column":4}}},"2":{"name":"_validateTransfer","line":36,"loc":{"start":{"line":36,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"_messageForTransferRestriction","line":47,"loc":{"start":{"line":47,"column":4},"end":{"line":51,"column":4}}},"4":{"name":"_detectTransferRestriction","line":56,"loc":{"start":{"line":56,"column":4},"end":{"line":62,"column":4}}},"5":{"name":"_operateOnTransfer","line":64,"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":4}}}},"statementMap":{"1":{"start":{"line":27,"column":8},"end":{"line":27,"column":758}},"2":{"start":{"line":29,"column":12},"end":{"line":29,"column":39}},"3":{"start":{"line":41,"column":8},"end":{"line":41,"column":60}},"4":{"start":{"line":50,"column":8},"end":{"line":50,"column":72}},"5":{"start":{"line":61,"column":8},"end":{"line":61,"column":69}},"6":{"start":{"line":65,"column":8},"end":{"line":65,"column":61}}},"branchMap":{"1":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":15},"end":{"line":26,"column":15}},{"start":{"line":26,"column":15},"end":{"line":26,"column":15}}]},"2":{"line":27,"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":8}},{"start":{"line":27,"column":8},"end":{"line":27,"column":8}}]}}}, +"contracts/modules/security/AuthorizationModule.sol":{"l":{"24":387,"25":3,"27":384,"28":384,"29":0,"42":8,"43":2,"45":6,"46":6,"50":35,"51":3,"52":3,"54":2,"57":33,"61":5,"62":3,"63":3,"65":2,"68":3,"79":1443,"80":810,"82":633},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/security/AuthorizationModule.sol","s":{"1":387,"2":384,"3":384,"4":8,"5":6,"6":35,"7":3,"8":3,"9":33,"10":5,"11":3,"12":3,"13":3,"14":1443,"15":810,"16":633},"b":{"1":[387,0],"2":[3,384],"3":[0,384],"4":[8,2],"5":[2,6],"6":[35,4],"7":[3,32],"8":[2,1],"9":[5,4],"10":[3,2],"11":[2,1],"12":[810,633]},"f":{"1":387,"2":8,"3":35,"4":5,"5":1443},"fnMap":{"1":{"name":"__AuthorizationModule_init_unchained","line":23,"loc":{"start":{"line":22,"column":4},"end":{"line":33,"column":4}}},"2":{"name":"setAuthorizationEngine","line":41,"loc":{"start":{"line":39,"column":4},"end":{"line":47,"column":4}}},"3":{"name":"grantRole","line":49,"loc":{"start":{"line":49,"column":4},"end":{"line":58,"column":4}}},"4":{"name":"revokeRole","line":60,"loc":{"start":{"line":60,"column":4},"end":{"line":69,"column":4}}},"5":{"name":"hasRole","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":83,"column":4}}}},"statementMap":{"1":{"start":{"line":24,"column":8},"end":{"line":24,"column":889}},"2":{"start":{"line":27,"column":8},"end":{"line":27,"column":44}},"3":{"start":{"line":28,"column":8},"end":{"line":28,"column":1056}},"4":{"start":{"line":42,"column":8},"end":{"line":42,"column":1483}},"5":{"start":{"line":46,"column":8},"end":{"line":46,"column":54}},"6":{"start":{"line":50,"column":8},"end":{"line":50,"column":1852}},"7":{"start":{"line":51,"column":12},"end":{"line":51,"column":79}},"8":{"start":{"line":52,"column":12},"end":{"line":52,"column":2000}},"9":{"start":{"line":57,"column":8},"end":{"line":57,"column":64}},"10":{"start":{"line":61,"column":8},"end":{"line":61,"column":2361}},"11":{"start":{"line":62,"column":12},"end":{"line":62,"column":80}},"12":{"start":{"line":63,"column":12},"end":{"line":63,"column":2510}},"13":{"start":{"line":68,"column":8},"end":{"line":68,"column":65}},"14":{"start":{"line":79,"column":8},"end":{"line":79,"column":3041}},"15":{"start":{"line":80,"column":12},"end":{"line":80,"column":23}},"16":{"start":{"line":82,"column":8},"end":{"line":82,"column":62}}},"branchMap":{"1":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":13},"end":{"line":23,"column":13}},{"start":{"line":23,"column":13},"end":{"line":23,"column":13}}]},"2":{"line":24,"type":"if","locations":[{"start":{"line":24,"column":8},"end":{"line":24,"column":8}},{"start":{"line":24,"column":8},"end":{"line":24,"column":8}}]},"3":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":8},"end":{"line":28,"column":8}},{"start":{"line":28,"column":8},"end":{"line":28,"column":8}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":15},"end":{"line":41,"column":15}},{"start":{"line":41,"column":15},"end":{"line":41,"column":15}}]},"5":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":8},"end":{"line":42,"column":8}},{"start":{"line":42,"column":8},"end":{"line":42,"column":8}}]},"6":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":70},"end":{"line":49,"column":70}},{"start":{"line":49,"column":70},"end":{"line":49,"column":70}}]},"7":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":50,"column":8}},{"start":{"line":50,"column":8},"end":{"line":50,"column":8}}]},"8":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":12},"end":{"line":52,"column":12}},{"start":{"line":52,"column":12},"end":{"line":52,"column":12}}]},"9":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":71},"end":{"line":60,"column":71}},{"start":{"line":60,"column":71},"end":{"line":60,"column":71}}]},"10":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]},"11":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":12},"end":{"line":63,"column":12}},{"start":{"line":63,"column":12},"end":{"line":63,"column":12}}]},"12":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":8},"end":{"line":79,"column":8}},{"start":{"line":79,"column":8},"end":{"line":79,"column":8}}]}}}, +"contracts/modules/wrapper/controllers/ValidationModule.sol":{"l":{"37":20,"38":6,"40":14,"41":14,"52":20,"53":3,"58":4,"63":2,"68":2,"70":6,"72":3,"88":17,"89":4,"91":2,"93":2,"95":6,"97":3,"106":19,"107":4,"109":15,"110":12,"112":3,"120":483,"121":32,"123":451,"127":464,"128":28,"130":436,"131":57,"133":379},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/controllers/ValidationModule.sol","s":{"1":20,"2":14,"3":20,"4":3,"5":17,"6":4,"7":13,"8":2,"9":11,"10":2,"11":9,"12":6,"13":3,"14":17,"15":4,"16":13,"17":2,"18":11,"19":2,"20":9,"21":6,"22":3,"23":19,"24":4,"25":15,"26":12,"27":3,"28":483,"29":32,"30":451,"31":464,"32":28,"33":436,"34":57,"35":379},"b":{"1":[384,0],"2":[20,6],"3":[6,14],"4":[3,17],"5":[4,13],"6":[2,11],"7":[2,9],"8":[6,3],"9":[4,13],"10":[2,11],"11":[2,9],"12":[6,3],"13":[4,15],"14":[12,3],"15":[32,451],"16":[22,6],"17":[6,4],"18":[28,436],"19":[57,379]},"f":{"1":384,"2":20,"3":20,"4":17,"5":19,"6":483,"7":464},"fnMap":{"1":{"name":"__ValidationModule_init_unchained","line":26,"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":4}}},"2":{"name":"setRuleEngine","line":36,"loc":{"start":{"line":34,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"messageForTransferRestriction","line":49,"loc":{"start":{"line":49,"column":4},"end":{"line":74,"column":4}}},"4":{"name":"detectTransferRestriction","line":83,"loc":{"start":{"line":83,"column":4},"end":{"line":99,"column":4}}},"5":{"name":"validateTransfer","line":101,"loc":{"start":{"line":101,"column":4},"end":{"line":113,"column":4}}},"6":{"name":"_validateTransferByModule","line":115,"loc":{"start":{"line":115,"column":4},"end":{"line":124,"column":4}}},"7":{"name":"_operateOnTransfer","line":126,"loc":{"start":{"line":126,"column":4},"end":{"line":134,"column":4}}}},"statementMap":{"1":{"start":{"line":37,"column":8},"end":{"line":37,"column":1014}},"2":{"start":{"line":41,"column":8},"end":{"line":41,"column":36}},"3":{"start":{"line":52,"column":8},"end":{"line":52,"column":1701}},"4":{"start":{"line":53,"column":12},"end":{"line":53,"column":35}},"5":{"start":{"line":54,"column":15},"end":{"line":54,"column":1817}},"6":{"start":{"line":58,"column":12},"end":{"line":58,"column":48}},"7":{"start":{"line":59,"column":15},"end":{"line":59,"column":1993}},"8":{"start":{"line":63,"column":12},"end":{"line":63,"column":53}},"9":{"start":{"line":64,"column":15},"end":{"line":64,"column":2179}},"10":{"start":{"line":68,"column":12},"end":{"line":68,"column":51}},"11":{"start":{"line":69,"column":15},"end":{"line":69,"column":2361}},"12":{"start":{"line":70,"column":12},"end":{"line":70,"column":66}},"13":{"start":{"line":72,"column":12},"end":{"line":72,"column":36}},"14":{"start":{"line":88,"column":8},"end":{"line":88,"column":3057}},"15":{"start":{"line":89,"column":12},"end":{"line":89,"column":69}},"16":{"start":{"line":90,"column":15},"end":{"line":90,"column":3159}},"17":{"start":{"line":91,"column":12},"end":{"line":91,"column":74}},"18":{"start":{"line":92,"column":15},"end":{"line":92,"column":3270}},"19":{"start":{"line":93,"column":12},"end":{"line":93,"column":72}},"20":{"start":{"line":94,"column":15},"end":{"line":94,"column":3377}},"21":{"start":{"line":95,"column":12},"end":{"line":95,"column":63}},"22":{"start":{"line":97,"column":12},"end":{"line":97,"column":56}},"23":{"start":{"line":106,"column":8},"end":{"line":106,"column":3723}},"24":{"start":{"line":107,"column":12},"end":{"line":107,"column":24}},"25":{"start":{"line":109,"column":8},"end":{"line":109,"column":3819}},"26":{"start":{"line":110,"column":12},"end":{"line":110,"column":54}},"27":{"start":{"line":112,"column":8},"end":{"line":112,"column":19}},"28":{"start":{"line":120,"column":8},"end":{"line":120,"column":4108}},"29":{"start":{"line":121,"column":12},"end":{"line":121,"column":24}},"30":{"start":{"line":123,"column":8},"end":{"line":123,"column":19}},"31":{"start":{"line":127,"column":8},"end":{"line":127,"column":4334}},"32":{"start":{"line":128,"column":12},"end":{"line":128,"column":24}},"33":{"start":{"line":130,"column":8},"end":{"line":130,"column":4429}},"34":{"start":{"line":131,"column":12},"end":{"line":131,"column":80}},"35":{"start":{"line":133,"column":8},"end":{"line":133,"column":19}}},"branchMap":{"1":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":58},"end":{"line":26,"column":58}},{"start":{"line":26,"column":58},"end":{"line":26,"column":58}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":15},"end":{"line":36,"column":15}},{"start":{"line":36,"column":15},"end":{"line":36,"column":15}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":37,"column":8}},{"start":{"line":37,"column":8},"end":{"line":37,"column":8}}]},"4":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":52,"column":8}},{"start":{"line":52,"column":8},"end":{"line":52,"column":8}}]},"5":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":15},"end":{"line":54,"column":15}},{"start":{"line":54,"column":15},"end":{"line":54,"column":15}}]},"6":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":15},"end":{"line":59,"column":15}},{"start":{"line":59,"column":15},"end":{"line":59,"column":15}}]},"7":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":15},"end":{"line":64,"column":15}},{"start":{"line":64,"column":15},"end":{"line":64,"column":15}}]},"8":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":15},"end":{"line":69,"column":15}},{"start":{"line":69,"column":15},"end":{"line":69,"column":15}}]},"9":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":8},"end":{"line":88,"column":8}},{"start":{"line":88,"column":8},"end":{"line":88,"column":8}}]},"10":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":15},"end":{"line":90,"column":15}},{"start":{"line":90,"column":15},"end":{"line":90,"column":15}}]},"11":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":15},"end":{"line":92,"column":15}},{"start":{"line":92,"column":15},"end":{"line":92,"column":15}}]},"12":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":15},"end":{"line":94,"column":15}},{"start":{"line":94,"column":15},"end":{"line":94,"column":15}}]},"13":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":8},"end":{"line":106,"column":8}},{"start":{"line":106,"column":8},"end":{"line":106,"column":8}}]},"14":{"line":109,"type":"if","locations":[{"start":{"line":109,"column":8},"end":{"line":109,"column":8}},{"start":{"line":109,"column":8},"end":{"line":109,"column":8}}]},"15":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"16":{"line":120,"type":"cond-expr","locations":[{"start":{"line":120,"column":12},"end":{"line":120,"column":19}},{"start":{"line":120,"column":24},"end":{"line":120,"column":35}}]},"17":{"line":120,"type":"cond-expr","locations":[{"start":{"line":120,"column":12},"end":{"line":120,"column":35}},{"start":{"line":120,"column":40},"end":{"line":120,"column":49}}]},"18":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":8},"end":{"line":127,"column":8}},{"start":{"line":127,"column":8},"end":{"line":127,"column":8}}]},"19":{"line":130,"type":"if","locations":[{"start":{"line":130,"column":8},"end":{"line":130,"column":8}},{"start":{"line":130,"column":8},"end":{"line":130,"column":8}}]}}}, +"contracts/modules/wrapper/core/BaseModule.sol":{"l":{"46":384,"47":384,"48":384,"49":384,"59":2,"60":2,"69":2,"70":2,"79":2,"80":2,"87":6,"88":4,"90":2,"91":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/BaseModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2},"b":{"1":[384,0],"2":[2,4],"3":[2,4],"4":[2,4],"5":[6,4],"6":[4,2]},"f":{"1":384,"2":2,"3":2,"4":2,"5":6},"fnMap":{"1":{"name":"__Base_init_unchained","line":45,"loc":{"start":{"line":40,"column":4},"end":{"line":50,"column":4}}},"2":{"name":"setTokenId","line":58,"loc":{"start":{"line":56,"column":4},"end":{"line":61,"column":4}}},"3":{"name":"setTerms","line":68,"loc":{"start":{"line":66,"column":4},"end":{"line":71,"column":4}}},"4":{"name":"setInformation","line":78,"loc":{"start":{"line":76,"column":4},"end":{"line":81,"column":4}}},"5":{"name":"setFlag","line":86,"loc":{"start":{"line":86,"column":4},"end":{"line":92,"column":4}}}},"statementMap":{"1":{"start":{"line":60,"column":8},"end":{"line":60,"column":40}},"2":{"start":{"line":70,"column":8},"end":{"line":70,"column":33}},"3":{"start":{"line":80,"column":8},"end":{"line":80,"column":52}},"4":{"start":{"line":87,"column":8},"end":{"line":87,"column":2469}},"5":{"start":{"line":91,"column":8},"end":{"line":91,"column":24}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":15},"end":{"line":45,"column":15}},{"start":{"line":45,"column":15},"end":{"line":45,"column":15}}]},"2":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":13},"end":{"line":58,"column":13}},{"start":{"line":58,"column":13},"end":{"line":58,"column":13}}]},"3":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":13},"end":{"line":68,"column":13}},{"start":{"line":68,"column":13},"end":{"line":68,"column":13}}]},"4":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":13},"end":{"line":78,"column":13}},{"start":{"line":78,"column":13},"end":{"line":78,"column":13}}]},"5":{"line":86,"type":"if","locations":[{"start":{"line":86,"column":43},"end":{"line":86,"column":43}},{"start":{"line":86,"column":43},"end":{"line":86,"column":43}}]},"6":{"line":87,"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":87,"column":8}},{"start":{"line":87,"column":8},"end":{"line":87,"column":8}}]}}}, +"contracts/modules/wrapper/core/EnforcementModule.sol":{"l":{"38":22,"52":8},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/EnforcementModule.sol","s":{"1":22,"2":8},"b":{"1":[384,0],"2":[22,4],"3":[8,4]},"f":{"1":384,"2":22,"3":8},"fnMap":{"1":{"name":"__EnforcementModule_init_unchained","line":25,"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":4}}},"2":{"name":"freeze","line":37,"loc":{"start":{"line":34,"column":4},"end":{"line":39,"column":4}}},"3":{"name":"unfreeze","line":51,"loc":{"start":{"line":48,"column":4},"end":{"line":53,"column":4}}}},"statementMap":{"1":{"start":{"line":38,"column":8},"end":{"line":38,"column":39}},"2":{"start":{"line":52,"column":8},"end":{"line":52,"column":41}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":59},"end":{"line":25,"column":59}},{"start":{"line":25,"column":59},"end":{"line":25,"column":59}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":13},"end":{"line":37,"column":13}},{"start":{"line":37,"column":13},"end":{"line":37,"column":13}}]},"3":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":13},"end":{"line":51,"column":13}},{"start":{"line":51,"column":13},"end":{"line":51,"column":13}}]}}}, +"contracts/modules/wrapper/core/ERC20BaseModule.sol":{"l":{"31":384,"41":2,"60":18,"61":4,"65":14,"66":8,"69":6,"72":14,"76":2,"91":18,"93":2,"94":2,"97":2,"106":4,"107":4,"108":6,"110":4},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BaseModule.sol","s":{"1":2,"2":18,"3":14,"4":6,"5":14,"6":2,"7":18,"8":2,"9":2,"10":2,"11":4},"b":{"1":[384,0],"2":[4,14],"3":[8,6],"4":[2,0]},"f":{"1":384,"2":2,"3":18,"4":18,"5":4},"fnMap":{"1":{"name":"__ERC20BaseModule_init_unchained","line":30,"loc":{"start":{"line":28,"column":4},"end":{"line":32,"column":4}}},"2":{"name":"decimals","line":40,"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"transferBatch","line":56,"loc":{"start":{"line":56,"column":4},"end":{"line":77,"column":4}}},"4":{"name":"transferFrom","line":86,"loc":{"start":{"line":86,"column":4},"end":{"line":98,"column":4}}},"5":{"name":"balanceInfo","line":105,"loc":{"start":{"line":105,"column":4},"end":{"line":111,"column":4}}}},"statementMap":{"1":{"start":{"line":41,"column":8},"end":{"line":41,"column":24}},"2":{"start":{"line":60,"column":8},"end":{"line":60,"column":1942}},"3":{"start":{"line":65,"column":8},"end":{"line":65,"column":2159}},"4":{"start":{"line":69,"column":8},"end":{"line":69,"column":2354}},"5":{"start":{"line":72,"column":12},"end":{"line":72,"column":70}},"6":{"start":{"line":76,"column":8},"end":{"line":76,"column":19}},"7":{"start":{"line":91,"column":8},"end":{"line":91,"column":68}},"8":{"start":{"line":93,"column":8},"end":{"line":93,"column":3304}},"9":{"start":{"line":94,"column":12},"end":{"line":94,"column":49}},"10":{"start":{"line":97,"column":8},"end":{"line":97,"column":21}},"11":{"start":{"line":107,"column":8},"end":{"line":107,"column":3797}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":15},"end":{"line":30,"column":15}},{"start":{"line":30,"column":15},"end":{"line":30,"column":15}}]},"2":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"3":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":65,"column":8}},{"start":{"line":65,"column":8},"end":{"line":65,"column":8}}]},"4":{"line":93,"type":"if","locations":[{"start":{"line":93,"column":8},"end":{"line":93,"column":8}},{"start":{"line":93,"column":8},"end":{"line":93,"column":8}}]}}}, +"contracts/modules/wrapper/core/ERC20BurnModule.sol":{"l":{"37":18,"38":14,"61":20,"62":4,"66":16,"67":8,"70":8,"71":24,"72":20,"95":6,"96":6,"97":6,"99":4,"102":2,"103":2,"106":2,"108":2,"110":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BurnModule.sol","s":{"1":18,"2":14,"3":20,"4":16,"5":8,"6":24,"7":20,"8":6,"9":6,"10":6,"11":2,"12":2,"13":2,"14":2},"b":{"1":[384,0],"2":[18,8],"3":[20,4],"4":[4,16],"5":[8,8],"6":[6,4],"7":[4,2]},"f":{"1":384,"2":18,"3":20,"4":6},"fnMap":{"1":{"name":"__ERC20BurnModule_init_unchained","line":19,"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":4}}},"2":{"name":"burn","line":36,"loc":{"start":{"line":32,"column":4},"end":{"line":39,"column":4}}},"3":{"name":"burnBatch","line":60,"loc":{"start":{"line":56,"column":4},"end":{"line":74,"column":4}}},"4":{"name":"burnFrom","line":92,"loc":{"start":{"line":90,"column":4},"end":{"line":111,"column":4}}}},"statementMap":{"1":{"start":{"line":37,"column":8},"end":{"line":37,"column":28}},"2":{"start":{"line":38,"column":8},"end":{"line":38,"column":41}},"3":{"start":{"line":61,"column":8},"end":{"line":61,"column":2316}},"4":{"start":{"line":66,"column":8},"end":{"line":66,"column":2538}},"5":{"start":{"line":70,"column":8},"end":{"line":70,"column":2738}},"6":{"start":{"line":71,"column":12},"end":{"line":71,"column":40}},"7":{"start":{"line":72,"column":12},"end":{"line":72,"column":53}},"8":{"start":{"line":95,"column":8},"end":{"line":95,"column":38}},"9":{"start":{"line":96,"column":8},"end":{"line":96,"column":61}},"10":{"start":{"line":97,"column":8},"end":{"line":97,"column":3627}},"11":{"start":{"line":103,"column":12},"end":{"line":103,"column":62}},"12":{"start":{"line":106,"column":8},"end":{"line":106,"column":28}},"13":{"start":{"line":108,"column":8},"end":{"line":108,"column":45}},"14":{"start":{"line":110,"column":8},"end":{"line":110,"column":45}}},"branchMap":{"1":{"line":19,"type":"if","locations":[{"start":{"line":19,"column":57},"end":{"line":19,"column":57}},{"start":{"line":19,"column":57},"end":{"line":19,"column":57}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":13},"end":{"line":36,"column":13}},{"start":{"line":36,"column":13},"end":{"line":36,"column":13}}]},"3":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":13},"end":{"line":60,"column":13}},{"start":{"line":60,"column":13},"end":{"line":60,"column":13}}]},"4":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":8}},{"start":{"line":66,"column":8},"end":{"line":66,"column":8}}]},"6":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":8},"end":{"line":92,"column":8}},{"start":{"line":92,"column":8},"end":{"line":92,"column":8}}]},"7":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":97,"column":8}},{"start":{"line":97,"column":8},"end":{"line":97,"column":8}}]}}}, +"contracts/modules/wrapper/core/ERC20MintModule.sol":{"l":{"35":277,"36":277,"58":30,"59":4,"63":26,"64":8,"67":18,"68":54,"69":54},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20MintModule.sol","s":{"1":277,"2":277,"3":30,"4":26,"5":18,"6":54,"7":54},"b":{"1":[384,0],"2":[277,8],"3":[30,4],"4":[4,26],"5":[8,18]},"f":{"1":384,"2":277,"3":30},"fnMap":{"1":{"name":"__ERC20MintModule_init_unchained","line":17,"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":4}}},"2":{"name":"mint","line":34,"loc":{"start":{"line":34,"column":4},"end":{"line":37,"column":4}}},"3":{"name":"mintBatch","line":57,"loc":{"start":{"line":54,"column":4},"end":{"line":71,"column":4}}}},"statementMap":{"1":{"start":{"line":35,"column":8},"end":{"line":35,"column":28}},"2":{"start":{"line":36,"column":8},"end":{"line":36,"column":33}},"3":{"start":{"line":58,"column":8},"end":{"line":58,"column":2105}},"4":{"start":{"line":63,"column":8},"end":{"line":63,"column":2327}},"5":{"start":{"line":67,"column":8},"end":{"line":67,"column":2527}},"6":{"start":{"line":68,"column":12},"end":{"line":68,"column":40}},"7":{"start":{"line":69,"column":12},"end":{"line":69,"column":45}}},"branchMap":{"1":{"line":17,"type":"if","locations":[{"start":{"line":17,"column":57},"end":{"line":17,"column":57}},{"start":{"line":17,"column":57},"end":{"line":17,"column":57}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":57},"end":{"line":34,"column":57}},{"start":{"line":34,"column":57},"end":{"line":34,"column":57}}]},"3":{"line":57,"type":"if","locations":[{"start":{"line":57,"column":13},"end":{"line":57,"column":13}},{"start":{"line":57,"column":13},"end":{"line":57,"column":13}}]},"4":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":8},"end":{"line":58,"column":8}},{"start":{"line":58,"column":8},"end":{"line":58,"column":8}}]},"5":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":8}},{"start":{"line":63,"column":8},"end":{"line":63,"column":8}}]}}}, +"contracts/modules/wrapper/core/PauseModule.sol":{"l":{"40":14,"52":8,"53":4,"55":4,"71":2,"72":2,"73":2,"80":4},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/PauseModule.sol","s":{"1":14,"2":8,"3":4,"4":2,"5":2,"6":4},"b":{"1":[384,0],"2":[14,6],"3":[8,4],"4":[4,4],"5":[2,4]},"f":{"1":384,"2":14,"3":8,"4":2,"5":4},"fnMap":{"1":{"name":"__PauseModule_init_unchained","line":26,"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":4}}},"2":{"name":"pause","line":39,"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":4}}},"3":{"name":"unpause","line":51,"loc":{"start":{"line":51,"column":4},"end":{"line":56,"column":4}}},"4":{"name":"deactivateContract","line":69,"loc":{"start":{"line":67,"column":4},"end":{"line":74,"column":4}}},"5":{"name":"deactivated","line":79,"loc":{"start":{"line":79,"column":4},"end":{"line":81,"column":4}}}},"statementMap":{"1":{"start":{"line":40,"column":8},"end":{"line":40,"column":15}},"2":{"start":{"line":52,"column":8},"end":{"line":52,"column":1627}},"3":{"start":{"line":55,"column":8},"end":{"line":55,"column":17}},"4":{"start":{"line":72,"column":7},"end":{"line":72,"column":14}},"5":{"start":{"line":73,"column":7},"end":{"line":73,"column":37}},"6":{"start":{"line":80,"column":8},"end":{"line":80,"column":28}}},"branchMap":{"1":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":53},"end":{"line":26,"column":53}},{"start":{"line":26,"column":53},"end":{"line":26,"column":53}}]},"2":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":28},"end":{"line":39,"column":28}},{"start":{"line":39,"column":28},"end":{"line":39,"column":28}}]},"3":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":30},"end":{"line":51,"column":30}},{"start":{"line":51,"column":30},"end":{"line":51,"column":30}}]},"4":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":52,"column":8}},{"start":{"line":52,"column":8},"end":{"line":52,"column":8}}]},"5":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":8},"end":{"line":69,"column":8}},{"start":{"line":69,"column":8},"end":{"line":69,"column":8}}]}}}, +"contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol":{"l":{"41":2,"42":2,"43":2,"44":2,"53":6,"54":4,"56":2,"57":2,"66":6,"67":4,"69":2,"70":2,"79":2,"80":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2,"6":6,"7":2,"8":2},"b":{"1":[384,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4]},"f":{"1":384,"2":2,"3":6,"4":6,"5":2},"fnMap":{"1":{"name":"__CreditEvents_init_unchained","line":28,"loc":{"start":{"line":28,"column":4},"end":{"line":30,"column":4}}},"2":{"name":"setCreditEvents","line":40,"loc":{"start":{"line":36,"column":4},"end":{"line":45,"column":4}}},"3":{"name":"setFlagDefault","line":52,"loc":{"start":{"line":50,"column":4},"end":{"line":58,"column":4}}},"4":{"name":"setFlagRedeemed","line":65,"loc":{"start":{"line":63,"column":4},"end":{"line":71,"column":4}}},"5":{"name":"setRating","line":78,"loc":{"start":{"line":76,"column":4},"end":{"line":81,"column":4}}}},"statementMap":{"1":{"start":{"line":42,"column":8},"end":{"line":42,"column":38}},"2":{"start":{"line":43,"column":8},"end":{"line":43,"column":40}},"3":{"start":{"line":44,"column":8},"end":{"line":44,"column":37}},"4":{"start":{"line":53,"column":8},"end":{"line":53,"column":1784}},"5":{"start":{"line":57,"column":8},"end":{"line":57,"column":38}},"6":{"start":{"line":66,"column":8},"end":{"line":66,"column":2227}},"7":{"start":{"line":70,"column":8},"end":{"line":70,"column":40}},"8":{"start":{"line":80,"column":8},"end":{"line":80,"column":37}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":54},"end":{"line":28,"column":54}},{"start":{"line":28,"column":54},"end":{"line":28,"column":54}}]},"2":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":13},"end":{"line":40,"column":13}},{"start":{"line":40,"column":13},"end":{"line":40,"column":13}}]},"3":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":13},"end":{"line":52,"column":13}},{"start":{"line":52,"column":13},"end":{"line":52,"column":13}}]},"4":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":8},"end":{"line":53,"column":8}},{"start":{"line":53,"column":8},"end":{"line":53,"column":8}}]},"5":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":13},"end":{"line":65,"column":13}},{"start":{"line":65,"column":13},"end":{"line":65,"column":13}}]},"6":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":8}},{"start":{"line":66,"column":8},"end":{"line":66,"column":8}}]},"7":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":13},"end":{"line":78,"column":13}},{"start":{"line":78,"column":13},"end":{"line":78,"column":13}}]}}}, +"contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol":{"l":{"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"79":2,"83":2,"87":2,"91":2,"96":2,"98":2,"105":6,"106":4,"108":2,"109":2,"116":6,"117":4,"119":2,"120":2,"129":2,"130":2,"139":2,"140":2,"149":2,"150":2,"159":2,"160":2,"172":2,"173":2,"182":2,"183":2,"192":2,"193":2,"205":2,"206":2,"218":2,"219":2,"228":2,"229":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol","s":{"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":6,"14":2,"15":6,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2},"b":{"1":[384,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4],"8":[2,4],"9":[2,4],"10":[2,4],"11":[2,4],"12":[2,4],"13":[2,4],"14":[2,4],"15":[2,4],"16":[2,4]},"f":{"1":384,"2":2,"3":6,"4":6,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2},"fnMap":{"1":{"name":"__DebtBaseModule_init_unchained","line":60,"loc":{"start":{"line":60,"column":4},"end":{"line":62,"column":4}}},"2":{"name":"setDebt","line":68,"loc":{"start":{"line":68,"column":4},"end":{"line":99,"column":4}}},"3":{"name":"setInterestRate","line":104,"loc":{"start":{"line":104,"column":4},"end":{"line":110,"column":4}}},"4":{"name":"setParValue","line":115,"loc":{"start":{"line":115,"column":4},"end":{"line":121,"column":4}}},"5":{"name":"setGuarantor","line":128,"loc":{"start":{"line":126,"column":4},"end":{"line":131,"column":4}}},"6":{"name":"setBondHolder","line":138,"loc":{"start":{"line":136,"column":4},"end":{"line":141,"column":4}}},"7":{"name":"setMaturityDate","line":148,"loc":{"start":{"line":146,"column":4},"end":{"line":151,"column":4}}},"8":{"name":"setInterestScheduleFormat","line":158,"loc":{"start":{"line":156,"column":4},"end":{"line":164,"column":4}}},"9":{"name":"setInterestPaymentDate","line":171,"loc":{"start":{"line":169,"column":4},"end":{"line":174,"column":4}}},"10":{"name":"setDayCountConvention","line":181,"loc":{"start":{"line":179,"column":4},"end":{"line":184,"column":4}}},"11":{"name":"setBusinessDayConvention","line":191,"loc":{"start":{"line":189,"column":4},"end":{"line":197,"column":4}}},"12":{"name":"setPublicHolidaysCalendar","line":204,"loc":{"start":{"line":202,"column":4},"end":{"line":210,"column":4}}},"13":{"name":"setIssuanceDate","line":217,"loc":{"start":{"line":215,"column":4},"end":{"line":220,"column":4}}},"14":{"name":"setCouponFrequency","line":227,"loc":{"start":{"line":225,"column":4},"end":{"line":230,"column":4}}}},"statementMap":{"1":{"start":{"line":70,"column":8},"end":{"line":70,"column":45}},"2":{"start":{"line":71,"column":8},"end":{"line":71,"column":37}},"3":{"start":{"line":72,"column":8},"end":{"line":72,"column":56}},"4":{"start":{"line":73,"column":8},"end":{"line":73,"column":59}},"5":{"start":{"line":74,"column":8},"end":{"line":74,"column":65}},"6":{"start":{"line":75,"column":8},"end":{"line":75,"column":2589}},"7":{"start":{"line":79,"column":8},"end":{"line":79,"column":2720}},"8":{"start":{"line":83,"column":8},"end":{"line":83,"column":2842}},"9":{"start":{"line":87,"column":8},"end":{"line":87,"column":2961}},"10":{"start":{"line":91,"column":8},"end":{"line":91,"column":3089}},"11":{"start":{"line":96,"column":8},"end":{"line":96,"column":65}},"12":{"start":{"line":98,"column":8},"end":{"line":98,"column":74}},"13":{"start":{"line":105,"column":8},"end":{"line":105,"column":3572}},"14":{"start":{"line":109,"column":8},"end":{"line":109,"column":40}},"15":{"start":{"line":116,"column":8},"end":{"line":116,"column":3968}},"16":{"start":{"line":120,"column":8},"end":{"line":120,"column":32}},"17":{"start":{"line":130,"column":8},"end":{"line":130,"column":46}},"18":{"start":{"line":140,"column":8},"end":{"line":140,"column":49}},"19":{"start":{"line":150,"column":8},"end":{"line":150,"column":55}},"20":{"start":{"line":160,"column":8},"end":{"line":160,"column":5402}},"21":{"start":{"line":173,"column":8},"end":{"line":173,"column":76}},"22":{"start":{"line":183,"column":8},"end":{"line":183,"column":73}},"23":{"start":{"line":193,"column":8},"end":{"line":193,"column":6592}},"24":{"start":{"line":206,"column":8},"end":{"line":206,"column":7028}},"25":{"start":{"line":219,"column":8},"end":{"line":219,"column":55}},"26":{"start":{"line":229,"column":8},"end":{"line":229,"column":64}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":56},"end":{"line":60,"column":56}},{"start":{"line":60,"column":56},"end":{"line":60,"column":56}}]},"2":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":53},"end":{"line":68,"column":53}},{"start":{"line":68,"column":53},"end":{"line":68,"column":53}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":59},"end":{"line":104,"column":59}},{"start":{"line":104,"column":59},"end":{"line":104,"column":59}}]},"4":{"line":105,"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":105,"column":8}},{"start":{"line":105,"column":8},"end":{"line":105,"column":8}}]},"5":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":51},"end":{"line":115,"column":51}},{"start":{"line":115,"column":51},"end":{"line":115,"column":51}}]},"6":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":8},"end":{"line":116,"column":8}},{"start":{"line":116,"column":8},"end":{"line":116,"column":8}}]},"7":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":13},"end":{"line":128,"column":13}},{"start":{"line":128,"column":13},"end":{"line":128,"column":13}}]},"8":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":13},"end":{"line":138,"column":13}},{"start":{"line":138,"column":13},"end":{"line":138,"column":13}}]},"9":{"line":148,"type":"if","locations":[{"start":{"line":148,"column":13},"end":{"line":148,"column":13}},{"start":{"line":148,"column":13},"end":{"line":148,"column":13}}]},"10":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":13},"end":{"line":158,"column":13}},{"start":{"line":158,"column":13},"end":{"line":158,"column":13}}]},"11":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":13},"end":{"line":171,"column":13}},{"start":{"line":171,"column":13},"end":{"line":171,"column":13}}]},"12":{"line":181,"type":"if","locations":[{"start":{"line":181,"column":13},"end":{"line":181,"column":13}},{"start":{"line":181,"column":13},"end":{"line":181,"column":13}}]},"13":{"line":191,"type":"if","locations":[{"start":{"line":191,"column":13},"end":{"line":191,"column":13}},{"start":{"line":191,"column":13},"end":{"line":191,"column":13}}]},"14":{"line":204,"type":"if","locations":[{"start":{"line":204,"column":13},"end":{"line":204,"column":13}},{"start":{"line":204,"column":13},"end":{"line":204,"column":13}}]},"15":{"line":217,"type":"if","locations":[{"start":{"line":217,"column":13},"end":{"line":217,"column":13}},{"start":{"line":217,"column":13},"end":{"line":217,"column":13}}]},"16":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":13},"end":{"line":227,"column":13}},{"start":{"line":227,"column":13},"end":{"line":227,"column":13}}]}}}, +"contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol":{"l":{"30":176,"41":16,"53":38,"64":18,"74":16},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol","s":{"1":176,"2":16,"3":38,"4":18,"5":16},"b":{"1":[384,0],"2":[176,4],"3":[16,4],"4":[38,4],"5":[18,4],"6":[16,4]},"f":{"1":384,"2":176,"3":16,"4":38,"5":18,"6":16},"fnMap":{"1":{"name":"__ERC20SnasphotModule_init_unchained","line":20,"loc":{"start":{"line":20,"column":4},"end":{"line":22,"column":4}}},"2":{"name":"scheduleSnapshot","line":29,"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":4}}},"3":{"name":"scheduleSnapshotNotOptimized","line":40,"loc":{"start":{"line":38,"column":4},"end":{"line":42,"column":4}}},"4":{"name":"rescheduleSnapshot","line":52,"loc":{"start":{"line":49,"column":4},"end":{"line":54,"column":4}}},"5":{"name":"unscheduleLastSnapshot","line":63,"loc":{"start":{"line":61,"column":4},"end":{"line":65,"column":4}}},"6":{"name":"unscheduleSnapshotNotOptimized","line":73,"loc":{"start":{"line":71,"column":4},"end":{"line":75,"column":4}}}},"statementMap":{"1":{"start":{"line":30,"column":8},"end":{"line":30,"column":30}},"2":{"start":{"line":41,"column":8},"end":{"line":41,"column":42}},"3":{"start":{"line":53,"column":8},"end":{"line":53,"column":44}},"4":{"start":{"line":64,"column":8},"end":{"line":64,"column":36}},"5":{"start":{"line":74,"column":8},"end":{"line":74,"column":44}}},"branchMap":{"1":{"line":20,"type":"if","locations":[{"start":{"line":20,"column":61},"end":{"line":20,"column":61}},{"start":{"line":20,"column":61},"end":{"line":20,"column":61}}]},"2":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":51},"end":{"line":29,"column":51}},{"start":{"line":29,"column":51},"end":{"line":29,"column":51}}]},"3":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":13},"end":{"line":40,"column":13}},{"start":{"line":40,"column":13},"end":{"line":40,"column":13}}]},"4":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":13},"end":{"line":52,"column":13}},{"start":{"line":52,"column":13},"end":{"line":52,"column":13}}]},"5":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":13},"end":{"line":63,"column":13}},{"start":{"line":63,"column":13},"end":{"line":63,"column":13}}]},"6":{"line":73,"type":"if","locations":[{"start":{"line":73,"column":13},"end":{"line":73,"column":13}},{"start":{"line":73,"column":13},"end":{"line":73,"column":13}}]}}}, +"contracts/modules/wrapper/extensions/MetaTxModule.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/MetaTxModule.sol","s":{},"b":{},"f":{"1":204},"fnMap":{"1":{"name":"constructor","line":18,"loc":{"start":{"line":16,"column":4},"end":{"line":20,"column":4}}}},"statementMap":{},"branchMap":{}}, +"contracts/test/proxy/CMTAT_PROXY.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/test/proxy/CMTAT_PROXY.sol","s":{},"b":{},"f":{"1":1},"fnMap":{"1":{"name":"constructor","line":18,"loc":{"start":{"line":16,"column":4},"end":{"line":20,"column":4}}}},"statementMap":{},"branchMap":{}}} diff --git a/doc/general/test/coverage/index.html b/doc/general/test/coverage/index.html index 43688c12..b4ae6e63 100644 --- a/doc/general/test/coverage/index.html +++ b/doc/general/test/coverage/index.html @@ -20,24 +20,24 @@

- 93.75% + 99.66% Statements - 270/288 + 291/292
- 87.88% + 93.1% Branches - 232/264 + 270/290
- 91.07% + 99.13% Functions - 102/112 + 114/115
- 94.29% + 99.49% Lines - 347/368 + 388/390
@@ -71,6 +71,19 @@

2/2
contracts/deployment/
100%18/18100%14/14100%7/7100%31/31
contracts/interfaces/
0/0
contracts/interfaces/engine/
100%0/0100%0/0100%0/0100%0/0
contracts/libraries/
contracts/modules/
96.15%25/26
96.88%31/32 75% 6/887.5%7/896.3%26/2790%9/1096.97%32/33
contracts/modules/internal/
92.73%102/11086.96%80/9286.67%26/3093.2%137/147
100%31/3185%17/20100%18/18100%42/42
contracts/modules/security/
50%5/1062.5%5/875%3/450%5/10contracts/modules/internal/base/
100%74/7497.06%66/68100%14/14100%102/102
contracts/modules/wrapper/controllers/contracts/modules/security/
100%27/2796.88%31/3216/1691.67%22/24 100% 5/595.45%21/22
contracts/modules/wrapper/controllers/
100%22/2235/3597.37%37/38100%7/7100%30/30
contracts/modules/wrapper/core/
100%42/4287.93%51/5845/4588.33%53/60 100%24/2425/25 100%67/6768/68
contracts/modules/wrapper/extensions/
85.71%6/7
100%5/5 91.67% 11/1288.89%8/985.71%6/7100%7/7100%5/5
55/55
contracts/test/CMTATSnapshot/
90%27/3050%4/870%7/1087.1%27/31
contracts/test/proxy/
  +53 +54        @@ -131,7 +132,8 @@

      -141× +  +189×       @@ -158,6 +160,7 @@

* @notice Contract version for standalone deployment * @param forwarderIrrevocable address of the forwarder, required for the gasless support * @param admin address of the admin of contract (Access Control) + * @param authorizationEngineIrrevocable * @param nameIrrevocable name of the token * @param symbolIrrevocable name of the symbol * @param decimalsIrrevocable number of decimals used to get its user representation, should be 0 to be compliant with the CMTAT specifications. @@ -171,13 +174,13 @@

constructor( address forwarderIrrevocable, address admin, - uint48 initialDelay, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, + IRuleEngine ruleEngine_, string memory information_, uint256 flag_ ) MetaTxModule(forwarderIrrevocable) { @@ -185,7 +188,7 @@

// Warning : do not initialize the proxy initialize( admin, - initialDelay, + authorizationEngineIrrevocable, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -205,7 +208,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html new file mode 100644 index 00000000..92433794 --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html @@ -0,0 +1,368 @@ + + + + Code coverage report for contracts/deployment/CMTAT_BEACON_FACTORY.sol + + + + + + + +
+
+

+ all files / contracts/deployment/ CMTAT_BEACON_FACTORY.sol +

+
+
+ 100% + Statements + 10/10 +
+
+ 100% + Branches + 8/8 +
+
+ 100% + Functions + 4/4 +
+
+ 100% + Lines + 17/17 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + +  + + +  + + +  + + + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + + + +  +  +  +  +  +  +  + +  +  +  +  +  +  +  + +  + 
//SPDX-License-Identifier: MPL-2.0
+pragma solidity ^0.8.20;
+ 
+import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
+ 
+import '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';
+import "../CMTAT_PROXY.sol";
+import "../modules/CMTAT_BASE.sol";
+import "../libraries/FactoryErrors.sol";
+import '@openzeppelin/contracts/access/AccessControl.sol';
+ 
+/**
+* @notice Factory to deploy beacon proxy
+* 
+*/
+contract CMTAT_BEACON_FACTORY is AccessControl {
+    // Private
+    mapping(uint256 => address) private cmtats;
+    uint256 private cmtatCounterId;
+    // public
+    /// @dev Role to deploy CMTAT
+    bytes32 public constant CMTAT_DEPLOYER_ROLE = keccak256("CMTAT_DEPLOYER_ROLE");
+    UpgradeableBeacon public immutable beacon;
+    address[] public cmtatsList;
+    event CMTAT(address indexed CMTAT, uint256 id);
+ 
+    /**
+    * @param implementation_ contract implementation
+    * @param factoryAdmin admin
+    * @param beaconOwner owner
+    */
+    constructor(address implementation_, address factoryAdmin, address beaconOwner) {
+        if(factoryAdmin == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+        }
+        if(beaconOwner == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner();
+        }
+        if(implementation_ == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+        }
+        beacon = new UpgradeableBeacon(implementation_, beaconOwner);
+        _grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin);
+        _grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin);
+    }
+ 
+    /**
+    * @notice deploy CMTAT with a beacon proxy
+    * 
+    */
+    function deployCMTAT(
+        // CMTAT function initialize
+        address admin,
+        IAuthorizationEngine authorizationEngineIrrevocable,
+        string memory nameIrrevocable,
+        string memory symbolIrrevocable,
+        uint8 decimalsIrrevocable,
+        string memory tokenId_,
+        string memory terms_,
+        IRuleEngine ruleEngine_,
+        string memory information_, 
+        uint256 flag_
+    ) public onlyRole(CMTAT_DEPLOYER_ROLE) returns(BeaconProxy cmtat)   {
+        cmtat = new BeaconProxy(
+            address(beacon),
+            abi.encodeWithSelector(
+                 CMTAT_PROXY(address(0)).initialize.selector,
+                    admin,
+                    authorizationEngineIrrevocable,
+                    nameIrrevocable,
+                    symbolIrrevocable,
+                    decimalsIrrevocable,
+                    tokenId_,
+                    terms_,
+                    ruleEngine_,
+                    information_, 
+                    flag_
+            )
+        );
+        cmtats[cmtatCounterId] = address(cmtat);
+        emit CMTAT(address(cmtat), cmtatCounterId);
+        cmtatCounterId++;
+        cmtatsList.push(address(cmtat));
+        return cmtat;
+    }
+ 
+    /**
+    * @notice get CMTAT proxy address
+    *
+    */
+    function getAddress(uint256 cmtatID_) external view returns (address) {
+        return cmtats[cmtatID_];
+    }
+ 
+    /**
+    * @notice get the implementation address from the beacon
+    * @return implementation address
+    */
+    function implementation() public view returns (address) {
+        return beacon.implementation();
+    }
+}
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_TP_FACTORY.sol.html b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_TP_FACTORY.sol.html new file mode 100644 index 00000000..d87ce0c4 --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_TP_FACTORY.sol.html @@ -0,0 +1,320 @@ + + + + Code coverage report for contracts/deployment/CMTAT_TP_FACTORY.sol + + + + + + + +
+
+

+ all files / contracts/deployment/ CMTAT_TP_FACTORY.sol +

+
+
+ 100% + Statements + 8/8 +
+
+ 100% + Branches + 6/6 +
+
+ 100% + Functions + 3/3 +
+
+ 100% + Lines + 14/14 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + +  + + +  + + + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + + + +  +  +  +  +  +  +  + +  + 
//SPDX-License-Identifier: MPL-2.0
+pragma solidity ^0.8.20;
+ 
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "../CMTAT_PROXY.sol";
+import "../libraries/FactoryErrors.sol";
+import '@openzeppelin/contracts/access/AccessControl.sol';
+/**
+* @notice Factory to deploy transparent proxy
+* 
+*/
+contract CMTAT_TP_FACTORY is AccessControl {
+    // Private
+    mapping(uint256 => address) private cmtats;
+    uint256 private cmtatID;
+    event CMTAT(address indexed CMTAT, uint256 id);
+    // Public
+    /// @dev Role to deploy CMTAT
+    bytes32 public constant CMTAT_DEPLOYER_ROLE = keccak256("CMTAT_DEPLOYER_ROLE");
+    address public immutable logic;
+    address[] public cmtatsList;
+ 
+  
+ 
+    /**
+    * @param logic_ contract implementation
+    * @param factoryAdmin admin
+    */
+    constructor(address logic_, address factoryAdmin) {
+        if(logic_ == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+        }
+        if(factoryAdmin == address(0)){
+            revert  FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+        }
+        logic = logic_;
+        _grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin);
+        _grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin);
+    }
+ 
+    function deployCMTAT(
+        address proxyAdminOwner,
+        // CMTAT function initialize
+        address admin,
+        IAuthorizationEngine authorizationEngineIrrevocable,
+        string memory nameIrrevocable,
+        string memory symbolIrrevocable,
+        uint8 decimalsIrrevocable,
+        string memory tokenId_,
+        string memory terms_,
+        IRuleEngine ruleEngine_,
+        string memory information_, 
+        uint256 flag_
+    ) public onlyRole(CMTAT_DEPLOYER_ROLE) returns(TransparentUpgradeableProxy cmtat)   {
+        cmtat = new TransparentUpgradeableProxy(
+            logic,
+            proxyAdminOwner,
+            abi.encodeWithSelector(
+                CMTAT_PROXY(address(0)).initialize.selector,
+                    admin,
+                    authorizationEngineIrrevocable,
+                    nameIrrevocable,
+                    symbolIrrevocable,
+                    decimalsIrrevocable,
+                    tokenId_,
+                    terms_,
+                    ruleEngine_,
+                    information_, 
+                    flag_
+            )
+        );
+        cmtats[cmtatID] = address(cmtat);
+        emit CMTAT(address(cmtat), cmtatID);
+        cmtatID++;
+        cmtatsList.push(address(cmtat));
+        return cmtat;
+    }
+ 
+    /**
+    * @notice get CMTAT proxy address
+    *
+    */
+    function getAddress(uint256 cmtatID_) external view returns (address) {
+        return cmtats[cmtatID_];
+    }
+}
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/deployment/index.html b/doc/general/test/coverage/lcov-report/contracts/deployment/index.html new file mode 100644 index 00000000..946d15e3 --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/deployment/index.html @@ -0,0 +1,106 @@ + + + + Code coverage report for contracts/deployment/ + + + + + + + +
+
+

+ all files contracts/deployment/ +

+
+
+ 100% + Statements + 18/18 +
+
+ 100% + Branches + 14/14 +
+
+ 100% + Functions + 7/7 +
+
+ 100% + Lines + 31/31 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
CMTAT_BEACON_FACTORY.sol
100%10/10100%8/8100%4/4100%17/17
CMTAT_TP_FACTORY.sol
100%8/8100%6/6100%3/3100%14/14
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/index.html b/doc/general/test/coverage/lcov-report/contracts/index.html index edc600ab..65f726b6 100644 --- a/doc/general/test/coverage/lcov-report/contracts/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/index.html @@ -90,7 +90,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/ICCIPToken.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICCIPToken.sol.html new file mode 100644 index 00000000..e63184e5 --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICCIPToken.sol.html @@ -0,0 +1,137 @@ + + + + Code coverage report for contracts/interfaces/ICCIPToken.sol + + + + + + + +
+
+

+ all files / contracts/interfaces/ ICCIPToken.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+/**
+* @notice CCIP Pool with mint
+*/
+interface ICCIPMintERC20 {
+  /// @notice Mints new tokens for a given address.
+  /// @param account The address to mint the new tokens to.
+  /// @param value The number of tokens to be minted.
+  /// @dev this function increases the total supply.
+  function mint(address account, uint256 value) external;
+}
+ 
+/**
+* @notice CCIP Pool with burnFrom
+*/
+interface ICCIPBurnFromERC20 {
+  /// @notice Burns tokens from a given address..
+  /// @param account The address to burn tokens from.
+  /// @param value The number of tokens to be burned.
+  /// @dev this function decreases the total supply.
+  function burnFrom(address account, uint256 value) external;
+}
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICMTATSnapshot.sol.html similarity index 54% rename from doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol.html rename to doc/general/test/coverage/lcov-report/contracts/interfaces/ICMTATSnapshot.sol.html index 816f0938..7c285dc9 100644 --- a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICMTATSnapshot.sol.html @@ -1,14 +1,14 @@ - Code coverage report for contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol + Code coverage report for contracts/interfaces/ICMTATSnapshot.sol - - + + @@ -16,13 +16,13 @@

- all files / contracts/test/CMTATSnapshot/ CMTATSnapshotStandaloneTest.sol + all files / contracts/interfaces/ ICMTATSnapshot.sol

100% Statements - 1/1 + 0/0
100% @@ -32,12 +32,12 @@

100% Functions - 1/1 + 0/0
100% Lines - 1/1 + 0/0

@@ -81,28 +81,7 @@

36 37 38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52

  -  -  -  -  -  -  -  -  +39        @@ -129,11 +108,6 @@

      -43× -  -  -  -        @@ -149,52 +123,39 @@

  pragma solidity ^0.8.20;   -import "./CMTAT_BASE_SnapshotTest.sol"; -  -contract CMTATSnapshotStandaloneTest is CMTAT_BASE_SnapshotTest { +/** +* @notice interface to represent a CMTAT with snapshot +*/ +interface ICMTATSnapshot { /** - @notice Contract version for standalone deployment - @param forwarderIrrevocable address of the forwarder, required for the gasless support - @param admin address of the admin of contract (Access Control) - @param nameIrrevocable name of the token - @param symbolIrrevocable name of the symbol - @param tokenId name of the tokenId - @param terms terms associated with the token - @param ruleEngine address of the ruleEngine to apply rules to transfers - @param information additional information to describe the token - @param flag add information under the form of bit(0, 1) + * @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. + * @return value stored in the snapshot, or the actual balance if no snapshot + */ + function snapshotBalanceOf(uint256 time,address owner) external view returns (uint256); + /** + * @dev See {OpenZeppelin - ERC20Snapshot} + * Retrieves the total supply at the specified time. + * @return value stored in the snapshot, or the actual totalSupply if no snapshot */ - /// @custom:oz-upgrades-unsafe-allow constructor - constructor( - address forwarderIrrevocable, - address admin, - uint48 initialDelayToAcceptAdminRole, - string memory nameIrrevocable, - string memory symbolIrrevocable, - uint8 decimalsIrrevocable, - string memory tokenId_, - string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, - uint256 flag_ - ) MetaTxModule(forwarderIrrevocable) { - // Initialize the contract to avoid front-running - // Warning : do not initialize the proxy - initialize( - admin, - initialDelayToAcceptAdminRole, - nameIrrevocable, - symbolIrrevocable, - decimalsIrrevocable, - tokenId_, - terms_, - ruleEngine_, - information_, - flag_ - ); - } + function snapshotTotalSupply(uint256 time) external view returns (uint256); + /** + * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls + * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply + */ + function snapshotInfo(uint256 time, address owner) external view returns (uint256 ownerBalance, uint256 totalSupply); + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply + */ + function snapshotInfoBatch(uint256 time, address[] calldata addresses) external view returns (uint256[] memory ownerBalances, uint256 totalSupply); +  + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply + */ + function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) external view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply); +    - // No storage gap because the contract is deployed in standalone mode }  

@@ -202,10 +163,10 @@

- + - + diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html index 8abc2b94..47fcaefb 100644 --- a/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html @@ -69,7 +69,13 @@

24 25 26 -27  +27 +28 +29 +30  +  +  +        @@ -97,8 +103,11 @@

   
//SPDX-License-Identifier: MPL-2.0
  
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
  
+/**
+* @notice interface to represent debt tokens
+*/
 interface IDebtGlobal {
     struct DebtBase {
         uint256 interestRate;
@@ -127,7 +136,7 @@ 

diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html index 80221645..349aeece 100644 --- a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html @@ -97,10 +97,10 @@

   
//SPDX-License-Identifier: MPL-2.0
  
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
  
 /*
-@dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
+* @dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
 */
 interface IERC1404 {
     /**
@@ -127,7 +127,7 @@ 

diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html new file mode 100644 index 00000000..e44fda76 --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html @@ -0,0 +1,110 @@ + + + + Code coverage report for contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol + + + + + + + +
+
+

+ all files / contracts/interfaces/draft-IERC1404/ draft-IERC1404EnumCode.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+interface IERC1404EnumCode {
+    /* 
+    * @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
+    */
+    enum REJECTED_CODE_BASE {
+        TRANSFER_OK,
+        TRANSFER_REJECTED_PAUSED,
+        TRANSFER_REJECTED_FROM_FROZEN,
+        TRANSFER_REJECTED_TO_FROZEN
+    }
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html index af1a8d3f..86c0dea2 100644 --- a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html @@ -61,23 +61,7 @@

16 17 18 -19 -20 -21 -22 -23 -24 -25 -26 -27  -  -  -  -  -  -  -  -  +19        @@ -97,20 +81,12 @@

   
//SPDX-License-Identifier: MPL-2.0
  
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
  
 import "./draft-IERC1404.sol";
+import "./draft-IERC1404EnumCode.sol";
  
-interface IERC1404Wrapper is IERC1404 {
-    /* 
-    @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
-    */
-    enum REJECTED_CODE_BASE {
-        TRANSFER_OK,
-        TRANSFER_REJECTED_PAUSED,
-        TRANSFER_REJECTED_FROM_FROZEN,
-        TRANSFER_REJECTED_TO_FROZEN
-    }
+interface IERC1404Wrapper is IERC1404, IERC1404EnumCode  {
  
     /**
      * @dev Returns true if the transfer is valid, and false otherwise.
@@ -127,7 +103,7 @@ 

diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html index 37cf8a99..d1570445 100644 --- a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html @@ -71,6 +71,19 @@

0/0 + + draft-IERC1404EnumCode.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + + draft-IERC1404Wrapper.sol
@@ -90,7 +103,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IAuthorizationEngine.sol.html similarity index 72% rename from doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol.html rename to doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IAuthorizationEngine.sol.html index ac916b62..efafbc17 100644 --- a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IAuthorizationEngine.sol.html @@ -1,7 +1,7 @@ - Code coverage report for contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol + Code coverage report for contracts/interfaces/engine/IAuthorizationEngine.sol @@ -16,13 +16,13 @@

- all files / contracts/test/CMTATSnapshot/ CMTATSnapshotProxyTest.sol + all files / contracts/interfaces/engine/ IAuthorizationEngine.sol

100% Statements - 1/1 + 0/0
100% @@ -32,12 +32,12 @@

100% Functions - 1/1 + 0/0
100% Lines - 1/1 + 0/0

@@ -63,8 +63,7 @@

18 19 20 -21 -22  +21        @@ -80,31 +79,29 @@

      -         - 
//SPDX-License-Identifier: MPL-2.0
+ 
// SPDX-License-Identifier: MPL-2.0
  
 pragma solidity ^0.8.20;
  
-import "./CMTAT_BASE_SnapshotTest.sol";
- 
-contract CMTATSnapshotProxyTest is CMTAT_BASE_SnapshotTest {
-    /** 
-    @notice Contract version for the deployment with a proxy
-    @param forwarderIrrevocable address of the forwarder, required for the gasless support
-    */
-    /// @custom:oz-upgrades-unsafe-allow constructor
-    constructor(
-        address forwarderIrrevocable
-    ) MetaTxModule(forwarderIrrevocable) {
-        // Disable the possibility to initialize the implementation
-        _disableInitializers();
-    }
+interface IAuthorizationEngine {
+    /**
+     * @dev Returns true if the operation is authorized, and false otherwise.
+     */
+    function operateOnGrantRole(
+        bytes32 role, address account
+    ) external returns (bool isValid);
  
-    uint256[50] private __gap;
+    /**
+     * @dev Returns true if the operation is authorized, and false otherwise.
+     */
+    function operateOnRevokeRole(
+        bytes32 role, address account
+    ) external returns (bool isValid);
+   
 }
  
@@ -112,7 +109,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IRuleEngine.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IRuleEngine.sol.html new file mode 100644 index 00000000..1bc8a4d2 --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IRuleEngine.sol.html @@ -0,0 +1,116 @@ + + + + Code coverage report for contracts/interfaces/engine/IRuleEngine.sol + + + + + + + +
+
+

+ all files / contracts/interfaces/engine/ IRuleEngine.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+import "../draft-IERC1404/draft-IERC1404Wrapper.sol";
+ 
+interface IRuleEngine is IERC1404Wrapper {
+    /**
+     * @dev Returns true if the operation is a success, and false otherwise.
+     */
+    function operateOnTransfer(
+        address _from,
+        address _to,
+        uint256 _amount
+    ) external returns (bool isValid);
+   
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/contracts/test/CMTATSnapshot/index.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/index.html similarity index 63% rename from doc/general/test/coverage/contracts/test/CMTATSnapshot/index.html rename to doc/general/test/coverage/lcov-report/contracts/interfaces/engine/index.html index e91d5b68..38389bf0 100644 --- a/doc/general/test/coverage/contracts/test/CMTATSnapshot/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/index.html @@ -1,7 +1,7 @@ - Code coverage report for contracts/test/CMTATSnapshot/ + Code coverage report for contracts/interfaces/engine/ @@ -16,28 +16,28 @@

- all files contracts/test/CMTATSnapshot/ + all files contracts/interfaces/engine/

- 90% + 100% Statements - 27/30 + 0/0
- 50% + 100% Branches - 4/8 + 0/0
- 70% + 100% Functions - 7/10 + 0/0
- 87.1% + 100% Lines - 27/31 + 0/0
@@ -59,42 +59,29 @@

- CMTATSnapshotProxyTest.sol + IAuthorizationEngine.sol
100% - 1/1 + 0/0 100% 0/0 100% - 1/1 + 0/0 100% - 1/1 + 0/0 - CMTATSnapshotStandaloneTest.sol + IRuleEngine.sol
100% - 1/1 + 0/0 100% 0/0 100% - 1/1 + 0/0 100% - 1/1 - - - - CMTAT_BASE_SnapshotTest.sol -
- 89.29% - 25/28 - 50% - 4/8 - 62.5% - 5/8 - 86.21% - 25/29 + 0/0 @@ -103,7 +90,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html index 89381d4f..0eabfb3c 100644 --- a/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html @@ -59,6 +59,32 @@

+ ICCIPToken.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + + + + ICMTATSnapshot.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + + + IDebtGlobal.sol
100% @@ -77,7 +103,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html b/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html index 02e3926a..e6ba0ed7 100644 --- a/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html @@ -107,7 +107,11 @@

62 63 64 -65  +65 +66 +67  +  +        @@ -231,6 +235,8 @@

  // AuthorizationModule error CMTAT_AuthorizationModule_AddressZeroNotAllowed(); + error CMTAT_AuthorizationModule_InvalidAuthorization(); + error CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet();   // PauseModule error CMTAT_PauseModule_ContractIsDeactivated(); @@ -241,7 +247,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/libraries/FactoryErrors.sol.html b/doc/general/test/coverage/lcov-report/contracts/libraries/FactoryErrors.sol.html new file mode 100644 index 00000000..053c177f --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/libraries/FactoryErrors.sol.html @@ -0,0 +1,92 @@ + + + + Code coverage report for contracts/libraries/FactoryErrors.sol + + + + + + + +
+
+

+ all files / contracts/libraries/ FactoryErrors.sol +

+
+
+ 100% + Statements + 0/0 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 0/0 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10  +  +  +  +  +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+library FactoryErrors {
+    error CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+    error CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner();
+    error CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/libraries/index.html b/doc/general/test/coverage/lcov-report/contracts/libraries/index.html index cdf54c04..6f5a0847 100644 --- a/doc/general/test/coverage/lcov-report/contracts/libraries/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/libraries/index.html @@ -71,13 +71,26 @@

0/0 + + FactoryErrors.sol +
+ 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + 100% + 0/0 + +
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html index 5a403e66..e6372f2e 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html @@ -20,9 +20,9 @@

- 96.15% + 96.88% Statements - 25/26 + 31/32
75% @@ -30,14 +30,14 @@

6/8

- 87.5% + 90% Functions - 7/8 + 9/10
- 96.3% + 96.97% Lines - 26/27 + 32/33
@@ -267,7 +267,33 @@

222 223 224 -225  +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251        @@ -335,8 +361,8 @@

      -281×   +387×       @@ -366,49 +392,52 @@

      -281× -281×   -281× +387× +387×   -281× -281× -278× +387×   +387× +387×   -278×   +387×         -278× +387× +387×   +387×     -278× -278× -278×   -278× -278× +387× +384× +384×   -278× -278× +384× +384×   +384× +384×           +384×     -278× -278× -278×   +384× +384× +384×   -278× +  +384×       @@ -453,10 +482,31 @@

      -359× +10× + +  +  +  +  +  +  +  +  +  +  +  +464× 34×   -325× +  +  +  +  +  +430× +430× +  +        @@ -467,6 +517,7 @@

      +1591×       @@ -474,7 +525,8 @@

      -1029× +  +1591×       @@ -506,10 +558,11 @@

import "./wrapper/core/ERC20BaseModule.sol"; import "./wrapper/core/PauseModule.sol"; /* -SnapshotModule: -Add this import in case you add the SnapshotModule -import "./wrapper/optional/SnapshotModule.sol"; +* SnapshotModule: +* Add this import in case you add the SnapshotModule */ +import "./wrapper/extensions/ERC20SnapshotModule.sol"; +  import "./wrapper/controllers/ValidationModule.sol"; import "./wrapper/extensions/MetaTxModule.sol"; import "./wrapper/extensions/DebtModule/DebtBaseModule.sol"; @@ -529,7 +582,7 @@

ValidationModule, MetaTxModule, ERC20BaseModule, - // ERC20SnapshotModule, + ERC20SnapshotModule, DebtBaseModule, CreditEventsModule { @@ -549,19 +602,19 @@

*/ function initialize( address admin, - uint48 initialDelayToAcceptAdminRole, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, - string memory information_, + IRuleEngine ruleEngine_, + string memory information_, uint256 flag_ ) public initializer { __CMTAT_init( admin, - initialDelayToAcceptAdminRole, + authorizationEngineIrrevocable, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -578,13 +631,13 @@

*/ function __CMTAT_init( address admin, - uint48 initialDelayToAcceptAdminRole, + IAuthorizationEngine authorizationEngineIrrevocable, string memory nameIrrevocable, string memory symbolIrrevocable, uint8 decimalsIrrevocable, string memory tokenId_, string memory terms_, - IERC1404Wrapper ruleEngine_, + IRuleEngine ruleEngine_, string memory information_, uint256 flag_ ) internal EonlyInitializing { @@ -596,21 +649,22 @@

__ERC165_init_unchained(); // AuthorizationModule inherits from AccessControlUpgradeable __AccessControl_init_unchained(); - __AccessControlDefaultAdminRules_init_unchained(initialDelayToAcceptAdminRole, admin); __Pausable_init_unchained();   /* Internal Modules */ __Enforcement_init_unchained(); /* SnapshotModule: - Add this call in case you add the SnapshotModule + Add these two calls in case you add the SnapshotModule + */ + __SnapshotModuleBase_init_unchained(); __ERC20Snapshot_init_unchained(); - */ + __Validation_init_unchained(ruleEngine_);   /* Wrapper */ // AuthorizationModule_init_unchained is called firstly due to inheritance - __AuthorizationModule_init_unchained(); + __AuthorizationModule_init_unchained(admin, authorizationEngineIrrevocable); __ERC20BurnModule_init_unchained(); __ERC20MintModule_init_unchained(); // EnforcementModule_init_unchained is called before ValidationModule_init_unchained due to inheritance @@ -623,8 +677,9 @@

/* SnapshotModule: Add this call in case you add the SnapshotModule - __ERC20SnasphotModule_init_unchained(); */ + __ERC20SnasphotModule_init_unchained(); +   /* Other modules */ __DebtBaseModule_init_unchained(); @@ -664,41 +719,64 @@

{ return ERC20BaseModule.transferFrom(sender, recipient, amount); } +  + /** + * @notice burn and mint atomically + * @param from current token holder to burn tokens + * @param to receiver to send the new minted tokens + * @param amountToBurn number of tokens to burn + * @param amountToMint number of tokens to mint + * @dev + * - The access control is managed by the functions burn (ERC20BurnModule) and mint (ERC20MintModule) + * - Input validation is also managed by the functions burn and mint + * - You can mint more tokens than burnt + */ + function burnAndMint(address from, address to, uint256 amountToBurn, uint256 amountToMint, string calldata reason) public { + burn(from, amountToBurn, reason); + mint(to, amountToMint); + }   /** * @dev - * SnapshotModule: - * - override SnapshotModuleInternal if you add the SnapshotModule - * e.g. override(ERC20SnapshotModuleInternal, ERC20Upgradeable) - * - remove the keyword view + * */ function _update( address from, address to, uint256 amount ) internal override(ERC20Upgradeable) { - if (!ValidationModule.validateTransfer(from, to, amount)) { + if (!ValidationModule._operateOnTransfer(from, to, amount)) { revert Errors.CMTAT_InvalidTransfer(from, to, amount); } - ERC20Upgradeable._update(from, to, amount); - // We call the SnapshotModule only if the transfer is valid /* SnapshotModule: - Add this call in case you add the SnapshotModule - ERC20SnapshotModuleInternal._update(from, to, amount); + Add this in case you add the SnapshotModule + We call the SnapshotModule only if the transfer is valid */ + ERC20SnapshotModuleInternal._snapshotUpdate(from, to); + ERC20Upgradeable._update(from, to, amount); }   + /************* MetaTx Module *************/ /** * @dev This surcharge is not necessary if you do not use the MetaTxModule */ function _msgSender() internal view - override(MetaTxModule, ContextUpgradeable) + override(ERC2771ContextUpgradeable, ContextUpgradeable) returns (address sender) { - return MetaTxModule._msgSender(); + return ERC2771ContextUpgradeable._msgSender(); + } +  + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _contextSuffixLength() internal view + override(ERC2771ContextUpgradeable, ContextUpgradeable) + returns (uint256) { + return ERC2771ContextUpgradeable._contextSuffixLength(); }   /** @@ -707,10 +785,10 @@

function _msgData() internal view - override(MetaTxModule, ContextUpgradeable) + override(ERC2771ContextUpgradeable, ContextUpgradeable) returns (bytes calldata) { - return MetaTxModule._msgData(); + return ERC2771ContextUpgradeable._msgData(); }   uint256[50] private __gap; @@ -721,7 +799,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/index.html index d539691d..a21c1a14 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/index.html @@ -20,9 +20,9 @@

- 96.15% + 96.88% Statements - 25/26 + 31/32
75% @@ -30,14 +30,14 @@

6/8

- 87.5% + 90% Functions - 7/8 + 9/10
- 96.3% + 96.97% Lines - 26/27 + 32/33
@@ -60,15 +60,15 @@

CMTAT_BASE.sol -
- 96.15% - 25/26 +
+ 96.88% + 31/32 75% 6/8 - 87.5% - 7/8 - 96.3% - 26/27 + 90% + 9/10 + 96.97% + 32/33 @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html index 29b17eec..62c41c3d 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html @@ -20,24 +20,24 @@

- 95.65% + 100% Statements - 88/92 + 16/16
- 92.31% + 90% Branches - 72/78 + 9/10
- 90% + 100% Functions - 18/20 + 9/9
- 95.24% + 100% Lines - 120/126 + 24/24
@@ -184,654 +184,56 @@

139 140 141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -170× - -  -  -  -  -  -166× +142    -94×     -94× -            -     -162× -162×             -16× -         -12×   -12× -     - -   -     - -10× -10× -10×     -   -             +480× +480×   -38× -   -34× -         -30× -   -26× -26× - -  -18× -14× -14× - -  -  -  -  -  - -  -  -10× - - -  -  -  -  -  - -  - -  -  -  -  -  -  -  -18× - -  -14× - -  -  -10× - -  - - -  -  -  -  -  -  -  -  -  -12× -  -  -12× -12× - -  - -16× -16× -16× -  -  - -  -  -  -  -  -  -  -76× -  -76× -68× -  -  -  -  -68× -48× -  -  -20× -  - -  -  - - -12× -  -  -12× -12× -  -  -  -  -  -28× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -240× -  -  -  -  -240× +160× +160× +480×   +160×       @@ -840,118 +242,18 @@

    80× -  -  -  80× -  -  -  -  -  -  -  -  -  -  -  -66× -66× -  -16× -16× -  -14× -  -  - -  -  -  -50× -50× -  -66× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -320× -  -320× -236× -  -84× -  -  -  -  -  -  -  80×           +80×   -52× -  -  -  -  -  -  -  -  -  -  -  -  -132× -132× -36× -36× -  -  -  -  -  -  -  -  -  -66×       -66× -18× -18×       @@ -959,13 +261,12 @@

      +1200×     -132× -124×   -   +1200×       @@ -974,59 +275,52 @@

      +720×   -50× -50×   -50×   +720×     -30×       -10×       -10×       +430× +430×   +99× +99×   +55×     +44×       +331× +331×     -134×   -134×       -48×   +485×   -86× -86× -86× -116× -52× -52×     -64×   -52× -52×     -86× +375×       @@ -1035,15 +329,11 @@

  pragma solidity ^0.8.20;   -import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ArraysUpgradeable.sol"; -  -import "../../libraries/Errors.sol"; -  +import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol'; +import "./base/SnapshotModuleBase.sol"; /** - * @dev Snapshot module. + * @dev Snapshot module internal. * * Useful to take a snapshot of token holder balance and total supply at a specific time * Inspired by Openzeppelin - ERC20Snapshot but use the time as Id instead of a counter. @@ -1051,269 +341,62 @@

because overriding this function can break the contract. */   -abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { - using ArraysUpgradeable for uint256[]; -  - /** - @notice Emitted when the snapshot with the specified oldTime was scheduled or rescheduled at the specified newTime. - */ - event SnapshotSchedule(uint256 indexed oldTime, uint256 indexed newTime); -  - /** - @notice Emitted when the scheduled snapshot with the specified time was cancelled. - */ - event SnapshotUnschedule(uint256 indexed time); -  - /** - @dev See {OpenZeppelin - ERC20Snapshot} - Snapshotted values have arrays of ids (time) and the value corresponding to that id. - ids is expected to be sorted in ascending order, and to contain no repeated elements - because we use findUpperBound in the function _valueAt - */ - struct Snapshots { - uint256[] ids; - uint256[] values; - } -  - /** - @dev See {OpenZeppelin - ERC20Snapshot} - */ - mapping(address => Snapshots) private _accountBalanceSnapshots; - Snapshots private _totalSupplySnapshots; -  - /** - @dev time instead of a counter for OpenZeppelin - */ - // Initialized to zero - uint256 private _currentSnapshotTime; - // Initialized to zero - uint256 private _currentSnapshotIndex; +abstract contract ERC20SnapshotModuleInternal is SnapshotModuleBase, ERC20Upgradeable { + using Arrays for uint256[];   /** - @dev - list of scheduled snapshot (time) - This list is sorted in ascending order + * @dev + * list of scheduled snapshot (time) + * This list is sorted in ascending order */ uint256[] private _scheduledSnapshots; -  - /** - * @dev Initializes the contract - */ - function __ERC20Snapshot_init( - string memory name_, - string memory symbol_ - ) internal onlyInitializing { - __Context_init_unchained(); - __ERC20_init(name_, symbol_); - __ERC20Snapshot_init_unchained(); - }   function __ERC20Snapshot_init_unchained() internal EonlyInitializing { // Nothing to do // _currentSnapshotTime & _currentSnapshotIndex are initialized to zero } -  - /** - @dev schedule a snapshot at the specified time - You can only add a snapshot after the last previous - */ - function _scheduleSnapshot(uint256 time) internal { - // Check the time firstly to avoid an useless read of storage - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - time, - block.timestamp - ); - } -  - if (_scheduledSnapshots.length > 0) { - // We check the last snapshot on the list - uint256 nextSnapshotTime = _scheduledSnapshots[ - _scheduledSnapshots.length - 1 - ]; - Iif (time < nextSnapshotTime) { - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampBeforeLastSnapshot( - time, - nextSnapshotTime - ); - } else if (time == nextSnapshotTime) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - } - _scheduledSnapshots.push(time); - emit SnapshotSchedule(0, time); - } -  - /** - @dev schedule a snapshot at the specified time - */ - function _scheduleSnapshotNotOptimized(uint256 time) internal { - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - time, - block.timestamp - ); - } - (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); - // Perfect match - if (isFound) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - // if no upper bound match found, we push the snapshot at the end of the list - if (index == _scheduledSnapshots.length) { - _scheduledSnapshots.push(time); - } else { - _scheduledSnapshots.push( - _scheduledSnapshots[_scheduledSnapshots.length - 1] - ); - for (uint256 i = _scheduledSnapshots.length - 2; i > index; ) { - _scheduledSnapshots[i] = _scheduledSnapshots[i - 1]; - unchecked { - --i; - } - } - _scheduledSnapshots[index] = time; - } - emit SnapshotSchedule(0, time); - } -  - /** - @dev reschedule a scheduled snapshot at the specified newTime - */ - function _rescheduleSnapshot(uint256 oldTime, uint256 newTime) internal { - // Check the time firstly to avoid an useless read of storage - if (oldTime <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - if (newTime <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast( - newTime, - block.timestamp - ); - } - if (_scheduledSnapshots.length == 0) { - revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); - } - (bool foundOld, uint256 index) = _findScheduledSnapshotIndex(oldTime); - if (!foundOld) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); - } - if (index + 1 < _scheduledSnapshots.length) { - uint256 nextSnapshotTime = _scheduledSnapshots[index + 1]; - if (newTime > nextSnapshotTime) { - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampAfterNextSnapshot( - newTime, - nextSnapshotTime - ); - } else if (newTime == nextSnapshotTime) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists(); - } - } - if (index > 0) { - if (newTime <= _scheduledSnapshots[index - 1]) - revert Errors - .CMTAT_SnapshotModule_SnapshotTimestampBeforePreviousSnapshot( - newTime, - _scheduledSnapshots[index - 1] - ); - } - _scheduledSnapshots[index] = newTime; -  - emit SnapshotSchedule(oldTime, newTime); - }   /** - @dev unschedule the last scheduled snapshot + * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls + * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply */ - function _unscheduleLastSnapshot(uint256 time) internal { - // Check the time firstly to avoid an useless read of storage - if (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - if (_scheduledSnapshots.length == 0) { - revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled(); - } - // All snapshot time are unique, so we do not check the indice - if (time != _scheduledSnapshots[_scheduledSnapshots.length - 1]) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); - } - _scheduledSnapshots.pop(); - emit SnapshotUnschedule(time); + function snapshotInfo(uint256 time, address owner) public view returns (uint256 ownerBalance, uint256 totalSupply) { + ownerBalance = snapshotBalanceOf(time, owner); + totalSupply = snapshotTotalSupply(time); }   - /** - @dev unschedule (remove) a scheduled snapshot in three steps: - - search the snapshot in the list - - If found, move all next snapshots one position to the left - - Reduce the array size by deleting the last snapshot + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply */ - function _unscheduleSnapshotNotOptimized(uint256 time) internal { - Iif (time <= block.timestamp) { - revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone(); - } - (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time); - if (!isFound) { - revert Errors.CMTAT_SnapshotModule_SnapshotNotFound(); + function snapshotInfoBatch(uint256 time, address[] calldata addresses) public view returns (uint256[] memory ownerBalances, uint256 totalSupply) { + ownerBalances = new uint256[](addresses.length); + for(uint256 i = 0; i < addresses.length; ++i){ + ownerBalances[i] = snapshotBalanceOf(time, addresses[i]); } - for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ) { - _scheduledSnapshots[i] = _scheduledSnapshots[i + 1]; - unchecked { - ++i; - } - } - _scheduledSnapshots.pop(); + totalSupply = snapshotTotalSupply(time); }   - /** - @dev - Get the next scheduled snapshots + /** + * @notice Return snapshotBalanceOf for each address in the array and the total supply + * @return ownerBalances array with the balance of each address, the total supply */ - function getNextSnapshots() public view returns (uint256[] memory) { - uint256[] memory nextScheduledSnapshot = new uint256[](0); - // no snapshot were planned - if (_scheduledSnapshots.length > 0) { - ( - uint256 timeLowerBound, - uint256 indexLowerBound - ) = _findScheduledMostRecentPastSnapshot(); - // All snapshots are situated in the futur - if ((timeLowerBound == 0) && (_currentSnapshotTime == 0)) { - return _scheduledSnapshots; - } else { - // There are snapshots situated in the futur - if (indexLowerBound + 1 != _scheduledSnapshots.length) { - // All next snapshots are located after the snapshot specified by indexLowerBound - uint256 arraySize = _scheduledSnapshots.length - - indexLowerBound - - 1; - nextScheduledSnapshot = new uint256[](arraySize); - for (uint256 i; i < arraySize; ) { - nextScheduledSnapshot[i] = _scheduledSnapshots[ - indexLowerBound + 1 + i - ]; - unchecked { - ++i; - } - } - } + function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) public view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply) { + ownerBalances = new uint256[][](times.length); + totalSupply = new uint256[](times.length); + for(uint256 iT = 0; iT < times.length; ++iT){ + /*ownerBalances[iT] = new uint256[](addresses.length); + for(uint256 jA = 0; jA < addresses.length; ++jA){ + ownerBalances[iT][jA] = snapshotBalanceOf(times[iT], addresses[jA]); } + totalSupply[iT] = snapshotTotalSupply(times[iT]);*/ + (ownerBalances[iT], totalSupply[iT]) = snapshotInfoBatch(times[iT],addresses); } - return nextScheduledSnapshot; - } -  - /** - @dev - Get all snapshots - */ - function getAllSnapshots() public view returns (uint256[] memory) { - return _scheduledSnapshots; }   /** - @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. - @return value stored in the snapshot, or the actual balance if no snapshot + * @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created. + * @return value stored in the snapshot, or the actual balance if no snapshot */ function snapshotBalanceOf( uint256 time, @@ -1328,9 +411,9 @@

}   /** - @dev See {OpenZeppelin - ERC20Snapshot} - Retrieves the total supply at the specified time. - @return value stored in the snapshot, or the actual totalSupply if no snapshot + * @dev See {OpenZeppelin - ERC20Snapshot} + * Retrieves the total supply at the specified time. + * @return value stored in the snapshot, or the actual totalSupply if no snapshot */ function snapshotTotalSupply(uint256 time) public view returns (uint256) { (bool snapshotted, uint256 value) = _valueAt( @@ -1339,16 +422,16 @@

); return snapshotted ? value : totalSupply(); } +    /** - @dev Update balance and/or total supply snapshots before the values are modified. This is implemented - in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations. + * @dev Update balance and/or total supply snapshots before the values are modified. This is implemented + * in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations. */ - function _update( + function _snapshotUpdate( address from, - address to, - uint256 amount - ) internal virtual override { + address to + ) internal virtual { _setCurrentSnapshot(); if (from != address(0)) { // for both burn and transfer @@ -1365,163 +448,21 @@

_updateAccountSnapshot(to); _updateTotalSupplySnapshot(); } - ERC20Upgradeable._update(from, to, amount); }   /** - @dev See {OpenZeppelin - ERC20Snapshot} - @param time where we want a snapshot - @param snapshots the struct where are stored the snapshots - @return snapshotExist true if a snapshot is found, false otherwise - value 0 if no snapshot, balance value if a snapshot exists - */ - function _valueAt( - uint256 time, - Snapshots storage snapshots - ) private view returns (bool snapshotExist, uint256 value) { - // When a valid snapshot is queried, there are three possibilities: - // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never - // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds - // to this id is the current one. - // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the - // requested id, and its value is the one to return. - // c) More snapshots were created after the requested one, and the queried value was later modified. There will be - // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is - // larger than the requested one. - // - // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if - // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does - // exactly this. -  - uint256 index = snapshots.ids.findUpperBound(time); -  - if (index == snapshots.ids.length) { - return (false, 0); - } else { - return (true, snapshots.values[index]); - } - } -  - /** - @dev See {OpenZeppelin - ERC20Snapshot} + * @dev See {OpenZeppelin - ERC20Snapshot} */ function _updateAccountSnapshot(address account) private { _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account)); }   /** - @dev See {OpenZeppelin - ERC20Snapshot} + * @dev See {OpenZeppelin - ERC20Snapshot} */ function _updateTotalSupplySnapshot() private { _updateSnapshot(_totalSupplySnapshots, totalSupply()); } -  - /** - @dev - Inside a struct Snapshots: - - Update the array ids to the current Snapshot time if this one is greater than the snapshot times stored in ids. - - Update the value to the corresponding value. - */ - function _updateSnapshot( - Snapshots storage snapshots, - uint256 currentValue - ) private { - uint256 current = _currentSnapshotTime; - if (_lastSnapshot(snapshots.ids) < current) { - snapshots.ids.push(current); - snapshots.values.push(currentValue); - } - } -  - /** - @dev - Set the currentSnapshotTime by retrieving the most recent snapshot - if a snapshot exists, clear all past scheduled snapshot - */ - function _setCurrentSnapshot() internal { - ( - uint256 scheduleSnapshotTime, - uint256 scheduleSnapshotIndex - ) = _findScheduledMostRecentPastSnapshot(); - if (scheduleSnapshotTime > 0) { - _currentSnapshotTime = scheduleSnapshotTime; - _currentSnapshotIndex = scheduleSnapshotIndex; - } - } -  - /** - @return the last snapshot time inside a snapshot ids array - */ - function _lastSnapshot( - uint256[] storage ids - ) private view returns (uint256) { - if (ids.length == 0) { - return 0; - } else { - return ids[ids.length - 1]; - } - } -  - /** - @dev Find the snapshot index at the specified time - @return (true, index) if the snapshot exists, (false, 0) otherwise - */ - function _findScheduledSnapshotIndex( - uint256 time - ) private view returns (bool, uint256) { - uint256 indexFound = _scheduledSnapshots.findUpperBound(time); - uint256 _scheduledSnapshotsLength = _scheduledSnapshots.length; - // Exact match - if ( - indexFound != _scheduledSnapshotsLength && - _scheduledSnapshots[indexFound] == time - ) { - return (true, indexFound); - } - // Upper bound match - else if (indexFound != _scheduledSnapshotsLength) { - return (false, indexFound); - } - // no match - else { - return (false, _scheduledSnapshotsLength); - } - } -  - /** - @dev find the most recent past snapshot - The complexity of this function is O(N) because we go through the whole list - */ - function _findScheduledMostRecentPastSnapshot() - private - view - returns (uint256 time, uint256 index) - { - uint256 currentArraySize = _scheduledSnapshots.length; - // no snapshot or the current snapshot already points on the last snapshot - if ( - currentArraySize == 0 || - ((_currentSnapshotIndex + 1 == currentArraySize) && (time != 0)) - ) { - return (0, currentArraySize); - } - // mostRecent is initialized in the loop - uint256 mostRecent; - index = currentArraySize; - for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ) { - if (_scheduledSnapshots[i] <= block.timestamp) { - mostRecent = _scheduledSnapshots[i]; - index = i; - } else { - // All snapshot are planned in the futur - break; - } - unchecked { - ++i; - } - } - return (mostRecent, index); - }   uint256[50] private __gap; } @@ -1531,7 +472,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html index 4349a578..76be6850 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html @@ -20,24 +20,24 @@

- 81.82% + 100% Statements - 9/11 + 9/9
- 62.5% + 83.33% Branches - 5/8 + 5/6
- 80% + 100% Functions - 4/5 + 4/4
- 84.62% + 100% Lines - 11/13 + 11/11
@@ -131,15 +131,7 @@

86 87 88 -89 -90 -91 -92 -93 -94 -95 -96 -97  +89        @@ -182,19 +174,11 @@

      -  -          -  -  -  -  -  -  -864× +974×       @@ -273,14 +257,6 @@

);   mapping(address => bool) private _frozen; -  - /** - * @dev Initializes the contract - */ - function __Enforcement_init() internal onlyInitializing { - __Context_init_unchained(); - __Enforcement_init_unchained(); - }   function __Enforcement_init_unchained() internal EonlyInitializing { // no variable to initialize @@ -337,7 +313,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html index c82120be..10dac068 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html @@ -20,28 +20,28 @@

- 71.43% + 100% Statements - 5/7 + 6/6
- 50% + 75% Branches - 3/6 + 3/4
- 80% + 100% Functions - 4/5 + 5/5
- 75% + 100% Lines - 6/8 + 7/7
-
+

-	
-	
-	
-	
-	
+	
+	
+	
-	
-	
-	
+	
+	
+	
+	
+	
-	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
-	
+	
+	
+	
+	
+	
@@ -103,7 +103,7 @@ 

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html index 85971c2b..81024f87 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html @@ -20,28 +20,28 @@

- 50% + 100% Statements - 5/10 + 16/16
- 62.5% + 91.67% Branches - 5/8 + 22/24
- 75% + 100% Functions - 3/4 + 5/5
- 50% + 95.45% Lines - 5/10 + 21/22
-
+
1 2 @@ -112,17 +112,7 @@

67 68 69 -70 -71 -72 -73 -74 -75 -76 -77

  -  -  -  +70        @@ -148,38 +138,33 @@

      +387× +16× +16×   -  -            -364× -14× -14×           +12×             -51× -  -  -      +       -       @@ -187,10 +172,11 @@

      +       - +57×       @@ -201,8 +187,7 @@

  import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"; import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; -import "../../interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol"; -  +import "../../interfaces/engine/IRuleEngine.sol"; /** * @dev Validation module. * @@ -215,22 +200,12 @@

/** * @dev Emitted when a rule engine is set. */ - event RuleEngine(IERC1404Wrapper indexed newRuleEngine); + event RuleEngine(IRuleEngine indexed newRuleEngine);   - IERC1404Wrapper public ruleEngine; -  - /** - * @dev Initializes the contract with rule engine. - */ - function __Validation_init( - IERC1404Wrapper ruleEngine_ - ) internal onlyInitializing { - __Context_init_unchained(); - __Validation_init_unchained(ruleEngine_); - } + IRuleEngine public ruleEngine;   function __Validation_init_unchained( - IERC1404Wrapper ruleEngine_ + IRuleEngine ruleEngine_ ) internal EonlyInitializing { if (address(ruleEngine_) != address(0)) { ruleEngine = ruleEngine_; @@ -239,7 +214,7 @@

}   /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _validateTransfer( address from, @@ -250,7 +225,7 @@

}   /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _messageForTransferRestriction( uint8 restrictionCode @@ -259,7 +234,7 @@

}   /** - @dev before making a call to this function, you have to check if a ruleEngine is set. + * @dev before making a call to this function, you have to check if a ruleEngine is set. */ function _detectTransferRestriction( address from, @@ -268,6 +243,10 @@

) internal view returns (uint8) { return ruleEngine.detectTransferRestriction(from, to, amount); } +  + function _operateOnTransfer(address from, address to, uint256 amount) virtual internal returns (bool) { + return ruleEngine.operateOnTransfer(from, to, amount); + }   uint256[50] private __gap; } @@ -277,7 +256,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/SnapshotModuleBase.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/SnapshotModuleBase.sol.html new file mode 100644 index 00000000..dff594d5 --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/SnapshotModuleBase.sol.html @@ -0,0 +1,1280 @@ + + + + Code coverage report for contracts/modules/internal/base/SnapshotModuleBase.sol + + + + + + + +
+
+

+ all files / contracts/modules/internal/base/ SnapshotModuleBase.sol +

+
+
+ 100% + Statements + 74/74 +
+
+ 97.06% + Branches + 66/68 +
+
+ 100% + Functions + 14/14 +
+
+ 100% + Lines + 102/102 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +  +  +  +  +  +  +  +76× +  +76× +68× +  +  +  +  +68× +48× +  +  +20× +  + +  +  + +  + +12× +  +  +  +  +  +  +28× +  +  +  +  +  +  +  +  +  +176× + +  +  +  +  +  +172× +  +98× +  +  +98× + +  +  +  +  +  + +  +  +164× +164× +  +  +  +  +  +  +16× + +  +  +  +  +12× +  +12× + +  +  + + +  + +  +  + +10× +10× +10× +  +  + +  + +  +  +  +  +  +  +  +38× + +  +34× + +  +  +  +  +30× + +  +26× +26× + +  +18× +14× +14× + +  +  +  +  +  + +  +  +10× + + +  +  +  +  +  + +  + +  +  +  +  +  +  +  +18× + +  +14× + +  +  +10× + +  + + +  +  +  +  +  +  +  +  +  +16× + +  +12× +12× + +  +  + +16× +  + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1920× +  +1920× +1484× +  +436× +  +  +  +  +  +  +  +  +  +  +  +  +  +860× +860× +36× +36× +  +  +  +  +  +  +  +  +  +430× +  +  +  +430× +18× +18× +  +  +  +  +  +  +  +  +  +860× +852× +  + +  +  +  +  +  +  +  +  +  +  +50× +50× +  +50× +  +  +  +30× +  +  +  +10× +  +  +  +10× +  +  +  +  +  +  +  +  +  +  +  +  +498× +  +498× +  +  +  +412× +  +  +86× +86× +  +86× +116× +52× +52× +  +  +64× +  +  +86× +  +  +  +  + 
//SPDX-License-Identifier: MPL-2.0
+ 
+pragma solidity ^0.8.20;
+ 
+import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
+import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol';
+ 
+import "../../../libraries/Errors.sol";
+ 
+/**
+ * @dev Base for the Snapshot module
+ *
+ * Useful to take a snapshot of token holder balance and total supply at a specific time
+ * Inspired by Openzeppelin - ERC20Snapshot but use the time as Id instead of a counter.
+ * Contrary to OpenZeppelin, the function _getCurrentSnapshotId is not available 
+   because overriding this function can break the contract.
+ */
+ 
+abstract contract SnapshotModuleBase is Initializable {
+    using Arrays for uint256[];
+ 
+    /**
+    @notice Emitted when the snapshot with the specified oldTime was scheduled or rescheduled at the specified newTime.
+    */
+    event SnapshotSchedule(uint256 indexed oldTime, uint256 indexed newTime);
+ 
+    /** 
+    * @notice Emitted when the scheduled snapshot with the specified time was cancelled.
+    */
+    event SnapshotUnschedule(uint256 indexed time);
+ 
+    /** 
+    * @dev See {OpenZeppelin - ERC20Snapshot}
+    * Snapshotted values have arrays of ids (time) and the value corresponding to that id.
+    * ids is expected to be sorted in ascending order, and to contain no repeated elements 
+    * because we use findUpperBound in the function _valueAt
+    */
+    struct Snapshots {
+        uint256[] ids;
+        uint256[] values;
+    }
+ 
+    /**
+    * @dev See {OpenZeppelin - ERC20Snapshot}
+    */
+    mapping(address => Snapshots) internal _accountBalanceSnapshots;
+    Snapshots internal _totalSupplySnapshots;
+ 
+    /**
+    * @dev time instead of a counter for OpenZeppelin
+    */
+    // Initialized to zero
+    uint256 private _currentSnapshotTime;
+    // Initialized to zero
+    uint256 private _currentSnapshotIndex;
+ 
+    /** 
+    * @dev 
+    * list of scheduled snapshot (time)
+    * This list is sorted in ascending order
+    */
+    uint256[] private _scheduledSnapshots;
+ 
+    function __SnapshotModuleBase_init_unchained() internal EonlyInitializing {
+        // Nothing to do
+        // _currentSnapshotTime & _currentSnapshotIndex are initialized to zero
+    }
+ 
+ 
+    /** 
+    *  
+    * @notice Get all snapshots
+    */
+    function getAllSnapshots() public view returns (uint256[] memory) {
+        return _scheduledSnapshots;
+    }
+ 
+        /** 
+    * @dev 
+    * Get the next scheduled snapshots
+    */
+    function getNextSnapshots() public view returns (uint256[] memory) {
+        uint256[] memory nextScheduledSnapshot = new uint256[](0);
+        // no snapshot were planned
+        if (_scheduledSnapshots.length > 0) {
+            (
+                uint256 timeLowerBound,
+                uint256 indexLowerBound
+            ) = _findScheduledMostRecentPastSnapshot();
+            // All snapshots are situated in the futur
+            if ((timeLowerBound == 0) && (_currentSnapshotTime == 0)) {
+                return _scheduledSnapshots;
+            } else {
+                // There are snapshots situated in the futur
+                if (indexLowerBound + 1 != _scheduledSnapshots.length) {
+                    // All next snapshots are located after the snapshot specified by indexLowerBound
+                    uint256 arraySize = _scheduledSnapshots.length -
+                        indexLowerBound -
+                        1;
+                    nextScheduledSnapshot = new uint256[](arraySize);
+                    // No need of unchecked block since Soliditiy 0.8.22
+                    for (uint256 i; i < arraySize; ++i) {
+                        nextScheduledSnapshot[i] = _scheduledSnapshots[
+                            indexLowerBound + 1 + i
+                        ];
+                    }
+                }
+            }
+        }
+        return nextScheduledSnapshot;
+    }
+ 
+ 
+    /** 
+    * @dev schedule a snapshot at the specified time
+    * You can only add a snapshot after the last previous
+    */
+    function _scheduleSnapshot(uint256 time) internal {
+        // Check the time firstly to avoid an useless read of storage
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast(
+                time,
+                block.timestamp
+            );
+        }
+ 
+        if (_scheduledSnapshots.length > 0) {
+            // We check the last snapshot on the list
+            uint256 nextSnapshotTime = _scheduledSnapshots[
+                _scheduledSnapshots.length - 1
+            ];
+            if (time < nextSnapshotTime) {
+                revert Errors
+                    .CMTAT_SnapshotModule_SnapshotTimestampBeforeLastSnapshot(
+                        time,
+                        nextSnapshotTime
+                    );
+            } else if (time == nextSnapshotTime) {
+                revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists();
+            }
+        }
+        _scheduledSnapshots.push(time);
+        emit SnapshotSchedule(0, time);
+    }
+ 
+    /** 
+    * @dev schedule a snapshot at the specified time
+    */
+    function _scheduleSnapshotNotOptimized(uint256 time) internal {
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast(
+                time,
+                block.timestamp
+            );
+        }
+        (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time);
+        // Perfect match
+        if (isFound) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists();
+        }
+        // if no upper bound match found, we push the snapshot at the end of the list
+        if (index == _scheduledSnapshots.length) {
+            _scheduledSnapshots.push(time);
+        } else {
+            _scheduledSnapshots.push(
+                _scheduledSnapshots[_scheduledSnapshots.length - 1]
+            );
+            for (uint256 i = _scheduledSnapshots.length - 2; i > index; ) {
+                _scheduledSnapshots[i] = _scheduledSnapshots[i - 1];
+                unchecked {
+                    --i;
+                }
+            }
+            _scheduledSnapshots[index] = time;
+        }
+        emit SnapshotSchedule(0, time);
+    }
+ 
+    /** 
+    * @dev reschedule a scheduled snapshot at the specified newTime
+    */
+    function _rescheduleSnapshot(uint256 oldTime, uint256 newTime) internal {
+        // Check the time firstly to avoid an useless read of storage
+        if (oldTime <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone();
+        }
+        if (newTime <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotScheduledInThePast(
+                newTime,
+                block.timestamp
+            );
+        }
+        if (_scheduledSnapshots.length == 0) {
+            revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled();
+        }
+        (bool foundOld, uint256 index) = _findScheduledSnapshotIndex(oldTime);
+        if (!foundOld) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
+        }
+        if (index + 1 < _scheduledSnapshots.length) {
+            uint256 nextSnapshotTime = _scheduledSnapshots[index + 1];
+            if (newTime > nextSnapshotTime) {
+                revert Errors
+                    .CMTAT_SnapshotModule_SnapshotTimestampAfterNextSnapshot(
+                        newTime,
+                        nextSnapshotTime
+                    );
+            } else if (newTime == nextSnapshotTime) {
+                revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyExists();
+            }
+        }
+        if (index > 0) {
+            if (newTime <= _scheduledSnapshots[index - 1])
+                revert Errors
+                    .CMTAT_SnapshotModule_SnapshotTimestampBeforePreviousSnapshot(
+                        newTime,
+                        _scheduledSnapshots[index - 1]
+                    );
+        }
+        _scheduledSnapshots[index] = newTime;
+ 
+        emit SnapshotSchedule(oldTime, newTime);
+    }
+ 
+    /**
+    * @dev unschedule the last scheduled snapshot
+    */
+    function _unscheduleLastSnapshot(uint256 time) internal {
+        // Check the time firstly to avoid an useless read of storage
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone();
+        }
+        if (_scheduledSnapshots.length == 0) {
+            revert Errors.CMTAT_SnapshotModule_NoSnapshotScheduled();
+        }
+        // All snapshot time are unique, so we do not check the indice
+        if (time != _scheduledSnapshots[_scheduledSnapshots.length - 1]) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
+        }
+        _scheduledSnapshots.pop();
+        emit SnapshotUnschedule(time);
+    }
+ 
+    /** 
+    * @dev unschedule (remove) a scheduled snapshot in three steps:
+    * - search the snapshot in the list
+    * - If found, move all next snapshots one position to the left
+    * - Reduce the array size by deleting the last snapshot
+    */
+    function _unscheduleSnapshotNotOptimized(uint256 time) internal {
+        if (time <= block.timestamp) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotAlreadyDone();
+        }
+        (bool isFound, uint256 index) = _findScheduledSnapshotIndex(time);
+        if (!isFound) {
+            revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
+        }
+        // No need of unchecked block since Soliditiy 0.8.22
+        for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ++i ) {
+            _scheduledSnapshots[i] = _scheduledSnapshots[i + 1];
+        }
+        _scheduledSnapshots.pop();
+    }
+ 
+    /**
+    * @dev See {OpenZeppelin - ERC20Snapshot}
+    * @param time where we want a snapshot
+    * @param snapshots the struct where are stored the snapshots
+    * @return  snapshotExist true if a snapshot is found, false otherwise
+    * value 0 if no snapshot, balance value if a snapshot exists
+    */
+    function _valueAt(
+        uint256 time,
+        Snapshots storage snapshots
+    ) internal view returns (bool snapshotExist, uint256 value) {
+        // When a valid snapshot is queried, there are three possibilities:
+        //  a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never
+        //  created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds
+        //  to this id is the current one.
+        //  b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the
+        //  requested id, and its value is the one to return.
+        //  c) More snapshots were created after the requested one, and the queried value was later modified. There will be
+        //  no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is
+        //  larger than the requested one.
+        //
+        // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if
+        // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does
+        // exactly this.
+ 
+        uint256 index = snapshots.ids.findUpperBound(time);
+ 
+        if (index == snapshots.ids.length) {
+            return (false, 0);
+        } else {
+            return (true, snapshots.values[index]);
+        }
+    }
+ 
+    /** 
+    * @dev 
+    * Inside a struct Snapshots:
+    * - Update the array ids to the current Snapshot time if this one is greater than the snapshot times stored in ids.
+    * - Update the value to the corresponding value.
+    */
+    function _updateSnapshot(
+        Snapshots storage snapshots,
+        uint256 currentValue
+    ) internal {
+        uint256 current = _currentSnapshotTime;
+        if (_lastSnapshot(snapshots.ids) < current) {
+            snapshots.ids.push(current);
+            snapshots.values.push(currentValue);
+        }
+    }
+ 
+    /** 
+    * @dev
+    * Set the currentSnapshotTime by retrieving the most recent snapshot
+    * if a snapshot exists, clear all past scheduled snapshot
+    */
+    function _setCurrentSnapshot() internal {
+        (
+            uint256 scheduleSnapshotTime,
+            uint256 scheduleSnapshotIndex
+        ) = _findScheduledMostRecentPastSnapshot();
+        if (scheduleSnapshotTime > 0) {
+            _currentSnapshotTime = scheduleSnapshotTime;
+            _currentSnapshotIndex = scheduleSnapshotIndex;
+        }
+    }
+ 
+    /**
+    * @return the last snapshot time inside a snapshot ids array
+    */
+    function _lastSnapshot(
+        uint256[] storage ids
+    ) private view returns (uint256) {
+        if (ids.length == 0) {
+            return 0;
+        } else {
+            return ids[ids.length - 1];
+        }
+    }
+ 
+    /** 
+    * @dev Find the snapshot index at the specified time
+    * @return (true, index) if the snapshot exists, (false, 0) otherwise
+    */
+    function _findScheduledSnapshotIndex(
+        uint256 time
+    ) private view returns (bool, uint256) {
+        uint256 indexFound = _scheduledSnapshots.findUpperBound(time);
+        uint256 _scheduledSnapshotsLength = _scheduledSnapshots.length;
+        // Exact match
+        if (
+            indexFound != _scheduledSnapshotsLength &&
+            _scheduledSnapshots[indexFound] == time
+        ) {
+            return (true, indexFound);
+        }
+        // Upper bound match
+        else if (indexFound != _scheduledSnapshotsLength) {
+            return (false, indexFound);
+        }
+        // no match
+        else {
+            return (false, _scheduledSnapshotsLength);
+        }
+    }
+ 
+    /** 
+    * @dev find the most recent past snapshot
+    * The complexity of this function is O(N) because we go through the whole list
+    */
+    function _findScheduledMostRecentPastSnapshot()
+        private
+        view
+        returns (uint256 time, uint256 index)
+    {
+        uint256 currentArraySize = _scheduledSnapshots.length;
+        // no snapshot or the current snapshot already points on the last snapshot
+        if (
+            currentArraySize == 0 ||
+            ((_currentSnapshotIndex + 1 == currentArraySize) && (time != 0))
+        ) {
+            return (0, currentArraySize);
+        }
+        // mostRecent is initialized in the loop
+        uint256 mostRecent;
+        index = currentArraySize;
+        // No need of unchecked block since Soliditiy 0.8.22
+        for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ++i ) {
+            if (_scheduledSnapshots[i] <= block.timestamp) {
+                mostRecent = _scheduledSnapshots[i];
+                index = i;
+            } else {
+                // All snapshot are planned in the futur
+                break;
+            }
+        }
+        return (mostRecent, index);
+    }
+ 
+    uint256[50] private __gap;
+}
+ 
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/index.html new file mode 100644 index 00000000..2d1fa4db --- /dev/null +++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/index.html @@ -0,0 +1,93 @@ + + + + Code coverage report for contracts/modules/internal/base/ + + + + + + + +
+
+

+ all files contracts/modules/internal/base/ +

+
+
+ 100% + Statements + 74/74 +
+
+ 97.06% + Branches + 66/68 +
+
+ 100% + Functions + 14/14 +
+
+ 100% + Lines + 102/102 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
SnapshotModuleBase.sol
100%74/7497.06%66/68100%14/14100%102/102
+
+
+ + + + + + + diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html index 5a64503d..94760538 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html @@ -20,24 +20,24 @@

- 92.73% + 100% Statements - 102/110 + 31/31
- 86.96% + 85% Branches - 80/92 + 17/20
- 86.67% + 100% Functions - 26/30 + 18/18
- 93.2% + 100% Lines - 137/147 + 42/42
@@ -60,41 +60,41 @@

ERC20SnapshotModuleInternal.sol
95.65%88/9292.31%72/78
100%16/16 90%18/2095.24%120/1269/10100%9/9100%24/24
EnforcementModuleInternal.sol
81.82%9/1162.5%5/880%4/584.62%11/13
100%9/983.33%5/6100%4/4100%11/11
ValidationModuleInternal.sol
71.43%5/750%3/680%4/5ValidationModuleInternal.sol
100%6/6 75%6/83/4100%5/5100%7/7
@@ -292,7 +307,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html index ce78591b..f33d7151 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html @@ -20,28 +20,28 @@

- 50% + 100% Statements - 5/10 + 16/16
- 62.5% + 91.67% Branches - 5/8 + 22/24
- 75% + 100% Functions - 3/4 + 5/5
- 50% + 95.45% Lines - 5/10 + 21/22
-
+
1 2 @@ -124,10 +124,12 @@

79 80 81 -82

  -  -  -  +82 +83 +84 +85 +86 +87        @@ -150,46 +152,53 @@

      +387× +   +384× +384× +              -  -  -  -  -  -  -  -  -              + +   + +       +35× + +   +     +33×       + + +   +     +   -1298× -710×   -588×       @@ -198,10 +207,11 @@

      +1443× +810×   +633×   - -       @@ -209,45 +219,16 @@

  pragma solidity ^0.8.20;   -import "../../../openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol"; -import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; -  +import "../../../openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol"; import "../../libraries/Errors.sol"; +import "../../interfaces/engine/IAuthorizationEngine.sol";   -abstract contract AuthorizationModule is AccessControlDefaultAdminRulesUpgradeable { - // BurnModule - bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); - // CreditEvents - bytes32 public constant DEBT_CREDIT_EVENT_ROLE = - keccak256("DEBT_CREDIT_EVENT_ROLE"); - // DebtModule - bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE"); - // EnforcementModule - bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE"); - // MintModule - bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); - // PauseModule - bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); - // SnapshotModule - bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE"); -  - -  - function __AuthorizationModule_init( - address admin, - uint48 initialDelay - ) internal onlyInitializing { - /* OpenZeppelin */ - __Context_init_unchained(); - // AccessControlUpgradeable inherits from ERC165Upgradeable - __ERC165_init_unchained(); - __AccessControl_init_unchained(); - __AccessControlDefaultAdminRules_init_unchained(initialDelay, admin); -  - /* own function */ - __AuthorizationModule_init_unchained(); - } -  +abstract contract AuthorizationModule is AccessControlUpgradeable { + IAuthorizationEngine private authorizationEngine; + /** + * @dev Emitted when a rule engine is set. + */ + event AuthorizationEngine(IAuthorizationEngine indexed newAuthorizationEngine); /** * @dev * @@ -255,17 +236,62 @@

* - The control of the zero address is done by AccessControlDefaultAdminRules * */ - function __AuthorizationModule_init_unchained( - ) internal view EonlyInitializing { + function __AuthorizationModule_init_unchained(address admin, IAuthorizationEngine authorizationEngine_) + internal EonlyInitializing { + if(admin == address(0)){ + revert Errors.CMTAT_AuthorizationModule_AddressZeroNotAllowed(); + } + _grantRole(DEFAULT_ADMIN_ROLE, admin); + Iif (address(authorizationEngine) != address (0)) { + authorizationEngine = authorizationEngine_; + } + +  }   /* + * @notice set an authorizationEngine if not already set + * @dev once an AuthorizationEngine is set, it is not possible to unset it + */ + function setAuthorizationEngine( + IAuthorizationEngine authorizationEngine_ + ) external onlyRole(DEFAULT_ADMIN_ROLE) { + if (address(authorizationEngine) != address (0)){ + revert Errors.CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet(); + } + authorizationEngine = authorizationEngine_; + emit AuthorizationEngine(authorizationEngine_); + } +  + function grantRole(bytes32 role, address account) public override onlyRole(getRoleAdmin(role)) { + if (address(authorizationEngine) != address (0)) { + bool result = authorizationEngine.operateOnGrantRole(role, account); + if(!result) { + // Operation rejected by the authorizationEngine + revert Errors.CMTAT_AuthorizationModule_InvalidAuthorization(); + } + } + return AccessControlUpgradeable.grantRole(role, account); + } +  + function revokeRole(bytes32 role, address account) public override onlyRole(getRoleAdmin(role)) { + if (address(authorizationEngine) != address (0)) { + bool result = authorizationEngine.operateOnRevokeRole(role, account); + if(!result) { + // Operation rejected by the authorizationEngine + revert Errors.CMTAT_AuthorizationModule_InvalidAuthorization(); + } + } + return AccessControlUpgradeable.revokeRole(role, account); + } +  + /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole( bytes32 role, address account - ) public view virtual override( IAccessControlUpgradeable, AccessControlUpgradeable) returns (bool) { + ) public view virtual override(AccessControlUpgradeable) returns (bool) { // The Default Admin has all roles if (AccessControlUpgradeable.hasRole(DEFAULT_ADMIN_ROLE, account)) { return true; @@ -273,17 +299,6 @@

return AccessControlUpgradeable.hasRole(role, account); }   - /** - @notice - Warning: this function should be called only in case of necessity (e.g private key leak) - Its goal is to transfer the adminship of the contract to a new admin, whithout delay. - The prefer way is to use the workflow of AccessControlDefaultAdminRulesUpgradeable - */ - function transferAdminshipDirectly(address newAdmin) public virtual onlyRole(DEFAULT_ADMIN_ROLE) { - // we revoke first the admin since we can only have one admin - _revokeRole(DEFAULT_ADMIN_ROLE, _msgSender()); - _grantRole(DEFAULT_ADMIN_ROLE, newAdmin); - } uint256[50] private __gap; }  

@@ -59,16 +59,16 @@

- - - - - - - - - - + + + + + + + + + + @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html index c55c5447..3d62462e 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html @@ -22,22 +22,22 @@

100% Statements - 27/27 + 35/35
- 96.88% + 97.37% Branches - 31/32 + 37/38
100% Functions - 5/5 + 7/7
100% Lines - 22/22 + 30/30
@@ -159,7 +159,28 @@

114 115 116 -117

- - - + + + - + - + @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html index e6d43fef..3bc3b0e3 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html @@ -183,10 +183,10 @@

      -364× -364× -364× -364× +384× +384× +384× +384×       @@ -238,16 +238,15 @@

pragma solidity ^0.8.20;   // required OZ imports here -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../../libraries/Errors.sol";   abstract contract BaseModule is AuthorizationModule { - /* - @notice - Get the current version of the smart contract + /** + * @notice + * Get the current version of the smart contract */ - string public constant VERSION = "2.3.1"; + string public constant VERSION = "2.4.0"; /* Events */ event Term(string indexed newTermIndexed, string newTerm); event TokenId(string indexed newTokenIdIndexed, string newTokenId); @@ -261,6 +260,7 @@

string public tokenId; string public terms; string public information; + // additional attribute to store information as an uint256 uint256 public flag;     @@ -285,8 +285,8 @@

}   /* Methods */ - /* - @notice the tokenId will be changed even if the new value is the same as the current one + /** + * @notice the tokenId will be changed even if the new value is the same as the current one */ function setTokenId( string calldata tokenId_ @@ -295,8 +295,8 @@

emit TokenId(tokenId_, tokenId_); }   - /* - @notice The terms will be changed even if the new value is the same as the current one + /** + * @notice The terms will be changed even if the new value is the same as the current one */ function setTerms( string calldata terms_ @@ -305,8 +305,8 @@

emit Term(terms_, terms_); }   - /* - @notice The information will be changed even if the new value is the same as the current one + /** + * @notice The information will be changed even if the new value is the same as the current one */ function setInformation( string calldata information_ @@ -315,8 +315,8 @@

emit Information(information_, information_); }   - /* - @notice The call will be reverted if the new value of flag is the same as the current one + /** + * @notice The call will be reverted if the new value of flag is the same as the current one */ function setFlag(uint256 flag_) public onlyRole(DEFAULT_ADMIN_ROLE) { if (flag == flag_) { @@ -334,7 +334,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html index 1028f2cd..34b30b36 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html @@ -22,12 +22,12 @@

100% Statements - 15/15 + 11/11
- 80% + 75% Branches - 8/10 + 6/8
100% @@ -37,7 +37,7 @@

100% Lines - 21/21 + 17/17

@@ -157,21 +157,7 @@

112 113 114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129

- - - + + + - + - - - + + + - + - + @@ -107,7 +107,7 @@

- + @@ -142,7 +142,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html index 968789b2..75060568 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html @@ -124,7 +124,13 @@

79 80 81 -82

+ + + + + + + + + + + + + @@ -97,6 +110,19 @@

+ + + + + + + + + + + + + @@ -112,80 +138,93 @@

- - - + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - - - + + + + + + + + + + - + + + + + + + - - - + + + - + - + - - - + + + - - - - + + + + @@ -201,19 +240,6 @@

- - - - - - - - - - - - - @@ -233,7 +259,7 @@

diff --git a/doc/general/test/coverage/lcov.info b/doc/general/test/coverage/lcov.info index 81570184..6b536d59 100644 --- a/doc/general/test/coverage/lcov.info +++ b/doc/general/test/coverage/lcov.info @@ -1,29 +1,106 @@ TN: -SF:/home/ryan/Pictures/CMTAT/contracts/CMTAT_PROXY.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_PROXY.sol FN:15,constructor FNF:1 FNH:1 -FNDA:4,constructor -DA:17,4 +FNDA:15,constructor +DA:17,15 LF:1 LH:1 BRF:0 BRH:0 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/CMTAT_STANDALONE.sol -FN:34,constructor +SF:/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_STANDALONE.sol +FN:35,constructor FNF:1 FNH:1 -FNDA:141,constructor -DA:37,141 +FNDA:189,constructor +DA:38,189 LF:1 LH:1 BRF:0 BRH:0 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_BEACON_FACTORY.sol +FN:32,constructor +FN:63,deployCMTAT +FN:91,getAddress +FN:99,implementation +FNF:4 +FNH:4 +FNDA:9,constructor +FNDA:2,deployCMTAT +FNDA:1,getAddress +FNDA:1,implementation +DA:33,9 +DA:34,2 +DA:36,7 +DA:37,2 +DA:39,5 +DA:40,2 +DA:42,3 +DA:43,3 +DA:44,3 +DA:64,2 +DA:80,2 +DA:81,2 +DA:82,2 +DA:83,2 +DA:84,2 +DA:92,1 +DA:100,1 +LF:17 +LH:17 +BRDA:33,1,0,2 +BRDA:33,1,1,7 +BRDA:36,2,0,2 +BRDA:36,2,1,5 +BRDA:39,3,0,2 +BRDA:39,3,1,3 +BRDA:63,4,0,2 +BRDA:63,4,1,2 +BRF:8 +BRH:8 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_TP_FACTORY.sol +FN:29,constructor +FN:54,deployCMTAT +FN:83,getAddress +FNF:3 +FNH:3 +FNDA:7,constructor +FNDA:2,deployCMTAT +FNDA:1,getAddress +DA:30,7 +DA:31,2 +DA:33,5 +DA:34,2 +DA:36,3 +DA:37,3 +DA:38,3 +DA:55,2 +DA:72,2 +DA:73,2 +DA:74,2 +DA:75,2 +DA:76,2 +DA:84,1 +LF:14 +LH:14 +BRDA:30,1,0,2 +BRDA:30,1,1,5 +BRDA:33,2,0,2 +BRDA:33,2,1,3 +BRDA:54,3,0,2 +BRDA:54,3,1,2 +BRF:6 +BRH:6 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol FNF:0 FNH:0 LF:0 @@ -32,7 +109,7 @@ BRF:0 BRH:0 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol FNF:0 FNH:0 LF:0 @@ -41,7 +118,7 @@ BRF:0 BRH:0 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/interfaces/IDebtGlobal.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol FNF:0 FNH:0 LF:0 @@ -50,7 +127,7 @@ BRF:0 BRH:0 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/libraries/Errors.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/engine/IAuthorizationEngine.sol FNF:0 FNH:0 LF:0 @@ -59,501 +136,619 @@ BRF:0 BRH:0 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/CMTAT_BASE.sol -FN:68,initialize -FN:97,__CMTAT_init -FN:145,__CMTAT_init_unchained -FN:152,decimals -FN:162,transferFrom -FN:182,_update -FN:202,_msgSender -FN:214,_msgData -FNF:8 -FNH:7 -FNDA:281,initialize -FNDA:281,__CMTAT_init -FNDA:278,__CMTAT_init_unchained +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/engine/IRuleEngine.sol +FNF:0 +FNH:0 +LF:0 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/ICCIPToken.sol +FNF:0 +FNH:0 +LF:0 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/ICMTATSnapshot.sol +FNF:0 +FNH:0 +LF:0 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/IDebtGlobal.sol +FNF:0 +FNH:0 +LF:0 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/libraries/Errors.sol +FNF:0 +FNH:0 +LF:0 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/libraries/FactoryErrors.sol +FNF:0 +FNH:0 +LF:0 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/CMTAT_BASE.sol +FN:69,initialize +FN:98,__CMTAT_init +FN:148,__CMTAT_init_unchained +FN:155,decimals +FN:165,transferFrom +FN:189,burnAndMint +FN:198,_update +FN:219,_msgSender +FN:231,_contextSuffixLength +FN:240,_msgData +FNF:10 +FNH:9 +FNDA:387,initialize +FNDA:387,__CMTAT_init +FNDA:384,__CMTAT_init_unchained FNDA:2,decimals FNDA:18,transferFrom -FNDA:359,_update -FNDA:1029,_msgSender +FNDA:10,burnAndMint +FNDA:464,_update +FNDA:1591,_msgSender +FNDA:1591,_contextSuffixLength FNDA:0,_msgData -DA:69,281 -DA:100,281 -DA:101,281 -DA:103,281 -DA:105,281 -DA:106,281 -DA:107,278 -DA:110,278 -DA:116,278 -DA:120,278 -DA:121,278 -DA:122,278 -DA:124,278 -DA:125,278 -DA:127,278 -DA:128,278 -DA:137,278 -DA:138,278 -DA:139,278 -DA:142,278 -DA:159,2 -DA:172,18 -DA:187,359 -DA:188,34 -DA:190,325 -DA:208,1029 -DA:220,0 -LF:27 -LH:26 -BRDA:68,1,0,281 -BRDA:68,1,1,2 -BRDA:97,2,0,281 -BRDA:97,2,1,0 -BRDA:145,3,0,278 -BRDA:145,3,1,0 -BRDA:187,4,0,34 -BRDA:187,4,1,325 +DA:70,387 +DA:101,387 +DA:102,387 +DA:104,387 +DA:106,387 +DA:107,387 +DA:110,387 +DA:115,387 +DA:116,387 +DA:118,387 +DA:122,387 +DA:123,384 +DA:124,384 +DA:126,384 +DA:127,384 +DA:129,384 +DA:130,384 +DA:136,384 +DA:140,384 +DA:141,384 +DA:142,384 +DA:145,384 +DA:162,2 +DA:175,18 +DA:190,10 +DA:191,6 +DA:203,464 +DA:204,34 +DA:211,430 +DA:212,430 +DA:225,1591 +DA:234,1591 +DA:246,0 +LF:33 +LH:32 +BRDA:69,1,0,387 +BRDA:69,1,1,2 +BRDA:98,2,0,387 +BRDA:98,2,1,0 +BRDA:148,3,0,384 +BRDA:148,3,1,0 +BRDA:203,4,0,34 +BRDA:203,4,1,430 BRF:8 BRH:6 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/internal/EnforcementModuleInternal.sol -FN:43,__Enforcement_init -FN:48,__Enforcement_init_unchained -FN:55,frozen -FN:65,_freeze -FN:82,_unfreeze -FNF:5 -FNH:4 -FNDA:0,__Enforcement_init -FNDA:364,__Enforcement_init_unchained -FNDA:864,frozen -FNDA:22,_freeze -FNDA:8,_unfreeze -DA:44,0 -DA:45,0 -DA:56,864 -DA:69,22 -DA:70,2 -DA:72,20 -DA:73,20 -DA:74,20 -DA:86,8 -DA:87,2 -DA:89,6 -DA:90,6 -DA:92,6 -LF:13 -LH:11 -BRDA:43,1,0,0 -BRDA:43,1,1,0 -BRDA:48,2,0,364 -BRDA:48,2,1,0 -BRDA:69,3,0,2 -BRDA:69,3,1,20 -BRDA:86,4,0,2 -BRDA:86,4,1,6 -BRF:8 -BRH:5 -end_of_record -TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/internal/ERC20SnapshotModuleInternal.sol -FN:72,__ERC20Snapshot_init -FN:78,__ERC20Snapshot_init_unchained -FN:87,_scheduleSnapshot -FN:118,_scheduleSnapshotNotOptimized -FN:151,_rescheduleSnapshot -FN:197,_unscheduleLastSnapshot -FN:219,_unscheduleSnapshotNotOptimized -FN:240,getNextSnapshots -FN:277,getAllSnapshots -FN:285,snapshotBalanceOf -FN:302,snapshotTotalSupply -FN:314,_update -FN:345,_valueAt -FN:375,_updateAccountSnapshot -FN:382,_updateTotalSupplySnapshot -FN:392,_updateSnapshot -FN:408,_setCurrentSnapshot -FN:422,_lastSnapshot -FN:436,_findScheduledSnapshotIndex -FN:462,_findScheduledMostRecentPastSnapshot -FNF:20 -FNH:18 -FNDA:0,__ERC20Snapshot_init -FNDA:86,__ERC20Snapshot_init_unchained -FNDA:170,_scheduleSnapshot +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/base/SnapshotModuleBase.sol +FN:64,__SnapshotModuleBase_init_unchained +FN:74,getAllSnapshots +FN:82,getNextSnapshots +FN:118,_scheduleSnapshot +FN:149,_scheduleSnapshotNotOptimized +FN:182,_rescheduleSnapshot +FN:228,_unscheduleLastSnapshot +FN:250,_unscheduleSnapshotNotOptimized +FN:272,_valueAt +FN:305,_updateSnapshot +FN:321,_setCurrentSnapshot +FN:335,_lastSnapshot +FN:349,_findScheduledSnapshotIndex +FN:375,_findScheduledMostRecentPastSnapshot +FNF:14 +FNH:14 +FNDA:387,__SnapshotModuleBase_init_unchained +FNDA:2,getAllSnapshots +FNDA:76,getNextSnapshots +FNDA:176,_scheduleSnapshot FNDA:16,_scheduleSnapshotNotOptimized FNDA:38,_rescheduleSnapshot FNDA:18,_unscheduleLastSnapshot -FNDA:12,_unscheduleSnapshotNotOptimized -FNDA:76,getNextSnapshots -FNDA:0,getAllSnapshots -FNDA:240,snapshotBalanceOf -FNDA:80,snapshotTotalSupply -FNDA:66,_update -FNDA:320,_valueAt -FNDA:80,_updateAccountSnapshot -FNDA:52,_updateTotalSupplySnapshot -FNDA:132,_updateSnapshot -FNDA:66,_setCurrentSnapshot -FNDA:132,_lastSnapshot +FNDA:16,_unscheduleSnapshotNotOptimized +FNDA:1920,_valueAt +FNDA:860,_updateSnapshot +FNDA:430,_setCurrentSnapshot +FNDA:860,_lastSnapshot FNDA:50,_findScheduledSnapshotIndex -FNDA:134,_findScheduledMostRecentPastSnapshot -DA:73,0 -DA:74,0 -DA:75,0 -DA:89,170 -DA:90,4 -DA:96,166 -DA:98,94 -DA:101,94 -DA:102,0 -DA:108,4 -DA:111,162 -DA:112,162 -DA:119,16 -DA:120,4 -DA:125,12 -DA:127,12 -DA:128,4 -DA:131,8 -DA:132,2 -DA:134,6 -DA:137,6 -DA:138,10 -DA:139,10 -DA:140,10 -DA:143,6 -DA:145,8 -DA:153,38 -DA:154,4 -DA:156,34 -DA:157,4 -DA:162,30 -DA:163,4 -DA:165,26 -DA:166,26 -DA:167,8 -DA:169,18 -DA:170,14 -DA:171,14 -DA:172,4 -DA:178,4 -DA:181,10 -DA:182,6 -DA:183,4 -DA:189,6 -DA:191,6 -DA:199,18 -DA:200,4 +FNDA:498,_findScheduledMostRecentPastSnapshot +DA:75,2 +DA:83,76 +DA:85,76 +DA:86,68 +DA:91,68 +DA:92,48 +DA:95,20 +DA:97,8 +DA:100,8 +DA:102,8 +DA:103,12 +DA:110,28 +DA:120,176 +DA:121,4 +DA:127,172 +DA:129,98 +DA:132,98 +DA:133,4 +DA:139,4 +DA:142,164 +DA:143,164 +DA:150,16 +DA:151,4 +DA:156,12 +DA:158,12 +DA:159,4 +DA:162,8 +DA:163,2 +DA:165,6 +DA:168,6 +DA:169,10 +DA:170,10 +DA:171,10 +DA:174,6 +DA:176,8 +DA:184,38 +DA:185,4 +DA:187,34 +DA:188,4 +DA:193,30 +DA:194,4 +DA:196,26 +DA:197,26 +DA:198,8 +DA:200,18 +DA:201,14 DA:202,14 DA:203,4 -DA:206,10 -DA:207,4 -DA:209,6 -DA:210,6 -DA:220,12 -DA:221,0 -DA:223,12 -DA:224,12 -DA:225,4 -DA:227,8 -DA:228,16 -DA:229,16 -DA:230,16 -DA:233,8 -DA:241,76 -DA:243,76 -DA:244,68 -DA:249,68 -DA:250,48 -DA:253,20 -DA:255,8 -DA:258,8 +DA:209,4 +DA:212,10 +DA:213,6 +DA:214,4 +DA:220,6 +DA:222,6 +DA:230,18 +DA:231,4 +DA:233,14 +DA:234,4 +DA:237,10 +DA:238,4 +DA:240,6 +DA:241,6 +DA:251,16 +DA:252,4 +DA:254,12 +DA:255,12 +DA:256,4 DA:259,8 -DA:260,12 -DA:263,12 -DA:264,12 -DA:270,28 -DA:278,0 -DA:289,240 -DA:294,240 -DA:303,80 -DA:307,80 -DA:319,66 -DA:320,66 -DA:322,16 -DA:323,16 -DA:325,14 -DA:328,2 -DA:332,50 -DA:333,50 -DA:335,66 -DA:363,320 -DA:365,320 -DA:366,236 -DA:368,84 -DA:376,80 -DA:383,52 -DA:396,132 -DA:397,132 -DA:398,36 -DA:399,36 -DA:409,66 -DA:413,66 -DA:414,18 -DA:415,18 -DA:425,132 -DA:426,124 -DA:428,8 -DA:439,50 -DA:440,50 -DA:442,50 -DA:446,30 -DA:450,10 -DA:454,10 -DA:467,134 -DA:469,134 -DA:473,48 -DA:476,86 -DA:477,86 -DA:478,86 -DA:479,116 -DA:480,52 -DA:481,52 -DA:484,64 -DA:486,52 -DA:487,52 -DA:490,86 -LF:126 -LH:120 -BRDA:72,1,0,0 -BRDA:72,1,1,0 -BRDA:78,2,0,86 -BRDA:78,2,1,0 -BRDA:89,3,0,4 -BRDA:89,3,1,166 -BRDA:96,4,0,94 -BRDA:96,4,1,72 -BRDA:101,5,0,0 -BRDA:101,5,1,94 -BRDA:107,6,0,4 -BRDA:107,6,1,90 -BRDA:119,7,0,4 -BRDA:119,7,1,12 -BRDA:127,8,0,4 -BRDA:127,8,1,8 -BRDA:131,9,0,2 -BRDA:131,9,1,6 -BRDA:153,10,0,4 -BRDA:153,10,1,34 -BRDA:156,11,0,4 -BRDA:156,11,1,30 -BRDA:162,12,0,4 -BRDA:162,12,1,26 -BRDA:166,13,0,8 -BRDA:166,13,1,18 -BRDA:169,14,0,14 -BRDA:169,14,1,4 -BRDA:171,15,0,4 -BRDA:171,15,1,10 -BRDA:177,16,0,4 -BRDA:177,16,1,6 -BRDA:181,17,0,6 -BRDA:181,17,1,4 -BRDA:182,18,0,4 -BRDA:182,18,1,2 -BRDA:199,19,0,4 -BRDA:199,19,1,14 -BRDA:202,20,0,4 -BRDA:202,20,1,10 -BRDA:206,21,0,4 -BRDA:206,21,1,6 -BRDA:220,22,0,0 -BRDA:220,22,1,12 -BRDA:224,23,0,4 -BRDA:224,23,1,8 -BRDA:243,24,0,68 -BRDA:243,24,1,8 -BRDA:249,25,0,48 -BRDA:249,25,1,20 -BRDA:253,26,0,8 -BRDA:253,26,1,12 -BRDA:294,27,0,80 -BRDA:294,27,1,160 -BRDA:307,28,0,4 -BRDA:307,28,1,76 -BRDA:320,29,0,16 -BRDA:320,29,1,50 -BRDA:323,30,0,14 -BRDA:323,30,1,2 -BRDA:365,31,0,236 -BRDA:365,31,1,84 -BRDA:397,32,0,36 -BRDA:397,32,1,96 -BRDA:413,33,0,18 -BRDA:413,33,1,48 -BRDA:425,34,0,124 -BRDA:425,34,1,8 -BRDA:442,35,0,30 -BRDA:442,35,1,20 -BRDA:449,36,0,10 -BRDA:449,36,1,10 -BRDA:469,37,0,48 -BRDA:469,37,1,86 -BRDA:470,38,0,48 -BRDA:470,38,1,0 -BRDA:479,39,0,52 -BRDA:479,39,1,64 -BRF:78 -BRH:72 +DA:260,16 +DA:262,8 +DA:290,1920 +DA:292,1920 +DA:293,1484 +DA:295,436 +DA:309,860 +DA:310,860 +DA:311,36 +DA:312,36 +DA:322,430 +DA:326,430 +DA:327,18 +DA:328,18 +DA:338,860 +DA:339,852 +DA:341,8 +DA:352,50 +DA:353,50 +DA:355,50 +DA:359,30 +DA:363,10 +DA:367,10 +DA:380,498 +DA:382,498 +DA:386,412 +DA:389,86 +DA:390,86 +DA:392,86 +DA:393,116 +DA:394,52 +DA:395,52 +DA:398,64 +DA:401,86 +LF:102 +LH:102 +BRDA:64,1,0,387 +BRDA:64,1,1,0 +BRDA:85,2,0,68 +BRDA:85,2,1,8 +BRDA:91,3,0,48 +BRDA:91,3,1,20 +BRDA:95,4,0,8 +BRDA:95,4,1,12 +BRDA:120,5,0,4 +BRDA:120,5,1,172 +BRDA:127,6,0,98 +BRDA:127,6,1,74 +BRDA:132,7,0,4 +BRDA:132,7,1,94 +BRDA:138,8,0,4 +BRDA:138,8,1,90 +BRDA:150,9,0,4 +BRDA:150,9,1,12 +BRDA:158,10,0,4 +BRDA:158,10,1,8 +BRDA:162,11,0,2 +BRDA:162,11,1,6 +BRDA:184,12,0,4 +BRDA:184,12,1,34 +BRDA:187,13,0,4 +BRDA:187,13,1,30 +BRDA:193,14,0,4 +BRDA:193,14,1,26 +BRDA:197,15,0,8 +BRDA:197,15,1,18 +BRDA:200,16,0,14 +BRDA:200,16,1,4 +BRDA:202,17,0,4 +BRDA:202,17,1,10 +BRDA:208,18,0,4 +BRDA:208,18,1,6 +BRDA:212,19,0,6 +BRDA:212,19,1,4 +BRDA:213,20,0,4 +BRDA:213,20,1,2 +BRDA:230,21,0,4 +BRDA:230,21,1,14 +BRDA:233,22,0,4 +BRDA:233,22,1,10 +BRDA:237,23,0,4 +BRDA:237,23,1,6 +BRDA:251,24,0,4 +BRDA:251,24,1,12 +BRDA:255,25,0,4 +BRDA:255,25,1,8 +BRDA:292,26,0,1484 +BRDA:292,26,1,436 +BRDA:310,27,0,36 +BRDA:310,27,1,824 +BRDA:326,28,0,18 +BRDA:326,28,1,412 +BRDA:338,29,0,852 +BRDA:338,29,1,8 +BRDA:355,30,0,30 +BRDA:355,30,1,20 +BRDA:362,31,0,10 +BRDA:362,31,1,10 +BRDA:382,32,0,412 +BRDA:382,32,1,86 +BRDA:383,33,0,412 +BRDA:383,33,1,0 +BRDA:393,34,0,52 +BRDA:393,34,1,64 +BRF:68 +BRH:66 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/internal/ValidationModuleInternal.sol -FN:30,__Validation_init -FN:37,__Validation_init_unchained -FN:47,_validateTransfer -FN:58,_messageForTransferRestriction -FN:67,_detectTransferRestriction -FNF:5 +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/EnforcementModuleInternal.sol +FN:40,__Enforcement_init_unchained +FN:47,frozen +FN:57,_freeze +FN:74,_unfreeze +FNF:4 FNH:4 -FNDA:0,__Validation_init -FNDA:364,__Validation_init_unchained -FNDA:51,_validateTransfer +FNDA:387,__Enforcement_init_unchained +FNDA:974,frozen +FNDA:22,_freeze +FNDA:8,_unfreeze +DA:48,974 +DA:61,22 +DA:62,2 +DA:64,20 +DA:65,20 +DA:66,20 +DA:78,8 +DA:79,2 +DA:81,6 +DA:82,6 +DA:84,6 +LF:11 +LH:11 +BRDA:40,1,0,387 +BRDA:40,1,1,0 +BRDA:61,2,0,2 +BRDA:61,2,1,20 +BRDA:78,3,0,2 +BRDA:78,3,1,6 +BRF:6 +BRH:5 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ERC20SnapshotModuleInternal.sol +FN:27,__ERC20Snapshot_init_unchained +FN:36,snapshotInfo +FN:45,snapshotInfoBatch +FN:57,snapshotInfoBatch +FN:74,snapshotBalanceOf +FN:91,snapshotTotalSupply +FN:104,_snapshotUpdate +FN:129,_updateAccountSnapshot +FN:136,_updateTotalSupplySnapshot +FNF:9 +FNH:9 +FNDA:387,__ERC20Snapshot_init_unchained +FNDA:480,snapshotInfo +FNDA:160,snapshotInfoBatch +FNDA:80,snapshotInfoBatch +FNDA:1200,snapshotBalanceOf +FNDA:720,snapshotTotalSupply +FNDA:430,_snapshotUpdate +FNDA:485,_updateAccountSnapshot +FNDA:375,_updateTotalSupplySnapshot +DA:37,480 +DA:38,480 +DA:46,160 +DA:47,160 +DA:48,480 +DA:50,160 +DA:58,80 +DA:59,80 +DA:60,80 +DA:66,80 +DA:78,1200 +DA:83,1200 +DA:92,720 +DA:96,720 +DA:108,430 +DA:109,430 +DA:111,99 +DA:112,99 +DA:114,55 +DA:117,44 +DA:121,331 +DA:122,331 +DA:130,485 +DA:137,375 +LF:24 +LH:24 +BRDA:27,1,0,387 +BRDA:27,1,1,0 +BRDA:83,2,0,400 +BRDA:83,2,1,800 +BRDA:96,3,0,36 +BRDA:96,3,1,684 +BRDA:109,4,0,99 +BRDA:109,4,1,331 +BRDA:112,5,0,55 +BRDA:112,5,1,44 +BRF:10 +BRH:9 +end_of_record +TN: +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ValidationModuleInternal.sol +FN:26,__Validation_init_unchained +FN:36,_validateTransfer +FN:47,_messageForTransferRestriction +FN:56,_detectTransferRestriction +FN:64,_operateOnTransfer +FNF:5 +FNH:5 +FNDA:387,__Validation_init_unchained +FNDA:12,_validateTransfer FNDA:6,_messageForTransferRestriction FNDA:6,_detectTransferRestriction -DA:31,0 -DA:32,0 -DA:38,364 -DA:39,14 -DA:40,14 -DA:52,51 +FNDA:57,_operateOnTransfer +DA:27,387 +DA:28,16 +DA:29,16 +DA:41,12 +DA:50,6 DA:61,6 -DA:72,6 -LF:8 -LH:6 -BRDA:30,1,0,0 -BRDA:30,1,1,0 -BRDA:37,2,0,364 -BRDA:37,2,1,0 -BRDA:38,3,0,14 -BRDA:38,3,1,350 -BRF:6 +DA:65,57 +LF:7 +LH:7 +BRDA:26,1,0,387 +BRDA:26,1,1,0 +BRDA:27,2,0,16 +BRDA:27,2,1,371 +BRF:4 BRH:3 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/security/AuthorizationModule.sol -FN:32,__AuthorizationModule_init -FN:52,__AuthorizationModule_init_unchained -FN:58,hasRole -FN:75,transferAdminshipDirectly -FNF:4 -FNH:3 -FNDA:0,__AuthorizationModule_init -FNDA:364,__AuthorizationModule_init_unchained -FNDA:1298,hasRole -FNDA:2,transferAdminshipDirectly -DA:34,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:41,0 -DA:63,1298 -DA:64,710 -DA:66,588 -DA:77,2 -DA:78,2 -LF:10 -LH:5 -BRDA:32,1,0,0 -BRDA:32,1,1,0 -BRDA:52,2,0,364 -BRDA:52,2,1,0 -BRDA:63,3,0,710 -BRDA:63,3,1,588 -BRDA:75,4,0,2 -BRDA:75,4,1,4 -BRF:8 -BRH:5 +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/security/AuthorizationModule.sol +FN:23,__AuthorizationModule_init_unchained +FN:41,setAuthorizationEngine +FN:49,grantRole +FN:60,revokeRole +FN:74,hasRole +FNF:5 +FNH:5 +FNDA:387,__AuthorizationModule_init_unchained +FNDA:8,setAuthorizationEngine +FNDA:35,grantRole +FNDA:5,revokeRole +FNDA:1443,hasRole +DA:24,387 +DA:25,3 +DA:27,384 +DA:28,384 +DA:29,0 +DA:42,8 +DA:43,2 +DA:45,6 +DA:46,6 +DA:50,35 +DA:51,3 +DA:52,3 +DA:54,2 +DA:57,33 +DA:61,5 +DA:62,3 +DA:63,3 +DA:65,2 +DA:68,3 +DA:79,1443 +DA:80,810 +DA:82,633 +LF:22 +LH:21 +BRDA:23,1,0,387 +BRDA:23,1,1,0 +BRDA:24,2,0,3 +BRDA:24,2,1,384 +BRDA:28,3,0,0 +BRDA:28,3,1,384 +BRDA:41,4,0,8 +BRDA:41,4,1,2 +BRDA:42,5,0,2 +BRDA:42,5,1,6 +BRDA:49,6,0,35 +BRDA:49,6,1,4 +BRDA:50,7,0,3 +BRDA:50,7,1,32 +BRDA:52,8,0,2 +BRDA:52,8,1,1 +BRDA:60,9,0,5 +BRDA:60,9,1,4 +BRDA:61,10,0,3 +BRDA:61,10,1,2 +BRDA:63,11,0,2 +BRDA:63,11,1,1 +BRDA:79,12,0,810 +BRDA:79,12,1,633 +BRF:24 +BRH:22 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/controllers/ValidationModule.sol -FN:27,__ValidationModule_init_unchained -FN:37,setRuleEngine -FN:51,detectTransferRestriction -FN:74,messageForTransferRestriction +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/controllers/ValidationModule.sol +FN:26,__ValidationModule_init_unchained +FN:36,setRuleEngine +FN:49,messageForTransferRestriction +FN:83,detectTransferRestriction FN:101,validateTransfer -FNF:5 -FNH:5 -FNDA:364,__ValidationModule_init_unchained -FNDA:16,setRuleEngine -FNDA:17,detectTransferRestriction +FN:115,_validateTransferByModule +FN:126,_operateOnTransfer +FNF:7 +FNH:7 +FNDA:384,__ValidationModule_init_unchained +FNDA:20,setRuleEngine FNDA:20,messageForTransferRestriction -FNDA:425,validateTransfer -DA:38,16 -DA:39,6 -DA:40,10 -DA:41,10 -DA:56,17 -DA:57,4 -DA:59,2 -DA:61,2 -DA:63,6 -DA:65,3 -DA:77,20 -DA:78,3 -DA:83,4 -DA:88,2 +FNDA:17,detectTransferRestriction +FNDA:19,validateTransfer +FNDA:483,_validateTransferByModule +FNDA:464,_operateOnTransfer +DA:37,20 +DA:38,6 +DA:40,14 +DA:41,14 +DA:52,20 +DA:53,3 +DA:58,4 +DA:63,2 +DA:68,2 +DA:70,6 +DA:72,3 +DA:88,17 +DA:89,4 +DA:91,2 DA:93,2 DA:95,6 DA:97,3 -DA:106,425 -DA:107,28 -DA:109,397 -DA:110,51 -DA:112,346 -LF:22 -LH:22 -BRDA:27,1,0,364 -BRDA:27,1,1,0 -BRDA:37,2,0,16 -BRDA:37,2,1,6 -BRDA:38,3,0,6 -BRDA:38,3,1,10 -BRDA:56,4,0,4 -BRDA:56,4,1,13 -BRDA:58,5,0,2 -BRDA:58,5,1,11 -BRDA:60,6,0,2 -BRDA:60,6,1,9 -BRDA:62,7,0,6 -BRDA:62,7,1,3 -BRDA:77,8,0,3 -BRDA:77,8,1,17 -BRDA:79,9,0,4 -BRDA:79,9,1,13 -BRDA:84,10,0,2 -BRDA:84,10,1,11 -BRDA:89,11,0,2 -BRDA:89,11,1,9 +DA:106,19 +DA:107,4 +DA:109,15 +DA:110,12 +DA:112,3 +DA:120,483 +DA:121,32 +DA:123,451 +DA:127,464 +DA:128,28 +DA:130,436 +DA:131,57 +DA:133,379 +LF:30 +LH:30 +BRDA:26,1,0,384 +BRDA:26,1,1,0 +BRDA:36,2,0,20 +BRDA:36,2,1,6 +BRDA:37,3,0,6 +BRDA:37,3,1,14 +BRDA:52,4,0,3 +BRDA:52,4,1,17 +BRDA:54,5,0,4 +BRDA:54,5,1,13 +BRDA:59,6,0,2 +BRDA:59,6,1,11 +BRDA:64,7,0,2 +BRDA:64,7,1,9 +BRDA:69,8,0,6 +BRDA:69,8,1,3 +BRDA:88,9,0,4 +BRDA:88,9,1,13 +BRDA:90,10,0,2 +BRDA:90,10,1,11 +BRDA:92,11,0,2 +BRDA:92,11,1,9 BRDA:94,12,0,6 BRDA:94,12,1,3 -BRDA:106,13,0,28 -BRDA:106,13,1,397 -BRDA:106,14,0,20 -BRDA:106,14,1,4 -BRDA:106,15,0,4 -BRDA:106,15,1,4 -BRDA:109,16,0,51 -BRDA:109,16,1,346 -BRF:32 -BRH:31 +BRDA:106,13,0,4 +BRDA:106,13,1,15 +BRDA:109,14,0,12 +BRDA:109,14,1,3 +BRDA:120,15,0,32 +BRDA:120,15,1,451 +BRDA:120,16,0,22 +BRDA:120,16,1,6 +BRDA:120,17,0,6 +BRDA:120,17,1,4 +BRDA:127,18,0,28 +BRDA:127,18,1,436 +BRDA:130,19,0,57 +BRDA:130,19,1,379 +BRF:38 +BRH:37 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/BaseModule.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/BaseModule.sol FN:45,__Base_init_unchained FN:58,setTokenId FN:68,setTerms @@ -561,15 +756,15 @@ FN:78,setInformation FN:86,setFlag FNF:5 FNH:5 -FNDA:364,__Base_init_unchained +FNDA:384,__Base_init_unchained FNDA:2,setTokenId FNDA:2,setTerms FNDA:2,setInformation FNDA:6,setFlag -DA:46,364 -DA:47,364 -DA:48,364 -DA:49,364 +DA:46,384 +DA:47,384 +DA:48,384 +DA:49,384 DA:59,2 DA:60,2 DA:69,2 @@ -582,7 +777,7 @@ DA:90,2 DA:91,2 LF:14 LH:14 -BRDA:45,1,0,364 +BRDA:45,1,0,384 BRDA:45,1,1,0 BRDA:58,2,0,2 BRDA:58,2,1,4 @@ -598,43 +793,43 @@ BRF:12 BRH:11 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/EnforcementModule.sol -FN:23,__EnforcementModule_init_unchained -FN:35,freeze -FN:49,unfreeze +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/EnforcementModule.sol +FN:25,__EnforcementModule_init_unchained +FN:37,freeze +FN:51,unfreeze FNF:3 FNH:3 -FNDA:364,__EnforcementModule_init_unchained +FNDA:384,__EnforcementModule_init_unchained FNDA:22,freeze FNDA:8,unfreeze -DA:36,22 -DA:50,8 +DA:38,22 +DA:52,8 LF:2 LH:2 -BRDA:23,1,0,364 -BRDA:23,1,1,0 -BRDA:35,2,0,22 -BRDA:35,2,1,4 -BRDA:49,3,0,8 -BRDA:49,3,1,4 +BRDA:25,1,0,384 +BRDA:25,1,1,0 +BRDA:37,2,0,22 +BRDA:37,2,1,4 +BRDA:51,3,0,8 +BRDA:51,3,1,4 BRF:6 BRH:5 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/ERC20BaseModule.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BaseModule.sol FN:30,__ERC20BaseModule_init_unchained FN:40,decimals FN:56,transferBatch -FN:89,transferFrom -FN:107,approve +FN:86,transferFrom +FN:105,balanceInfo FNF:5 FNH:5 -FNDA:364,__ERC20BaseModule_init_unchained +FNDA:384,__ERC20BaseModule_init_unchained FNDA:2,decimals FNDA:18,transferBatch FNDA:18,transferFrom -FNDA:6,approve -DA:31,364 +FNDA:4,balanceInfo +DA:31,384 DA:41,2 DA:60,18 DA:61,4 @@ -642,209 +837,214 @@ DA:65,14 DA:66,8 DA:69,6 DA:72,14 -DA:73,10 -DA:74,10 -DA:79,2 -DA:94,18 -DA:96,2 +DA:76,2 +DA:91,18 +DA:93,2 +DA:94,2 DA:97,2 -DA:100,2 -DA:112,6 -DA:113,6 -DA:114,6 -DA:115,4 -DA:123,2 -DA:124,2 -LF:21 -LH:21 -BRDA:30,1,0,364 +DA:106,4 +DA:107,4 +DA:108,6 +DA:110,4 +LF:17 +LH:17 +BRDA:30,1,0,384 BRDA:30,1,1,0 BRDA:60,2,0,4 BRDA:60,2,1,14 BRDA:65,3,0,8 BRDA:65,3,1,6 -BRDA:96,4,0,2 -BRDA:96,4,1,0 -BRDA:114,5,0,4 -BRDA:114,5,1,2 -BRF:10 -BRH:8 +BRDA:93,4,0,2 +BRDA:93,4,1,0 +BRF:8 +BRH:6 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/ERC20BurnModule.sol -FN:15,__ERC20BurnModule_init_unchained -FN:32,forceBurn -FN:55,forceBurnBatch -FNF:3 -FNH:3 -FNDA:364,__ERC20BurnModule_init_unchained -FNDA:12,forceBurn -FNDA:20,forceBurnBatch -DA:33,12 -DA:34,8 -DA:56,20 -DA:57,4 -DA:61,16 -DA:62,8 -DA:65,8 -DA:66,24 -DA:67,20 -DA:68,20 -DA:69,20 -LF:11 -LH:11 -BRDA:15,1,0,364 -BRDA:15,1,1,0 -BRDA:32,2,0,12 -BRDA:32,2,1,4 -BRDA:55,3,0,20 -BRDA:55,3,1,4 -BRDA:56,4,0,4 -BRDA:56,4,1,16 -BRDA:61,5,0,8 -BRDA:61,5,1,8 -BRF:10 -BRH:9 +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BurnModule.sol +FN:19,__ERC20BurnModule_init_unchained +FN:36,burn +FN:60,burnBatch +FN:92,burnFrom +FNF:4 +FNH:4 +FNDA:384,__ERC20BurnModule_init_unchained +FNDA:18,burn +FNDA:20,burnBatch +FNDA:6,burnFrom +DA:37,18 +DA:38,14 +DA:61,20 +DA:62,4 +DA:66,16 +DA:67,8 +DA:70,8 +DA:71,24 +DA:72,20 +DA:95,6 +DA:96,6 +DA:97,6 +DA:99,4 +DA:102,2 +DA:103,2 +DA:106,2 +DA:108,2 +DA:110,2 +LF:18 +LH:18 +BRDA:19,1,0,384 +BRDA:19,1,1,0 +BRDA:36,2,0,18 +BRDA:36,2,1,8 +BRDA:60,3,0,20 +BRDA:60,3,1,4 +BRDA:61,4,0,4 +BRDA:61,4,1,16 +BRDA:66,5,0,8 +BRDA:66,5,1,8 +BRDA:92,6,0,6 +BRDA:92,6,1,4 +BRDA:97,7,0,4 +BRDA:97,7,1,2 +BRF:14 +BRH:13 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/ERC20MintModule.sol -FN:16,__ERC20MintModule_init_unchained -FN:31,mint -FN:54,mintBatch +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20MintModule.sol +FN:17,__ERC20MintModule_init_unchained +FN:34,mint +FN:57,mintBatch FNF:3 FNH:3 -FNDA:364,__ERC20MintModule_init_unchained -FNDA:246,mint +FNDA:384,__ERC20MintModule_init_unchained +FNDA:277,mint FNDA:30,mintBatch -DA:32,246 -DA:33,246 -DA:55,30 -DA:56,4 -DA:60,26 -DA:61,8 -DA:64,18 -DA:65,54 -DA:66,54 -DA:67,54 +DA:35,277 +DA:36,277 +DA:58,30 +DA:59,4 +DA:63,26 +DA:64,8 +DA:67,18 DA:68,54 -LF:11 -LH:11 -BRDA:16,1,0,364 -BRDA:16,1,1,0 -BRDA:31,2,0,246 -BRDA:31,2,1,4 -BRDA:54,3,0,30 -BRDA:54,3,1,4 -BRDA:55,4,0,4 -BRDA:55,4,1,26 -BRDA:60,5,0,8 -BRDA:60,5,1,18 +DA:69,54 +LF:9 +LH:9 +BRDA:17,1,0,384 +BRDA:17,1,1,0 +BRDA:34,2,0,277 +BRDA:34,2,1,8 +BRDA:57,3,0,30 +BRDA:57,3,1,4 +BRDA:58,4,0,4 +BRDA:58,4,1,26 +BRDA:63,5,0,8 +BRDA:63,5,1,18 BRF:10 BRH:9 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/core/PauseModule.sol -FN:25,__PauseModule_init_unchained -FN:38,pause -FN:50,unpause -FN:68,deactivateContract -FN:78,deactivated +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/PauseModule.sol +FN:26,__PauseModule_init_unchained +FN:39,pause +FN:51,unpause +FN:69,deactivateContract +FN:79,deactivated FNF:5 FNH:5 -FNDA:364,__PauseModule_init_unchained +FNDA:384,__PauseModule_init_unchained FNDA:14,pause FNDA:8,unpause FNDA:2,deactivateContract FNDA:4,deactivated -DA:39,14 -DA:51,8 -DA:52,4 -DA:54,4 -DA:70,2 +DA:40,14 +DA:52,8 +DA:53,4 +DA:55,4 DA:71,2 DA:72,2 -DA:79,4 +DA:73,2 +DA:80,4 LF:8 LH:8 -BRDA:25,1,0,364 -BRDA:25,1,1,0 -BRDA:38,2,0,14 -BRDA:38,2,1,6 -BRDA:50,3,0,8 -BRDA:50,3,1,4 -BRDA:51,4,0,4 -BRDA:51,4,1,4 -BRDA:68,5,0,2 -BRDA:68,5,1,4 +BRDA:26,1,0,384 +BRDA:26,1,1,0 +BRDA:39,2,0,14 +BRDA:39,2,1,6 +BRDA:51,3,0,8 +BRDA:51,3,1,4 +BRDA:52,4,0,4 +BRDA:52,4,1,4 +BRDA:69,5,0,2 +BRDA:69,5,1,4 BRF:10 BRH:9 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol -FN:25,__CreditEvents_init_unchained -FN:37,setCreditEvents -FN:49,setFlagDefault -FN:62,setFlagRedeemed -FN:75,setRating +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol +FN:28,__CreditEvents_init_unchained +FN:40,setCreditEvents +FN:52,setFlagDefault +FN:65,setFlagRedeemed +FN:78,setRating FNF:5 FNH:5 -FNDA:364,__CreditEvents_init_unchained +FNDA:384,__CreditEvents_init_unchained FNDA:2,setCreditEvents FNDA:6,setFlagDefault FNDA:6,setFlagRedeemed FNDA:2,setRating -DA:38,2 -DA:39,2 -DA:40,2 DA:41,2 -DA:50,6 -DA:51,4 -DA:53,2 -DA:54,2 -DA:63,6 -DA:64,4 -DA:66,2 -DA:67,2 -DA:76,2 -DA:77,2 +DA:42,2 +DA:43,2 +DA:44,2 +DA:53,6 +DA:54,4 +DA:56,2 +DA:57,2 +DA:66,6 +DA:67,4 +DA:69,2 +DA:70,2 +DA:79,2 +DA:80,2 LF:14 LH:14 -BRDA:25,1,0,364 -BRDA:25,1,1,0 -BRDA:37,2,0,2 -BRDA:37,2,1,4 -BRDA:49,3,0,6 -BRDA:49,3,1,4 -BRDA:50,4,0,4 -BRDA:50,4,1,2 -BRDA:62,5,0,6 -BRDA:62,5,1,4 -BRDA:63,6,0,4 -BRDA:63,6,1,2 -BRDA:75,7,0,2 -BRDA:75,7,1,4 +BRDA:28,1,0,384 +BRDA:28,1,1,0 +BRDA:40,2,0,2 +BRDA:40,2,1,4 +BRDA:52,3,0,6 +BRDA:52,3,1,4 +BRDA:53,4,0,4 +BRDA:53,4,1,2 +BRDA:65,5,0,6 +BRDA:65,5,1,4 +BRDA:66,6,0,4 +BRDA:66,6,1,2 +BRDA:78,7,0,2 +BRDA:78,7,1,4 BRF:14 BRH:13 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol -FN:58,__DebtBaseModule_init_unchained -FN:66,setDebt -FN:102,setInterestRate -FN:113,setParValue -FN:126,setGuarantor -FN:136,setBondHolder -FN:146,setMaturityDate -FN:156,setInterestScheduleFormat -FN:169,setInterestPaymentDate -FN:179,setDayCountConvention -FN:189,setBusinessDayConvention -FN:202,setPublicHolidaysCalendar -FN:215,setIssuanceDate -FN:225,setCouponFrequency +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol +FN:60,__DebtBaseModule_init_unchained +FN:68,setDebt +FN:104,setInterestRate +FN:115,setParValue +FN:128,setGuarantor +FN:138,setBondHolder +FN:148,setMaturityDate +FN:158,setInterestScheduleFormat +FN:171,setInterestPaymentDate +FN:181,setDayCountConvention +FN:191,setBusinessDayConvention +FN:204,setPublicHolidaysCalendar +FN:217,setIssuanceDate +FN:227,setCouponFrequency FNF:14 FNH:14 -FNDA:364,__DebtBaseModule_init_unchained +FNDA:384,__DebtBaseModule_init_unchained FNDA:2,setDebt FNDA:6,setInterestRate FNDA:6,setParValue @@ -858,227 +1058,135 @@ FNDA:2,setBusinessDayConvention FNDA:2,setPublicHolidaysCalendar FNDA:2,setIssuanceDate FNDA:2,setCouponFrequency -DA:67,2 -DA:68,2 DA:69,2 DA:70,2 DA:71,2 DA:72,2 DA:73,2 -DA:77,2 -DA:81,2 -DA:85,2 -DA:89,2 -DA:94,2 +DA:74,2 +DA:75,2 +DA:79,2 +DA:83,2 +DA:87,2 +DA:91,2 DA:96,2 -DA:103,6 -DA:104,4 -DA:106,2 -DA:107,2 -DA:114,6 -DA:115,4 -DA:117,2 -DA:118,2 -DA:127,2 -DA:128,2 -DA:137,2 -DA:138,2 -DA:147,2 -DA:148,2 -DA:157,2 -DA:158,2 -DA:170,2 -DA:171,2 -DA:180,2 -DA:181,2 -DA:190,2 -DA:191,2 -DA:203,2 -DA:204,2 -DA:216,2 -DA:217,2 -DA:226,2 -DA:227,2 +DA:98,2 +DA:105,6 +DA:106,4 +DA:108,2 +DA:109,2 +DA:116,6 +DA:117,4 +DA:119,2 +DA:120,2 +DA:129,2 +DA:130,2 +DA:139,2 +DA:140,2 +DA:149,2 +DA:150,2 +DA:159,2 +DA:160,2 +DA:172,2 +DA:173,2 +DA:182,2 +DA:183,2 +DA:192,2 +DA:193,2 +DA:205,2 +DA:206,2 +DA:218,2 +DA:219,2 +DA:228,2 +DA:229,2 LF:41 LH:41 -BRDA:58,1,0,364 -BRDA:58,1,1,0 -BRDA:66,2,0,2 -BRDA:66,2,1,4 -BRDA:102,3,0,6 -BRDA:102,3,1,4 -BRDA:103,4,0,4 -BRDA:103,4,1,2 -BRDA:113,5,0,6 -BRDA:113,5,1,4 -BRDA:114,6,0,4 -BRDA:114,6,1,2 -BRDA:126,7,0,2 -BRDA:126,7,1,4 -BRDA:136,8,0,2 -BRDA:136,8,1,4 -BRDA:146,9,0,2 -BRDA:146,9,1,4 -BRDA:156,10,0,2 -BRDA:156,10,1,4 -BRDA:169,11,0,2 -BRDA:169,11,1,4 -BRDA:179,12,0,2 -BRDA:179,12,1,4 -BRDA:189,13,0,2 -BRDA:189,13,1,4 -BRDA:202,14,0,2 -BRDA:202,14,1,4 -BRDA:215,15,0,2 -BRDA:215,15,1,4 -BRDA:225,16,0,2 -BRDA:225,16,1,4 +BRDA:60,1,0,384 +BRDA:60,1,1,0 +BRDA:68,2,0,2 +BRDA:68,2,1,4 +BRDA:104,3,0,6 +BRDA:104,3,1,4 +BRDA:105,4,0,4 +BRDA:105,4,1,2 +BRDA:115,5,0,6 +BRDA:115,5,1,4 +BRDA:116,6,0,4 +BRDA:116,6,1,2 +BRDA:128,7,0,2 +BRDA:128,7,1,4 +BRDA:138,8,0,2 +BRDA:138,8,1,4 +BRDA:148,9,0,2 +BRDA:148,9,1,4 +BRDA:158,10,0,2 +BRDA:158,10,1,4 +BRDA:171,11,0,2 +BRDA:171,11,1,4 +BRDA:181,12,0,2 +BRDA:181,12,1,4 +BRDA:191,13,0,2 +BRDA:191,13,1,4 +BRDA:204,14,0,2 +BRDA:204,14,1,4 +BRDA:217,15,0,2 +BRDA:217,15,1,4 +BRDA:227,16,0,2 +BRDA:227,16,1,4 BRF:32 BRH:31 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol -FN:19,__ERC20SnasphotModule_init_unchained -FN:28,scheduleSnapshot -FN:39,scheduleSnapshotNotOptimized -FN:51,rescheduleSnapshot -FN:62,unscheduleLastSnapshot -FN:72,unscheduleSnapshotNotOptimized +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol +FN:20,__ERC20SnasphotModule_init_unchained +FN:29,scheduleSnapshot +FN:40,scheduleSnapshotNotOptimized +FN:52,rescheduleSnapshot +FN:63,unscheduleLastSnapshot +FN:73,unscheduleSnapshotNotOptimized FNF:6 FNH:6 -FNDA:86,__ERC20SnasphotModule_init_unchained -FNDA:170,scheduleSnapshot +FNDA:384,__ERC20SnasphotModule_init_unchained +FNDA:176,scheduleSnapshot FNDA:16,scheduleSnapshotNotOptimized FNDA:38,rescheduleSnapshot FNDA:18,unscheduleLastSnapshot -FNDA:12,unscheduleSnapshotNotOptimized -DA:29,170 -DA:40,16 -DA:52,38 -DA:63,18 -DA:73,12 +FNDA:16,unscheduleSnapshotNotOptimized +DA:30,176 +DA:41,16 +DA:53,38 +DA:64,18 +DA:74,16 LF:5 LH:5 -BRDA:19,1,0,86 -BRDA:19,1,1,0 -BRDA:28,2,0,170 -BRDA:28,2,1,4 -BRDA:39,3,0,16 -BRDA:39,3,1,4 -BRDA:51,4,0,38 -BRDA:51,4,1,4 -BRDA:62,5,0,18 -BRDA:62,5,1,4 -BRDA:72,6,0,12 -BRDA:72,6,1,4 +BRDA:20,1,0,384 +BRDA:20,1,1,0 +BRDA:29,2,0,176 +BRDA:29,2,1,4 +BRDA:40,3,0,16 +BRDA:40,3,1,4 +BRDA:52,4,0,38 +BRDA:52,4,1,4 +BRDA:63,5,0,18 +BRDA:63,5,1,4 +BRDA:73,6,0,16 +BRDA:73,6,1,4 BRF:12 BRH:11 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/modules/wrapper/extensions/MetaTxModule.sol -FN:19,constructor -FN:23,_msgSender -FN:33,_msgData -FNF:3 -FNH:2 -FNDA:189,constructor -FNDA:1455,_msgSender -FNDA:0,_msgData -DA:30,1455 -DA:40,0 -LF:2 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/home/ryan/Pictures/CMTAT/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol -FN:59,initialize -FN:88,__CMTAT_init -FN:137,__CMTAT_init_unchained -FN:144,decimals -FN:154,transferFrom -FN:174,_update -FN:195,_msgSender -FN:207,_msgData -FNF:8 -FNH:5 -FNDA:86,initialize -FNDA:86,__CMTAT_init -FNDA:86,__CMTAT_init_unchained -FNDA:0,decimals -FNDA:0,transferFrom -FNDA:66,_update -FNDA:426,_msgSender -FNDA:0,_msgData -DA:60,86 -DA:91,86 -DA:92,86 -DA:94,86 -DA:96,86 -DA:97,86 -DA:100,86 -DA:105,86 -DA:107,86 -DA:111,86 -DA:112,86 -DA:113,86 -DA:114,86 -DA:116,86 -DA:117,86 -DA:119,86 -DA:120,86 -DA:126,86 -DA:129,86 -DA:130,86 -DA:131,86 -DA:134,86 -DA:151,0 -DA:164,0 -DA:180,66 -DA:181,0 -DA:189,66 -DA:201,426 -DA:213,0 -LF:29 -LH:25 -BRDA:59,1,0,86 -BRDA:59,1,1,0 -BRDA:88,2,0,86 -BRDA:88,2,1,0 -BRDA:137,3,0,86 -BRDA:137,3,1,0 -BRDA:180,4,0,0 -BRDA:180,4,1,66 -BRF:8 -BRH:4 -end_of_record -TN: -SF:/home/ryan/Pictures/CMTAT/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol -FN:15,constructor -FNF:1 -FNH:1 -FNDA:1,constructor -DA:17,1 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/home/ryan/Pictures/CMTAT/contracts/test/CMTATSnapshot/CMTATSnapshotStandaloneTest.sol -FN:33,constructor +SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/MetaTxModule.sol +FN:18,constructor FNF:1 FNH:1 -FNDA:43,constructor -DA:36,43 -LF:1 -LH:1 +FNDA:204,constructor +LF:0 +LH:0 BRF:0 BRH:0 end_of_record TN: -SF:/home/ryan/Pictures/CMTAT/contracts/test/proxy/CMTAT_PROXY.sol +SF:/home/ryan/Downloads/CM/CMTAT/contracts/test/proxy/CMTAT_PROXY.sol FN:18,constructor FNF:1 FNH:1 diff --git a/doc/modules/presentation/core/ERC20base.md b/doc/modules/presentation/core/ERC20base.md index 8df92e9c..1a83fb41 100644 --- a/doc/modules/presentation/core/ERC20base.md +++ b/doc/modules/presentation/core/ERC20base.md @@ -22,7 +22,7 @@ The ERC20Base Module sets forth the ERC20 basic functionalities a token must hav ### Graph -![surya_graph_ERC20BaseModule.sol](/home/ryan/Downloads/no_backup/CM/cmtat-2.3/CMTAT/out/surya_graph/surya_graph_ERC20BaseModule.sol.png) +![surya_graph_ERC20BaseModule.sol](../../../schema/surya_graph/surya_graph_ERC20BaseModule.sol.png) ## Sūrya's Description Report diff --git a/doc/schema/drawio/Engine-AuthorizationEngine.drawio.png b/doc/schema/drawio/Engine-AuthorizationEngine.drawio.png new file mode 100644 index 00000000..a775430f Binary files /dev/null and b/doc/schema/drawio/Engine-AuthorizationEngine.drawio.png differ diff --git a/doc/schema/drawio/Engine-DebtVault.drawio.png b/doc/schema/drawio/Engine-DebtVault.drawio.png new file mode 100644 index 00000000..978d388a Binary files /dev/null and b/doc/schema/drawio/Engine-DebtVault.drawio.png differ diff --git a/doc/schema/drawio/Engine-RuleEngine.drawio.png b/doc/schema/drawio/Engine-RuleEngine.drawio.png new file mode 100644 index 00000000..2dcf6103 Binary files /dev/null and b/doc/schema/drawio/Engine-RuleEngine.drawio.png differ diff --git a/doc/schema/drawio/Engine.drawio b/doc/schema/drawio/Engine.drawio new file mode 100644 index 00000000..7bb27722 --- /dev/null +++ b/doc/schema/drawio/Engine.drawio @@ -0,0 +1 @@ +1Vrdc+MmEP9rNNM+xKNv24+J89Hp3PVuLtdp05cbImGLBgsVodi+v74gIUuAHMuJ5Th+SMQCK9j97bK7yPJmy/UdBVnymcQQW64dry3v2nJdbxxM+D9B2VQUN3SCirKgKK5oTkO4Rz+hJNqSWqAY5spARghmKFOJEUlTGDGFBiglK3XYnGD1rRlYQINwHwFsUv9CMUvkNjwvbDp+g2iR1K8OA7/qWYJ6tNxKnoCYrFok78byZpQQVj0t1zOIhfhqwfy+evg+mxaTZ/jn5xsuOfvL3cNFxez2kCnbPVCYsuOydivWzwAXUmALClL2jWD4C+V/LHcmFBFFpEjZr5bY963lhpgv4+qRCqGwjRR1+F8hJHE1Jym7yEsgXPIBjp9xNF01/fxpIf5T+Eye4M43uQpzl3JyDMVWbD53lSAG7zMQid4Vhy6nJWyJecuRS5BQdPzylb3kJ+X8DCmD6xZ8pDzvIFlCRjd8SN07ltCQ1hHK5qpBmlOjJ2mBrJ4GJLgXW86N/viDVOEB6vQMdRqChGl8KeyKtyIM8hxFquxUQcM1Yn+L51EgWw9ynHi+XreGXW/qRsq30pokmg/tvmZa2arnvU1rOSloBPdDnQG6gC/xk/4NxopjMTHQUnLQoeOaRiEGDD2r7qhL8fINXwni291CLLBViHm2hp1q33JW2/w1RnymwsiZaIwqwRiMShxut90Lmj9+PK2DVT6L56uE/REhx3+KtsbVQHMOcA5NfHK538smoSwhC5ICfNNQNYQ2Yz4Rkklw/gsZ20gsgYIRFeItgPruWIHoyHaDPTAtW18hRVwikJ4Gu0FP7DrTnuB9Iyp9FUscpkNh6SVxtLB0WXAUUPSTb4qkN+kCpVDIFYo1W96teZwkZPlY5Gd0lPjuKFANtOs0GQemp3H8oY6T0JDzNyi29DFOZ2+iotT3ex7P4VDynHYcz1UsJWTSK5oKd0RTnQZQ8eZLrdhXIw3l5Su0xCCF56M5P9TOqg7NeWGH5oaLrOp8pqW7LxmkpbjF+6T4uQ28j8OZHipjx1FlPOkwDq9DxMN5G8cMEczo4FXRax2vPiiRbHf0epqT/EyiS0+LLg3X1ze61C321BGBYyayfbJKoYZP4BFiFUUAo0UqIMZ1LkK8K2FWKAL4UnYsURxXsSjkvhk8lvwEejKxwXLLwZUVXL8BT7uc5rZUIt9qtYsRXYZ+YY8mjq3FFsdBj9vFtJ5P5vMy/hpA2cdPc98lZd0fzp+Xt9CN3NOPgt65aKAx8gbLRbvl6hsA+k4LkTEQUdMqE9MP5SxqgziGswjtqeosLt7oLU7gEMyEMEpg9FQuOi9wR8JybvmfO95hWy3THneY9nAB78SQKStt5OT1xIEjsjNzsq4WkgXOa52sVvDzdajscLJcm2DTGia91BBma+bDPKdK/4FZBjFKR8ZVxAe7HXCDbgW0gNSJpMHqD66ZxJr2jDHKcqiKLE9AJvq5sd8zwETvHGE8I5jQchpPJMRPDGWUPMFWz3wue07mSj1V7kFHatuV2epByPFuZUxXelukkSwdMGKJy1MgrPC2uhQTi0ibvKVcOl85JwhdZTBCc+5muaspzUJTIJcS07SnqCQlqa4/SeofyXRZmGqDp1L2hVbGqAuk7TJGV6VoMGX7ZiZ6mI3l3C+zD2Bljh4lvrOV+X2ywr2XSy2F6Oh/JIyRZZkDbkMews+riiJlPnlROce0kb2BTY3EoS+D9EBDP74GTuZ8M/g39X5QkKrr5TVB65F1WYdKe0sG9RF/LtGsho0gnIzsicqld0DrTrUrsmBqj+zWT1vewDfafRz9Ry9Xn1ly5GsXz8Frv4bQGfl6Kevg5KjfezwZnzRQrDgeFZhmdWv3pxbvXtB60bSOUc+yp/ZU0cE7lrNEhL/9XrAa3nx36d38Dw==7VxJk6M2FP4tObgqObQLSWw+9jIzSWqWTnfXLKcuDLIhg5EDci/z6yOxGSTZxhhsPEkf2iCwMO99b3/SCF0vXt7FztL/QDwcjqDmvYzQzQhCiCyNffCR12wEQcPMRuZx4GVjYD1wH/zA+WD+xfkq8HBSu5ESEtJgWR90SRRhl9bGnDgmz/XbZiSsP3XpzLE0cO86oTz6JfCoX7wYMtcXfsfB3C8ebRp6dmXhFHfnr5L4jkeeK0PozQhdx4TQ7Gjxco1DTr6CMNn33m64Wv6yGEe0yRecq9cZiT9/vPsYuQ+PM/zlcTq7yGd5csJV/sY0dqJkhuMRvOZvEbDJoUbYqTZdxREntcOnTd+IvhZ0iskq8jB/kjZCV89+QPH90nH51WcGDTbm00XIzgA7nJGI5qwGNjuX36T4WTim+KUylL/ZO0wWmMav7Jb8qqHnVM6BBnQjO39ecw0UnPArDCsQ6uRAmZdTr0nJDnJq7kFZKFFWIhqOvEuOUXbmhk6SBG6dTnWi4peAfuXHYyM/+5bfx49vXiq33bzmJ40pnZBV7OLdQMFeTV5kflTobSjIXYzFOHRo8FSXMhUP8ifckgyIObttq85uZBv1KbL3yb9VFQphIlOrT6RDAQ/UieeYShOlkChfuz1KkISSu1WI30TzIMJs/Jd0TPuBY8J/k+fFOEnY0Qi9lUXQJ4vpKjmJ+OnQqPOj4E8FDkiFByjSuzP50xXyZ4Y0f/8a6cx/VqS4cJGklLlkN0C4fEnJU1xnR3P+WWVRNiX7hdms2Q0Sb5LnYBE67P5TMAdognK8AEBmD9AtBX9AeWv3CnKyW0N2bFa2AqUxPRGsk9NUEBNoCmLqdl+0RLIdPxNaIpGWCmJqk6MS05BoSZY4dij+FD2UztGgiZsT01CIOVQ5QcDoDZiygfuUEjMg3JcEAydkcRVM6jC1gSXDVIVSszftaW8lrFZYpmncxNQBe4Op+xWP52N2w33kLBOf0N/OlGGmrdArR2WYIasViZaVgCAiqbfgOYmfEhfUCcnHbx1KMQvJ+AjUEBtNaEy+l4EqlEIIkfzqkKKMIpQhBeNU/Fr5Ej8tAxF+sv5aelZ8bz9W74xHCsWS+ecNBGUgkQsoJypUiSYgrmnoApAQu1iiFu87dlGFuJnW8cFBWufWifmLwuy2tbtd0XCl380ftcHrZsqC1sUmE5BrEpJ4LWOzIAyFoYRpsCCaswFjffZAmDa7uYCb9Bxh+mkWptLrB56Ho53y15tXJWo/2NQR6C0cA7K3f7lchvxHk4rdSv/RTV5W4jtLfui+hgEja4x2W5xpxoD303LAcb/PU7Z8WtGQx3A5NHK+GEfkkwkECVZ4v0gVSaD++CT7FdvM1B55qyJT9a1mcHYZmaqJqVicDUYmPbvFccCIgeNOpG6nJTIaGqJCAgZiiETrYeot7ZAl5OKsyXHNEJRj38fdARvnwntnisM6dJ0wmHOPymXY4AC64sIcuE54mV9YMM3O57iKMdMYzjSdj6Nsyd8vfWPjamTctMddKYGiGimrHPlTR9U6gkq9aGMN2WaNOfph2CluIbNZgvvhptW5/mmpS3pWG4U6ODsHFljGmCmP8g/WAGajtu4sNLfNax7ZudVVzu1JcKi2nzzjvtWCspMjG8LGiC5it6EgWjO2Inqijy3NsG2IDDjRhekbw1sHWx8iptl7hjcwJXi7Pna/c2qycIt9/Jo61mGQ0KwSnDiRy53092xEzgL9bJ65YdedmjJDekLPvHvL+L9nXhOGgegjA3TlmQtpAAmbfXvmmoTYR3YceMw1P0fHvBDADhxzMDHQYWA5gisul9DvMtugSVw7jyoA0GUtruwK6q9sI1cBcpqeaykMWg07rXqjKdrPMB6nsjKMKglsagILWR+ICQRQaFmBYvjXPKwU8SrWW/quksgJ1VziozOVeF1RTTiuxOtyyu/0Et+iltqxtBdQ2y3txsCk3RRktG07pzzTkeNqKPe7bENmX0GaIvkz1DSoeaYWSkPb8jlSLb55VR9umxeJ6dW+8SzniQ7Fc0c47EouTobngeng7XhGoh5trpG35j2lefv2xho0HZ8yrT+8pH5TPKNhlakmPKdfh5qY/Wqeute2QhgKzkp3EHbf/em/u3m6CWcfb/9+BB9/OMlXxZKtGDsef37E/z/HLGqQMN2+Fap54k0Vr5ym/0lwAu2iU60asNgK7InGtU3AouQZVPLsgkTh63+cVWKcbyuySX2xSvkG3Ts8LRR9d+v2mrbJDssbMYWeIqN1V4EmLDCRlo307HDIuUkar2T9PNyqRyEPBxc9LrSxDbT6OkFwGFr6r4EA2dquK1frztXkbLX43qsJkWBcgWr5m3lMjQ1k6yrLVxgGywQLHMmbFhKmA+g9dajIkRHM3T6JfezKbJZf6WM5u12XE0O2iuioJG6S1mIq7D4/JTH1yZxETvhmPVolvYjpKaGULNIgqbStTLqibCSnrr2VDS2RvzsCgg1N46E2T2jIBbo+nlT+jN7CDPVrK9YrWVczJ2RSlDYEpXbMujnQO9pYOCsrZc3C6Y383en5NI1b12YM2FZdPBUFkV5TNYLTbOlWO+9IhJzZMBtzTAtc6LTeVhkBcZXR56xF5WdeZrT/HgKGJuZTSg1RXVSkK2AvFnO6K/zLDSrVNbC911f3puLaQovd0idblqp3X7A6NCE61tICbKXX2TB7SIs2tv+N25qHVaHifc2CyFqdtDJDXcqt2mKLYt/d+XKWJvdMunVGWmy5tKnzR9sB//YAbZriGVaCXtyxyxCXjTWFoziReeQMjyFboc52Grr+8HD50P8mQ1kAnA1A1E+eQLnpkKkC2HrznM6tnaIXCyfpBnczLkE+b8tyiSfrkWN0Zhl7J8+B6E5AeVsS5Trv3tyJJuXVbakYHuz3mIjpiO5Q2O4MaMqF2zLdu0jQPN7ip7vbb+jr9fSvP4IXuHz6eqvYR+5QL66X3Qa30n+noWva3jbshdYTs2W0Xm6gV0wEhIn6NnT7lcYG23XZXW92Yw9Nb4jcga2MhEgXDUxLJ03aksQSN15tDV52ut5EN7t9vRkxevMv7V1bk5s4Fv4t++CqmYd2IXExPPYlmZ2qpJJNT2U3T1O0LdtsMHgxTnfn168ECMORwDJGYCfpSsVGxjKcy3eOzkVMzPvNyx+Jv12/jxcknGBj8TIxHyYYO8jz6Asbec1HTNO08pFVEizyMXQYeAy+k2LQKEb3wYLsaiemcRymwbY+OI+jiMzT2pifJPFz/bRlHNZ/deuviDDwOPdDcfTfwSJd56P0PpzDB/8kwWrNf9qxixvc+Pzs4lZ2a38RP1eGzDcT8z6J4zR/t3m5JyEjHydM/r23DZ+WV5aQKFX5wmOIbxdfNsnd8o+n8MH7GCz+ldwUF/vND/fFHU+wE9L57pYxnZZedfpa0ML53z7mH9zsMk7d0hMw3lJ23x0+p+9W7PXTPiRvolUQET4lvbZ81vyEgizlD+Ddc7AJfXq+efe8DlLyuPXn7KNnKlx0bJ1uQnqEimsohAW55VTfSJKSl0byoJLoVF5JvCFp8kpP4V+wjYJRr+VAfvx8YDyyZsXgusp0xMXVL8RtVU5/YAh9U/DkBP7YEv4AqiXxPloQNomhiXDNktNITRPXielIaIkMCS0tVxcpnWslpQlJKaGl4Q1Ky5lAy3hLEj8lH6K/Ej/aLUly4cQtiGkjkZglYtd03NZFS1eg5YeMlkEc0WF04XTksyCvLqUumolSKhNSRxddvVa6GtwoPSUqVg65DVbuNzJdTekJj5G/3a3j9Pcr5ZfjSlBlUH5xTWwDaBItbplXR4+iOHMUFv5unREX1QnJxj/6aUqSKBvBhklHd2kSfy09OUqfuzp3IPnJS5D+h302tYujL8WZ7P3DS/XglR9ElBqVL7HDL8VVZQeHr2VH/Hv5zZKF4JCqMJpSKd4nc3IcZ1I/WZG2+Ty54FTkwpaIBR9LSEhV7Fv9HmSyUvzCxzjI/Ewul+VEHEcMIG/5fRZfq7q7cCYT+HMziOA5JYSZMuEtb/wMeUYSec4xZ43OwpyPfsJuFOenHfzsCr6VDjf7qQZ3m0JKWleaXD3u4zBODhq2DMIQDO0ofgXRig7Yh6O/YoplDze4CeViimLLMNPddbBYkOio9mnzqCD2YVUnAGsDPywIy+12G7KLjitWK/svbfKw6Apzy97OX8OAkjUxj9ubp5wB757KAX/+dZWx5cM+DdnirRCNgi/2gHxyENBgiedryhYRpj4+mScZqXno73bBvE7zutBzE4OqBqY0N8dMTNXAVOxNg4nJjj6SJKDEIEmr1umzQzNFO5SrxFiGCFoPx+poh2YzIMTewGZIDPH8fXyxxtj/zn8iYV10/TBYMX9qTkWBCdAdU/pg7oe3xQcbiuxsjruEUMTwn7L5mJRt2f1ld2zfTeyHU1CkiO0Vk01KZD4qkbmyNsKLMTVM16kxxzpPdvgp8XK5I3q4qRAQOhF/OmLJ0LDBLeSF+69oZk8pdpR/uCZfrtnVm8VO27zO0L6tQjBtGDGUm08LHzGg9GBsO6gs0O6oAm3YrQLtWdOZYbsuNm3sWWB6Zem2UOuPwPC6bukWw5vzNZl/ZdSkiy368lvmVofBjv7+PWO2H82Zi/6OjogRoB/NL7fduksjy5QM7ZeLUdRzAemXX96mHWPhkY368stBEECQTd0gI8an/6bvgwV1zH9wt7zBoJVuOfJs8zxh0e+I87utsO9TbhsMgWvXkQFAlojiSBYF05YBwGLEtKDptWbB8Mwem6ZiYLHNMA6TVbnQDElZYXTMBFbqd0bJkVhAyuDqT31VCeUVZls0G0EshlMLjY+uVOMtSS5hYI2X1XSNrfEd8qjatd1U1faGwrGhtN0BOuraXbUdzjTwuhr3H7zsskiTxH6uJgiqukgb2UIZZls8R8jEq+f0cdu8Joyu6pbni4mCNuHtuXpxOfI8Lga3y7MJcVQdkVvjnsK8uuVZjHuOJM99ye/l4nNDanIYefZYTL8uajD6pR66N1pFGANnRbcIi3HghPgLdgER+/85ocsGQai7V0KpR95kC5Zxyp+AF+iaBcuqKxZXInzQuva3YhFDoYxpN3EUvv7kvIIrfVcSTxqUV6bM5+mzqhHBqsbPeVD8JytrPNKs5DkQwbElikYpPlXRgMvH/kRDdB+qFfdjRHTaqYgdGAIv22hGq4I3+09knuuDTY0s5lOprrCdITwxHvTvrZDCHDVziW1BZ5Fh91E+gT0kzIwGjuRypNHRSfpAntLP/j5M9TeS7iiZ+AA2+4GZG+hx3SBZC19Z7VyrOC8bTvvvO1NAmgOSoNNo6ZznEzVEr5pqAERqzqTE1Fd/Is9j8PZn4x/ZmPGdJDH79cUiIbvdhPkUb0War+PN0353QfSegWbemSm6GqYMObE2eluirxHs3ibxdxL9Rl82vzPizu7ZPzoT/ySNJe15l0du0AJVOvNVz07mlCBt/b6WiBWfCLt1OvZnlJWt0Hf9t/7qoTO3kVjW4S9bTWnz9mxxNXVbgsMyE1qBmN0yJPz9aWVsp+XnIecyYwryjJPjfl+rf3HUG7RUQ3BOw8p7GG8Q9jaZsC1E1fmDxZierRZxo3zxXyunFZVgjRdsgz4WbksP4p/P2KtXaUsqcamQJf48zXA9k5z9jkr79cG6JXFbBoZ1W4T1pR/uxABpR8ypZftRJ8wxTsScy8EXe9TVpuc2SNvJAX4D7D9iDZyVssXo8C8hPSKktqqQjpqGQgjYFLt7exRYoghb32gWUq5d/Ze2dHPcTgv1Xa58juukzUATsA2lSlU+HZDH8WAQvicnTbhg22i9Lni+5w3g1CFDXPUoenXD9j/gQwlMn/0PTrufeGNMscGNXlcBLiON9W/o64dweq8dka0eBweqcfHHBlYNGV27neDqzRt4F4KZWPr5564IGWURI+NzEUS6jpAoagL0aihJulektljSTGM14rju7lEvwRq3RdqCWup0rdBGxrRSSmV4qD6x0OjRk9sgpMGLG9DqBsxEi9Gwrhu26bEVNzob/Vw724y+zWvXgO0+VzoH8wAU+k54J/wuJQy5t5UiATZUKRo4ivTBC+H7RefIleaFJubDDQuYjZiO9GRpBVkLkLa4nivbeu5nZMVhZ+bxeCGqRULSfcJKouR4d3kVjnp5Bl0pSc+sI+GYthJHV/RVS46lyf4Xw6C/gyQJ6mE51vviExLzvN1ATnOfJ9oXtaqdj9aoKQwLrH47b/VhwTCz4uL35BQpuGDTaY++wfPxEClVD0t0pdgK+1BQd2LlntFQuXeo3X4fL7LG7oYCvnL4SUNd91WirAeEtvRaxgJZT7L16ewuN4j3pTMze+gPeXENRdHkpJzGKMUnZWHnUWjNnZzRoFUIWcAy067YKuxweDK29r0u9XqvqBdE9DznAA+zCYqqDPPF4/GNwIwGBBvHPUCos39gw5mG3nCQw4aOh9O0Z7HONVOWCZFEEv2QtSHps1Nivchl6fuFLQas61B3G3lTr/IHQuNCXkVZ+R0owIMrv8wjhwIbhsF2R4D/W4TwqDQ/pn4Kvd8JLvqyBVeZfrJcFp8MhhRwR3WEJY+cMYdECmRI2jYI29PViJdMJdasd2MeL1przeJt1vNJR94GIWcNY0mxSsBdoGWIqjTt0MIDeQrQgo9CS6ngZ7fhQWPfGTmEYDOcqae4gsl3fT94OgPk55Bx2kZi/erBmU2rp+iPdj1QDbe5xze56UsLXNg10FUJPJj8gk54X5VtQG15m0NjZZug5vVSOF06c2ru4IeoaCugotH0G1Nk4rrDZp0nxgOks0Xf4L7YBL6xz01fTnWwsCN82mhpe2QgVPXSYEy9Py9N4ANdsgUbgfgX1mTI6Qn3ypfkyqQJaW1936aKWaeo9Fgcxkm6jldx5IdvDqNVWkJoeorTNN7kxl90Dgqqu62LEpWYu06D3dAW0XfUFdeXtIqde30hHN/3qYpwuWZVnzkHJOMny8JguGiV7LIjhUNti1ZLZRPVo+pbJ+fhnHdxtt0R4+t/SZq+FkT292msAqA6UysTNSfabFhKKuvueVuZKTDnvEKEjgujc/lzvFNn1FYyCK3Y6FiCK+Twz85nKV6w2b6ewbPzzge1CHqWP6bK0zHbIpn59jt9xDL1mgUL1yMykkdnDBrJtH6QPd81PhlCdTcxU7U1cdSeg8Nzscu0RdfeROzCUIkx8D7a/OfG3Re++SklvVtaZVlUFMVxdxow6ljodBVEVD4th8+EnanllH8zPKxUioGHC4jgaWpPMdvt3Y0xdRHg85ntKfojeGbvj5tQhQjcH0Z0ThocOIdcoFeSSkKd7XG2YKq6JhtcoVFNMdugInanevCHH4f3pdXHdkUfO1jmx6x/9j5j2OVkHHThVUP5ZJlwYLv71rjDl+bX0k5HHTo5o4NIxuqjW+IMkp4dEvgUWvP7ypYKEObxLSxOfuooTJdyde45vIBgcQLP0za3HsMdAopb7Ahm9DCJWS/A4fTE367fxwsGPG/+Dw== \ No newline at end of file diff --git a/doc/schema/drawio/RuleEngine.drawio b/doc/schema/drawio/RuleEngine.drawio new file mode 100644 index 00000000..a10c47c4 --- /dev/null +++ b/doc/schema/drawio/RuleEngine.drawio @@ -0,0 +1 @@ +1VpRc+I2EP41zLQPx1iSbfBjgPT60JtmLvRS+qbYAjQxFiOLA+7XV8aysSQTHIKJk5dI67Vk73777a5MD41Xu68cr5ffWETiHnSiXQ9NehACCAL5L5Psc4kHlWDBaaSUjoJH+osooaOkGxqRVFMUjMWCrnVhyJKEhEKTYc7ZVlebs1jfdY0XxBI8hji2pU80EstcChHyjxf+JHSxLLb2PTe/ssKFtnqVdIkjtq2I0H0PjTljIh+tdmMSZ9YrDJPf98eJq+WTcZKIJje4Uz4bcB+Tp/3fs5ftcPrPj/++qFV+4nij3nj8bXo3VU8s9oUdtksqyOMah9l8K33dQ6OlWMVyBuQQp+vc+nO6I3K/kf1wxU6EC7KriNTDfiVsRQTfSxV1FQ6U4RR0gOfl8+3REaDQWVZ9UAixcv6iXPtoHjlQFnqDtaBlLcFxks4J/02wHhwX13637EeS6C6Do5yFMU5TGuoG5GyTRJnlJo6cSaPx/b9y8sXpOwAWkll2ue+iQSGY7Ko3TPbV2QPhVL414Up40iMC8wUR5zFCIi1UbL9V/OLVuKWQcRJjQX/qAVbnKrXDA6PyiUtYAKjDAiLD2ynb8JCou6rxYCwEfQNfgbFQbhhroQNyyte+HEzIAtOUvZAks5pkKek3E0OSQNbZcLOK70LBpGNHWTRRyVZ/4WcSP7CUCsoSqfLMhGCrisJdTBfZBcGMyGUbEdOEjEv+fBUrzaPXM7xUEHoFJKgGJH5boeta1r5WjDp6eHpngvOkbXPcno/Ds/HqdSpefaQjATkXxqsfGJAysdJyvPoWguSQRliQqUoCNqKkCw6haWRLFYyhhADhNVG6olGUrTHiJKW/8PNhvQw86+zlDq/rjXrepBZOr8LfjN+yclKbaLVJXVw7fTQcIN0R78NJocLm85S04jnP8tz3TUzuk4Ukvi5UOt6wc5XOoDW6BDpdDi7my09Wt5hOhkN0IQ+65kK35cGhBQ3B5Qg6siKRHRaOUzuoukOEBbCvQIRu4ALNEwXiusuEgeW7SLYIoSgy2HeSCk7DQxX5MeUR2VFR0oQczyry4y3Z5P0FldeUSJxOMYnvWemi71T+jAWb8srQMXgF3pZXCisbaVpKigOUIxZ1rJ1J2VfI0IFhm8DuZsq+9CbtDLCPIpSxQOeMBZ2acua21rJ77RvzXntFDuwUNw3Mvt+9sNsbmN2ed2M2etuBQcKSrEyJcLo8QAHoGMnkD1jIIic5SKCDpFRijr2U58rQxpLKhSprtpwNQeN02C3IBY6rIQUV3dNbIReYhbVvLNQ25Or7VCmxSemjOR25H87pdS2qH8ttR89ysMgGpL/oS5WnzDwxTTNf84NFcz25b6lqWVgaRuhmzMN1zOLs6LWI+DmNY0PUvKup85vu2Su4DjjgfPHi1riuvc8oH56O+/CSPgS0xLyNibdbJ7sD30rR1+hDAvMDj/tqe9MyKUO7DuBHdI5ZVHPYcZuDsbI6qNYG6rY2ygPYEKXdBinwr9IsBwanAvMr5AlYSmDgfUVNnWOdfHyrKR9oH/nlIF/xupi3U2tLmK/CfFaNgTdgvi1WblwPdwvwFn36V2Fli+wD2G9WHp+G/NW52j6abour+w7wdL4GLmqDsN/2W47zoHY+J6jBpwH1CR6HZhp6F4/L6fGHY7n68fd36P5/ \ No newline at end of file diff --git a/doc/schema/drawio/RuleEngine.png b/doc/schema/drawio/RuleEngine.png new file mode 100644 index 00000000..3e891c69 Binary files /dev/null and b/doc/schema/drawio/RuleEngine.png differ diff --git a/doc/schema/drawio/architecture.drawio b/doc/schema/drawio/architecture.drawio index ad3dd6ff..f8517718 100644 --- a/doc/schema/drawio/architecture.drawio +++ b/doc/schema/drawio/architecture.drawio @@ -1 +1 @@ -7V1Ze5s6E/41ubQfJLFeZut2mjZfkpPl3PTBBie02DiYbP31H9hgw0iYxRLITXvTgAHjmVeza+aAHE9fP4b2/OEscFz/ACvO6wE5OcCYaKoS/5eceVudQRZKz9yHnpOe25y49H676cnssifPcReFC6Mg8CNvXjw5DmYzdxwVztlhGLwUL5sEfvFb5/a9S524HNs+ffbGc6KH9CxSlM0Hn1zv/iH9alNLPxjZ41/3YfA0S7/vAJMPy3+rj6d29qz0+sWD7QQvuVPk9IAch0EQrf6avh67fkLcjGyr+z6UfLp+79CdRXVu+O9O/2Q5P79eTG79b9eKh4zfxgAZq8c82/6Tm/2O5dtGbxmFlr/RTZ6iHJCjlwcvci/n9jj59CUGRXzuIZr68RGK/5x4vn8c+EG4vJdMJuP4X3x+EYXBLzf3CdGJRZzkjmAWpbBAanxM/670pz67YeS+5k6lv/OjG0zdKHyLL0k/NSxtdUsKykHGg5cNh4maXvOQYy6y0gvtFFX362dvKBv/kRK3CaH1akLHCJknfyYkqqJzGER25AWz+HBgKTThR8hxJgqL8EgxiOWKIbyqakNUpL051CyK+IalDC2VRX/LHBqaKB4oTcCOGoPdsV1zwgS7Pjbd0UQQzXGR4LpOg11jgX0tgnch9M9ZaDiPbyfBbTh/xurJy9S7G2hi6TyZuDpbqDiGNVIUMXRGakbYlNAaogmNTYWBao0Dof8hk2fbfjMfP/2M9Dv0/Bqen8eIJmLlt4sczTVYpLZ0g9i6KFIXKW0RmtKIKAxSEyKK1FYj4dGc0v0ID50UKY2Y0gMxKM1DUzIJrdXQlLtJjwkukR76SNcEQdoyioReozdH5zXtOxIegrWh5pqOyqKziUdEF0TngaYUCT1QGcLDwgxK64ooSmOK0sfxL3dfowOs+/G3H43CAt31x6fEK1jSZ7BYEugwvgCp89cllbLP47/uk///nd+HtuPao/j+3WSSAIaoAPkDojIYwuCHMOCzzBPdnia08FOyFo4UL2ZWOEmIluAm/fC+cGl2xIOdn08vjrEiNVMRxVSDoaK1LrnKUhvycfXMjWzHfgfrHtcBiMJwS4QBhA51LDnyDngxQFApYoYMRmylKIgbFpMbhoEa8oOU8CPVsELYQjixxQJcMRlMIV0yhREhORyP3cUioWYY+Jx4IzNTtBo86XShINpOP7efFgnxZKbjABOtmpJqp5Sk7fCEku5Z4DxJKLWJUSSglUW1+4MiHW1K7JmrV046VFJGqIARBsuUYTHCEMYIlZbTT9FDEHq/l1kBSQmJNBBu0hiUxKy4njhI084gZRWm4Iz9BUnpamhQUvSutGhvLCWrcvQUyopPTZeOjgwzeTYJwrE7dTM4fk782JntS0fOWLuDoCfD62Aud1MUPTFt4F7bvufkpKa05LRMQE2NgU5WCFkYOjFtmh7Z0tpTCFuyLW9MW6Snr5E7cxYU9eKTh0m5S3w08oPxr5gm8amMRPrq8IOXfP+SvoVagTzhYwKGb7fpR8uDu+SToZYdnrzmrzx5S48gR9xXL7pd3mlo6eFddmP89+YpyUH2kFI2LoKncOzWMHkiO7x3o20XpsxynULhDw0L1rIJXT8WBc9u4d1YbE8fdx7EVkEOYjpYoypMk61+Z3rbBj3UkwiwlFQMHrSiA/WgGCP2W+6yeXLBosEbDzRl64shtP2G+I/VO2xWxZrm7RcKoT2P47Orw6sfR4eXp9JJGgNUCiC19ygCqRH9XNm5lzN7vngIpDcuMDQueleHKu2VUcaafHSEsWG2VmQE6sXRkR0brsSqdLQ1gRA3ehcDGqteKKXqQZ3QjVESuvk+d2f/ufO563uzdfpsNlrMmyfQyr7i83TuL1fSqvAxfWhMhlF2BQWAZY69wOViMcIsmLkHxcqF9FTsFNwnxZVjNxGA8YmE697Y9g/TD6ae4yRfw4RVEXh5ZBmcoqvQPhiojGq0dc6tUCIlDFusWmIe2NroICVb6O+Z9wgD84IojMAwS/MJY72uU+RPzO/L9DAIo4fgPohZeLo5Cwi1ueZrEMxTjv10o+gtJZ/9FAVFfm48kLwDkn3CdkBqS/lK92FHVwHGmkwo8+t6CpUPKvEUeJnmFq2tP8+8yItX0W85s+EElJf2X5G0LoTIEfEmpsXcTVQmJ/1ZYiSlcrKucCzhjZEdpw9G28QmJWA5cBXw1GQVOLCyjao4npq0GSs8uJOJxHxEZhOgYcvEdURIGeJ1FGgtShuEhErZWBndyfz7yugOrimdBQR3DAAxpMGYTF2RHXuKsB4Hpgo5hXcGqlby0kLDNUhhuHCdBTZzscw6KGauGT5GBD/cZ1q2D+DroNgTUbssagMfwf0GonAPY/0oK0MWi3tGYn4b4Me+vVh4422o5mew5nd0bDFudg2BqzBNBTVsXbDERhEACwym84qBw1fOvkgwVmgZyRkrbAdJVIYm04aSAFGH6homlWsLLaJUPIkXDhWYN+gEh4wsrnyV87Htrq49IskcSgvIKWYZb5eV7gjX2NafEy2pa+fYi4f1Zi9JhYwhlYyhzHi4pbq+RwCftLOM4R3nQZj2Z7eBKjPmC6gqmvI5Ox93bgPxso6rWVcXBNSeKkE5f/g92QsLVjPNzB2B8GnrKJbCrtJ70/4EeNK7iAgUd7y8N6p/SycIzXzT/hG6iAkZAe2c6VmU07Lbcx05nKuq2gTpy6NzN/RimiYB2h2VtoprrhPUpyBHBlGGOsK6ZSBVR6ZOCiBEujE0l8aeghUVYVVvt4yQgoCVD+1AXu6EAfaXIVJV20XdoVfcQP0WvZOFWqN1ASfPuX5MEDROWf6j8ir5xlft15NknjZSYHOLtrlMKlyNYU8GTmsD1lJn3yMYtzW69fzp0UGwL7x1dLCMg/yDg+CNgS1S4wbO2GK23KIl4rJkTuZyfBNE6BVGSxxhhYdMIjJbSHAoYLp0x0+hFyU//m8BU7JCgJmh4Q4LmD5g250+3/yanijXb1dHb55692PAqNwVna6UOqgBN28jykitK6epJyk165OERLaYzGdsAZU1V10bNDVcrf7QpfJDlwrRtXNCmTe6GDth3wG69P7QpWNe6FIpdGW1ltKgi7Gt5x2gq8d4qol4oUuXXzPuURUXP3Rl27h6iUEinRe8Yn9Kenwx+k29A4D1GuQmGjeAIUN+gDWLFLNr3D/YU89PfuMn1392E0eaAYfkOHPDHXdiPy0dfMoTL7rwmwtL0SRJ4I6fQ4hg8TP9KH47VtigwI1AUSMM26YGhn8RsSRQMWG5nNK2Tt7EfSOFDti/A/2E+jSAMMgoWm1LqjA01BVReVb4ykax1JzRcwPuC+dcm87GcrPSdFoV7nfmCWZlWuOK0l/Uk0QLpRoDEvZJfbWJRIq0dKigT1ukwDBn50BpVgUsP1BaBBVFAgV6Uq3tHBix7BwozSp75QdKi/igSKDAmI7Sdv8cDD52DhTuW5Y2QDGJlYfKUFl2oq4Pl+RDjiWLLfZbivSpYE5DgeUu9aM20PgUVGVuZVV64HuEGrmM/p57LcnaxKL3BIagvLZrUcbc9cYHKQUxtr31Aj+kSOZumVRyq7W/BQ3yukhp7sdTln8nIquHGBNrfwHH+FHdeGRW9ZsoeyO1QUU07oDbarW2UksDJn/dXktNoahRrUa21ZAyduoU7h4AigWTycIVI1T3uo6uIzhacM8E1YOofooXFFKa8EncdqbDjSHZO8sOyD56MPHsQ9OZ/ZAJ7epONM3tDG51g6Dm31RAOVbt3ADcsS+oowOcgpe9cOn+l+3XCzJA+qjyWXtVeF9CztxAXNZvufl+XDirTJAnr4JCIqsiv0VgqqXieuqHWF3kwxibCHtqzydAxG/bI1TXDlKGCGX1MyK2GJQwvfk6gMtAVH+eAXzldSC3XJ5T76ZW3FFxQ5mhJd6U4r95sW8lIFc6SYPTaVqvB2plCSp8oN64Yns5gXqE8+QQNmyblT20jfO9z8yWAfNRbW2ZMihxb30DJ+VxhuB/d/ony/n59WJy63+7Vjxk/DaynrV9GBqoB4z2Wz8PPaj2ZT5wlJOoCUwYJFVArK/6zRrfoHJup8NEfR+lky1ydRI0v85yzZWhF9Ki+x2/lQXyxmbr1B/c/q3CcghOK8uE31NVlwn7+fHuGcxcJz2EzMVjvnoPjNIjlFWYEKI67dWPwEPIiEpOwkWzfufay2y9Paf2HZnyLP/1Jdq29g066mCF9bC/v7TlYMOhm+0XWJ+qAspRAq35+sur8JwBFmaDgTfGFWEaGOJsev26U6xQ4DN3v/FoaLNcPwsvmMU0/dvS5oDey61nS6mLjjZs3tNeJx/eHweh+5frqcIEBUOYMYRvLbO6YTurlJvbEL5Vz/f3zHI40pM1ZqrTdd6w4jVrJsutbKzMsjGazhNvb+rU3v+6dwU+1JM0Qe4F/UV4S+VBL/U97CBTs6RU1abGlZC6SSFBmqBUkoj8wIC7r1vPPYEdNjdzUPiXaLOZy0rdNNBlMZ9KTJizq8P9VGN4q1PYQI1B3rIsl24VGaHddL5Luaz1RqF/+96tdw2ud2qV1na2NcrdFuRtg3bROucxR2x47djctVSY7LMjxEucIAIih727v0TUMPIzOxlwr4zjy0N7HO0n33l5QwacDJkt5f4Yn82a4FfvUaY3ihqGpTxYlSLbR3aU8mTPBmMNNKqOrfXMUDgToHZ9H7cMHffKN76Qqqog/WNAZUEgtC+Rg4+iJreJxhT3Ji77gikkmQENTRfK6m09J3RQs4iNG6a493vhjKl3gigMcdA2/Eervq41H/fGMBwQ1cmcUbnaf9CQaq35aGtK1BA/UNa4/iKx1VTcO9TwQGyD/Q1/DGQhzlpvc6PUKhI06mmgGewvElud1CyB9wfJ2EzwyIJYGP5sLWNJRyIWwTfuRMRq3Dvn7ImZKRdc4VxfCmS14ap3JF8py4OzeH2cnh/hH4+P389u7O/45NeVcntVUgNnT5P4aBq5LR4p3qbSRVl/eF+4NDtaxZPDgzoBZbWssObEHUUf/WBk+9Qy6ntGH2zlnbkf+ehulrdjQXyX6O6jezU4Pfn3xnv5fnH9D3mxF18+MsYcbhM9aRC9kODLESw5f25HMbdnyzNYIZTQwZSwKiWrJHJh0+d6XQHQvvwW9smARhw//5PJbkyxO0ndX/04v/h+eyfdatFh1yY9G5BRmGjJYD2PiZZMAtKR6xUBL68Ov50cfv3+7VQ6KloED7UadDTWl3VCyX636ey0S0eYVb9tzfKr2hMxIs6yIMbWO4MbN2+mn6ULagtH1XZpFbOIqQEaGuedn0wESLDfpj18e0QltTsK6W1r92jGC+sMR71z1S4z6g45UUwnUxJDXeKB2lpJWVWl9QHjHNx0Jp09OA5dx4tOn+NfuZCUjFDIMslIuiQjYwrRNklaVRlZSiNJHBhoRrdu4QD7vlIPEuy9NJy4I32LadnmjIEw62b7cmOgVDUN4WW/UYqMc7yWDcOe55sbYGeQZZGmDkzyae3ZDnnPY5tmb9AHz8p62mQbmi1aJfBqVg1Dbm2ln4DxwmVfZDHfuMuOdWzg9zB6nXs36o7RV6Uy2+peQ5RLDF+4XqP0DsDHvXSGn48rV1knQpCHrbuxUIMVMQjqcBN5wEeo6Hxo6c2up5otNb7BwNs7TVO9Xipv0MytNwiyXUQOnIqXaK4uf6gYuJEh3Xrg1NZeHdIsSlUZ6oa1/mcWmW8pQyP3qdFWS+hMmHeWX6Jrb/Ymql8KtX5Cl7DnbOtdiFTOcefI5Q6owY8PowvrK7k/Pvw0ujBiJlzoDZPQGVoKWegiVnJAwvVkF1HzsitpaIC3C6/WwmqbAVHwtLYVX/TSZx8oONI2OqBrFQ/iZVRkLXvS78FVYXHd3Hb9zgqZif1mIS2e2N+ITaOR3CxFeR69zN/aotcyvxZqRZ+aKvyvP2fPGJqWahDdVJNuhUCPD6jaEH4adxtN8wr34hjp2r/z+9B2XHskYUYAlnOui/ELGQFmOQKPQqjpo3l0Yywub0bqly+33vX1t8vTOjpoQzZUg2y5vccHmDi2a07GB7A0M/5EH5vuaCKG0PQEvnVSJd9Qi1VxRm0v5UZpzKC0VPWD8QLCymksccMFp0fKvBiRDsuDBoQBEqR0uRqbJeg4asXSPqMNnYtaSnLb8uhDSRpQLrdWkrA7JxGUAMJgXsKAt83GZBFts30+HI/dxeI4aWIR+FIvdwNSjKV8LcZi55GOZ5KzWZ8iMSZwq8GC+WEQotpQZAunUm6o/ckNBBJWrTf6xA8aEghQJKjSChvFgdlZ8IqX6GCPJqCtn2vb95yY/MFM0gIeRGAdNq5bCcWjepjdjqjfOaTNPOZ++0NkkKseM92j6YHgplRE2va3UVVtqOT+FWUTUnQxKSxqUk7lQAE4TqPyBlXXdrxh6/A7XvsZM23Q63yADjtFqb2uG1i0RaDMrR/Zgo9Sasaymk8HMOFLN03HtrgDcdbvTCtMVJe81LPw3fDvhIAMRDC2RRhNEoU1i2dyv1lyvWI3ZY0BdJs+GLxlmmSlqbDeA2lt06EWLE0V5F1YdDEt3/IOdhSbzr9/C5K38mZj/ylBE1ZGyc/IegLIKS44iAeLGHAXmcqYLSCqlea3E+Pm65fg09Pv11tn8PV/Zx8GM2aOQbbId2whqhQqOHigFOcY/C1nJt3pgOKksH3zTFb2l7ZtvfcUiPKW4ShWHLsc7B3VysBqwNZhazhNjVcuNz4Mg2StbS6P181DbMe5yRX/Bw== \ No newline at end of file +7V1Ze5s6E/41ubQfJLFeZmvTnqbNl+RkOTd9sMEJrW0cTNKkv/4DG2wYidUSyE1704AB45lXs2vmgBzPXj8G9uLx3Hfc6QFWnNcDcnKAsaqaSvRffOZtfQYTnJx5CDxnfQ5tT1x5v93kZHrZs+e4y9yFoe9PQ2+RPzn253N3HObO2UHg/8pfNvGn+W9d2A8udeJqbE/ps7eeEz4mZ5GibD84c72Hx+SrTS35YGSPfz4E/vM8+b4DTD6s/q0/ntnps5Lrl4+24//KnCKnB+Q48P1w/dfs9didxsRNyba+70PBp5v3Dtx5WOeG/+71M8v58eVycjf9eqN4yPhtDJCxfsyLPX1209+xetvwLaXQ6je68VOUA3L069EL3auFPY4//RWBIjr3GM6m0RGK/px40+mxP/WD1b1kMhlH/6LzyzDwf7qZT4hOLOLEd/jzMIEFUqNj+nclP/XFDUL3NXMq+Z0fXX/mhsFbdEnyqWFp61sSUA5SHvzaclgjyTWPGeYiK7nQTlD1sHn2lrLRHwlxmxBaryZ0hJBF/GdMoio6B35oh54/jw4HlkITfoQcZ6KwCI8Ug1iuGMKrqjZEedqbQ82iiG9YytBSWfS3zKGhieKB0gTsqDHYHds1J0yw62PTHU0E0RznCa7rDLCrDLBvRPAuhP4xDwzn6e3EvwsWL1g9+TXz7geaWDpPJq7OFiqOYY0URQydkZoSNiG0hmhC41Qf5lCtcSD0P2TyYttv5tPZj1C/Ry+vwcVFhGgiVn67yNFcg0VqSzeIrYsidZ7SFqEpjYjCIDUhokhtNRIezSndj/DQSZ7SiCk9EIPSPDQlk9BaDU25m/SY4ALpoY90TRCkLSNP6A16M3Te0L4j4SFYG2qu6agsOpt4RHRBdB5oSp7QA5UhPCzMoLSuiKI0pih9HP1y9zU8wPo0+vajUZCju/70HHsFK/oMlisCHUYXIHXxuqJS+nn010P8/7+Lh8B2XHsU3b+bTBLAEBUgf0BUBkMY/BAGfJZ5otuzmBbThKy5I8WLmBVMYqLFuEk+fMhdmh7xYOen08tjrEjNVEQx1WCoaK1LrrLUhnxcPXdD27HfwbrHdQCiMNwSYQChQx0rjrwDXgwQVIqYIYMRWykK4obF5IZhoIb8IAX8SDSsELYQTmyxAFdMBlNIl0xhREgOx2N3uYypGfhTTryRmSlaDZ50ulAQbadf2M/LmHgy03GAiVZNSbVTStJ2eExJ99x3niWU2sTIE9BKo9r9QZGONsX2zPUrJx0qKSNUwAiDZcqwGGEIY4RKy+nn8NEPvN+rrICkhEQaCDdpDEpiVlxPHKRpZ5CyChNwRv6CpHQ1NCgpeldatDeWkFU5eg5kxaemS0dHhpk8n/jB2J25KRw/xX7s3J5KR85Iu4OgJ8PrYC53UxQ9MW3g3thTz8lITWnJaZmAmhoDnawQsjB0Yto0PbKltacQtmRb3pi2SE9fQ3fuLCnqRScP43KX6Gg09cc/I5pEp1IS6evDD178/Sv65moFsoSPCBi83SUfrQ7u40+GWnp48pq98uQtOYIccV+98G51p6Elh/fpjdHf26fEB+lDCtm49J+DsVvD5Ant4MENyy5MmOU6ucIfGhasZRO400gUvLi5d2OxPXnchR9ZBRmI6WCNqjBNtv6dyW1b9FBPIsBSUjF40JoO1IMijNhvmcsW8QXLBm880JTSF0Oo/Iboj/U7bFfFhubtFwqhPY/j8+vD6+9Hh1en0kkaA1QKILX3KAKpEf1c27lXc3uxfPSlNy4wNC56V4cq7ZVRxpp8dISxYbZWZATqxdGRHRuuxKp0tDWBEDd6FwMaq14ooepBndCNURC6+bZw5/+5i4U79eab9Nl8tFw0T6AVfcWn2WK6WknrwsfkoREZRukVFABWOfYcl/PFCHN/7h7kKxeSU5FT8BAXV47dWABGJ2Kue2N7eph8MPMcJ/4aJqzywMsiy+AUXYX2wUBlVKNtcm65Eilh2GLVEvPA1lYHKelCf8+8RxiYF0RhBIZZmk8Y63WdIn9sfl8lh34QPvoPfsTC0+1ZQKjtNV98f5Fw7Icbhm8J+ezn0M/zc+uBZB2Q9BO2A1Jbyle6Dzu6CjDWZEKZX9dTqHxQgafAyzS3aG39ae6FXrSKfsuZDSegvLT/iqRNIUSGiLcRLRZurDI56c8CIymRk3WFYwFvjPQ4eTAqE5uUgOXAVcBTk1XgwMo2quJ4atJmrPDgTioSsxGZbYCGLRM3ESFliDdRoI0obRASKmRjZXQn9e8rozu4pnQWENwxAMSQBmMydUV25CnCehyYKuQU3hmoWsFLCw3XIIXhwnUW2MzEMuugmLlm+BgR/HCfatk+gK+DYk9E7bKoDXwE9xuIwj2M9aO0DFks7hmJ+TLAj6f2cumNy1DNz2DN7ugoMW52DYGrME0FNWxdsERGEQALDKbzioHDV06/SDBWaBnJGStsB0lUhibVhpIAUYfqGiaVawstolQ8iRcOFZg36ASHjCyufJXzke2ubjwiyRxKC8gpZhlvl5XuCNfY1p8RLYlr59jLx81mL0mFjCGVjKHMeLilur5HAJ+0s4zhHedBmPZny0CVGvM5VOVN+Yydjzu3gXhZx9WsqwsCak+VoJw//J70hQWrmWbmjkD4tHUUC2FX6b1pfwI86V1EBIo7Xt4b1b+lE4Smvmn/CF1GhAyBdk71LMpo2fJcRwbnqqo2Qfrq6MINvIimcYB2R6Wt4prrBPUpyJFBlKGOsG4ZSNWRqZMcCJFuDM2VsadgRUVY1dstI6QgYOVDO5CXO2GA/WWIVNV2UXfoFTdQv0XvZKHWaF3AyXOuHxMEjVNW/6i8SrbxVfv1JJmnjRTY3KJtLpMKV2PYk4HT2oC11On3CMZtjW49f3p0EOwLbx0dLOIg/+AgeGNgi9S4gTO2mC23aIm4KpmTuRzfBBF6hdESR1jhIZOIzBYSHAqYrtzxc+CF8Y//W8AUrxBgZmi4wwKmD9h2Zy+3P2cnys3b9dGbp95/HzAqd0WnK6UOasDN24gyUuvKaepJSs36JCGRLSbzGVtAZc1V1wZNDVerP3Sp/NClQnTtnFDmjS7GTth3gC69P3TpmBe6VApdaa2lNOhibOt5B+jqMZ5qIl7o0uXXjHtUxcUPXek2rl5ikEjnBa/In5IeX4x+U+8AYL0GuYnGDWDIkB9gzSLF7Br3D/bMm8a/8cydvrixI82AQ3ycuuGOO7GfVw4+5YnnXfjthYVokiRwx88hRLD4mX4Uvx0rbFDgRqCoEYZtUwPDv4hYEqiYsFxOaVsnb+K+kUIH7N+BfkJ9GkAYZBSttiVVGBrqiqg8K3xlI19qzui5AfeFc65NZ2O5WWk6rQr3O/MEszKtcUXpL+pJooVSjQEJ+6S+2kQiRVo6VNCnLVJgmLNzoDSrApYfKC2CiiKBAj2p1nYOjFh2DpRmlb3yA6VFfFAkUGBMR2m7fw4GHzsHCvctS1ugmMTKQmWorDpR14dL/CHHksUW+y1F+lQwp6HAcpf6URtofAqqMrfSKj3wPUKNXEZ/z72WZG1i0XsCQ1Be27UoY+5644OUnBgrb73ADymSuVsmldxq7W9Bg7wuUpr78ZTl34nI6iHGxNpfwDF+VDcemVb9xsreSGxQEY074LZara3U0oDJX7fXUlMoalSrkbIaUsZOndzdA0AxfzJZumKE6l7X0XUERwvumaB6ENVP8YJCShM+idvOdLgxJH1n2QHZRw8mnn1oOrMfUqFd3YmmuZ3BrW4Q1PybCijHqp0bgDv2BXV0gFPw0hcu3P9Sfr0gA6SPKp+NV4X3JeTMDcRF/Zab78eFs8oEefIqKCSyKvJbBKZaKq6nfojVRT6MsYmwp/Z8AkR82R6hunaQMkQorZ8RscWggOnN1wFcBqL68wzgK28CucXynHo3teKOihuKDC3xphT/zYt9KwG50kkanE7Tej1QK0tQ4QP1xhXbywnUI5wnh7Bh26zsoW2c731mtgyYj2pryxRBiXvrGzgpjzME/7vXzyznx5fLyd30643iIeO3kfas7cPQQD1gtN/6eehBtS/zgaOcRE1gwiCpAmJ91W/W+AaVczsdJur7KJ1skauToPl1mmuuDL2QFt3v+K0skDc2W6f+4PZvFZZDcFpZJvyeqrpM2M+Pd89g5jrpIWQuHvPVe2CUHqGswoQQ1WmvfgQeQkZUchIums07115mm+05te9IlWfxry/QtrVv0FEHK6yH/f2FLQcbDt1sv8D6VBVQjhJozddfXrnnDLAwGwy8Ma4I08AQZ9PrN51ihQKfufuNR0Ob1fpZev48ounfljYH9F5uPV1KXXS0YfOe9jr58P7YD9y/XE8UJigYwowhfBuZ1Q3bWaXc3IbwrXu+v2eWw5GerDFTna7zhhWvaTNZbmVjRZaN0XSeeHtTp/b+170r8KGepAlyL+gvwiWVB73U97CDTM2SUlWbGtdC6jaBBGmCUkki8gMD7r5uPfcEdtjczkHhX6LNZi4rddNAl0V8KjBhzq8P91ON4VKnsIEag7xlWS7dKjJCu+l8l3JR641c//a9W+8aXO/UKq3tbGuUuy3I2wbtonXOY47Y8NqxuWuhMNlnR4iXOEEERA57d3+JqGHk53Y84F4ZR5cH9jjcT77z8oYMOBkyXcr9MT6dNcGv3qNIb+Q1DEt5sCpFykd2FPJkzwZjDTSqjq31zFA4E6B2fR+3DB33yje+kKqqIP1jQGVBILQvkYOPoia3icYU9yYu+4IpJJkBDU0XyuptPSd0ULOIjRumuPd74Yypd4IoDHHQNvxHq76uNR/3xjAcENXJnFG52n/QkGqt+WhrStQQP1DWuPkisdVU3DvU8EBsg/0NfwxkIc5ab3Oj1CoSNOppoBnsLxJbndQsgfcHydhU8MiCWBj+bC1jSUciFsE37kTEatw75+yJmSkXXOFcXwpkteGqdyRfKcuDs3h9ml0c4e9PT9/Ob+1v+OTntXJ3XVADZ8/i+GgSuc0fKd620kXZfPiQuzQ9WseTg4M6AWW1qLDmxB2FH6f+yJ5Sy6jvGX2wlXfqfmSju2nejgXxXaK7T+714PTk31vv17fLm3/IL3v5+SNjzGGZ6EmC6LkEX4Zg8fkLO4y4PV+dwQqhhA6mhFUhWSWRC9s+15sKgPblt7BPBjTi+PmfTHZjit1x6v76+8Xlt7t76VaLDrs26emAjNxESwbreUy0ZBKQjlyvCXh1ffj15PDLt6+n0lHRInio1aCjsbmsE0r2u01np106wqz6sjXLr2pPxIg4y4IY2+wMbty8mX6WLqgtHFXbpVXMIqYGaGicd34yESDBfpv28O0RldTuKKS3rd2jGS+sMxz1zlW7zKg75EQxnUyJDXWJB2prBWVVldYHjHNw05l09uA4cB0vPH2JfuVSUjJCIcskI+mSjIwpRGWStKoyspBGkjgw0Ixu3cIB9n2lHiTYe2k4cUf6FtOyzRkDYdbt9uXGQKlqGsLLfqMUGed4LRuGPc83N8DOIMsiTR2Y+NPasx2ynkeZZm/QB89Ke9qkG5otWiXwalYNQ25tpZ+A8cJFX2Qx37jLjnVs4Pcwep17N+qO0VelMtvqXkOUSwxfuF6j9A7Ax710hp+PK1dZJ0KQh627sVCDFTEI6nATecBHqOh8aOnNrqeaLTW+wcDlnaapXi+VN2hm6Q2CbBeRA6eiJZqpyx8qBm5kSLceOFXaq0OaRakqQ92wNv/MPPMtZWhkPjXaagmdCfPO8kt07c3eRPULodZP6BL2nG29C5HKOe4cudwBNfjpcXRpfSEPx4dno0sjYsKl3jAJnaIll4XOYyUDJFxPdhE1K7vihga4XHi1FlZlBkTO0yorvuilzz5QcKRtdEDXKh7Ey6hIW/Yk34OrwuK6WXb9zgqZif1mIS2e2N+KTaOR3CxEeRa9zN/aotcyvxZqeZ+aKvyvP2fPGJqWahDdVONuhUCPD6jaEH4at4ymWYV7eYx07d/FQ2A7rj2SMCMAyzk3xfi5jACzHIFHIdTsyTy6NZZXtyP18+c77+bm69VpHR20JRuqQbbM3uMDTBzbNSfjA1iaGX2ij013NBFDaHoC3yapkm2oxao4o7aXcqM0ZlBaqvrBaAFh5TSSuMGS0yNlXoxIh+VBA8IACVK6XI3NEnQctWJhn9GGzkUtJVm2PPpQkgaUy62VJOzOSQQlgDCYlzDgbbMxWUTbbJ8Ox2N3uTyOm1j4U6mXuwEpxlK+FmOx80jHM8nZrE+RGBO41WDB7DAIUW0o0oVTKTfU/uQGAgmr1ht9ogcNCQQoElRphY38wOw0eMVLdLBHE9DWz4099ZyI/P5c0gIeRGAdNq5bCcWjepjdjqjfOaTNPOZ++0OkkKseM92j6YHgplRE2va3UVVtqGT+5WUTUnQxKSxqUk7lQAE4TqPyBlXXdryhdPgdr/2MqTbodT5Ah52i1F7XDSzaIlDm1o9swUcpNWNZzacDmPClm6ZjW9yBOOt3phUmqkte4llM3eDvhIAURDC2RRhNEoU1i/96Ytx++eyfPf9+vXMGX/53/mEwZwYRZQttRSpApVDSt4lp0VuZKVYK2xjLZGV/eZluW0aw4lJl2O4nGQ7LfVrHpeC4JGHJGgt9v1YPVfPWm6Kz2x/Pz+ptKL98WG1mvZrbi+WjH4qQEpRIYMC2WOQjMPC2y+3zTIbS3rzEUmK3WDZY+C13PDAKHYpXSkeZYWCMtpcuKhx6JahGl37lqkGMCMS6MOdBjEwe9rHDe7MsjP1aF4ReFyWjTTtZGBaM+qmtw7oIBneoRwmaUIp2nMwbHQZ+rCK3l0eK7jHyv9z4iv8D \ No newline at end of file diff --git a/doc/schema/drawio/architecture.pdf b/doc/schema/drawio/architecture.pdf index ddbab2f8..5341b3dd 100644 Binary files a/doc/schema/drawio/architecture.pdf and b/doc/schema/drawio/architecture.pdf differ diff --git a/doc/schema/drawio/factory-BeaconFactory.drawio.png b/doc/schema/drawio/factory-BeaconFactory.drawio.png new file mode 100644 index 00000000..081a661d Binary files /dev/null and b/doc/schema/drawio/factory-BeaconFactory.drawio.png differ diff --git a/doc/schema/drawio/factory-TransparentFactory.drawio.png b/doc/schema/drawio/factory-TransparentFactory.drawio.png new file mode 100644 index 00000000..d128640b Binary files /dev/null and b/doc/schema/drawio/factory-TransparentFactory.drawio.png differ diff --git a/doc/schema/drawio/factory.drawio b/doc/schema/drawio/factory.drawio new file mode 100644 index 00000000..f86f0a66 --- /dev/null +++ b/doc/schema/drawio/factory.drawio @@ -0,0 +1 @@ +3Zldd5owGMc/DZft4b166Uvdes46Xdt17W56IkTgDAgLsWo//RIIb4nW6lTcriT/hJA8/1+eBFSMQbT8hEHi3yIXhoquukvFGCq6rhmWTn+YssqVrq3lgocDlzeqhPvgDXJR5eo8cGHaaEgQCkmQNEUHxTF0SEMDGKNFs9kMhc2nJsCDknDvgFBWfwQu8XNVNwy7qvgMA88vHm1bZl4TgaI1n0rqAxctapJxrRgDjBDJr6LlAIYsekVg8vtGG2rLkWEYk4/c8G1693bz8z4aXoTjkTty58B+vOC9vIJwzmc8Ag5BeKXodki77U8xGzpZ8YDYv+dsvP0ZislFmtnVow00M6GW96t6euWx38HtQ+/hpX/dG4y/vox6g4fx3TMPR9mnjtE8diEbpkZvWfgBgfcJcFjtgmJFNZ9EIa9mT+acaGb2pGwCEBO43BgZrYw3JRWiCBI2Q5XfYHCHOKOlY4ua4wWQfs1sm2uAQ+aVPVc20AvuxA6u6JIrfQgo4lSbYLRcnV8EO9tDqOmnDKHxr4fQsNoOobkxhGcWOstqhk7T2g6dJYXuJkpCGNEJARJkFD5qB02xk7vxk5xZt3gB0iTfNGfBkvl3DHOuhOyqddaYY6wxpxQP7o4tuTOESYjknABjt8cOEbTkhCBNA6cZvwp8lZbgMiBPvIZdPzP90uKl4bLWbLjihfUBh650KhHCTYeJ5tiB27d2ArAHybbNRravZo+1xp1CwzCkRL82h7vOMf6ECQroRKqspwkbR0cwPZ8mv6t+uhE7soWORHryOEgdZQCV096fqavTMaW9SxTlBK+e6oUah6xY3ZaVzohEo1USVWH/1fclUdiN9KvTktiRSGwhr1UUVuCV7LZDof5BCs1zyodleVcKLfFELnZ0ZAq7B6fw/PKa+UGirDaJsroCUeaeRNmmQFT3tEQVAB8OqSOi0epWZglnIVPd13IhG2ni6ezYlsufp+T3KJmCM3zrMYrF0t5bjyZ/VXpv/cQopmLfBalfvtrXgsj0CSAE4jhTdNWgakow+lV+KdX/pySubTC8pSxuHSiLG2JuOPaSlj/MfU88DFwow0jt/QKmMBSWbxh4jDmHWg0xFdhCDRwQ9nhFFLgu66OPYRq8gWnWH6MoYZPKpmn1FWu4y8rn/y/wzpTy+2aduHdW3cY8oV7SI16n6cjfAVM0QbNZCne0kBar/yPy5tXfOsb1Hw==5Zlbc+IgFMc/jY/tBMhFH720e5lp61i3a586bEJNZpOQJbjG/fRLDOYCtlq3Nbb7ZPhDCJzzOxzADhpG2SeGE/+KeiTsQMPLOmjUgRAgC4qfXFkVSs8GhTBngScbVcJt8IdI0ZDqIvBI2mjIKQ15kDRFl8YxcXlDw4zRZbPZIw2bX03wnGjCrYtDXf0eeNwvVIiQXVV8JsHc33zatsyiJsKb1nIqqY89uqxJ6KKDhoxSXjxF2ZCEufU2hineu3yithwZIzHf54XejOIB7vu9xeyGWebXKGB3Z7KX3zhcyBlfYpdTtupAOxTdDn6wfOh8JQ1i/1rk4x080pifpWt39UUDYCbC5YOqXjzN89/h1bQ/fZhO+te34/7k4nr6cNkfTm8m99ImZceQ0UXskXysQLy39ANObhPs5rVLwZbQfB6Fsjr/vIQFmOvPrWdBGCfZk+YBpdEFroRGhOfTNLImcRLU0m3Lutul5tc8bksNS9LmZc+VL8SDdMcLXAM110wZjlM5I2iMGc1WJ2dG1N1tRwCPaUf0IexoOm3b0dLs+CVKQhKJCWEe0FjU3YFXXTbGk5uZvlDs8AVOkyIRPAZZ7r+3cI5jN50DupbunG2LRSm+undszTsjkoRUB5vEXj9PjKLkhjhNA7dpvwp8Q5RIFvCZrMmf73P93JKlUVZrNlrJwnaDE0/LtIq5xTDpgrlkd7rimM0J37V26u6rucfa4p2NxkgoiP7dHO42j8kvjGmwXkk2oaumkq7i9GKa8q16xlY7UjCDKj2FHbSO1gCV0z6cKed4TIFniRKcsNWsXqhxmBer19alEyIRtUqi0QQIwUNJtBQSneOS2NNI/FcGT48ouCdRVptE2Y593m3mPutApmxTYap3XKaAfvbRNzQ6Zye4/TBR69sPYL56hB6w8zjBqEbvIaotdcdig3MDmWYXOlbXhoZzWIQ7qN2sAfQjy7dkzrBHnmMzprEQBx5O/fL8V6M018eYc8LitQINJNSUM/qzvCKC/zvN4IkF7Eg4O03uLJW7vVMUVDpS909vDbB+qpO3FUbfi4JYw7jtWwtTiXiwWVhau7UA+iHGZQTzZ5eAF20gq3gsDzKnvYEsqGrtTKJeEBoHBqfGmroRfevg7L634FSyPGr9ShHo57qPGpx7Z85um8FpKgnPPPRwZyop2FSj/ODgFMXqP7OiefXXI7r4Cw== \ No newline at end of file diff --git a/doc/schema/surya_graph/surya_graph_AuthorizationEngineMock.sol.png b/doc/schema/surya_graph/surya_graph_AuthorizationEngineMock.sol.png new file mode 100644 index 00000000..c2611f76 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_AuthorizationEngineMock.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_AuthorizationModule.sol.png b/doc/schema/surya_graph/surya_graph_AuthorizationModule.sol.png index d175efc5..b3554ad9 100644 Binary files a/doc/schema/surya_graph/surya_graph_AuthorizationModule.sol.png and b/doc/schema/surya_graph/surya_graph_AuthorizationModule.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_CMTATSnapshotProxyTest.sol.png b/doc/schema/surya_graph/surya_graph_CMTATSnapshotProxyTest.sol.png deleted file mode 100644 index d9bff346..00000000 Binary files a/doc/schema/surya_graph/surya_graph_CMTATSnapshotProxyTest.sol.png and /dev/null differ diff --git a/doc/schema/surya_graph/surya_graph_CMTATSnapshotStandaloneTest.sol.png b/doc/schema/surya_graph/surya_graph_CMTATSnapshotStandaloneTest.sol.png deleted file mode 100644 index eaa3217e..00000000 Binary files a/doc/schema/surya_graph/surya_graph_CMTATSnapshotStandaloneTest.sol.png and /dev/null differ diff --git a/doc/schema/surya_graph/surya_graph_CMTAT_BASE.sol.png b/doc/schema/surya_graph/surya_graph_CMTAT_BASE.sol.png index f7f4f747..104a1df4 100644 Binary files a/doc/schema/surya_graph/surya_graph_CMTAT_BASE.sol.png and b/doc/schema/surya_graph/surya_graph_CMTAT_BASE.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_CMTAT_BASE_SnapshotTest.sol.png b/doc/schema/surya_graph/surya_graph_CMTAT_BASE_SnapshotTest.sol.png deleted file mode 100644 index be121afc..00000000 Binary files a/doc/schema/surya_graph/surya_graph_CMTAT_BASE_SnapshotTest.sol.png and /dev/null differ diff --git a/doc/schema/surya_graph/surya_graph_CMTAT_BEACON_FACTORY.sol.png b/doc/schema/surya_graph/surya_graph_CMTAT_BEACON_FACTORY.sol.png new file mode 100644 index 00000000..08c9b54d Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_CMTAT_BEACON_FACTORY.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_CMTAT_TP_FACTORY.sol.png b/doc/schema/surya_graph/surya_graph_CMTAT_TP_FACTORY.sol.png new file mode 100644 index 00000000..4216bf65 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_CMTAT_TP_FACTORY.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_ERC20BaseModule.sol.png b/doc/schema/surya_graph/surya_graph_ERC20BaseModule.sol.png index 4ec728b2..c03f7979 100644 Binary files a/doc/schema/surya_graph/surya_graph_ERC20BaseModule.sol.png and b/doc/schema/surya_graph/surya_graph_ERC20BaseModule.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_ERC20BurnModule.sol.png b/doc/schema/surya_graph/surya_graph_ERC20BurnModule.sol.png index 4cfe3c96..9641610c 100644 Binary files a/doc/schema/surya_graph/surya_graph_ERC20BurnModule.sol.png and b/doc/schema/surya_graph/surya_graph_ERC20BurnModule.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_ERC20SnapshotModuleInternal.sol.png b/doc/schema/surya_graph/surya_graph_ERC20SnapshotModuleInternal.sol.png index 3b068a5d..0ff8bd8b 100644 Binary files a/doc/schema/surya_graph/surya_graph_ERC20SnapshotModuleInternal.sol.png and b/doc/schema/surya_graph/surya_graph_ERC20SnapshotModuleInternal.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_EnforcementModuleInternal.sol.png b/doc/schema/surya_graph/surya_graph_EnforcementModuleInternal.sol.png index d41de2e8..79822629 100644 Binary files a/doc/schema/surya_graph/surya_graph_EnforcementModuleInternal.sol.png and b/doc/schema/surya_graph/surya_graph_EnforcementModuleInternal.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_FactoryErrors.sol.png b/doc/schema/surya_graph/surya_graph_FactoryErrors.sol.png new file mode 100644 index 00000000..e166f8f3 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_FactoryErrors.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_IAuthorizationEngine.sol.png b/doc/schema/surya_graph/surya_graph_IAuthorizationEngine.sol.png new file mode 100644 index 00000000..34d228b6 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_IAuthorizationEngine.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_ICCIPToken.sol.png b/doc/schema/surya_graph/surya_graph_ICCIPToken.sol.png new file mode 100644 index 00000000..9836da7d Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_ICCIPToken.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_ICMTATSnapshot.sol.png b/doc/schema/surya_graph/surya_graph_ICMTATSnapshot.sol.png new file mode 100644 index 00000000..a70ece82 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_ICMTATSnapshot.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_IRuleEngine.sol.png b/doc/schema/surya_graph/surya_graph_IRuleEngine.sol.png index b40d12f4..780e1bfe 100644 Binary files a/doc/schema/surya_graph/surya_graph_IRuleEngine.sol.png and b/doc/schema/surya_graph/surya_graph_IRuleEngine.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_IRuleEngineMock.sol.png b/doc/schema/surya_graph/surya_graph_IRuleEngineMock.sol.png new file mode 100644 index 00000000..52aa3eb0 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_IRuleEngineMock.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_MetaTxModule.sol.png b/doc/schema/surya_graph/surya_graph_MetaTxModule.sol.png index fa08fd81..259ad252 100644 Binary files a/doc/schema/surya_graph/surya_graph_MetaTxModule.sol.png and b/doc/schema/surya_graph/surya_graph_MetaTxModule.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_RuleEngineMock.sol.png b/doc/schema/surya_graph/surya_graph_RuleEngineMock.sol.png index e260ee9c..bbd2e71a 100644 Binary files a/doc/schema/surya_graph/surya_graph_RuleEngineMock.sol.png and b/doc/schema/surya_graph/surya_graph_RuleEngineMock.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_SnapshotModuleBase.sol.png b/doc/schema/surya_graph/surya_graph_SnapshotModuleBase.sol.png new file mode 100644 index 00000000..de827397 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_SnapshotModuleBase.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_ValidationModule.sol.png b/doc/schema/surya_graph/surya_graph_ValidationModule.sol.png index b74af149..44cfd313 100644 Binary files a/doc/schema/surya_graph/surya_graph_ValidationModule.sol.png and b/doc/schema/surya_graph/surya_graph_ValidationModule.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_ValidationModuleInternal.sol.png b/doc/schema/surya_graph/surya_graph_ValidationModuleInternal.sol.png index 39d58b46..986159da 100644 Binary files a/doc/schema/surya_graph/surya_graph_ValidationModuleInternal.sol.png and b/doc/schema/surya_graph/surya_graph_ValidationModuleInternal.sol.png differ diff --git a/doc/schema/surya_graph/surya_graph_draft-IERC1404EnumCode.sol.png b/doc/schema/surya_graph/surya_graph_draft-IERC1404EnumCode.sol.png new file mode 100644 index 00000000..e166f8f3 Binary files /dev/null and b/doc/schema/surya_graph/surya_graph_draft-IERC1404EnumCode.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_AuthorizationEngineMock.sol.png b/doc/schema/surya_inheritance/surya_inheritance_AuthorizationEngineMock.sol.png new file mode 100644 index 00000000..2fae8c26 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_AuthorizationEngineMock.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_AuthorizationModule.sol.png b/doc/schema/surya_inheritance/surya_inheritance_AuthorizationModule.sol.png index 54a4e0f0..5b6c3a93 100644 Binary files a/doc/schema/surya_inheritance/surya_inheritance_AuthorizationModule.sol.png and b/doc/schema/surya_inheritance/surya_inheritance_AuthorizationModule.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_CMTATSnapshotProxyTest.sol.png b/doc/schema/surya_inheritance/surya_inheritance_CMTATSnapshotProxyTest.sol.png deleted file mode 100644 index efe088d7..00000000 Binary files a/doc/schema/surya_inheritance/surya_inheritance_CMTATSnapshotProxyTest.sol.png and /dev/null differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_CMTATSnapshotStandaloneTest.sol.png b/doc/schema/surya_inheritance/surya_inheritance_CMTATSnapshotStandaloneTest.sol.png deleted file mode 100644 index 926fc217..00000000 Binary files a/doc/schema/surya_inheritance/surya_inheritance_CMTATSnapshotStandaloneTest.sol.png and /dev/null differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BASE.sol.png b/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BASE.sol.png index bb3bb630..90314a89 100644 Binary files a/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BASE.sol.png and b/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BASE.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BASE_SnapshotTest.sol.png b/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BASE_SnapshotTest.sol.png deleted file mode 100644 index c363a7cd..00000000 Binary files a/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BASE_SnapshotTest.sol.png and /dev/null differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BEACON_FACTORY.sol.png b/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BEACON_FACTORY.sol.png new file mode 100644 index 00000000..4baba5eb Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_CMTAT_BEACON_FACTORY.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_CMTAT_TP_FACTORY.sol.png b/doc/schema/surya_inheritance/surya_inheritance_CMTAT_TP_FACTORY.sol.png new file mode 100644 index 00000000..8410d514 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_CMTAT_TP_FACTORY.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_ERC20BurnModule.sol.png b/doc/schema/surya_inheritance/surya_inheritance_ERC20BurnModule.sol.png index baec1080..9abd1db3 100644 Binary files a/doc/schema/surya_inheritance/surya_inheritance_ERC20BurnModule.sol.png and b/doc/schema/surya_inheritance/surya_inheritance_ERC20BurnModule.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_ERC20MintModule.sol.png b/doc/schema/surya_inheritance/surya_inheritance_ERC20MintModule.sol.png index ab3b919e..ca0474ee 100644 Binary files a/doc/schema/surya_inheritance/surya_inheritance_ERC20MintModule.sol.png and b/doc/schema/surya_inheritance/surya_inheritance_ERC20MintModule.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_ERC20SnapshotModuleInternal.sol.png b/doc/schema/surya_inheritance/surya_inheritance_ERC20SnapshotModuleInternal.sol.png index 61755814..4d5e7064 100644 Binary files a/doc/schema/surya_inheritance/surya_inheritance_ERC20SnapshotModuleInternal.sol.png and b/doc/schema/surya_inheritance/surya_inheritance_ERC20SnapshotModuleInternal.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_FactoryErrors.sol.png b/doc/schema/surya_inheritance/surya_inheritance_FactoryErrors.sol.png new file mode 100644 index 00000000..a254a8c8 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_FactoryErrors.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_IAuthorizationEngine.sol.png b/doc/schema/surya_inheritance/surya_inheritance_IAuthorizationEngine.sol.png new file mode 100644 index 00000000..b575cd83 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_IAuthorizationEngine.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_ICCIPToken.sol.png b/doc/schema/surya_inheritance/surya_inheritance_ICCIPToken.sol.png new file mode 100644 index 00000000..550597c3 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_ICCIPToken.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_ICMTATSnapshot.sol.png b/doc/schema/surya_inheritance/surya_inheritance_ICMTATSnapshot.sol.png new file mode 100644 index 00000000..9f69e2ef Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_ICMTATSnapshot.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_IRuleEngineMock.sol.png b/doc/schema/surya_inheritance/surya_inheritance_IRuleEngineMock.sol.png new file mode 100644 index 00000000..65591937 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_IRuleEngineMock.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_RuleEngineMock.sol.png b/doc/schema/surya_inheritance/surya_inheritance_RuleEngineMock.sol.png index 70b86b57..59e63ae3 100644 Binary files a/doc/schema/surya_inheritance/surya_inheritance_RuleEngineMock.sol.png and b/doc/schema/surya_inheritance/surya_inheritance_RuleEngineMock.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_SnapshotModuleBase.sol.png b/doc/schema/surya_inheritance/surya_inheritance_SnapshotModuleBase.sol.png new file mode 100644 index 00000000..f200b5c8 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_SnapshotModuleBase.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_draft-IERC1404EnumCode.sol.png b/doc/schema/surya_inheritance/surya_inheritance_draft-IERC1404EnumCode.sol.png new file mode 100644 index 00000000..29957403 Binary files /dev/null and b/doc/schema/surya_inheritance/surya_inheritance_draft-IERC1404EnumCode.sol.png differ diff --git a/doc/schema/surya_inheritance/surya_inheritance_draft-IERC1404Wrapper.sol.png b/doc/schema/surya_inheritance/surya_inheritance_draft-IERC1404Wrapper.sol.png index d0475b5d..351e82d8 100644 Binary files a/doc/schema/surya_inheritance/surya_inheritance_draft-IERC1404Wrapper.sol.png and b/doc/schema/surya_inheritance/surya_inheritance_draft-IERC1404Wrapper.sol.png differ diff --git a/doc/schema/surya_report/surya_report_AuthorizationEngineMock.sol.md b/doc/schema/surya_report/surya_report_AuthorizationEngineMock.sol.md new file mode 100644 index 00000000..ccd94f19 --- /dev/null +++ b/doc/schema/surya_report/surya_report_AuthorizationEngineMock.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/AuthorizationEngineMock.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **AuthorizationEngineMock** | Implementation | IAuthorizationEngine ||| +| └ | | Public ❗️ | 🛑 |NO❗️ | +| └ | authorizeAdminChange | External ❗️ | 🛑 |NO❗️ | +| └ | setRevokeAdminRoleAuthorized | External ❗️ | 🛑 |NO❗️ | +| └ | operateOnGrantRole | External ❗️ | 🛑 |NO❗️ | +| └ | operateOnRevokeRole | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_AuthorizationModule.sol.md b/doc/schema/surya_report/surya_report_AuthorizationModule.sol.md new file mode 100644 index 00000000..adf2e5d7 --- /dev/null +++ b/doc/schema/surya_report/surya_report_AuthorizationModule.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/security/AuthorizationModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **AuthorizationModule** | Implementation | AccessControlUpgradeable ||| +| └ | __AuthorizationModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | setAuthorizationEngine | External ❗️ | 🛑 | onlyRole | +| └ | grantRole | Public ❗️ | 🛑 | onlyRole | +| └ | revokeRole | Public ❗️ | 🛑 | onlyRole | +| └ | hasRole | Public ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_BaseModule.sol.md b/doc/schema/surya_report/surya_report_BaseModule.sol.md new file mode 100644 index 00000000..0d5ddc97 --- /dev/null +++ b/doc/schema/surya_report/surya_report_BaseModule.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/core/BaseModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **BaseModule** | Implementation | AuthorizationModule ||| +| └ | __Base_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | setTokenId | Public ❗️ | 🛑 | onlyRole | +| └ | setTerms | Public ❗️ | 🛑 | onlyRole | +| └ | setInformation | Public ❗️ | 🛑 | onlyRole | +| └ | setFlag | Public ❗️ | 🛑 | onlyRole | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_CMTAT_BASE.sol.md b/doc/schema/surya_report/surya_report_CMTAT_BASE.sol.md new file mode 100644 index 00000000..0caa1c3b --- /dev/null +++ b/doc/schema/surya_report/surya_report_CMTAT_BASE.sol.md @@ -0,0 +1,36 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/CMTAT_BASE.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **CMTAT_BASE** | Implementation | Initializable, ContextUpgradeable, BaseModule, PauseModule, ERC20MintModule, ERC20BurnModule, EnforcementModule, ValidationModule, MetaTxModule, ERC20BaseModule, ERC20SnapshotModule, DebtBaseModule, CreditEventsModule ||| +| └ | initialize | Public ❗️ | 🛑 | initializer | +| └ | __CMTAT_init | Internal 🔒 | 🛑 | onlyInitializing | +| └ | __CMTAT_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | decimals | Public ❗️ | |NO❗️ | +| └ | transferFrom | Public ❗️ | 🛑 |NO❗️ | +| └ | burnAndMint | Public ❗️ | 🛑 |NO❗️ | +| └ | _update | Internal 🔒 | 🛑 | | +| └ | _msgSender | Internal 🔒 | | | +| └ | _contextSuffixLength | Internal 🔒 | | | +| └ | _msgData | Internal 🔒 | | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_CMTAT_BEACON_FACTORY.sol.md b/doc/schema/surya_report/surya_report_CMTAT_BEACON_FACTORY.sol.md new file mode 100644 index 00000000..ab277d58 --- /dev/null +++ b/doc/schema/surya_report/surya_report_CMTAT_BEACON_FACTORY.sol.md @@ -0,0 +1,30 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./deployment/CMTAT_BEACON_FACTORY.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **CMTAT_BEACON_FACTORY** | Implementation | AccessControl ||| +| └ | | Public ❗️ | 🛑 |NO❗️ | +| └ | deployCMTAT | Public ❗️ | 🛑 | onlyRole | +| └ | getAddress | External ❗️ | |NO❗️ | +| └ | implementation | Public ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_CMTAT_PROXY.sol.md b/doc/schema/surya_report/surya_report_CMTAT_PROXY.sol.md new file mode 100644 index 00000000..bfe26d2e --- /dev/null +++ b/doc/schema/surya_report/surya_report_CMTAT_PROXY.sol.md @@ -0,0 +1,27 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./CMTAT_PROXY.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **CMTAT_PROXY** | Implementation | CMTAT_BASE ||| +| └ | | Public ❗️ | 🛑 | MetaTxModule | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_CMTAT_STANDALONE.sol.md b/doc/schema/surya_report/surya_report_CMTAT_STANDALONE.sol.md new file mode 100644 index 00000000..3fdd4424 --- /dev/null +++ b/doc/schema/surya_report/surya_report_CMTAT_STANDALONE.sol.md @@ -0,0 +1,27 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./CMTAT_STANDALONE.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **CMTAT_STANDALONE** | Implementation | CMTAT_BASE ||| +| └ | | Public ❗️ | 🛑 | MetaTxModule | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_CMTAT_TP_FACTORY.sol.md b/doc/schema/surya_report/surya_report_CMTAT_TP_FACTORY.sol.md new file mode 100644 index 00000000..6c44769c --- /dev/null +++ b/doc/schema/surya_report/surya_report_CMTAT_TP_FACTORY.sol.md @@ -0,0 +1,29 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./deployment/CMTAT_TP_FACTORY.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **CMTAT_TP_FACTORY** | Implementation | AccessControl ||| +| └ | | Public ❗️ | 🛑 |NO❗️ | +| └ | deployCMTAT | Public ❗️ | 🛑 | onlyRole | +| └ | getAddress | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_CodeList.sol.md b/doc/schema/surya_report/surya_report_CodeList.sol.md new file mode 100644 index 00000000..5f6c0a2e --- /dev/null +++ b/doc/schema/surya_report/surya_report_CodeList.sol.md @@ -0,0 +1,26 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/RuleEngine/CodeList.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **CodeList** | Implementation | ||| + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_CreditEventsModule.sol.md b/doc/schema/surya_report/surya_report_CreditEventsModule.sol.md new file mode 100644 index 00000000..0bd91c66 --- /dev/null +++ b/doc/schema/surya_report/surya_report_CreditEventsModule.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/extensions/DebtModule/CreditEventsModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **CreditEventsModule** | Implementation | IDebtGlobal, Initializable, ContextUpgradeable, AuthorizationModule ||| +| └ | __CreditEvents_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | setCreditEvents | Public ❗️ | 🛑 | onlyRole | +| └ | setFlagDefault | Public ❗️ | 🛑 | onlyRole | +| └ | setFlagRedeemed | Public ❗️ | 🛑 | onlyRole | +| └ | setRating | Public ❗️ | 🛑 | onlyRole | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_DebtBaseModule.sol.md b/doc/schema/surya_report/surya_report_DebtBaseModule.sol.md new file mode 100644 index 00000000..84444dd4 --- /dev/null +++ b/doc/schema/surya_report/surya_report_DebtBaseModule.sol.md @@ -0,0 +1,40 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/extensions/DebtModule/DebtBaseModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **DebtBaseModule** | Implementation | IDebtGlobal, Initializable, ContextUpgradeable, AuthorizationModule ||| +| └ | __DebtBaseModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | setDebt | Public ❗️ | 🛑 | onlyRole | +| └ | setInterestRate | Public ❗️ | 🛑 | onlyRole | +| └ | setParValue | Public ❗️ | 🛑 | onlyRole | +| └ | setGuarantor | Public ❗️ | 🛑 | onlyRole | +| └ | setBondHolder | Public ❗️ | 🛑 | onlyRole | +| └ | setMaturityDate | Public ❗️ | 🛑 | onlyRole | +| └ | setInterestScheduleFormat | Public ❗️ | 🛑 | onlyRole | +| └ | setInterestPaymentDate | Public ❗️ | 🛑 | onlyRole | +| └ | setDayCountConvention | Public ❗️ | 🛑 | onlyRole | +| └ | setBusinessDayConvention | Public ❗️ | 🛑 | onlyRole | +| └ | setPublicHolidaysCalendar | Public ❗️ | 🛑 | onlyRole | +| └ | setIssuanceDate | Public ❗️ | 🛑 | onlyRole | +| └ | setCouponFrequency | Public ❗️ | 🛑 | onlyRole | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ERC20BaseModule.sol.md b/doc/schema/surya_report/surya_report_ERC20BaseModule.sol.md new file mode 100644 index 00000000..827eca45 --- /dev/null +++ b/doc/schema/surya_report/surya_report_ERC20BaseModule.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/core/ERC20BaseModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ERC20BaseModule** | Implementation | ERC20Upgradeable ||| +| └ | __ERC20BaseModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | decimals | Public ❗️ | |NO❗️ | +| └ | transferBatch | Public ❗️ | 🛑 |NO❗️ | +| └ | transferFrom | Public ❗️ | 🛑 |NO❗️ | +| └ | balanceInfo | Public ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ERC20BurnModule.sol.md b/doc/schema/surya_report/surya_report_ERC20BurnModule.sol.md new file mode 100644 index 00000000..82774e8d --- /dev/null +++ b/doc/schema/surya_report/surya_report_ERC20BurnModule.sol.md @@ -0,0 +1,30 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/core/ERC20BurnModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ERC20BurnModule** | Implementation | ERC20Upgradeable, ICCIPBurnFromERC20, AuthorizationModule ||| +| └ | __ERC20BurnModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | burn | Public ❗️ | 🛑 | onlyRole | +| └ | burnBatch | Public ❗️ | 🛑 | onlyRole | +| └ | burnFrom | Public ❗️ | 🛑 | onlyRole | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ERC20MintModule.sol.md b/doc/schema/surya_report/surya_report_ERC20MintModule.sol.md new file mode 100644 index 00000000..5d2af346 --- /dev/null +++ b/doc/schema/surya_report/surya_report_ERC20MintModule.sol.md @@ -0,0 +1,29 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/core/ERC20MintModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ERC20MintModule** | Implementation | ERC20Upgradeable, ICCIPMintERC20, AuthorizationModule ||| +| └ | __ERC20MintModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | mint | Public ❗️ | 🛑 | onlyRole | +| └ | mintBatch | Public ❗️ | 🛑 | onlyRole | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ERC20SnapshotModule.sol.md b/doc/schema/surya_report/surya_report_ERC20SnapshotModule.sol.md new file mode 100644 index 00000000..c7e9b557 --- /dev/null +++ b/doc/schema/surya_report/surya_report_ERC20SnapshotModule.sol.md @@ -0,0 +1,32 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/extensions/ERC20SnapshotModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ERC20SnapshotModule** | Implementation | ERC20SnapshotModuleInternal, AuthorizationModule ||| +| └ | __ERC20SnasphotModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | scheduleSnapshot | Public ❗️ | 🛑 | onlyRole | +| └ | scheduleSnapshotNotOptimized | Public ❗️ | 🛑 | onlyRole | +| └ | rescheduleSnapshot | Public ❗️ | 🛑 | onlyRole | +| └ | unscheduleLastSnapshot | Public ❗️ | 🛑 | onlyRole | +| └ | unscheduleSnapshotNotOptimized | Public ❗️ | 🛑 | onlyRole | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ERC20SnapshotModuleInternal.sol.md b/doc/schema/surya_report/surya_report_ERC20SnapshotModuleInternal.sol.md new file mode 100644 index 00000000..36538de7 --- /dev/null +++ b/doc/schema/surya_report/surya_report_ERC20SnapshotModuleInternal.sol.md @@ -0,0 +1,35 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/internal/ERC20SnapshotModuleInternal.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ERC20SnapshotModuleInternal** | Implementation | ICMTATSnapshot, SnapshotModuleBase, ERC20Upgradeable ||| +| └ | __ERC20Snapshot_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | snapshotInfo | Public ❗️ | |NO❗️ | +| └ | snapshotInfoBatch | Public ❗️ | |NO❗️ | +| └ | snapshotInfoBatch | Public ❗️ | |NO❗️ | +| └ | snapshotBalanceOf | Public ❗️ | |NO❗️ | +| └ | snapshotTotalSupply | Public ❗️ | |NO❗️ | +| └ | _snapshotUpdate | Internal 🔒 | 🛑 | | +| └ | _updateAccountSnapshot | Private 🔐 | 🛑 | | +| └ | _updateTotalSupplySnapshot | Private 🔐 | 🛑 | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_EnforcementModule.sol.md b/doc/schema/surya_report/surya_report_EnforcementModule.sol.md new file mode 100644 index 00000000..a9f5bcc0 --- /dev/null +++ b/doc/schema/surya_report/surya_report_EnforcementModule.sol.md @@ -0,0 +1,29 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/core/EnforcementModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **EnforcementModule** | Implementation | EnforcementModuleInternal, AuthorizationModule ||| +| └ | __EnforcementModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | freeze | Public ❗️ | 🛑 | onlyRole | +| └ | unfreeze | Public ❗️ | 🛑 | onlyRole | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_EnforcementModuleInternal.sol.md b/doc/schema/surya_report/surya_report_EnforcementModuleInternal.sol.md new file mode 100644 index 00000000..782a5d0e --- /dev/null +++ b/doc/schema/surya_report/surya_report_EnforcementModuleInternal.sol.md @@ -0,0 +1,30 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/internal/EnforcementModuleInternal.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **EnforcementModuleInternal** | Implementation | Initializable, ContextUpgradeable ||| +| └ | __Enforcement_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | frozen | Public ❗️ | |NO❗️ | +| └ | _freeze | Internal 🔒 | 🛑 | | +| └ | _unfreeze | Internal 🔒 | 🛑 | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_Errors.sol.md b/doc/schema/surya_report/surya_report_Errors.sol.md new file mode 100644 index 00000000..63dbca15 --- /dev/null +++ b/doc/schema/surya_report/surya_report_Errors.sol.md @@ -0,0 +1,26 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./libraries/Errors.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **Errors** | Library | ||| + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_FactoryErrors.sol.md b/doc/schema/surya_report/surya_report_FactoryErrors.sol.md new file mode 100644 index 00000000..e0f904e4 --- /dev/null +++ b/doc/schema/surya_report/surya_report_FactoryErrors.sol.md @@ -0,0 +1,26 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./libraries/FactoryErrors.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **FactoryErrors** | Library | ||| + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_IAuthorizationEngine.sol.md b/doc/schema/surya_report/surya_report_IAuthorizationEngine.sol.md new file mode 100644 index 00000000..22912164 --- /dev/null +++ b/doc/schema/surya_report/surya_report_IAuthorizationEngine.sol.md @@ -0,0 +1,28 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/engine/IAuthorizationEngine.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IAuthorizationEngine** | Interface | ||| +| └ | operateOnGrantRole | External ❗️ | 🛑 |NO❗️ | +| └ | operateOnRevokeRole | External ❗️ | 🛑 |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ICCIPToken.sol.md b/doc/schema/surya_report/surya_report_ICCIPToken.sol.md new file mode 100644 index 00000000..be39d8f7 --- /dev/null +++ b/doc/schema/surya_report/surya_report_ICCIPToken.sol.md @@ -0,0 +1,30 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/ICCIPToken.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ICCIPMintERC20** | Interface | ||| +| └ | mint | External ❗️ | 🛑 |NO❗️ | +|||||| +| **ICCIPBurnFromERC20** | Interface | ||| +| └ | burnFrom | External ❗️ | 🛑 |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ICMTATSnapshot.sol.md b/doc/schema/surya_report/surya_report_ICMTATSnapshot.sol.md new file mode 100644 index 00000000..50d8dbbc --- /dev/null +++ b/doc/schema/surya_report/surya_report_ICMTATSnapshot.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/ICMTATSnapshot.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ICMTATSnapshot** | Interface | ||| +| └ | snapshotBalanceOf | External ❗️ | |NO❗️ | +| └ | snapshotTotalSupply | External ❗️ | |NO❗️ | +| └ | snapshotInfo | External ❗️ | |NO❗️ | +| └ | snapshotInfoBatch | External ❗️ | |NO❗️ | +| └ | snapshotInfoBatch | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_IDebtGlobal.sol.md b/doc/schema/surya_report/surya_report_IDebtGlobal.sol.md new file mode 100644 index 00000000..f92e6e13 --- /dev/null +++ b/doc/schema/surya_report/surya_report_IDebtGlobal.sol.md @@ -0,0 +1,26 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/IDebtGlobal.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IDebtGlobal** | Interface | ||| + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_IRule.sol.md b/doc/schema/surya_report/surya_report_IRule.sol.md new file mode 100644 index 00000000..49a286a2 --- /dev/null +++ b/doc/schema/surya_report/surya_report_IRule.sol.md @@ -0,0 +1,27 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/RuleEngine/interfaces/IRule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IRule** | Interface | IERC1404Wrapper ||| +| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_IRuleEngine.sol.md b/doc/schema/surya_report/surya_report_IRuleEngine.sol.md new file mode 100644 index 00000000..bab2d864 --- /dev/null +++ b/doc/schema/surya_report/surya_report_IRuleEngine.sol.md @@ -0,0 +1,27 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/engine/IRuleEngine.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IRuleEngine** | Interface | IERC1404Wrapper ||| +| └ | operateOnTransfer | External ❗️ | 🛑 |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_IRuleEngineMock.sol.md b/doc/schema/surya_report/surya_report_IRuleEngineMock.sol.md new file mode 100644 index 00000000..9a44882e --- /dev/null +++ b/doc/schema/surya_report/surya_report_IRuleEngineMock.sol.md @@ -0,0 +1,30 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/RuleEngine/interfaces/IRuleEngineMock.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IRuleEngineMock** | Interface | IRuleEngine ||| +| └ | setRules | External ❗️ | 🛑 |NO❗️ | +| └ | rulesCount | External ❗️ | |NO❗️ | +| └ | rule | External ❗️ | |NO❗️ | +| └ | rules | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_MetaTxModule.sol.md b/doc/schema/surya_report/surya_report_MetaTxModule.sol.md new file mode 100644 index 00000000..8137ec12 --- /dev/null +++ b/doc/schema/surya_report/surya_report_MetaTxModule.sol.md @@ -0,0 +1,27 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/extensions/MetaTxModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **MetaTxModule** | Implementation | ERC2771ContextUpgradeable ||| +| └ | | Public ❗️ | 🛑 | ERC2771ContextUpgradeable | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_MinimalForwarderMock.sol.md b/doc/schema/surya_report/surya_report_MinimalForwarderMock.sol.md new file mode 100644 index 00000000..d5562d97 --- /dev/null +++ b/doc/schema/surya_report/surya_report_MinimalForwarderMock.sol.md @@ -0,0 +1,27 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/MinimalForwarderMock.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **MinimalForwarderMock** | Implementation | ERC2771ForwarderUpgradeable ||| +| └ | initialize | Public ❗️ | 🛑 | initializer | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_PauseModule.sol.md b/doc/schema/surya_report/surya_report_PauseModule.sol.md new file mode 100644 index 00000000..4902d9b1 --- /dev/null +++ b/doc/schema/surya_report/surya_report_PauseModule.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/core/PauseModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **PauseModule** | Implementation | PausableUpgradeable, AuthorizationModule ||| +| └ | __PauseModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | pause | Public ❗️ | 🛑 | onlyRole | +| └ | unpause | Public ❗️ | 🛑 | onlyRole | +| └ | deactivateContract | Public ❗️ | 🛑 | onlyRole | +| └ | deactivated | Public ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_RuleEngineMock.sol.md b/doc/schema/surya_report/surya_report_RuleEngineMock.sol.md new file mode 100644 index 00000000..ba3e5c22 --- /dev/null +++ b/doc/schema/surya_report/surya_report_RuleEngineMock.sol.md @@ -0,0 +1,35 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/RuleEngine/RuleEngineMock.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleEngineMock** | Implementation | IRuleEngineMock ||| +| └ | | Public ❗️ | 🛑 |NO❗️ | +| └ | setRules | External ❗️ | 🛑 |NO❗️ | +| └ | rulesCount | External ❗️ | |NO❗️ | +| └ | rule | External ❗️ | |NO❗️ | +| └ | rules | External ❗️ | |NO❗️ | +| └ | detectTransferRestriction | Public ❗️ | |NO❗️ | +| └ | validateTransfer | Public ❗️ | |NO❗️ | +| └ | operateOnTransfer | Public ❗️ | |NO❗️ | +| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_RuleMock.sol.md b/doc/schema/surya_report/surya_report_RuleMock.sol.md new file mode 100644 index 00000000..99423e67 --- /dev/null +++ b/doc/schema/surya_report/surya_report_RuleMock.sol.md @@ -0,0 +1,30 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./mocks/RuleEngine/RuleMock.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleMock** | Implementation | IRule, CodeList ||| +| └ | validateTransfer | Public ❗️ | |NO❗️ | +| └ | detectTransferRestriction | Public ❗️ | |NO❗️ | +| └ | canReturnTransferRestrictionCode | Public ❗️ | |NO❗️ | +| └ | messageForTransferRestriction | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_SnapshotModuleBase.sol.md b/doc/schema/surya_report/surya_report_SnapshotModuleBase.sol.md new file mode 100644 index 00000000..fc57e06a --- /dev/null +++ b/doc/schema/surya_report/surya_report_SnapshotModuleBase.sol.md @@ -0,0 +1,40 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/internal/base/SnapshotModuleBase.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **SnapshotModuleBase** | Implementation | Initializable ||| +| └ | __SnapshotModuleBase_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | getAllSnapshots | Public ❗️ | |NO❗️ | +| └ | getNextSnapshots | Public ❗️ | |NO❗️ | +| └ | _scheduleSnapshot | Internal 🔒 | 🛑 | | +| └ | _scheduleSnapshotNotOptimized | Internal 🔒 | 🛑 | | +| └ | _rescheduleSnapshot | Internal 🔒 | 🛑 | | +| └ | _unscheduleLastSnapshot | Internal 🔒 | 🛑 | | +| └ | _unscheduleSnapshotNotOptimized | Internal 🔒 | 🛑 | | +| └ | _valueAt | Internal 🔒 | | | +| └ | _updateSnapshot | Internal 🔒 | 🛑 | | +| └ | _setCurrentSnapshot | Internal 🔒 | 🛑 | | +| └ | _lastSnapshot | Private 🔐 | | | +| └ | _findScheduledSnapshotIndex | Private 🔐 | | | +| └ | _findScheduledMostRecentPastSnapshot | Private 🔐 | | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ValidationModule.sol.md b/doc/schema/surya_report/surya_report_ValidationModule.sol.md new file mode 100644 index 00000000..5947f808 --- /dev/null +++ b/doc/schema/surya_report/surya_report_ValidationModule.sol.md @@ -0,0 +1,33 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/wrapper/controllers/ValidationModule.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ValidationModule** | Implementation | ValidationModuleInternal, PauseModule, EnforcementModule, IERC1404Wrapper ||| +| └ | __ValidationModule_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | setRuleEngine | External ❗️ | 🛑 | onlyRole | +| └ | messageForTransferRestriction | External ❗️ | |NO❗️ | +| └ | detectTransferRestriction | Public ❗️ | |NO❗️ | +| └ | validateTransfer | Public ❗️ | |NO❗️ | +| └ | _validateTransferByModule | Internal 🔒 | | | +| └ | _operateOnTransfer | Internal 🔒 | 🛑 | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_ValidationModuleInternal.sol.md b/doc/schema/surya_report/surya_report_ValidationModuleInternal.sol.md new file mode 100644 index 00000000..b6c1b578 --- /dev/null +++ b/doc/schema/surya_report/surya_report_ValidationModuleInternal.sol.md @@ -0,0 +1,31 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/internal/ValidationModuleInternal.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **ValidationModuleInternal** | Implementation | Initializable, ContextUpgradeable ||| +| └ | __Validation_init_unchained | Internal 🔒 | 🛑 | onlyInitializing | +| └ | _validateTransfer | Internal 🔒 | | | +| └ | _messageForTransferRestriction | Internal 🔒 | | | +| └ | _detectTransferRestriction | Internal 🔒 | | | +| └ | _operateOnTransfer | Internal 🔒 | 🛑 | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_draft-IERC1404.sol.md b/doc/schema/surya_report/surya_report_draft-IERC1404.sol.md new file mode 100644 index 00000000..29162462 --- /dev/null +++ b/doc/schema/surya_report/surya_report_draft-IERC1404.sol.md @@ -0,0 +1,28 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/draft-IERC1404/draft-IERC1404.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IERC1404** | Interface | ||| +| └ | detectTransferRestriction | External ❗️ | |NO❗️ | +| └ | messageForTransferRestriction | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_draft-IERC1404EnumCode.sol.md b/doc/schema/surya_report/surya_report_draft-IERC1404EnumCode.sol.md new file mode 100644 index 00000000..785313c5 --- /dev/null +++ b/doc/schema/surya_report/surya_report_draft-IERC1404EnumCode.sol.md @@ -0,0 +1,26 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IERC1404EnumCode** | Interface | ||| + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/schema/surya_report/surya_report_draft-IERC1404Wrapper.sol.md b/doc/schema/surya_report/surya_report_draft-IERC1404Wrapper.sol.md new file mode 100644 index 00000000..3726508d --- /dev/null +++ b/doc/schema/surya_report/surya_report_draft-IERC1404Wrapper.sol.md @@ -0,0 +1,27 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol | [object Promise] | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IERC1404Wrapper** | Interface | IERC1404, IERC1404EnumCode ||| +| └ | validateTransfer | External ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/script/script_surya_graph.sh b/doc/script/script_surya_graph.sh index a605d84e..9cd270a8 100755 --- a/doc/script/script_surya_graph.sh +++ b/doc/script/script_surya_graph.sh @@ -1,9 +1,9 @@ #/bin/bash cd '../../' DIR=$(pwd) -DIR_OUT=${DIR}/out/surya_graph +DIR_OUT=${DIR}/docOut/surya_graph if ! [ -d "$DIR_OUT" ]; then - mkdir -p ./out/surya_graph + mkdir -p ./docOut/surya_graph fi cd './contracts' DIR=$(pwd) @@ -13,6 +13,6 @@ do filename=${i##*/} ext=${i##*.} if [[ $ext == 'sol' ]]; then - npx surya graph $i | dot -Tpng > ../out/surya_graph/surya_graph_$filename.png; + npx surya graph $i | dot -Tpng > ../docOut/surya_graph/surya_graph_$filename.png; fi done; \ No newline at end of file diff --git a/doc/script/script_surya_inheritance.sh b/doc/script/script_surya_inheritance.sh index 688f9170..083294ed 100755 --- a/doc/script/script_surya_inheritance.sh +++ b/doc/script/script_surya_inheritance.sh @@ -1,9 +1,9 @@ #/bin/bash cd '../../' DIR=$(pwd) -DIR_OUT=${DIR}/out/inheritance +DIR_OUT=${DIR}/docOut/inheritance if ! [ -d "$DIR_OUT" ]; then - mkdir -p ./out/surya_inheritance + mkdir -p ./docOut/surya_inheritance fi cd './contracts' DIR=$(pwd) @@ -12,6 +12,6 @@ do filename=${i##*/} ext=${i##*.} if [[ $ext == 'sol' ]]; then - npx surya inheritance $i | dot -Tpng > ../out/surya_inheritance/surya_inheritance_$filename.png; + npx surya inheritance $i | dot -Tpng > ../docOut/surya_inheritance/surya_inheritance_$filename.png; fi done; \ No newline at end of file diff --git a/doc/script/script_surya_report.sh b/doc/script/script_surya_report.sh index 067aff0c..3b91de5f 100755 --- a/doc/script/script_surya_report.sh +++ b/doc/script/script_surya_report.sh @@ -1,9 +1,9 @@ #/bin/bash cd '../../' DIR=$(pwd) -DIR_OUT=${DIR}/out/surya_report +DIR_OUT=${DIR}/docOut/surya_report if ! [ -d "$DIR_OUT" ]; then - mkdir ./out/surya_report + mkdir ./docOut/surya_report fi cd './contracts' DIR=$(pwd) @@ -12,6 +12,6 @@ do filename=${i##*/} ext=${i##*.} if [[ $ext == 'sol' ]]; then - npx surya mdreport ../out/surya_report/surya_report_$filename.md $i; + npx surya mdreport ../docOut/surya_report/surya_report_$filename.md $i; fi done; \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js index 814391b1..58de15f8 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -7,16 +7,12 @@ require('solidity-docgen') require("hardhat-contract-sizer"); module.exports = { solidity: { - version: '0.8.20', + version: '0.8.22', settings: { optimizer: { enabled: true, runs: 200, - details: { - yul: true - } }, - viaIR: false, evmVersion: 'shanghai' } }, diff --git a/openzeppelin-contracts-upgradeable b/openzeppelin-contracts-upgradeable index 625fb3c2..723f8cab 160000 --- a/openzeppelin-contracts-upgradeable +++ b/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 625fb3c2b2696f1747ba2e72d1e1113066e6c177 +Subproject commit 723f8cab09cdae1aca9ec9cc1cfa040c2d4b06c1 diff --git a/package-lock.json b/package-lock.json index a0c0b9de..77ada409 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "license": "MPL", "dependencies": { - "@openzeppelin/contracts": "^5.0.0", + "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/truffle-upgrades": "^1.17.1", "eth-sig-util": "^3.0.1", "ethereumjs-wallet": "^1.0.2" @@ -29,23 +29,23 @@ "eslint-plugin-n": "^15.7.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.1", - "eth-gas-reporter": "^0.2.25", + "eth-gas-reporter": "^0.2.27", "ethereumjs-util": "^7.1.5", "ethjs-abi": "^0.2.1", "ethlint": "^1.2.5", "hardhat-contract-sizer": "^2.10.0", "hardhat-gas-reporter": "^1.0.9", - "install": "^0.13.0", "keccak256": "^1.0.6", - "npm": "^10.1.0", + "npm": "^10.2.5", "prettier": "^2.8.7", "prettier-plugin-solidity": "^1.1.3", - "sol2uml": "^2.5.4", + "sol2uml": "^2.5.20", "solc": "^0.8.19", "solgraph": "^1.0.2", - "solidity-coverage": "^0.8.2", + "solidity-code-metrics": "^0.0.25", + "solidity-coverage": "^0.8.5", "solidity-docgen": "^0.6.0-beta.35", - "surya": "^0.4.6", + "surya": "^0.4.11", "truffle": "5.9.3", "truffle-contract-size": "^2.0.1", "truffle-flattener": "^1.6.0", @@ -62,9 +62,9 @@ } }, "node_modules/@adraffy/ens-normalize": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", - "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", "dev": true, "peer": true }, @@ -274,12 +274,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.398.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", - "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dev": true, "dependencies": { - "@smithy/types": "^2.2.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -308,14 +308,14 @@ "dev": true }, "node_modules/@babel/cli": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.10.tgz", - "integrity": "sha512-rM9ZMmaII630zGvtMtQ3P4GyHs28CHLYE9apLG7L8TgaSqcfoIGrlLSLsh4Q8kDTdZQQEXZm1M0nQtOvU/2heg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz", + "integrity": "sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "commander": "^4.0.1", - "convert-source-map": "^1.1.0", + "convert-source-map": "^2.0.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.2.0", "make-dir": "^2.1.0", @@ -487,12 +487,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -571,31 +571,31 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -619,12 +619,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.10", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -646,26 +646,26 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", - "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.10" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -683,17 +683,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", - "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -715,9 +715,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -741,9 +741,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -757,22 +757,22 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -791,40 +791,40 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -855,14 +855,14 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -872,13 +872,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -925,67 +925,67 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", - "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.10" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -1065,9 +1065,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.14", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz", - "integrity": "sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1077,9 +1077,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1092,14 +1092,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1108,6 +1108,22 @@ "@babel/core": "^7.13.0" } }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", @@ -1184,9 +1200,9 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1199,9 +1215,9 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1356,9 +1372,9 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1371,14 +1387,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", - "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1389,14 +1405,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1406,9 +1422,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1421,9 +1437,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", - "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1436,12 +1452,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1452,12 +1468,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1469,18 +1485,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1501,13 +1517,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1517,9 +1533,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", - "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1532,12 +1548,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1548,9 +1564,9 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1563,9 +1579,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1579,12 +1595,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1595,9 +1611,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1611,12 +1627,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1626,13 +1643,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1643,9 +1660,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1659,9 +1676,9 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1674,9 +1691,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1690,9 +1707,9 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1705,12 +1722,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1721,12 +1738,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", - "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1738,15 +1755,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1756,12 +1773,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1788,9 +1805,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1803,9 +1820,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1819,9 +1836,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1835,16 +1852,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", - "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1854,13 +1871,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1870,9 +1887,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1886,9 +1903,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", - "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1903,9 +1920,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1918,12 +1935,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1934,13 +1951,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1952,9 +1969,9 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1967,9 +1984,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1983,9 +2000,9 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1998,9 +2015,9 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2013,9 +2030,9 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2029,9 +2046,9 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2044,9 +2061,9 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2059,9 +2076,9 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2074,9 +2091,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2089,12 +2106,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -2105,12 +2122,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -2121,12 +2138,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -2137,25 +2154,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.14", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.14.tgz", - "integrity": "sha512-daodMIoVo+ol/g+//c/AH+szBkFj4STQUikvBijRGL72Ph+w+AMTSh55DUETe8KJlPlDT1k/mp7NBfOuiWmoig==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", + "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2167,59 +2185,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.11", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.11", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.11", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.12", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.11", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2254,9 +2271,9 @@ } }, "node_modules/@babel/register": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.5.tgz", - "integrity": "sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", + "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -2279,9 +2296,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", - "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2290,34 +2307,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", - "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2334,13 +2351,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2439,6 +2456,14 @@ "wrap-ansi": "^2.0.0" } }, + "node_modules/@ensdomains/ens/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ensdomains/ens/node_modules/fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", @@ -2483,11 +2508,6 @@ "graceful-fs": "^4.1.9" } }, - "node_modules/@ensdomains/ens/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" - }, "node_modules/@ensdomains/ens/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -2538,11 +2558,6 @@ "node": ">=0.10.0" } }, - "node_modules/@ensdomains/ens/node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" - }, "node_modules/@ensdomains/ens/node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -2674,18 +2689,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2724,21 +2739,22 @@ } }, "node_modules/@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "dev": true, "dependencies": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.5" } }, "node_modules/@ethereumjs/rlp": { @@ -2753,12 +2769,13 @@ } }, "node_modules/@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "dev": true, "dependencies": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, "node_modules/@ethereumjs/util": { @@ -2774,6 +2791,17 @@ "node": ">=14" } }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -3527,6 +3555,15 @@ "@ethersproject/strings": "^5.7.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@graphql-tools/batch-execute": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz", @@ -3710,12 +3747,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -3737,9 +3774,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@josephg/resolvable": { @@ -3787,9 +3824,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3871,20 +3908,24 @@ "optional": true }, "node_modules/@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "peer": true, "dependencies": { - "@noble/hashes": "1.3.1" + "@noble/hashes": "1.3.2" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "peer": true, "engines": { "node": ">= 16" }, @@ -4483,9 +4524,9 @@ } }, "node_modules/@nomicfoundation/hardhat-ethers": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.4.tgz", - "integrity": "sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", "dev": true, "peer": true, "dependencies": { @@ -4828,17 +4869,17 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.0.tgz", - "integrity": "sha512-bv2sdS6LKqVVMLI5+zqnNrNU/CA+6z6CmwFXm/MzmOPBRSO5reEJN7z0Gbzvs0/bv/MZZXNklubpwy3v2+azsw==" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", + "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" }, "node_modules/@openzeppelin/defender-admin-client": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-admin-client/-/defender-admin-client-1.48.0.tgz", - "integrity": "sha512-MN29JD6jA3PgOxF2tG0aZbMIwOCieYWkK9UbHCq1UzGPrMgGV9NVMUyVdqpv7Ynplwsjp5ZTBDOyttwvTlchHg==", + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-admin-client/-/defender-admin-client-1.54.1.tgz", + "integrity": "sha512-kRpSUdTsnSqntp4FOXIm95t+6VKHc8CUY2Si71VDuxs0q7HSPZkdpRPSntcolwEzWy9L4a8NS/QMwDF5NJ4X1g==", "dev": true, "dependencies": { - "@openzeppelin/defender-base-client": "1.48.0", + "@openzeppelin/defender-base-client": "1.54.1", "axios": "^1.4.0", "ethers": "^5.7.2", "lodash": "^4.17.19", @@ -4894,9 +4935,9 @@ } }, "node_modules/@openzeppelin/defender-base-client": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.48.0.tgz", - "integrity": "sha512-HFO87s010hRrMjyh2xYOCEAkLe21BfIbho7n5/kikA6A1ZgXi7MsEiqnQv1zP4bxMJgxGZ5b3t4tt6fWrakbag==", + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.54.1.tgz", + "integrity": "sha512-DRGz/7KN3ZQwu28YWMOaojrC7jjPkz/uCwkC8/C8B11qwZhA5qIVvyhYHhhFOCl0J84+E3TNdvkPD2q3p2WaJw==", "dev": true, "dependencies": { "amazon-cognito-identity-js": "^6.0.1", @@ -4906,16 +4947,39 @@ "node-fetch": "^2.6.0" } }, + "node_modules/@openzeppelin/defender-sdk-base-client": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-1.7.0.tgz", + "integrity": "sha512-tNT/uaAS37I+EZUVcH6AyM6gfvxiiBQ+tdY8Jk73XKtEdiYd0pJnKyaeeUHIlvKCNS/wyxX6hlPVjeC4hy59Nw==", + "dev": true, + "dependencies": { + "amazon-cognito-identity-js": "^6.3.6", + "async-retry": "^1.3.3" + } + }, + "node_modules/@openzeppelin/defender-sdk-deploy-client": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-1.7.0.tgz", + "integrity": "sha512-eu/1khO5R0IdHio3BXlzUWZdr0Rgodoi49Djqtl3N78G8yN7t4RijfGrJm9rSqjrDFsjM41eWNHYGjc+KKyhKg==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@openzeppelin/defender-sdk-base-client": "^1.7.0", + "axios": "^1.4.0", + "lodash": "^4.17.21" + } + }, "node_modules/@openzeppelin/hardhat-upgrades": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-2.2.1.tgz", - "integrity": "sha512-Amlk2nhNpCfTCEovbqyarwBv4ZWmuiHHIcYfGy+FCSkkuSvQNVEJHoSl83Vgag+QhMtubdoggkYPqayxU46w1Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-2.5.0.tgz", + "integrity": "sha512-pRsqyRbp8LX9sTSMbL7jx4NjqjN/4PlKngmuAyRQIheYTGbRIs3FW3WyLuiCjkDlTETfmOsmzrnZxJmxDmxZIA==", "dev": true, "dependencies": { - "@openzeppelin/defender-admin-client": "^1.48.0", - "@openzeppelin/defender-base-client": "^1.48.0", - "@openzeppelin/platform-deploy-client": "^0.10.0", - "@openzeppelin/upgrades-core": "^1.27.0", + "@openzeppelin/defender-admin-client": "^1.52.0", + "@openzeppelin/defender-base-client": "^1.52.0", + "@openzeppelin/defender-sdk-base-client": "^1.5.0", + "@openzeppelin/defender-sdk-deploy-client": "^1.5.0", + "@openzeppelin/upgrades-core": "^1.31.2", "chalk": "^4.1.0", "debug": "^4.1.1", "ethereumjs-util": "^7.1.5", @@ -4937,20 +5001,6 @@ } } }, - "node_modules/@openzeppelin/platform-deploy-client": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.10.0.tgz", - "integrity": "sha512-jayQPeXqw4LnWIrNhNqgikJSre+n2NRrnEu76niSdVXc/faQkG3PmaHtRPJMFgsYxjjAiAfcMYyV95YBDuLexA==", - "deprecated": "@openzeppelin/platform-deploy-client is deprecated. Please use @openzeppelin/defender-sdk-deploy-client", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "@openzeppelin/defender-base-client": "^1.48.0-rc.1", - "axios": "^1.4.0", - "lodash": "^4.17.19", - "node-fetch": "^2.6.0" - } - }, "node_modules/@openzeppelin/test-helpers": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz", @@ -4970,11 +5020,12 @@ } }, "node_modules/@openzeppelin/truffle-upgrades": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/truffle-upgrades/-/truffle-upgrades-1.20.1.tgz", - "integrity": "sha512-ftllLe5XZAik22wGapoamAJIdMQfNvgpTBC/4DnxGGspRWqreoXkfKuRkxpK+5xclHk6eKmXq3w58cLRXCd/iw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/truffle-upgrades/-/truffle-upgrades-1.21.0.tgz", + "integrity": "sha512-MKl0mSCLio4wNvKvSpXou0SEclbWfgLVJB1S2QXEP9bv55BB7+C+Iytc10Cx4JoKA+5Dup7c9C8g8H43yBD+lg==", + "deprecated": "@openzeppelin/truffle-upgrades is deprecated. Use Hardhat along with @openzeppelin/hardhat-upgrades", "dependencies": { - "@openzeppelin/upgrades-core": "^1.26.2", + "@openzeppelin/upgrades-core": "^1.30.0", "@truffle/contract": "^4.3.26", "chalk": "^4.1.0", "debug": "^4.1.1", @@ -4988,9 +5039,9 @@ } }, "node_modules/@openzeppelin/upgrades-core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.28.0.tgz", - "integrity": "sha512-8RKlyg98Adv+46GxDaR0awL3R8bVCcQ27DcSEwrgWOp6siHh8sZg4a2l+2dhPl1510S6uBfhHSydMH5VX2BV5g==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.32.0.tgz", + "integrity": "sha512-ZjYB5Ks5Haz8yzJDd9VzTtJyqm746+WYFOi8jeVljyGxC4Xm2wuizf/n1lw0CmCw9seNhD1J1tA4fA6ScXYPDg==", "dependencies": { "cbor": "^9.0.0", "chalk": "^4.1.0", @@ -4999,7 +5050,7 @@ "ethereumjs-util": "^7.0.3", "minimist": "^1.2.7", "proper-lockfile": "^4.1.1", - "solidity-ast": "^0.4.26" + "solidity-ast": "^0.4.51" }, "bin": { "openzeppelin-upgrades-core": "dist/cli/cli.js" @@ -5207,9 +5258,9 @@ } }, "node_modules/@scure/base": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", - "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.4.tgz", + "integrity": "sha512-wznebWtt+ejH8el87yuD4i9xLSbYZXf1Pe4DY0o/zq/eg5I0VQVXVbFs6XIM0pNVCJ/uE3t5wI9kh90mdLUxtw==", "funding": { "url": "https://paulmillr.com/funding/" } @@ -5368,9 +5419,9 @@ } }, "node_modules/@smithy/types": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.2.2.tgz", - "integrity": "sha512-4PS0y1VxDnELGHGgBWlDksB2LJK8TG8lcvlWxIsgR+8vROI7Ms8h1P4FQUx+ftAX2QZv5g1CJCdhdRmQKyonyw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.7.0.tgz", + "integrity": "sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw==", "dev": true, "dependencies": { "tslib": "^2.5.0" @@ -5406,13 +5457,16 @@ } }, "node_modules/@truffle/abi-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.2.tgz", - "integrity": "sha512-MefEcxsBlprKIpfW7eh2I5zJqlWM18xk3duL7SW4VhIs6kNEec//hCpEDoE6P0m7GjqY3vk8X4vnf4aLlZkRcA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.3.tgz", + "integrity": "sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==", "dependencies": { "change-case": "3.0.2", "fast-check": "3.1.1", "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/abi-utils/node_modules/bn.js": { @@ -5438,16 +5492,22 @@ } }, "node_modules/@truffle/blockchain-utils": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.8.tgz", - "integrity": "sha512-ZskpYDNHkXD3ota4iU3pZz6kLth87RC+wDn66Rp2Or+DqqJCKdnmS9GDctBi1EcMPDEi0BqpkdrfBuzA9uIkGg==" + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.9.tgz", + "integrity": "sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg==", + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/code-utils": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-3.0.3.tgz", - "integrity": "sha512-VMQMXvt/nXxWvHo5K1t697se1NU7VNh3zmiFw41qaSE1DjFZ2FMsZuW1ZoLhO4NKc14uB8k8pX3NN7XoF3uP4w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-3.0.4.tgz", + "integrity": "sha512-MWK3TMisIFaBpSjK7tt1GoQan7DQDBqT2iSsdQOGD74C7r9NMwsIdnL2EYoB/DPcEJ7B8yP4grlG2fQTrPF96g==", "dependencies": { "cbor": "^5.2.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/code-utils/node_modules/bignumber.js": { @@ -5479,20 +5539,23 @@ } }, "node_modules/@truffle/codec": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.2.tgz", - "integrity": "sha512-n9HX8R5a5+/j6Y0+lqSzIyU1cUxTRYn/xEWp0Qc1b0Vtltad7wvVh+KLGvbm/KQEX3o1RK1xRIUN2E0QlDeQnA==", + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.3.tgz", + "integrity": "sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg==", "dependencies": { - "@truffle/abi-utils": "^1.0.2", - "@truffle/compile-common": "^0.9.7", + "@truffle/abi-utils": "^1.0.3", + "@truffle/compile-common": "^0.9.8", "big.js": "^6.0.3", "bn.js": "^5.1.3", "cbor": "^5.2.0", "debug": "^4.3.1", "lodash": "^4.17.21", - "semver": "7.5.2", + "semver": "^7.5.4", "utf8": "^3.0.0", "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/codec/node_modules/bignumber.js": { @@ -5540,9 +5603,9 @@ } }, "node_modules/@truffle/codec/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5576,40 +5639,52 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@truffle/compile-common": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.7.tgz", - "integrity": "sha512-TXuVLc5yJ/A0bSWw5OWIdXmcyaPpj3TJQ60ki7w9cIuW65Bazw7P4FRPaVNjR9YGe1FLYJ36GSdd9V3egPbzCg==", + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.8.tgz", + "integrity": "sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ==", "dependencies": { - "@truffle/error": "^0.2.1", + "@truffle/error": "^0.2.2", "colors": "1.4.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/compile-common/node_modules/@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/config": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@truffle/config/-/config-1.3.60.tgz", - "integrity": "sha512-ccpdafmky4sC9th0KgJiQsDMPqsgKLC0vgaCebBHTbOvkWHjKB5G7NDXYBd6ex3GGU3Jvs3j4sjvI2TTO+fsdw==", + "version": "1.3.61", + "resolved": "https://registry.npmjs.org/@truffle/config/-/config-1.3.61.tgz", + "integrity": "sha512-L4uyG47V+k0NrSoVJ9D+hp2jcMstihW1QlNuXiu5g3mU24BjrozlJT34DFkczh/TtRceLjdrQJKA8WJCMICutw==", "optional": true, "dependencies": { - "@truffle/error": "^0.2.1", - "@truffle/events": "^0.1.24", - "@truffle/provider": "^0.3.12", + "@truffle/error": "^0.2.2", + "@truffle/events": "^0.1.25", + "@truffle/provider": "^0.3.13", "conf": "^10.1.2", "debug": "^4.3.1", "find-up": "^2.1.0", "lodash": "^4.17.21", "original-require": "^1.0.1" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/config/node_modules/@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==", - "optional": true + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", + "optional": true, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/config/node_modules/find-up": { "version": "2.1.0", @@ -5679,16 +5754,16 @@ } }, "node_modules/@truffle/contract": { - "version": "4.6.29", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.29.tgz", - "integrity": "sha512-gbgmC2YdcSD4QGvx3GWGIVhyQxEPkChcC2a3D5d9aj2XfV3f6+FQw5PuL1wreA3I222ggZQqzbvMvhpp8gWs4Q==", + "version": "4.6.31", + "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.31.tgz", + "integrity": "sha512-s+oHDpXASnZosiCdzu+X1Tx5mUJUs1L1CYXIcgRmzMghzqJkaUFmR6NpNo7nJYliYbO+O9/aW8oCKqQ7rCHfmQ==", "dependencies": { "@ensdomains/ensjs": "^2.1.0", - "@truffle/blockchain-utils": "^0.1.8", - "@truffle/contract-schema": "^3.4.15", - "@truffle/debug-utils": "^6.0.56", - "@truffle/error": "^0.2.1", - "@truffle/interface-adapter": "^0.5.36", + "@truffle/blockchain-utils": "^0.1.9", + "@truffle/contract-schema": "^3.4.16", + "@truffle/debug-utils": "^6.0.57", + "@truffle/error": "^0.2.2", + "@truffle/interface-adapter": "^0.5.37", "bignumber.js": "^7.2.1", "debug": "^4.3.1", "ethers": "^4.0.32", @@ -5697,21 +5772,48 @@ "web3-core-promievent": "1.10.0", "web3-eth-abi": "1.10.0", "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/contract-schema": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.15.tgz", - "integrity": "sha512-m13e1VlXEdxiXiqv/SmPlqbdtcuhjwIGTICm+JCEO8nt0NYBbdMC2paNkpUvGz9lK139JxIupMHctEV4vgkldw==", + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.16.tgz", + "integrity": "sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==", "dependencies": { "ajv": "^6.10.0", "debug": "^4.3.1" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@truffle/contract/node_modules/@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "node_modules/@truffle/contract/node_modules/@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" } }, "node_modules/@truffle/contract/node_modules/@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/contract/node_modules/@types/node": { "version": "12.20.55", @@ -5828,6 +5930,18 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/contract/node_modules/web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "dependencies": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/contract/node_modules/web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -5843,6 +5957,17 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/contract/node_modules/web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/contract/node_modules/web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -5938,9 +6063,13 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/@truffle/contract/node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -5981,6 +6110,23 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/contract/node_modules/web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@truffle/contract/node_modules/web3-eth-iban/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, "node_modules/@truffle/contract/node_modules/web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -6087,26 +6233,29 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/@truffle/dashboard-message-bus-client": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.11.tgz", - "integrity": "sha512-ABoKtaogh5KjOw0UM5/6wYuhg4T5cMPVSSNF1rv4j3s2XGzExx3vUObvXqNO6I8gZ8xuvzClw4RmcEk8JkM8yA==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.12.tgz", + "integrity": "sha512-pI9G0La9tTstb2J2wxUZIMx6H+ZF0XBlsGN3HBkffr4edT0oT12WMCK9GxmKE22Q5VnpXl7wGjatRSEx0C9qDQ==", "optional": true, "dependencies": { - "@truffle/dashboard-message-bus-common": "^0.1.6", - "@truffle/promise-tracker": "^0.1.6", - "axios": "1.2.4", + "@truffle/dashboard-message-bus-common": "^0.1.7", + "@truffle/promise-tracker": "^0.1.7", + "axios": "1.5.0", "debug": "^4.3.1", "delay": "^5.0.0", "isomorphic-ws": "^4.0.1", "node-abort-controller": "^3.0.1", "tiny-typed-emitter": "^2.1.0", "ws": "^7.2.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/dashboard-message-bus-client/node_modules/axios": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.4.tgz", - "integrity": "sha512-lIQuCfBJvZB/Bv7+RWUqEJqNShGOVpk9v7P0ZWx5Ip0qY6u7JBAU6dzQPMLasU9vHL2uD8av/1FDJXj7n6c39w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", "optional": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -6136,22 +6285,25 @@ } }, "node_modules/@truffle/dashboard-message-bus-common": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.6.tgz", - "integrity": "sha512-93HNXILKeKgmW1YaWPdsQ55MJ0MaLzOA8kRXPnM5jF2H3KRlRxOeEg77R4YWtGH+cVZP4VYGXdpvUap/lOAnvw==", - "optional": true + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.7.tgz", + "integrity": "sha512-jN7q8LBmwQRldSzT/YJE33mnDLrp3EFFDuZyLwtQGInlfcRTXcr5yPY42jxr3Ln19dQe2Chx3I6dWtDByeKLIQ==", + "optional": true, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/db": { - "version": "2.0.34", - "resolved": "https://registry.npmjs.org/@truffle/db/-/db-2.0.34.tgz", - "integrity": "sha512-EP8Vnfwimt0G3hMcxPAtvsXrLaWPVUZLhwKWziyZdr/JJGSBG3J+z1iQ7qlZLJAxnBm2cJge+1/s2AdHWihAJA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@truffle/db/-/db-2.0.36.tgz", + "integrity": "sha512-PpUjOXZgf9Gy8RlP8bJhl5pjJRkghZUcCiGOsS0YbCCI//PGDDoKmS+3QUjXWhiMwTeld3gfUV2ip4p2hMbyVA==", "optional": true, "dependencies": { "@graphql-tools/delegate": "^8.4.3", "@graphql-tools/schema": "^8.3.1", - "@truffle/abi-utils": "^1.0.2", - "@truffle/code-utils": "^3.0.3", - "@truffle/config": "^1.3.60", + "@truffle/abi-utils": "^1.0.3", + "@truffle/code-utils": "^3.0.4", + "@truffle/config": "^1.3.61", "abstract-leveldown": "^7.2.0", "apollo-server": "^3.11.0", "debug": "^4.3.1", @@ -6166,14 +6318,20 @@ "pouchdb-debug": "^7.1.1", "pouchdb-find": "^7.0.0", "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/db-loader": { - "version": "0.2.34", - "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.2.34.tgz", - "integrity": "sha512-bZqKL9s4eKd5Hbm85aPljOYiVW/tuQflDKYBycKHJYRzrNsf+9XYlUi8jUs3BBEtcEka+oZcHosBWpO1lfOlWw==", + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.2.36.tgz", + "integrity": "sha512-Cm8uVc2eoihquMOSZm8UOuGGUvBo+/GHkxRoPAZ5pftOpSlRAug0okVOp6ETj1BujgLJ02izU/qdrwSGWwGR9A==", + "engines": { + "node": "^16.20 || ^18.16 || >=20" + }, "optionalDependencies": { - "@truffle/db": "^2.0.34" + "@truffle/db": "^2.0.36" } }, "node_modules/@truffle/db/node_modules/bn.js": { @@ -6210,9 +6368,9 @@ } }, "node_modules/@truffle/db/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "optional": true, "engines": { "node": ">= 10.0.0" @@ -6237,16 +6395,19 @@ } }, "node_modules/@truffle/debug-utils": { - "version": "6.0.56", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.56.tgz", - "integrity": "sha512-tCB0nKZirWlQp+0JqqaBxZk7CIwDBIHl8Q9CyGJZA4pdAwKHHMI3FoPAXzubP7X0YuICeQsAmpOAXzOHGYGkjg==", + "version": "6.0.57", + "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.57.tgz", + "integrity": "sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA==", "dependencies": { - "@truffle/codec": "^0.17.2", + "@truffle/codec": "^0.17.3", "@trufflesuite/chromafi": "^3.0.0", "bn.js": "^5.1.3", "chalk": "^2.4.2", "debug": "^4.3.1", "highlightjs-solidity": "^2.0.6" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/debug-utils/node_modules/ansi-styles": { @@ -6340,6 +6501,24 @@ "web3-eth-abi": "1.10.0" } }, + "node_modules/@truffle/debugger/node_modules/@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "node_modules/@truffle/debugger/node_modules/@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, "node_modules/@truffle/debugger/node_modules/@truffle/codec": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.15.3.tgz", @@ -6436,9 +6615,13 @@ } }, "node_modules/@truffle/debugger/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -6492,6 +6675,18 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/debugger/node_modules/web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "dependencies": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/debugger/node_modules/web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -6507,6 +6702,17 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/debugger/node_modules/web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/debugger/node_modules/web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -6624,6 +6830,18 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/debugger/node_modules/web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/debugger/node_modules/web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -6736,16 +6954,19 @@ "dev": true }, "node_modules/@truffle/events": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/@truffle/events/-/events-0.1.24.tgz", - "integrity": "sha512-rS+jKDjmdM0g+14H/H8MzhohaTKsSS6plNNzO95MIcUs0Ytinu1DXfSkUovDpgv5h2NcRoU0BMTKCR21Y3JiNw==", + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@truffle/events/-/events-0.1.25.tgz", + "integrity": "sha512-5elJxNXPVuXDMOoIcCVox0sz95ovRhRbte/H9ht18vyOvtualb4bTjwYyRoWw6Y7j0pom0tPI3OLZWqCdKQNdA==", "optional": true, "dependencies": { - "@truffle/dashboard-message-bus-client": "^0.1.11", - "@truffle/spinners": "^0.2.4", + "@truffle/dashboard-message-bus-client": "^0.1.12", + "@truffle/spinners": "^0.2.5", "debug": "^4.3.1", "emittery": "^0.4.1", "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/events/node_modules/bn.js": { @@ -6773,13 +6994,34 @@ } }, "node_modules/@truffle/interface-adapter": { - "version": "0.5.36", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.36.tgz", - "integrity": "sha512-e6ECu9YDJuQjjxphdtJatHGgjlGsX/a3rQwqG2kBrK4cynGJdlejoo2iv/7Dj97wgIMIr1qH3L2WDrfTNF+K1g==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz", + "integrity": "sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw==", "dependencies": { "bn.js": "^5.1.3", "ethers": "^4.0.32", "web3": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@truffle/interface-adapter/node_modules/@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "node_modules/@truffle/interface-adapter/node_modules/@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" } }, "node_modules/@truffle/interface-adapter/node_modules/@types/node": { @@ -6920,6 +7162,18 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/interface-adapter/node_modules/web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "dependencies": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/interface-adapter/node_modules/web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -6935,6 +7189,17 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/interface-adapter/node_modules/web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/interface-adapter/node_modules/web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -7022,9 +7287,13 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -7065,6 +7334,18 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/interface-adapter/node_modules/web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -7166,28 +7447,57 @@ } }, "node_modules/@truffle/promise-tracker": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@truffle/promise-tracker/-/promise-tracker-0.1.6.tgz", - "integrity": "sha512-oUZ4Mc6Yt/qTvFZ/yD4nnUIN8pXhrBN0h4/SZ4e8W1TcHNvQkV6gUkkYkn8fZRvFwTMYjvWot+eAHHNRsSl/eA==", - "optional": true + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@truffle/promise-tracker/-/promise-tracker-0.1.7.tgz", + "integrity": "sha512-NiPXNJvdei8MRZRUjEZoL0Y7TPDR1TaeCfGUgB3md6Q7TBiqSKo2p5OT36JO106B2j57SLmXOiDn8fLb+u2sjA==", + "optional": true, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/provider": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.3.12.tgz", - "integrity": "sha512-R7zS1eyY8H37ExkMxmMqa6bFN4UYLiYSCc+4g/8IjEU2lZXhKWUXA2gWzuMPT+XWfAu+IrC1PqLIHQgYe05EVA==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.3.13.tgz", + "integrity": "sha512-W9yZO0ZUwA0LhFvf7+NNNXVSCOd4x5pTbFiXUVURjyqp7f4YooLAqnlLPSpV+6qwIwThc+86CeLlOiFslYdDIA==", "optional": true, "dependencies": { - "@truffle/error": "^0.2.1", - "@truffle/interface-adapter": "^0.5.36", + "@truffle/error": "^0.2.2", + "@truffle/interface-adapter": "^0.5.37", "debug": "^4.3.1", "web3": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@truffle/provider/node_modules/@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "optional": true, + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "node_modules/@truffle/provider/node_modules/@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "optional": true, + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" } }, "node_modules/@truffle/provider/node_modules/@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==", - "optional": true + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", + "optional": true, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/provider/node_modules/@types/node": { "version": "12.20.55", @@ -7216,9 +7526,13 @@ } }, "node_modules/@truffle/provider/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "optional": true, "bin": { "uuid": "dist/bin/uuid" @@ -7276,6 +7590,19 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/provider/node_modules/web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "optional": true, + "dependencies": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/provider/node_modules/web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -7292,6 +7619,18 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/provider/node_modules/web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "optional": true, + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@truffle/provider/node_modules/web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -7416,6 +7755,25 @@ "node": ">=8.0.0" } }, + "node_modules/@truffle/provider/node_modules/web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "optional": true, + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@truffle/provider/node_modules/web3-eth-iban/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true + }, "node_modules/@truffle/provider/node_modules/web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -7530,16 +7888,19 @@ "optional": true }, "node_modules/@truffle/source-map-utils": { - "version": "1.3.118", - "resolved": "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.118.tgz", - "integrity": "sha512-SGOW6moch7MqsjSoUf7e/y6xuCZi5M6kEtSG1aaZQJrxrj/ZuooYpShXxISyiOAB89QZ5txCRVsN2EnNYgjjkA==", + "version": "1.3.119", + "resolved": "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.119.tgz", + "integrity": "sha512-TFYi3XvanY8WZBOfBwDHQe9HfZUXJ2ejnmFNjsq1//sbM4fUNWjeNshGqkWGxfKPh3OAzXgD4iTnPG3YeXM8YQ==", "dependencies": { - "@truffle/code-utils": "^3.0.3", - "@truffle/codec": "^0.17.2", + "@truffle/code-utils": "^3.0.4", + "@truffle/codec": "^0.17.3", "debug": "^4.3.1", "json-pointer": "^0.6.1", "node-interval-tree": "^1.3.3", "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/source-map-utils/node_modules/bn.js": { @@ -7565,12 +7926,15 @@ } }, "node_modules/@truffle/spinners": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/spinners/-/spinners-0.2.4.tgz", - "integrity": "sha512-8GsIX9GzO6wBDGoNF4yAmQEe95TiIuAJq9p+2szCKGArYbAD3kbn+mG3TMS3Gr/zAS5p7fTJxnCm60E2HghsUQ==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@truffle/spinners/-/spinners-0.2.5.tgz", + "integrity": "sha512-emYyLEuoY62MQV/RNjyVIuTPEjMyIA0WiYMG2N3yfh8OSjD/TC0HRc2oyDWtVkNNox/5D2tH2m5fFB8HOt80FQ==", "optional": true, "dependencies": { "@trufflesuite/spinnies": "^0.1.1" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@trufflesuite/chromafi": { @@ -7685,9 +8049,9 @@ } }, "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", "optional": true, "dependencies": { "@types/node": "*" @@ -7704,17 +8068,17 @@ } }, "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "optional": true, "dependencies": { "@types/connect": "*", @@ -7733,9 +8097,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", "dev": true }, "node_modules/@types/concat-stream": { @@ -7748,9 +8112,9 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "optional": true, "dependencies": { "@types/node": "*" @@ -7763,9 +8127,9 @@ "optional": true }, "node_modules/@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "dependencies": { "@types/ms": "*" @@ -7784,9 +8148,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.36", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", - "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "optional": true, "dependencies": { "@types/node": "*", @@ -7815,14 +8179,14 @@ } }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "optional": true }, "node_modules/@types/json5": { @@ -7853,9 +8217,9 @@ "peer": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "optional": true }, "node_modules/@types/minimatch": { @@ -7865,34 +8229,37 @@ "dev": true }, "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "dev": true }, "node_modules/@types/node": { - "version": "20.5.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", "devOptional": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "optional": true }, "node_modules/@types/readable-stream": { @@ -7914,25 +8281,25 @@ "peer": true }, "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "optional": true, "dependencies": { "@types/mime": "^1", @@ -7940,9 +8307,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "optional": true, "dependencies": { "@types/http-errors": "*", @@ -7951,15 +8318,21 @@ } }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", @@ -8090,9 +8463,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -8224,9 +8597,9 @@ } }, "node_modules/amazon-cognito-identity-js": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.5.tgz", - "integrity": "sha512-bRAiw6uQuttufRD0TFcrWvA5hxAgPIwNzM0crmWniPdkmCxRoa68yxRaViZUbwAcGu9YPLCLqM87b1060BRddw==", + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.7.tgz", + "integrity": "sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ==", "dev": true, "dependencies": { "@aws-crypto/sha256-js": "1.2.2", @@ -8379,15 +8752,14 @@ "optional": true }, "node_modules/apollo-server": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.12.1.tgz", - "integrity": "sha512-wgxx+J8KPTkhepi4qI9qY1xNoYzJfmvRKVUdFmFCZ3lyPO2j/+oOnAnyEVruAIQU5gquK10B0jdwVyvese9J/g==", - "deprecated": "The `apollo-server` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.13.0.tgz", + "integrity": "sha512-hgT/MswNB5G1r+oBhggVX4Fjw53CFLqG15yB5sN+OrYkCVWF5YwPbJWHfSWa7699JMEXJGaoVfFzcvLZK0UlDg==", "optional": true, "dependencies": { "@types/express": "4.17.14", - "apollo-server-core": "^3.12.1", - "apollo-server-express": "^3.12.1", + "apollo-server-core": "^3.13.0", + "apollo-server-express": "^3.13.0", "express": "^4.17.1" }, "peerDependencies": { @@ -8395,10 +8767,9 @@ } }, "node_modules/apollo-server-core": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz", - "integrity": "sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw==", - "deprecated": "The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.13.0.tgz", + "integrity": "sha512-v/g6DR6KuHn9DYSdtQijz8dLOkP78I5JSVJzPkARhDbhpH74QNwrQ2PP2URAPPEDJ2EeZNQDX8PvbYkAKqg+kg==", "optional": true, "dependencies": { "@apollo/utils.keyvaluecache": "^1.0.1", @@ -8445,9 +8816,13 @@ } }, "node_modules/apollo-server-core/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "optional": true, "bin": { "uuid": "dist/bin/uuid" @@ -8486,10 +8861,9 @@ } }, "node_modules/apollo-server-express": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.12.1.tgz", - "integrity": "sha512-5A9efrhEXqDx08BnORWf0zPYCABENqur47VZZW8osQpSSnMINqzJiV5RMrzz8wIznecRRhEcz+BqLdiexqZdgg==", - "deprecated": "The `apollo-server-express` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.13.0.tgz", + "integrity": "sha512-iSxICNbDUyebOuM8EKb3xOrpIwOQgKxGbR2diSr4HP3IW8T3njKFOoMce50vr+moOCe1ev8BnLcw9SNbuUtf7g==", "optional": true, "dependencies": { "@types/accepts": "^1.3.5", @@ -8498,7 +8872,7 @@ "@types/express": "4.17.14", "@types/express-serve-static-core": "4.17.31", "accepts": "^1.3.5", - "apollo-server-core": "^3.12.1", + "apollo-server-core": "^3.13.0", "apollo-server-types": "^3.8.0", "body-parser": "^1.19.0", "cors": "^2.8.5", @@ -8512,6 +8886,16 @@ "graphql": "^15.3.0 || ^16.0.0" } }, + "node_modules/apollo-server-express/node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "optional": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, "node_modules/apollo-server-express/node_modules/@types/express-serve-static-core": { "version": "4.17.31", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", @@ -8709,14 +9093,14 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "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" }, "engines": { @@ -8727,34 +9111,15 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", - "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -8764,13 +9129,14 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "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" @@ -8914,9 +9280,9 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -8938,13 +9304,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -8961,25 +9327,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.4.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -9296,9 +9662,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -9315,10 +9681,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -9382,9 +9748,9 @@ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -9435,18 +9801,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -9524,12 +9878,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "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" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9562,9 +9917,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001525", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz", - "integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==", + "version": "1.0.30001568", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", + "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", "dev": true, "funding": [ { @@ -9617,18 +9972,18 @@ } }, "node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "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" }, "engines": { "node": ">=4" @@ -9694,10 +10049,13 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -9891,51 +10249,17 @@ "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/class-utils/node_modules/isobject": { @@ -10041,49 +10365,53 @@ } }, "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" } }, "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/clone-buffer": { @@ -10219,10 +10547,13 @@ "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==" }, "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -10401,9 +10732,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "node_modules/convert-svg-core": { @@ -10537,12 +10868,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", "dev": true, "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -10781,11 +11112,14 @@ } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decode-uri-component": { @@ -10921,11 +11255,25 @@ "node": ">=6" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -11186,9 +11534,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.508", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz", - "integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==", + "version": "1.4.610", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz", + "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==", "dev": true }, "node_modules/elliptic": { @@ -11215,10 +11563,9 @@ } }, "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "1.0.2", @@ -11415,25 +11762,25 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dependencies": { "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", + "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.1", + "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", @@ -11441,23 +11788,23 @@ "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.5.0", - "safe-array-concat": "^1.0.0", + "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.10" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -11466,31 +11813,25 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -11679,18 +12020,19 @@ } }, "node_modules/eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -11851,26 +12193,26 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "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-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -12315,24 +12657,22 @@ "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" }, "node_modules/eth-gas-reporter": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", - "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", "dev": true, "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" }, @@ -12345,64 +12685,54 @@ } } }, - "node_modules/eth-gas-reporter/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, "node_modules/eth-gas-reporter/node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "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" - } - }, - "node_modules/eth-gas-reporter/node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, - "node_modules/eth-gas-reporter/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true - }, "node_modules/eth-lib": { "version": "0.1.29", "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", @@ -12652,9 +12982,9 @@ } }, "node_modules/ethers": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.1.tgz", - "integrity": "sha512-qX5kxIFMfg1i+epfgb0xF4WM7IqapIIu50pOJ17aebkxxa4BacW5jFrQRmCJpDEg2ZK2oNtR5QjrQ1WDBF29dA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.9.0.tgz", + "integrity": "sha512-pmfNyQzc2mseLe91FnT2vmNaTt8dDzhxZ/xItAV7uGsF4dI4ek2ufMu3rAkgQETL/TIs0GS5A+U05g9QyWnv3Q==", "dev": true, "funding": [ { @@ -12668,9 +12998,9 @@ ], "peer": true, "dependencies": { - "@adraffy/ens-normalize": "1.9.2", - "@noble/hashes": "1.1.2", - "@noble/secp256k1": "1.7.1", + "@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", @@ -12681,17 +13011,17 @@ } }, "node_modules/ethers/node_modules/@noble/hashes": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", - "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "peer": true + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/ethers/node_modules/@types/node": { "version": "18.15.13", @@ -12891,6 +13221,15 @@ "node": ">=4" } }, + "node_modules/execa/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/execa/node_modules/lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -13196,9 +13535,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -13470,41 +13809,37 @@ } }, "node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "devOptional": true, "funding": [ { @@ -13676,9 +14011,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -14280,23 +14618,23 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "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" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14606,9 +14944,9 @@ } }, "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -14783,9 +15121,9 @@ } }, "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", "dev": true, "engines": { "node": ">=4.x" @@ -14843,9 +15181,9 @@ } }, "node_modules/hardhat": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.17.2.tgz", - "integrity": "sha512-oUv40jBeHw0dKpbyQ+iH9cmNMziweLoTW3MnkNxJ2Gc0KGLrQR/1n4vV4xY60zn2LdmRgnwPqy3CgtY0mfwIIA==", + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.2.tgz", + "integrity": "sha512-CRU3+0Cc8Qh9UpxKd8cLADDPes7ZDtKj4dTK+ERtLBomEzhRPLWklJn4VKOwjre9/k8GNd/e9DYxpfuzcxbXPQ==", "dev": true, "peer": true, "dependencies": { @@ -14952,12 +15290,6 @@ "@colors/colors": "1.5.0" } }, - "node_modules/hardhat-contract-sizer/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/hardhat-contract-sizer/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -15007,26 +15339,6 @@ "hardhat": "^2.0.2" } }, - "node_modules/hardhat/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/hardhat/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/hardhat/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -15054,13 +15366,6 @@ "node": ">= 8" } }, - "node_modules/hardhat/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "peer": true - }, "node_modules/hardhat/node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -15071,16 +15376,6 @@ "node": ">=8" } }, - "node_modules/hardhat/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/hardhat/node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -15094,19 +15389,6 @@ "node": ">=8" } }, - "node_modules/hardhat/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/hardhat/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -15122,16 +15404,6 @@ "node": ">=4" } }, - "node_modules/hardhat/node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/hardhat/node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -15160,18 +15432,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/hardhat/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "node_modules/hardhat/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -15196,36 +15456,16 @@ "dev": true, "peer": true }, - "node_modules/hardhat/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hardhat/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/hardhat/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "peer": true, "engines": { - "node": ">=0.3.1" + "node": ">=0.8.0" } }, - "node_modules/hardhat/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "peer": true - }, "node_modules/hardhat/node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -15252,16 +15492,6 @@ "node": ">=4" } }, - "node_modules/hardhat/node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "peer": true, - "bin": { - "flat": "cli.js" - } - }, "node_modules/hardhat/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -15290,6 +15520,16 @@ "node": ">= 6" } }, + "node_modules/hardhat/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/hardhat/node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -15303,29 +15543,6 @@ "node": ">=8" } }, - "node_modules/hardhat/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/hardhat/node_modules/jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", @@ -15360,241 +15577,6 @@ "node": ">=4" } }, - "node_modules/hardhat/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hardhat/node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/hardhat/node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/hardhat/node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/hardhat/node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/hardhat/node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hardhat/node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/hardhat/node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hardhat/node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hardhat/node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "peer": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hardhat/node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hardhat/node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat/node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/hardhat/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "peer": true - }, "node_modules/hardhat/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -15758,34 +15740,6 @@ "semver": "bin/semver" } }, - "node_modules/hardhat/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/hardhat/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -15799,16 +15753,6 @@ "node": ">=4" } }, - "node_modules/hardhat/node_modules/supports-color/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/hardhat/node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -15822,60 +15766,6 @@ "node": ">=0.6.0" } }, - "node_modules/hardhat/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/hardhat/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/hardhat/node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/hardhat/node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, "node_modules/hardhat/node_modules/ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -15898,72 +15788,6 @@ } } }, - "node_modules/hardhat/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/hardhat/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "peer": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hardhat/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/hardhat/node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "peer": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -15981,11 +15805,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16127,6 +15951,42 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -16266,9 +16126,9 @@ } }, "node_modules/http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -16332,9 +16192,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -16408,22 +16268,13 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/install": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", - "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "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" }, "engines": { @@ -16466,24 +16317,15 @@ } }, "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, "node_modules/is-arguments": { @@ -16592,35 +16434,26 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/is-date-object": { @@ -16638,26 +16471,16 @@ } }, "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/is-dotfile": { @@ -16889,12 +16712,15 @@ } }, "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { @@ -17141,11 +16967,17 @@ "optional": true }, "node_modules/json-stable-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", - "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz", + "integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==", "dependencies": { - "jsonify": "^0.0.1" + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17157,6 +16989,11 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/json-stable-stringify/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -17214,9 +17051,9 @@ } }, "node_modules/keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", "hasInstallScript": true, "dependencies": { "node-addon-api": "^2.0.0", @@ -17269,9 +17106,9 @@ } }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { "json-buffer": "3.0.1" } @@ -17806,86 +17643,18 @@ } }, "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/log-symbols/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/loglevel": { @@ -17919,12 +17688,12 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lower-case": { @@ -17995,18 +17764,6 @@ "node": ">=6" } }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -18356,11 +18113,11 @@ } }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -18395,42 +18152,39 @@ } }, "node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "dependencies": { - "ansi-colors": "3.2.3", + "ansi-colors": "4.1.1", "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", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", "he": "1.2.0", - "js-yaml": "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" + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", @@ -18438,9 +18192,9 @@ } }, "node_modules/mocha/node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "engines": { "node": ">=6" @@ -18459,6 +18213,12 @@ "node": ">= 8" } }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/mocha/node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -18468,6 +18228,15 @@ "node": ">=8" } }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -18481,43 +18250,39 @@ } }, "node_modules/mocha/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" + "readdirp": "~3.6.0" }, "engines": { "node": ">= 8.10.0" }, "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" + "fsevents": "~2.3.2" } }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=0.3.1" } }, "node_modules/mocha/node_modules/fill-range": { @@ -18533,22 +18298,25 @@ } }, "node_modules/mocha/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mocha/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -18559,23 +18327,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -18588,15 +18339,6 @@ "node": ">= 6" } }, - "node_modules/mocha/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/mocha/node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -18610,47 +18352,48 @@ } }, "node_modules/mocha/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/mocha/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mocha/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=10" } }, "node_modules/mocha/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/mocha/node_modules/normalize-path": { @@ -18662,85 +18405,61 @@ "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mocha/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mocha/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "picomatch": "^2.0.4" + "picomatch": "^2.2.1" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/mocha/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8.10.0" } }, "node_modules/mocha/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" + "node": ">=10" }, - "bin": { - "which": "bin/which" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/mock-fs": { @@ -18848,10 +18567,25 @@ "buffer": "^5.5.0" } }, + "node_modules/n": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/n/-/n-9.2.0.tgz", + "integrity": "sha512-R8mFN2OWwNVc+r1f9fDzcT34DnDwUIHskrpTesZ6SdluaXBBnRtTu5tlfaSPloBi1Z/eGJoPO9nhyawWPad5UQ==", + "dev": true, + "os": [ + "!win32" + ], + "bin": { + "n": "bin/n" + }, + "engines": { + "node": "*" + } + }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "dev": true, "optional": true }, @@ -18957,12 +18691,6 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node_modules/no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -18991,16 +18719,6 @@ "lodash": "^4.17.21" } }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -19022,9 +18740,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", - "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -19043,9 +18761,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/nofilter": { @@ -19103,9 +18821,9 @@ } }, "node_modules/npm": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.1.0.tgz", - "integrity": "sha512-pZ2xybXzNGbJFZEKNbPoEXsE38Xou9VTnxxBk+B3pz0ndsGCs7iWHoUCPSsISU2hjmkWfDkJo3bYKE8RDOg4eg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.5.tgz", + "integrity": "sha512-lXdZ7titEN8CH5YJk9C/aYRU9JeDxQ4d8rwIIDsvH3SMjLjHTukB2CFstMiB30zXs4vCrPN2WH6cDq1yHBeJAw==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -19151,6 +18869,7 @@ "ms", "node-gyp", "nopt", + "normalize-package-data", "npm-audit-report", "npm-install-checks", "npm-package-arg", @@ -19166,7 +18885,9 @@ "qrcode-terminal", "read", "semver", + "spdx-expression-parse", "ssri", + "strip-ansi", "supports-color", "tar", "text-table", @@ -19179,67 +18900,70 @@ "dev": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.1.0", - "@npmcli/config": "^7.2.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", "@npmcli/fs": "^3.1.0", "@npmcli/map-workspaces": "^3.0.4", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.1", - "@sigstore/tuf": "^2.1.0", + "@npmcli/run-script": "^7.0.2", + "@sigstore/tuf": "^2.2.0", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.0", + "cacache": "^18.0.1", "chalk": "^5.3.0", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", "cli-table3": "^0.6.3", "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.3", + "glob": "^10.3.10", "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.0", + "hosted-git-info": "^7.0.1", "ini": "^4.1.1", "init-package-json": "^6.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", - "libnpmaccess": "^8.0.0", - "libnpmdiff": "^6.0.1", - "libnpmexec": "^7.0.1", - "libnpmfund": "^4.1.1", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", "libnpmhook": "^10.0.0", - "libnpmorg": "^6.0.0", - "libnpmpack": "^6.0.1", - "libnpmpublish": "^9.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", "libnpmsearch": "^7.0.0", "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.0", + "libnpmversion": "^5.0.1", "make-fetch-happen": "^13.0.0", "minimatch": "^9.0.3", - "minipass": "^7.0.3", + "minipass": "^7.0.4", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.0", + "node-gyp": "^10.0.1", "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.0.0", + "npm-registry-fetch": "^16.1.0", "npm-user-validate": "^2.0.0", "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.4", + "pacote": "^17.0.5", "parse-conflict-json": "^3.0.1", "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", "read": "^2.1.0", "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1", "ssri": "^10.0.5", + "strip-ansi": "^7.1.0", "supports-color": "^9.4.0", - "tar": "^6.1.15", + "tar": "^6.2.0", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", @@ -19303,18 +19027,6 @@ "node": ">=12" } }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "dev": true, @@ -19338,21 +19050,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", "dev": true, @@ -19360,11 +19057,12 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.1.1", + "version": "2.2.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", @@ -19374,60 +19072,8 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/socks-proxy-agent": { - "version": "8.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.1.0", + "version": "7.2.2", "dev": true, "inBundle": true, "license": "ISC", @@ -19440,18 +19086,18 @@ "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.0", - "@npmcli/run-script": "^7.0.1", + "@npmcli/query": "^3.0.1", + "@npmcli/run-script": "^7.0.2", "bin-links": "^4.0.1", "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.0", + "hosted-git-info": "^7.0.1", "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", "minimatch": "^9.0.0", "nopt": "^7.0.0", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.0.0", "npmlog": "^7.0.1", @@ -19474,13 +19120,13 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "7.2.0", + "version": "8.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "ini": "^4.1.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", @@ -19489,7 +19135,7 @@ "walk-up-path": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/disparity-colors": { @@ -19504,6 +19150,21 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", "dev": true, @@ -19630,7 +19291,7 @@ } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -19642,14 +19303,14 @@ } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^9.0.0", + "node-gyp": "^10.0.0", "read-package-json-fast": "^3.0.0", "which": "^4.0.0" }, @@ -19689,7 +19350,7 @@ } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.1.0", + "version": "2.2.0", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -19703,7 +19364,7 @@ } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.1.0", + "version": "2.2.0", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -19715,15 +19376,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "2.0.0", "dev": true, @@ -19768,27 +19420,15 @@ } }, "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.5.0", + "version": "7.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "humanize-ms": "^1.2.1" + "debug": "^4.3.4" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/aggregate-error": { @@ -19805,24 +19445,24 @@ } }, "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -19841,7 +19481,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.0", + "version": "4.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -19880,7 +19520,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.2", + "version": "4.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -19946,7 +19586,7 @@ } }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.0", + "version": "18.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -19956,7 +19596,7 @@ "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -19990,7 +19630,7 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "3.8.0", + "version": "4.0.0", "dev": true, "funding": [ { @@ -20005,15 +19645,15 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", + "version": "4.0.3", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/clean-stack": { @@ -20038,6 +19678,27 @@ "node": ">= 10" } }, + "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/cli-table3": { "version": "0.6.3", "dev": true, @@ -20063,7 +19724,7 @@ } }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.1", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -20111,17 +19772,32 @@ "node": ">=8.0.0" } }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", + "node_modules/npm/node_modules/columnify/node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, "inBundle": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", + "node_modules/npm/node_modules/columnify/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" }, "node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", @@ -20318,17 +19994,14 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", + "version": "1.1.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/npm/node_modules/gauge": { "version": "5.0.1", @@ -20349,20 +20022,41 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/glob": { - "version": "10.3.3", + "version": "10.3.10", "dev": true, "inBundle": true, "license": "ISC", "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" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -20377,26 +20071,26 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.0", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -20414,39 +20108,29 @@ "license": "BSD-2-Clause" }, "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/iconv-lite": { @@ -20483,7 +20167,7 @@ "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", + "version": "6.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -20512,22 +20196,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/ini": { "version": "4.1.1", "dev": true, @@ -20562,33 +20230,36 @@ "license": "MIT" }, "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", + "version": "5.0.3", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^3.1.1" + "cidr-regex": "4.0.3" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/is-core-module": { - "version": "2.12.1", + "version": "2.13.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20616,7 +20287,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "2.2.1", + "version": "2.3.6", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -20634,7 +20305,7 @@ } }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", @@ -20673,12 +20344,12 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.0", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "npm-registry-fetch": "^16.0.0" }, "engines": { @@ -20686,35 +20357,35 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.1", + "version": "6.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.1.0", + "@npmcli/arborist": "^7.2.1", "@npmcli/disparity-colors": "^3.0.0", "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", "diff": "^5.1.0", "minimatch": "^9.0.0", - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "pacote": "^17.0.4", - "tar": "^6.1.13" + "tar": "^6.2.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.1", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "ci-info": "^3.7.1", - "npm-package-arg": "^11.0.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.1", "npmlog": "^7.0.1", "pacote": "^17.0.4", "proc-log": "^3.0.0", @@ -20728,19 +20399,19 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "4.1.1", + "version": "5.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.1.0" + "@npmcli/arborist": "^7.2.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.0", + "version": "10.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -20753,7 +20424,7 @@ } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.0", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -20766,14 +20437,14 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.1", + "version": "6.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "npm-package-arg": "^11.0.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "npm-package-arg": "^11.0.1", "pacote": "^17.0.4" }, "engines": { @@ -20781,14 +20452,14 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.0", + "version": "9.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ci-info": "^3.6.1", + "ci-info": "^4.0.0", "normalize-package-data": "^6.0.0", - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "npm-registry-fetch": "^16.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7", @@ -20800,7 +20471,7 @@ } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.0", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -20812,7 +20483,7 @@ } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -20825,13 +20496,13 @@ } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.0", + "version": "5.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.1", + "@npmcli/run-script": "^7.0.2", "json-parse-even-better-errors": "^3.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7" @@ -20841,7 +20512,7 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.0.1", + "version": "10.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -20887,7 +20558,7 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "7.0.3", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -20896,27 +20567,15 @@ } }, "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-fetch": { @@ -21092,295 +20751,27 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "9.4.0", + "version": "10.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", + "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", - "which": "^2.0.2" + "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { - "version": "17.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { - "version": "10.3.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minipass": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/lru-cache": { - "version": "7.18.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { - "version": "11.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/nopt": { @@ -21435,7 +20826,7 @@ } }, "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.2.0", + "version": "6.3.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -21456,7 +20847,7 @@ } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.0", + "version": "11.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -21471,12 +20862,12 @@ } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.0", + "version": "8.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -21511,7 +20902,7 @@ } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "16.0.0", + "version": "16.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -21552,15 +20943,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", "dev": true, @@ -21577,7 +20959,7 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "17.0.4", + "version": "17.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -21622,15 +21004,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm/node_modules/path-key": { "version": "3.1.1", "dev": true, @@ -21794,7 +21167,7 @@ } }, "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.0", + "version": "4.4.2", "dev": true, "inBundle": true, "license": "MIT", @@ -21802,7 +21175,8 @@ "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -21817,63 +21191,6 @@ "node": ">= 4" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", "dev": true, @@ -21956,7 +21273,7 @@ } }, "node_modules/npm/node_modules/signal-exit": { - "version": "4.0.2", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -22007,17 +21324,17 @@ } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/npm/node_modules/spdx-correct": { @@ -22047,7 +21364,7 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.13", + "version": "3.0.16", "dev": true, "inBundle": true, "license": "CC0-1.0" @@ -22102,7 +21419,16 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/strip-ansi": { + "node_modules/npm/node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "dev": true, "inBundle": true, @@ -22114,6 +21440,42 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -22127,6 +21489,15 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/supports-color": { "version": "9.4.0", "dev": true, @@ -22140,7 +21511,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.1.15", + "version": "6.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -22359,30 +21730,42 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", "dev": true, @@ -22406,27 +21789,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", "dev": true, @@ -22525,57 +21887,23 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -22610,12 +21938,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -22643,25 +21971,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", - "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", - "dev": true, - "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.groupby": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", @@ -22833,15 +22142,6 @@ "node": ">=12.20" } }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -22851,15 +22151,6 @@ "node": ">=4" } }, - "node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -23642,26 +22933,26 @@ } }, "node_modules/prettier-plugin-solidity": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz", - "integrity": "sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.2.0.tgz", + "integrity": "sha512-fgxcUZpVAP+LlRfy5JI5oaAkXGkmsje2VJ5krv/YMm+rcTZbIUwFguSw5f+WFuttMjpDm6wB4UL7WVkArEfiVA==", "dev": true, "dependencies": { - "@solidity-parser/parser": "^0.16.0", - "semver": "^7.3.8", + "@solidity-parser/parser": "^0.16.2", + "semver": "^7.5.4", "solidity-comments-extractor": "^0.0.7" }, "engines": { - "node": ">=12" + "node": ">=16" }, "peerDependencies": { - "prettier": ">=2.3.0 || >=3.0.0-alpha.0" + "prettier": ">=2.3.0" } }, "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz", - "integrity": "sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "dependencies": { "antlr4ts": "^0.5.0-alpha.4" @@ -23806,7 +23097,7 @@ "version": "13.7.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", - "deprecated": "< 19.4.0 is no longer supported", + "deprecated": "< 21.3.7 is no longer supported", "dev": true, "hasInstallScript": true, "dependencies": { @@ -24155,26 +23446,16 @@ } }, "node_modules/readdirp/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/readdirp/node_modules/extglob": { @@ -24247,60 +23528,12 @@ "node": ">=0.10.0" } }, - "node_modules/readdirp/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readdirp/node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "node_modules/readdirp/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readdirp/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -24466,9 +23699,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -24517,13 +23750,13 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "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" }, "engines": { "node": ">= 0.4" @@ -24670,39 +23903,6 @@ "node": ">= 6" } }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, "node_modules/request/node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -24742,10 +23942,9 @@ } }, "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" }, "node_modules/requireindex": { "version": "1.1.0", @@ -24780,9 +23979,9 @@ } }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -24988,12 +24187,12 @@ "peer": true }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "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" }, @@ -25267,6 +24466,33 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -25330,11 +24556,16 @@ } }, "node_modules/sha1-file": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-1.0.4.tgz", - "integrity": "sha512-IgcUYjTck/UAx0wdtBoTwiy4/yiIZX6do4uaqUtryJY/pBOQC1w3Cb/bZMyC2H3QYnodL5vbX0lY69xlWqeBnA==", - "deprecated": "Version 1.x or earlier is no longer supported.", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-2.0.1.tgz", + "integrity": "sha512-L4Kum9Lp8cWqcGKycZcXxR6spUoG4idDIUzAKjPiELnIZWxiFlZ5HFVzFxVxuWuGPsrraeL0JoGk0nFZ7AGFEQ==", + "dev": true, + "dependencies": { + "hasha": "^5.2.0" + }, + "engines": { + "node": ">=10" + } }, "node_modules/sha3": { "version": "2.1.4", @@ -25498,6 +24729,48 @@ "node": ">=6" } }, + "node_modules/sloc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/sloc/-/sloc-0.3.0.tgz", + "integrity": "sha512-fKmMA8q5OyeZpFCxBa3FuFywQcziQXKBw9B8jwDJ/Ra3H/pkZpQJl9g5s3MIjUo2jwUDHUnaxXgVXObXFdiJBw==", + "dev": true, + "dependencies": { + "async": "^3.2.4", + "cli-table": "^0.3.11", + "commander": "^11.0.0", + "readdirp": "^3.3.0" + }, + "bin": { + "sloc": "bin/sloc" + } + }, + "node_modules/sloc/node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/sloc/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/sloc/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/snake-case": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", @@ -25605,51 +24878,17 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/snapdragon/node_modules/ms": { @@ -25680,17 +24919,17 @@ "dev": true }, "node_modules/sol2uml": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.13.tgz", - "integrity": "sha512-ACfGQzfciKuCZw7//P2URj1bRHoX/KnJweuPKNcctzalSZGsjNdw8uRzLl1ph00F9xqu4z9wpDGWJ0GSzox2SQ==", + "version": "2.5.20", + "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.20.tgz", + "integrity": "sha512-La+UQ4Y6n8yG3Vfy5FudhZGJvymJ13PxuC00W4pKF3iIZFcRGPVH7RLBQ8lc+JqOt+YW92oSaSGSwHnlTmd7tg==", "dev": true, "dependencies": { "@aduh95/viz.js": "^3.7.0", "@solidity-parser/parser": "^0.16.1", - "axios": "^1.3.4", + "axios": "^1.6.0", "axios-debug-log": "^1.0.0", "cli-color": "^2.0.3", - "commander": "^11.0.0", + "commander": "^11.1.0", "convert-svg-to-png": "^0.6.4", "debug": "^4.3.4", "diff-match-patch": "^1.0.5", @@ -25703,18 +24942,18 @@ } }, "node_modules/sol2uml/node_modules/@solidity-parser/parser": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz", - "integrity": "sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "dependencies": { "antlr4ts": "^0.5.0-alpha.4" } }, "node_modules/sol2uml/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "engines": { "node": ">=16" @@ -25769,9 +25008,9 @@ } }, "node_modules/solc": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.21.tgz", - "integrity": "sha512-N55ogy2dkTRwiONbj4e6wMZqUNaLZkiRcjGyeafjLYzo/tf/IvhHY5P5wpe+H3Fubh9idu071i8eOGO31s1ylg==", + "version": "0.8.23", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.23.tgz", + "integrity": "sha512-uqe69kFWfJc3cKdxj+Eg9CdW1CP3PLZDPeyJStQVWL8Q9jjjKD0VuRAKBFR8mrWiq5A7gJqERxJFYJsklrVsfA==", "dev": true, "dependencies": { "command-exists": "^1.2.8", @@ -25779,6 +25018,7 @@ "follow-redirects": "^1.12.1", "js-sha3": "0.8.0", "memorystream": "^0.3.1", + "n": "^9.2.0", "semver": "^5.5.0", "tmp": "0.0.33" }, @@ -25835,13 +25075,78 @@ } }, "node_modules/solidity-ast": { - "version": "0.4.52", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.52.tgz", - "integrity": "sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw==", + "version": "0.4.55", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.55.tgz", + "integrity": "sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA==", "dependencies": { "array.prototype.findlast": "^1.2.2" } }, + "node_modules/solidity-code-metrics": { + "version": "0.0.25", + "resolved": "https://registry.npmjs.org/solidity-code-metrics/-/solidity-code-metrics-0.0.25.tgz", + "integrity": "sha512-of1wT4B5GL0/IahPttkEQUU3Bgq2PpLfQ1GcGdE8aMOhryWrEa4V5LYYd7cqKwyzWaRYIZ/pLUnaoJtCV2HfHA==", + "dev": true, + "dependencies": { + "@solidity-parser/parser": "^0.16.1", + "glob": "^8.0.3", + "sloc": "^0.3.0", + "solidity-doppelganger": "^0.0.11", + "surya": "^0.4.6" + }, + "bin": { + "solidity-code-metrics": "src/cli.js" + } + }, + "node_modules/solidity-code-metrics/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/solidity-code-metrics/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/solidity-code-metrics/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/solidity-code-metrics/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/solidity-comments-extractor": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", @@ -25849,9 +25154,9 @@ "dev": true }, "node_modules/solidity-coverage": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.4.tgz", - "integrity": "sha512-xeHOfBOjdMF6hWTbt42iH4x+7j1Atmrf5OldDPMxI+i/COdExUxszOswD9qqvcBTaLGiOrrpnh9UZjSpt4rBsg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.5.tgz", + "integrity": "sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.0.9", @@ -25866,7 +25171,7 @@ "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", @@ -25883,23 +25188,14 @@ } }, "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz", - "integrity": "sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "dependencies": { "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/solidity-coverage/node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/solidity-coverage/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -25912,40 +25208,6 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/solidity-coverage/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/solidity-coverage/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/solidity-coverage/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -25960,27 +25222,6 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, "node_modules/solidity-coverage/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -25996,16 +25237,6 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/solidity-coverage/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/solidity-coverage/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -26015,30 +25246,6 @@ "node": ">=0.8.0" } }, - "node_modules/solidity-coverage/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/solidity-coverage/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/solidity-coverage/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -26053,50 +25260,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/solidity-coverage/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/solidity-coverage/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/solidity-coverage/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/solidity-coverage/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -26106,251 +25269,207 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/solidity-coverage/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/solidity-coverage/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "lru-cache": "^6.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/solidity-coverage/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/solidity-coverage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/solidity-coverage/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/solidity-docgen": { + "version": "0.6.0-beta.36", + "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.36.tgz", + "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "handlebars": "^4.7.7", + "solidity-ast": "^0.4.38" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "hardhat": "^2.8.0" } }, - "node_modules/solidity-coverage/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/solidity-doppelganger": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/solidity-doppelganger/-/solidity-doppelganger-0.0.11.tgz", + "integrity": "sha512-mLIuW1Gfcr49zAZuE3XiQoqvkIAOKJBsgg//3DUvX8G6PvQErfnEKSajXwrYmW27oawwB/qbdRYuFR0inpsJQQ==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@solidity-parser/parser": "^0.16.1", + "glob": "^8.0.3", + "yargs": "^17.0.1" } }, - "node_modules/solidity-coverage/node_modules/mocha": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", - "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", + "node_modules/solidity-doppelganger/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "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" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/solidity-coverage/node_modules/mocha/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "node_modules/solidity-doppelganger/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/solidity-coverage/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/solidity-coverage/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/solidity-doppelganger/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/solidity-coverage/node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "node_modules/solidity-doppelganger/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/solidity-coverage/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/solidity-doppelganger/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/solidity-coverage/node_modules/path-exists": { + "node_modules/solidity-doppelganger/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/solidity-coverage/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "node_modules/solidity-doppelganger/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "picomatch": "^2.0.4" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/solidity-doppelganger/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/solidity-coverage/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/solidity-coverage/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/solidity-doppelganger/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/solidity-coverage/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/solidity-doppelganger/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=12" } }, - "node_modules/solidity-coverage/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/solidity-docgen": { - "version": "0.6.0-beta.36", - "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.36.tgz", - "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", + "node_modules/solidity-doppelganger/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "handlebars": "^4.7.7", - "solidity-ast": "^0.4.38" - }, - "peerDependencies": { - "hardhat": "^2.8.0" + "engines": { + "node": ">=12" } }, "node_modules/solium": { @@ -26469,6 +25588,15 @@ "ms": "2.0.0" } }, + "node_modules/solparse/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/solparse/node_modules/diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", @@ -26522,15 +25650,6 @@ "node": "*" } }, - "node_modules/solparse/node_modules/growl": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/solparse/node_modules/has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -26680,12 +25799,6 @@ "node": ">=4" } }, - "node_modules/solparse/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, "node_modules/solparse/node_modules/supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", @@ -26698,6 +25811,12 @@ "node": ">=4" } }, + "node_modules/solparse/node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, "node_modules/solparse/node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -26855,9 +25974,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" }, "node_modules/split-string": { "version": "3.1.0", @@ -26878,9 +25997,9 @@ "dev": true }, "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -26954,51 +26073,17 @@ "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/statuses": { @@ -27009,24 +26094,6 @@ "node": ">= 0.8" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -27057,13 +26124,13 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "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" }, "engines": { "node": ">= 0.4" @@ -27073,26 +26140,26 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "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" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "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" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -27217,352 +26284,115 @@ } }, "node_modules/surya": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.6.tgz", - "integrity": "sha512-zaTYkRbms26cuOWu5jon5l4OsToHX7ZEflqTozXgq/XxUL3VY+tEnxT9Te2WVsA/sYgZPwcH92yQZJgljsss4g==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.11.tgz", + "integrity": "sha512-SsDGqYQ1XCkGfCutLQ5s0Es2Tt41lY4FcrxlMiiOzPVJbD3AclI+Cot2SbtXuw/CeqRqaugLE5B95tfMDsRp9g==", "dev": true, "dependencies": { - "@solidity-parser/parser": "^0.14.1", + "@solidity-parser/parser": "^0.16.1", "c3-linearization": "^0.3.0", "colors": "^1.4.0", "graphviz": "0.0.9", - "sha1-file": "^1.0.4", + "sha1-file": "^2.0.0", "treeify": "^1.1.0", - "yargs": "^11.1.1" + "yargs": "^17.0.0" }, "bin": { "surya": "bin/surya" } }, - "node_modules/surya/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/surya/node_modules/cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/surya/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/surya/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "node_modules/surya/node_modules/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" + "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/surya/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/surya/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/surya/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/surya/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/surya/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "pump": "^3.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/surya/node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/surya/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/surya/node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/surya/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/surya/node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/surya/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/surya/node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/surya/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/surya/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/surya/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/surya/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/surya/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/surya/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, - "node_modules/surya/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/surya/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/surya/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/surya/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/surya/node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "node_modules/surya/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/surya/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/surya/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/surya/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, "node_modules/surya/node_modules/yargs": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", - "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.0", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" } }, "node_modules/surya/node_modules/yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "camelcase": "^4.1.0" + "engines": { + "node": ">=12" } }, "node_modules/swap-case": { @@ -27972,9 +26802,9 @@ } }, "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -28052,11 +26882,14 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/truffle-contract-size/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/truffle-contract-size/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/truffle-contract-size/node_modules/is-fullwidth-code-point": { "version": "3.0.0", @@ -28067,6 +26900,12 @@ "node": ">=8" } }, + "node_modules/truffle-contract-size/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "node_modules/truffle-contract-size/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -28093,6 +26932,12 @@ "node": ">=8" } }, + "node_modules/truffle-contract-size/node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, "node_modules/truffle-contract-size/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -28107,6 +26952,12 @@ "node": ">=8" } }, + "node_modules/truffle-contract-size/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "node_modules/truffle-contract-size/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -28245,14 +27096,6 @@ "node": ">=6" } }, - "node_modules/truffle/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/truffle/node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -28297,17 +27140,6 @@ "node": ">=8" } }, - "node_modules/truffle/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/truffle/node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -28334,27 +27166,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/truffle/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/truffle/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/truffle/node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -28363,11 +27174,6 @@ "node": ">=0.3.1" } }, - "node_modules/truffle/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, "node_modules/truffle/node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -28394,14 +27200,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/truffle/node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "bin": { - "flat": "cli.js" - } - }, "node_modules/truffle/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -28437,14 +27235,6 @@ "node": ">=8" } }, - "node_modules/truffle/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, "node_modules/truffle/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -28470,21 +27260,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/truffle/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/truffle/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -28587,30 +27362,6 @@ "node": ">=8.10.0" } }, - "node_modules/truffle/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/truffle/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/truffle/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -28625,69 +27376,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/truffle/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/truffle/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/truffle/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/truffle/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/truffle/node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", @@ -28964,17 +27652,22 @@ "dev": true }, "node_modules/undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", + "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", "dev": true, "dependencies": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" }, "engines": { "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unfetch": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", @@ -29110,9 +27803,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -29282,28 +27975,28 @@ "optional": true }, "node_modules/web3": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.2.tgz", - "integrity": "sha512-DAtZ3a3ruPziE80uZ3Ob0YDZxt6Vk2un/F5BcBrxO70owJ9Z1Y2+loZmbh1MoAmoLGjA/SUSHeUtid3fYmBaog==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.3.tgz", + "integrity": "sha512-DgUdOOqC/gTqW+VQl1EdPxrVRPB66xVNtuZ5KD4adVBtko87hkgM8BTZ0lZ8IbUfnQk6DyjcDujMiH3oszllAw==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-bzz": "1.10.2", - "web3-core": "1.10.2", - "web3-eth": "1.10.2", - "web3-eth-personal": "1.10.2", - "web3-net": "1.10.2", - "web3-shh": "1.10.2", - "web3-utils": "1.10.2" + "web3-bzz": "1.10.3", + "web3-core": "1.10.3", + "web3-eth": "1.10.3", + "web3-eth-personal": "1.10.3", + "web3-net": "1.10.3", + "web3-shh": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-bzz": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.2.tgz", - "integrity": "sha512-vLOfDCj6198Qc7esDrCKeFA/M3ZLbowsaHQ0hIL4NmIHoq7lU8aSRTa5AI+JBh8cKN1gVryJsuW2ZCc5bM4I4Q==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.3.tgz", + "integrity": "sha512-XDIRsTwekdBXtFytMpHBuun4cK4x0ZMIDXSoo1UVYp+oMyZj07c7gf7tNQY5qZ/sN+CJIas4ilhN25VJcjSijQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -29322,121 +28015,57 @@ "dev": true }, "node_modules/web3-core": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.2.tgz", - "integrity": "sha512-qTn2UmtE8tvwMRsC5pXVdHxrQ4uZ6jiLgF5DRUVtdi7dPUmX18Dp9uxKfIfhGcA011EAn8P6+X7r3pvi2YRxBw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.3.tgz", + "integrity": "sha512-Vbk0/vUNZxJlz3RFjAhNNt7qTpX8yE3dn3uFxfX5OHbuon5u65YEOd3civ/aQNW745N0vGUlHFNxxmn+sG9DIw==", "dev": true, "dependencies": { "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-requestmanager": "1.10.2", - "web3-utils": "1.10.2" + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-requestmanager": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-helpers": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", - "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", - "dependencies": { - "web3-eth-iban": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-helpers/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/web3-core-helpers/node_modules/web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.3.tgz", + "integrity": "sha512-Yv7dQC3B9ipOc5sWm3VAz1ys70Izfzb8n9rSiQYIPjpqtJM+3V4EeK6ghzNR6CO2es0+Yu9CtCkw0h8gQhrTxA==", + "dev": true, "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "web3-eth-iban": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-method": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.2.tgz", - "integrity": "sha512-gG6ES+LOuo01MJHML4gnEt702M8lcPGMYZoX8UjZzmEebGrPYOY9XccpCrsFgCeKgQzM12SVnlwwpMod1+lcLg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.3.tgz", + "integrity": "sha512-VZ/Dmml4NBmb0ep5PTSg9oqKoBtG0/YoMPei/bq/tUdlhB2dMB79sbeJPwx592uaV0Vpk7VltrrrBv5hTM1y4Q==", "dev": true, "dependencies": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.10.2", - "web3-core-promievent": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-core-method/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method/node_modules/web3-core-promievent": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.2.tgz", - "integrity": "sha512-Qkkb1dCDOU8dZeORkcwJBQRAX+mdsjx8LqFBB+P4W9QgwMqyJ6LXda+y1XgyeEVeKEmY1RCeTq9Y94q1v62Sfw==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" + "web3-core-helpers": "1.10.3", + "web3-core-promievent": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-promievent": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", - "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.3.tgz", + "integrity": "sha512-HgjY+TkuLm5uTwUtaAfkTgRx/NzMxvVradCi02gy17NxDVdg/p6svBHcp037vcNpkuGeFznFJgULP+s2hdVgUQ==", + "dev": true, "dependencies": { "eventemitter3": "4.0.4" }, @@ -29445,93 +28074,29 @@ } }, "node_modules/web3-core-requestmanager": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.2.tgz", - "integrity": "sha512-nlLeNJUu6fR+ZbJr2k9Du/nN3VWwB4AJPY4r6nxUODAmykgJq57T21cLP/BEk6mbiFQYGE9TrrPhh4qWxQEtAw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.3.tgz", + "integrity": "sha512-VT9sKJfgM2yBOIxOXeXiDuFMP4pxzF6FT+y8KTLqhDFHkbG3XRe42Vm97mB/IvLQCJOmokEjl3ps8yP1kbggyw==", "dev": true, "dependencies": { "util": "^0.12.5", - "web3-core-helpers": "1.10.2", - "web3-providers-http": "1.10.2", - "web3-providers-ipc": "1.10.2", - "web3-providers-ws": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-core-requestmanager/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" + "web3-core-helpers": "1.10.3", + "web3-providers-http": "1.10.3", + "web3-providers-ipc": "1.10.3", + "web3-providers-ws": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-subscriptions": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.2.tgz", - "integrity": "sha512-MiWcKjz4tco793EPPPLc/YOJmYUV3zAfxeQH/UVTfBejMfnNvmfwKa2SBKfPIvKQHz/xI5bV2TF15uvJEucU7w==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.3.tgz", + "integrity": "sha512-KW0Mc8sgn70WadZu7RjQ4H5sNDJ5Lx8JMI3BWos+f2rW0foegOCyWhRu33W1s6ntXnqeBUw5rRCXZRlA3z+HNA==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-core-subscriptions/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" + "web3-core-helpers": "1.10.3" }, "engines": { "node": ">=8.0.0" @@ -29552,90 +28117,58 @@ "node": "*" } }, - "node_modules/web3-core/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-core/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/web3-eth": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.2.tgz", - "integrity": "sha512-s38rhrntyhGShmXC4R/aQtfkpcmev9c7iZwgb9CDIBFo7K8nrEJvqIOyajeZTxnDIiGzTJmrHxiKSadii5qTRg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.3.tgz", + "integrity": "sha512-Uk1U2qGiif2mIG8iKu23/EQJ2ksB1BQXy3wF3RvFuyxt8Ft9OEpmGlO7wOtAyJdoKzD5vcul19bJpPcWSAYZhA==", "dev": true, "dependencies": { - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-eth-abi": "1.10.2", - "web3-eth-accounts": "1.10.2", - "web3-eth-contract": "1.10.2", - "web3-eth-ens": "1.10.2", - "web3-eth-iban": "1.10.2", - "web3-eth-personal": "1.10.2", - "web3-net": "1.10.2", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-eth-abi": "1.10.3", + "web3-eth-accounts": "1.10.3", + "web3-eth-contract": "1.10.3", + "web3-eth-ens": "1.10.3", + "web3-eth-iban": "1.10.3", + "web3-eth-personal": "1.10.3", + "web3-net": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-abi": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.2.tgz", - "integrity": "sha512-pY4fQUio7W7ZRSLf+vsYkaxJqaT/jHcALZjIxy+uBQaYAJ3t6zpQqMZkJB3Dw7HUODRJ1yI0NPEFGTnkYf/17A==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.3.tgz", + "integrity": "sha512-O8EvV67uhq0OiCMekqYsDtb6FzfYzMXT7VMHowF8HV6qLZXCGTdB/NH4nJrEh2mFtEwVdS6AmLFJAQd2kVyoMQ==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.10.2" + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-accounts": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.2.tgz", - "integrity": "sha512-6/HhCBYAXN/f553/SyxS9gY62NbLgpD1zJpENcvRTDpJN3Znvli1cmpl5Q3ZIUJkvHnG//48EWfWh0cbb3fbKQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.3.tgz", + "integrity": "sha512-8MipGgwusDVgn7NwKOmpeo3gxzzd+SmwcWeBdpXknuyDiZSQy9tXe+E9LeFGrmys/8mLLYP79n3jSbiTyv+6pQ==", "dev": true, "dependencies": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", + "@ethereumjs/common": "2.6.5", + "@ethereumjs/tx": "3.5.2", "@ethereumjs/util": "^8.1.0", "eth-lib": "0.2.8", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" @@ -29653,179 +28186,64 @@ } }, "node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } }, - "node_modules/web3-eth-accounts/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/web3-eth-iban/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, "node_modules/web3-eth-contract": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.2.tgz", - "integrity": "sha512-CZLKPQRmupP/+OZ5A/CBwWWkBiz5B/foOpARz0upMh1yjb0dEud4YzRW2gJaeNu0eGxDLsWVaXhUimJVGYprQw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.3.tgz", + "integrity": "sha512-Y2CW61dCCyY4IoUMD4JsEQWrILX4FJWDWC/Txx/pr3K/+fGsBGvS9kWQN5EsVXOp4g7HoFOfVh9Lf7BmVVSRmg==", "dev": true, "dependencies": { "@types/bn.js": "^5.1.1", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-promievent": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-eth-abi": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-eth-contract/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/web3-core-promievent": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.2.tgz", - "integrity": "sha512-Qkkb1dCDOU8dZeORkcwJBQRAX+mdsjx8LqFBB+P4W9QgwMqyJ6LXda+y1XgyeEVeKEmY1RCeTq9Y94q1v62Sfw==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-promievent": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-eth-abi": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-ens": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.2.tgz", - "integrity": "sha512-kTQ42UdNHy4BQJHgWe97bHNMkc3zCMBKKY7t636XOMxdI/lkRdIjdE5nQzt97VjQvSVasgIWYKRAtd8aRaiZiQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.3.tgz", + "integrity": "sha512-hR+odRDXGqKemw1GFniKBEXpjYwLgttTES+bc7BfTeoUyUZXbyDHe5ifC+h+vpzxh4oS0TnfcIoarK0Z9tFSiQ==", "dev": true, "dependencies": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-promievent": "1.10.2", - "web3-eth-abi": "1.10.2", - "web3-eth-contract": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-eth-ens/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/web3-core-promievent": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.2.tgz", - "integrity": "sha512-Qkkb1dCDOU8dZeORkcwJBQRAX+mdsjx8LqFBB+P4W9QgwMqyJ6LXda+y1XgyeEVeKEmY1RCeTq9Y94q1v62Sfw==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-promievent": "1.10.3", + "web3-eth-abi": "1.10.3", + "web3-eth-contract": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-iban": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", - "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.3.tgz", + "integrity": "sha512-ZCfOjYKAjaX2TGI8uif5ah+J3BYFuo+47JOIV1RIz2l7kD9VfnxvRH5UiQDRyMALQC7KFd2hUqIEtHklapNyKA==", + "dev": true, "dependencies": { "bn.js": "^5.2.1", - "web3-utils": "1.10.0" + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" @@ -29834,37 +28252,21 @@ "node_modules/web3-eth-iban/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/web3-eth-iban/node_modules/web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, "node_modules/web3-eth-personal": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.2.tgz", - "integrity": "sha512-+vEbJsPUJc5J683y0c2aN645vXC+gPVlFVCQu4IjPvXzJrAtUfz26+IZ6AUOth4fDJPT0f1uSLS5W2yrUdw9BQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.3.tgz", + "integrity": "sha512-avrQ6yWdADIvuNQcFZXmGLCEzulQa76hUOuVywN7O3cklB4nFc/Gp3yTvD3bOAaE7DhjLQfhUTCzXL7WMxVTsw==", "dev": true, "dependencies": { "@types/node": "^12.12.6", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-net": "1.10.2", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-net": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" @@ -29876,105 +28278,35 @@ "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true }, - "node_modules/web3-eth-personal/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-eth-personal/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-eth/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/web3-net": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.2.tgz", - "integrity": "sha512-w9i1t2z7dItagfskhaCKwpp6W3ylUR88gs68u820y5f8yfK5EbPmHc6c2lD8X9ZrTnmDoeOpIRCN/RFPtZCp+g==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.3.tgz", + "integrity": "sha512-IoSr33235qVoI1vtKssPUigJU9Fc/Ph0T9CgRi15sx+itysmvtlmXMNoyd6Xrgm9LuM4CIhxz7yDzH93B79IFg==", "dev": true, "dependencies": { - "web3-core": "1.10.2", - "web3-core-method": "1.10.2", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-method": "1.10.3", + "web3-utils": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-http": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.2.tgz", - "integrity": "sha512-G8abKtpkyKGpRVKvfjIF3I4O/epHP7mxXWN8mNMQLkQj1cjMFiZBZ13f+qI77lNJN7QOf6+LtNdKrhsTGU72TA==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.3.tgz", + "integrity": "sha512-6dAgsHR3MxJ0Qyu3QLFlQEelTapVfWNTu5F45FYh8t7Y03T1/o+YAkVxsbY5AdmD+y5bXG/XPJ4q8tjL6MgZHw==", "dev": true, "dependencies": { "abortcontroller-polyfill": "^1.7.5", "cross-fetch": "^4.0.0", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.10.2" + "web3-core-helpers": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, - "node_modules/web3-providers-http/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, "node_modules/web3-providers-http/node_modules/cross-fetch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", @@ -29984,143 +28316,53 @@ "node-fetch": "^2.6.12" } }, - "node_modules/web3-providers-http/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-http/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/web3-providers-ipc": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.2.tgz", - "integrity": "sha512-lWbn6c+SgvhLymU8u4Ea/WOVC0Gqs7OJUvauejWz+iLycxeF0xFNyXnHVAi42ZJDPVI3vnfZotafoxcNNL7Sug==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.3.tgz", + "integrity": "sha512-vP5WIGT8FLnGRfswTxNs9rMfS1vCbMezj/zHbBe/zB9GauBRTYVrUo2H/hVrhLg8Ut7AbsKZ+tCJ4mAwpKi2hA==", "dev": true, "dependencies": { "oboe": "2.1.5", - "web3-core-helpers": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-providers-ipc/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" + "web3-core-helpers": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-ws": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.2.tgz", - "integrity": "sha512-3nYSiP6grI5GvpkSoehctSywfCTodU21VY8bUtXyFHK/IVfDooNtMpd5lVIMvXVAlaxwwrCfjebokaJtKH2Iag==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.3.tgz", + "integrity": "sha512-/filBXRl48INxsh6AuCcsy4v5ndnTZ/p6bl67kmO9aK1wffv7CT++DrtclDtVMeDGCgB3van+hEf9xTAVXur7Q==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.2", + "web3-core-helpers": "1.10.3", "websocket": "^1.0.32" }, "engines": { "node": ">=8.0.0" } }, - "node_modules/web3-providers-ws/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-providers-ws/node_modules/web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ws/node_modules/web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/web3-shh": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.2.tgz", - "integrity": "sha512-UP0Kc3pHv9uULFu0+LOVfPwKBSJ6B+sJ5KflF7NyBk6TvNRxlpF3hUhuaVDCjjB/dDUR6T0EQeg25FA2uzJbag==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.3.tgz", + "integrity": "sha512-cAZ60CPvs9azdwMSQ/PSUdyV4PEtaW5edAZhu3rCXf6XxQRliBboic+AvwUvB6j3eswY50VGa5FygfVmJ1JVng==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-core": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-net": "1.10.2" + "web3-core": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-net": "1.10.3" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-utils": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.2.tgz", - "integrity": "sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", "dependencies": { "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", @@ -30135,6 +28377,17 @@ "node": ">=8.0.0" } }, + "node_modules/web3-utils/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/web3-utils/node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -30270,18 +28523,17 @@ } }, "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "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" @@ -30293,15 +28545,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, "node_modules/window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", @@ -30334,79 +28577,59 @@ "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" }, "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/wrappy": { @@ -30516,10 +28739,12 @@ } }, "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, "node_modules/yaeti": { "version": "0.0.6", @@ -30535,135 +28760,93 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "engines": { - "node": ">=6" + "node": ">=10" } }, "node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/yargs/node_modules/path-exists": { + "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/yauzl": { @@ -30696,9 +28879,9 @@ "dev": true }, "@adraffy/ens-normalize": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", - "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", "dev": true, "peer": true }, @@ -30861,12 +29044,12 @@ } }, "@aws-sdk/types": { - "version": "3.398.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", - "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dev": true, "requires": { - "@smithy/types": "^2.2.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "dependencies": { @@ -30896,16 +29079,16 @@ } }, "@babel/cli": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.10.tgz", - "integrity": "sha512-rM9ZMmaII630zGvtMtQ3P4GyHs28CHLYE9apLG7L8TgaSqcfoIGrlLSLsh4Q8kDTdZQQEXZm1M0nQtOvU/2heg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz", + "integrity": "sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.17", "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", "chokidar": "^3.4.0", "commander": "^4.0.1", - "convert-source-map": "^1.1.0", + "convert-source-map": "^2.0.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.2.0", "make-dir": "^2.1.0", @@ -31020,12 +29203,12 @@ } }, "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "requires": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "dependencies": { @@ -31088,28 +29271,28 @@ } }, "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true }, "@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -31125,12 +29308,12 @@ } }, "@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "requires": { - "@babel/types": "^7.22.10", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -31146,23 +29329,23 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", - "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "requires": { - "@babel/types": "^7.22.10" + "@babel/types": "^7.22.15" } }, "@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -31176,17 +29359,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", - "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -31201,9 +29384,9 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -31220,9 +29403,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -31233,19 +29416,19 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { @@ -31258,34 +29441,34 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.23.0" } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/helper-optimise-call-expression": { @@ -31304,24 +29487,24 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5" } }, @@ -31353,52 +29536,52 @@ } }, "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", - "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.10" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" } }, "@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", "dev": true, "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" } }, "@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -31462,29 +29645,39 @@ } }, "@babel/parser": { - "version": "7.22.14", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz", - "integrity": "sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/plugin-transform-optional-chaining": "^7.23.3" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-proposal-private-property-in-object": { @@ -31540,18 +29733,18 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -31658,89 +29851,89 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", - "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", - "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -31754,47 +29947,47 @@ } }, "@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" } }, "@babel/plugin-transform-destructuring": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", - "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -31802,19 +29995,19 @@ } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -31822,29 +30015,30 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -31852,18 +30046,18 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -31871,54 +30065,54 @@ } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", - "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" } }, @@ -31933,18 +30127,18 @@ } }, "@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -31952,9 +30146,9 @@ } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -31962,32 +30156,32 @@ } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", - "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.23.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.20" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -31995,9 +30189,9 @@ } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.22.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", - "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -32006,49 +30200,49 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -32056,27 +30250,27 @@ } }, "@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -32084,91 +30278,92 @@ } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.22.14", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.14.tgz", - "integrity": "sha512-daodMIoVo+ol/g+//c/AH+szBkFj4STQUikvBijRGL72Ph+w+AMTSh55DUETe8KJlPlDT1k/mp7NBfOuiWmoig==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", + "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -32180,59 +30375,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.11", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.11", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.11", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.12", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.11", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -32257,9 +30451,9 @@ } }, "@babel/register": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.5.tgz", - "integrity": "sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", + "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -32276,39 +30470,39 @@ "dev": true }, "@babel/runtime": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", - "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", "requires": { "regenerator-runtime": "^0.14.0" } }, "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", - "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "dependencies": { @@ -32321,13 +30515,13 @@ } }, "@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -32413,6 +30607,11 @@ "wrap-ansi": "^2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, "fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", @@ -32454,11 +30653,6 @@ "graceful-fs": "^4.1.9" } }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -32497,11 +30691,6 @@ "ansi-regex": "^2.0.0" } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" - }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -32617,15 +30806,15 @@ } }, "@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true }, "@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -32657,18 +30846,19 @@ } }, "@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true }, "@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "dev": true, "requires": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.5" } }, "@ethereumjs/rlp": { @@ -32677,12 +30867,13 @@ "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==" }, "@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "dev": true, "requires": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, "@ethereumjs/util": { @@ -32695,6 +30886,14 @@ "micro-ftch": "^0.3.1" }, "dependencies": { + "@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "requires": { + "@noble/hashes": "1.3.1" + } + }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -33132,6 +31331,12 @@ "@ethersproject/strings": "^5.7.0" } }, + "@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true + }, "@graphql-tools/batch-execute": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz", @@ -33295,12 +31500,12 @@ "requires": {} }, "@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" } @@ -33312,9 +31517,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "@josephg/resolvable": { @@ -33353,9 +31558,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", @@ -33436,17 +31641,21 @@ "optional": true }, "@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "peer": true, "requires": { - "@noble/hashes": "1.3.1" + "@noble/hashes": "1.3.2" }, "dependencies": { "@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "peer": true } } }, @@ -33988,9 +32197,9 @@ } }, "@nomicfoundation/hardhat-ethers": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.4.tgz", - "integrity": "sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", "dev": true, "peer": true, "requires": { @@ -34220,17 +32429,17 @@ } }, "@openzeppelin/contracts": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.0.tgz", - "integrity": "sha512-bv2sdS6LKqVVMLI5+zqnNrNU/CA+6z6CmwFXm/MzmOPBRSO5reEJN7z0Gbzvs0/bv/MZZXNklubpwy3v2+azsw==" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", + "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" }, "@openzeppelin/defender-admin-client": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-admin-client/-/defender-admin-client-1.48.0.tgz", - "integrity": "sha512-MN29JD6jA3PgOxF2tG0aZbMIwOCieYWkK9UbHCq1UzGPrMgGV9NVMUyVdqpv7Ynplwsjp5ZTBDOyttwvTlchHg==", + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-admin-client/-/defender-admin-client-1.54.1.tgz", + "integrity": "sha512-kRpSUdTsnSqntp4FOXIm95t+6VKHc8CUY2Si71VDuxs0q7HSPZkdpRPSntcolwEzWy9L4a8NS/QMwDF5NJ4X1g==", "dev": true, "requires": { - "@openzeppelin/defender-base-client": "1.48.0", + "@openzeppelin/defender-base-client": "1.54.1", "axios": "^1.4.0", "ethers": "^5.7.2", "lodash": "^4.17.19", @@ -34278,9 +32487,9 @@ } }, "@openzeppelin/defender-base-client": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.48.0.tgz", - "integrity": "sha512-HFO87s010hRrMjyh2xYOCEAkLe21BfIbho7n5/kikA6A1ZgXi7MsEiqnQv1zP4bxMJgxGZ5b3t4tt6fWrakbag==", + "version": "1.54.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.54.1.tgz", + "integrity": "sha512-DRGz/7KN3ZQwu28YWMOaojrC7jjPkz/uCwkC8/C8B11qwZhA5qIVvyhYHhhFOCl0J84+E3TNdvkPD2q3p2WaJw==", "dev": true, "requires": { "amazon-cognito-identity-js": "^6.0.1", @@ -34290,16 +32499,39 @@ "node-fetch": "^2.6.0" } }, + "@openzeppelin/defender-sdk-base-client": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-1.7.0.tgz", + "integrity": "sha512-tNT/uaAS37I+EZUVcH6AyM6gfvxiiBQ+tdY8Jk73XKtEdiYd0pJnKyaeeUHIlvKCNS/wyxX6hlPVjeC4hy59Nw==", + "dev": true, + "requires": { + "amazon-cognito-identity-js": "^6.3.6", + "async-retry": "^1.3.3" + } + }, + "@openzeppelin/defender-sdk-deploy-client": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-1.7.0.tgz", + "integrity": "sha512-eu/1khO5R0IdHio3BXlzUWZdr0Rgodoi49Djqtl3N78G8yN7t4RijfGrJm9rSqjrDFsjM41eWNHYGjc+KKyhKg==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.7.0", + "@openzeppelin/defender-sdk-base-client": "^1.7.0", + "axios": "^1.4.0", + "lodash": "^4.17.21" + } + }, "@openzeppelin/hardhat-upgrades": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-2.2.1.tgz", - "integrity": "sha512-Amlk2nhNpCfTCEovbqyarwBv4ZWmuiHHIcYfGy+FCSkkuSvQNVEJHoSl83Vgag+QhMtubdoggkYPqayxU46w1Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-2.5.0.tgz", + "integrity": "sha512-pRsqyRbp8LX9sTSMbL7jx4NjqjN/4PlKngmuAyRQIheYTGbRIs3FW3WyLuiCjkDlTETfmOsmzrnZxJmxDmxZIA==", "dev": true, "requires": { - "@openzeppelin/defender-admin-client": "^1.48.0", - "@openzeppelin/defender-base-client": "^1.48.0", - "@openzeppelin/platform-deploy-client": "^0.10.0", - "@openzeppelin/upgrades-core": "^1.27.0", + "@openzeppelin/defender-admin-client": "^1.52.0", + "@openzeppelin/defender-base-client": "^1.52.0", + "@openzeppelin/defender-sdk-base-client": "^1.5.0", + "@openzeppelin/defender-sdk-deploy-client": "^1.5.0", + "@openzeppelin/upgrades-core": "^1.31.2", "chalk": "^4.1.0", "debug": "^4.1.1", "ethereumjs-util": "^7.1.5", @@ -34307,19 +32539,6 @@ "undici": "^5.14.0" } }, - "@openzeppelin/platform-deploy-client": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.10.0.tgz", - "integrity": "sha512-jayQPeXqw4LnWIrNhNqgikJSre+n2NRrnEu76niSdVXc/faQkG3PmaHtRPJMFgsYxjjAiAfcMYyV95YBDuLexA==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.6.3", - "@openzeppelin/defender-base-client": "^1.48.0-rc.1", - "axios": "^1.4.0", - "lodash": "^4.17.19", - "node-fetch": "^2.6.0" - } - }, "@openzeppelin/test-helpers": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz", @@ -34339,11 +32558,11 @@ } }, "@openzeppelin/truffle-upgrades": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/truffle-upgrades/-/truffle-upgrades-1.20.1.tgz", - "integrity": "sha512-ftllLe5XZAik22wGapoamAJIdMQfNvgpTBC/4DnxGGspRWqreoXkfKuRkxpK+5xclHk6eKmXq3w58cLRXCd/iw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/truffle-upgrades/-/truffle-upgrades-1.21.0.tgz", + "integrity": "sha512-MKl0mSCLio4wNvKvSpXou0SEclbWfgLVJB1S2QXEP9bv55BB7+C+Iytc10Cx4JoKA+5Dup7c9C8g8H43yBD+lg==", "requires": { - "@openzeppelin/upgrades-core": "^1.26.2", + "@openzeppelin/upgrades-core": "^1.30.0", "@truffle/contract": "^4.3.26", "chalk": "^4.1.0", "debug": "^4.1.1", @@ -34351,9 +32570,9 @@ } }, "@openzeppelin/upgrades-core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.28.0.tgz", - "integrity": "sha512-8RKlyg98Adv+46GxDaR0awL3R8bVCcQ27DcSEwrgWOp6siHh8sZg4a2l+2dhPl1510S6uBfhHSydMH5VX2BV5g==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.32.0.tgz", + "integrity": "sha512-ZjYB5Ks5Haz8yzJDd9VzTtJyqm746+WYFOi8jeVljyGxC4Xm2wuizf/n1lw0CmCw9seNhD1J1tA4fA6ScXYPDg==", "requires": { "cbor": "^9.0.0", "chalk": "^4.1.0", @@ -34362,7 +32581,7 @@ "ethereumjs-util": "^7.0.3", "minimist": "^1.2.7", "proper-lockfile": "^4.1.1", - "solidity-ast": "^0.4.26" + "solidity-ast": "^0.4.51" } }, "@protobufjs/aspromise": { @@ -34573,9 +32792,9 @@ } }, "@scure/base": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", - "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.4.tgz", + "integrity": "sha512-wznebWtt+ejH8el87yuD4i9xLSbYZXf1Pe4DY0o/zq/eg5I0VQVXVbFs6XIM0pNVCJ/uE3t5wI9kh90mdLUxtw==" }, "@scure/bip32": { "version": "1.1.5", @@ -34692,9 +32911,9 @@ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" }, "@smithy/types": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.2.2.tgz", - "integrity": "sha512-4PS0y1VxDnELGHGgBWlDksB2LJK8TG8lcvlWxIsgR+8vROI7Ms8h1P4FQUx+ftAX2QZv5g1CJCdhdRmQKyonyw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.7.0.tgz", + "integrity": "sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw==", "dev": true, "requires": { "tslib": "^2.5.0" @@ -34726,9 +32945,9 @@ } }, "@truffle/abi-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.2.tgz", - "integrity": "sha512-MefEcxsBlprKIpfW7eh2I5zJqlWM18xk3duL7SW4VhIs6kNEec//hCpEDoE6P0m7GjqY3vk8X4vnf4aLlZkRcA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.3.tgz", + "integrity": "sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==", "requires": { "change-case": "3.0.2", "fast-check": "3.1.1", @@ -34757,14 +32976,14 @@ } }, "@truffle/blockchain-utils": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.8.tgz", - "integrity": "sha512-ZskpYDNHkXD3ota4iU3pZz6kLth87RC+wDn66Rp2Or+DqqJCKdnmS9GDctBi1EcMPDEi0BqpkdrfBuzA9uIkGg==" + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.9.tgz", + "integrity": "sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg==" }, "@truffle/code-utils": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-3.0.3.tgz", - "integrity": "sha512-VMQMXvt/nXxWvHo5K1t697se1NU7VNh3zmiFw41qaSE1DjFZ2FMsZuW1ZoLhO4NKc14uB8k8pX3NN7XoF3uP4w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-3.0.4.tgz", + "integrity": "sha512-MWK3TMisIFaBpSjK7tt1GoQan7DQDBqT2iSsdQOGD74C7r9NMwsIdnL2EYoB/DPcEJ7B8yP4grlG2fQTrPF96g==", "requires": { "cbor": "^5.2.0" }, @@ -34791,18 +33010,18 @@ } }, "@truffle/codec": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.2.tgz", - "integrity": "sha512-n9HX8R5a5+/j6Y0+lqSzIyU1cUxTRYn/xEWp0Qc1b0Vtltad7wvVh+KLGvbm/KQEX3o1RK1xRIUN2E0QlDeQnA==", + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.3.tgz", + "integrity": "sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg==", "requires": { - "@truffle/abi-utils": "^1.0.2", - "@truffle/compile-common": "^0.9.7", + "@truffle/abi-utils": "^1.0.3", + "@truffle/compile-common": "^0.9.8", "big.js": "^6.0.3", "bn.js": "^5.1.3", "cbor": "^5.2.0", "debug": "^4.3.1", "lodash": "^4.17.21", - "semver": "7.5.2", + "semver": "^7.5.4", "utf8": "^3.0.0", "web3-utils": "1.10.0" }, @@ -34840,9 +33059,9 @@ "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==" }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -34869,30 +33088,30 @@ } }, "@truffle/compile-common": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.7.tgz", - "integrity": "sha512-TXuVLc5yJ/A0bSWw5OWIdXmcyaPpj3TJQ60ki7w9cIuW65Bazw7P4FRPaVNjR9YGe1FLYJ36GSdd9V3egPbzCg==", + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.8.tgz", + "integrity": "sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ==", "requires": { - "@truffle/error": "^0.2.1", + "@truffle/error": "^0.2.2", "colors": "1.4.0" }, "dependencies": { "@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==" } } }, "@truffle/config": { - "version": "1.3.60", - "resolved": "https://registry.npmjs.org/@truffle/config/-/config-1.3.60.tgz", - "integrity": "sha512-ccpdafmky4sC9th0KgJiQsDMPqsgKLC0vgaCebBHTbOvkWHjKB5G7NDXYBd6ex3GGU3Jvs3j4sjvI2TTO+fsdw==", + "version": "1.3.61", + "resolved": "https://registry.npmjs.org/@truffle/config/-/config-1.3.61.tgz", + "integrity": "sha512-L4uyG47V+k0NrSoVJ9D+hp2jcMstihW1QlNuXiu5g3mU24BjrozlJT34DFkczh/TtRceLjdrQJKA8WJCMICutw==", "optional": true, "requires": { - "@truffle/error": "^0.2.1", - "@truffle/events": "^0.1.24", - "@truffle/provider": "^0.3.12", + "@truffle/error": "^0.2.2", + "@truffle/events": "^0.1.25", + "@truffle/provider": "^0.3.13", "conf": "^10.1.2", "debug": "^4.3.1", "find-up": "^2.1.0", @@ -34901,9 +33120,9 @@ }, "dependencies": { "@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", "optional": true }, "find-up": { @@ -34958,16 +33177,16 @@ } }, "@truffle/contract": { - "version": "4.6.29", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.29.tgz", - "integrity": "sha512-gbgmC2YdcSD4QGvx3GWGIVhyQxEPkChcC2a3D5d9aj2XfV3f6+FQw5PuL1wreA3I222ggZQqzbvMvhpp8gWs4Q==", + "version": "4.6.31", + "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.31.tgz", + "integrity": "sha512-s+oHDpXASnZosiCdzu+X1Tx5mUJUs1L1CYXIcgRmzMghzqJkaUFmR6NpNo7nJYliYbO+O9/aW8oCKqQ7rCHfmQ==", "requires": { "@ensdomains/ensjs": "^2.1.0", - "@truffle/blockchain-utils": "^0.1.8", - "@truffle/contract-schema": "^3.4.15", - "@truffle/debug-utils": "^6.0.56", - "@truffle/error": "^0.2.1", - "@truffle/interface-adapter": "^0.5.36", + "@truffle/blockchain-utils": "^0.1.9", + "@truffle/contract-schema": "^3.4.16", + "@truffle/debug-utils": "^6.0.57", + "@truffle/error": "^0.2.2", + "@truffle/interface-adapter": "^0.5.37", "bignumber.js": "^7.2.1", "debug": "^4.3.1", "ethers": "^4.0.32", @@ -34978,10 +33197,28 @@ "web3-utils": "1.10.0" }, "dependencies": { + "@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "requires": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, "@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==" }, "@types/node": { "version": "12.20.55", @@ -35093,6 +33330,15 @@ } } }, + "web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "requires": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + } + }, "web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -35105,6 +33351,14 @@ "web3-utils": "1.10.0" } }, + "web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "requires": { + "eventemitter3": "4.0.4" + } + }, "web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -35177,9 +33431,9 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" } } }, @@ -35213,6 +33467,22 @@ "web3-utils": "1.10.0" } }, + "web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "requires": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, "web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -35301,23 +33571,23 @@ } }, "@truffle/contract-schema": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.15.tgz", - "integrity": "sha512-m13e1VlXEdxiXiqv/SmPlqbdtcuhjwIGTICm+JCEO8nt0NYBbdMC2paNkpUvGz9lK139JxIupMHctEV4vgkldw==", + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.16.tgz", + "integrity": "sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==", "requires": { "ajv": "^6.10.0", "debug": "^4.3.1" } }, "@truffle/dashboard-message-bus-client": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.11.tgz", - "integrity": "sha512-ABoKtaogh5KjOw0UM5/6wYuhg4T5cMPVSSNF1rv4j3s2XGzExx3vUObvXqNO6I8gZ8xuvzClw4RmcEk8JkM8yA==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.12.tgz", + "integrity": "sha512-pI9G0La9tTstb2J2wxUZIMx6H+ZF0XBlsGN3HBkffr4edT0oT12WMCK9GxmKE22Q5VnpXl7wGjatRSEx0C9qDQ==", "optional": true, "requires": { - "@truffle/dashboard-message-bus-common": "^0.1.6", - "@truffle/promise-tracker": "^0.1.6", - "axios": "1.2.4", + "@truffle/dashboard-message-bus-common": "^0.1.7", + "@truffle/promise-tracker": "^0.1.7", + "axios": "1.5.0", "debug": "^4.3.1", "delay": "^5.0.0", "isomorphic-ws": "^4.0.1", @@ -35327,9 +33597,9 @@ }, "dependencies": { "axios": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.4.tgz", - "integrity": "sha512-lIQuCfBJvZB/Bv7+RWUqEJqNShGOVpk9v7P0ZWx5Ip0qY6u7JBAU6dzQPMLasU9vHL2uD8av/1FDJXj7n6c39w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", "optional": true, "requires": { "follow-redirects": "^1.15.0", @@ -35347,22 +33617,22 @@ } }, "@truffle/dashboard-message-bus-common": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.6.tgz", - "integrity": "sha512-93HNXILKeKgmW1YaWPdsQ55MJ0MaLzOA8kRXPnM5jF2H3KRlRxOeEg77R4YWtGH+cVZP4VYGXdpvUap/lOAnvw==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.7.tgz", + "integrity": "sha512-jN7q8LBmwQRldSzT/YJE33mnDLrp3EFFDuZyLwtQGInlfcRTXcr5yPY42jxr3Ln19dQe2Chx3I6dWtDByeKLIQ==", "optional": true }, "@truffle/db": { - "version": "2.0.34", - "resolved": "https://registry.npmjs.org/@truffle/db/-/db-2.0.34.tgz", - "integrity": "sha512-EP8Vnfwimt0G3hMcxPAtvsXrLaWPVUZLhwKWziyZdr/JJGSBG3J+z1iQ7qlZLJAxnBm2cJge+1/s2AdHWihAJA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@truffle/db/-/db-2.0.36.tgz", + "integrity": "sha512-PpUjOXZgf9Gy8RlP8bJhl5pjJRkghZUcCiGOsS0YbCCI//PGDDoKmS+3QUjXWhiMwTeld3gfUV2ip4p2hMbyVA==", "optional": true, "requires": { "@graphql-tools/delegate": "^8.4.3", "@graphql-tools/schema": "^8.3.1", - "@truffle/abi-utils": "^1.0.2", - "@truffle/code-utils": "^3.0.3", - "@truffle/config": "^1.3.60", + "@truffle/abi-utils": "^1.0.3", + "@truffle/code-utils": "^3.0.4", + "@truffle/config": "^1.3.61", "abstract-leveldown": "^7.2.0", "apollo-server": "^3.11.0", "debug": "^4.3.1", @@ -35408,9 +33678,9 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "optional": true }, "web3-utils": { @@ -35431,19 +33701,19 @@ } }, "@truffle/db-loader": { - "version": "0.2.34", - "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.2.34.tgz", - "integrity": "sha512-bZqKL9s4eKd5Hbm85aPljOYiVW/tuQflDKYBycKHJYRzrNsf+9XYlUi8jUs3BBEtcEka+oZcHosBWpO1lfOlWw==", + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.2.36.tgz", + "integrity": "sha512-Cm8uVc2eoihquMOSZm8UOuGGUvBo+/GHkxRoPAZ5pftOpSlRAug0okVOp6ETj1BujgLJ02izU/qdrwSGWwGR9A==", "requires": { - "@truffle/db": "^2.0.34" + "@truffle/db": "^2.0.36" } }, "@truffle/debug-utils": { - "version": "6.0.56", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.56.tgz", - "integrity": "sha512-tCB0nKZirWlQp+0JqqaBxZk7CIwDBIHl8Q9CyGJZA4pdAwKHHMI3FoPAXzubP7X0YuICeQsAmpOAXzOHGYGkjg==", + "version": "6.0.57", + "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.57.tgz", + "integrity": "sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA==", "requires": { - "@truffle/codec": "^0.17.2", + "@truffle/codec": "^0.17.3", "@trufflesuite/chromafi": "^3.0.0", "bn.js": "^5.1.3", "chalk": "^2.4.2", @@ -35529,6 +33799,24 @@ "web3-eth-abi": "1.10.0" }, "dependencies": { + "@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "requires": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, "@truffle/codec": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.15.3.tgz", @@ -35609,9 +33897,9 @@ } }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, "web3": { "version": "1.10.0", @@ -35651,6 +33939,15 @@ "web3-utils": "1.10.0" } }, + "web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "requires": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + } + }, "web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -35663,6 +33960,14 @@ "web3-utils": "1.10.0" } }, + "web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "requires": { + "eventemitter3": "4.0.4" + } + }, "web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -35759,6 +34064,15 @@ "web3-utils": "1.10.0" } }, + "web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "requires": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + } + }, "web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -35851,13 +34165,13 @@ "dev": true }, "@truffle/events": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/@truffle/events/-/events-0.1.24.tgz", - "integrity": "sha512-rS+jKDjmdM0g+14H/H8MzhohaTKsSS6plNNzO95MIcUs0Ytinu1DXfSkUovDpgv5h2NcRoU0BMTKCR21Y3JiNw==", + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@truffle/events/-/events-0.1.25.tgz", + "integrity": "sha512-5elJxNXPVuXDMOoIcCVox0sz95ovRhRbte/H9ht18vyOvtualb4bTjwYyRoWw6Y7j0pom0tPI3OLZWqCdKQNdA==", "optional": true, "requires": { - "@truffle/dashboard-message-bus-client": "^0.1.11", - "@truffle/spinners": "^0.2.4", + "@truffle/dashboard-message-bus-client": "^0.1.12", + "@truffle/spinners": "^0.2.5", "debug": "^4.3.1", "emittery": "^0.4.1", "web3-utils": "1.10.0" @@ -35887,15 +34201,33 @@ } }, "@truffle/interface-adapter": { - "version": "0.5.36", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.36.tgz", - "integrity": "sha512-e6ECu9YDJuQjjxphdtJatHGgjlGsX/a3rQwqG2kBrK4cynGJdlejoo2iv/7Dj97wgIMIr1qH3L2WDrfTNF+K1g==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz", + "integrity": "sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw==", "requires": { "bn.js": "^5.1.3", "ethers": "^4.0.32", "web3": "1.10.0" }, "dependencies": { + "@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "requires": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, "@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", @@ -36023,6 +34355,15 @@ "web3-utils": "1.10.0" } }, + "web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "requires": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + } + }, "web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -36035,6 +34376,14 @@ "web3-utils": "1.10.0" } }, + "web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "requires": { + "eventemitter3": "4.0.4" + } + }, "web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -36107,9 +34456,9 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" } } }, @@ -36143,6 +34492,15 @@ "web3-utils": "1.10.0" } }, + "web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "requires": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + } + }, "web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -36224,27 +34582,47 @@ } }, "@truffle/promise-tracker": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@truffle/promise-tracker/-/promise-tracker-0.1.6.tgz", - "integrity": "sha512-oUZ4Mc6Yt/qTvFZ/yD4nnUIN8pXhrBN0h4/SZ4e8W1TcHNvQkV6gUkkYkn8fZRvFwTMYjvWot+eAHHNRsSl/eA==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@truffle/promise-tracker/-/promise-tracker-0.1.7.tgz", + "integrity": "sha512-NiPXNJvdei8MRZRUjEZoL0Y7TPDR1TaeCfGUgB3md6Q7TBiqSKo2p5OT36JO106B2j57SLmXOiDn8fLb+u2sjA==", "optional": true }, "@truffle/provider": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.3.12.tgz", - "integrity": "sha512-R7zS1eyY8H37ExkMxmMqa6bFN4UYLiYSCc+4g/8IjEU2lZXhKWUXA2gWzuMPT+XWfAu+IrC1PqLIHQgYe05EVA==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.3.13.tgz", + "integrity": "sha512-W9yZO0ZUwA0LhFvf7+NNNXVSCOd4x5pTbFiXUVURjyqp7f4YooLAqnlLPSpV+6qwIwThc+86CeLlOiFslYdDIA==", "optional": true, "requires": { - "@truffle/error": "^0.2.1", - "@truffle/interface-adapter": "^0.5.36", + "@truffle/error": "^0.2.2", + "@truffle/interface-adapter": "^0.5.37", "debug": "^4.3.1", "web3": "1.10.0" }, "dependencies": { + "@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "optional": true, + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "optional": true, + "requires": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, "@truffle/error": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.1.tgz", - "integrity": "sha512-5Qy+z9dg9hP37WNdLnXH4b9MzemWrjTufRq7/DTKqimjyxCP/1zlL8gQEMdiSx1BBtAZz0xypkID/jb7AF/Osg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", "optional": true }, "@types/node": { @@ -36271,9 +34649,9 @@ } }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "optional": true }, "web3": { @@ -36317,6 +34695,16 @@ "web3-utils": "1.10.0" } }, + "web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "optional": true, + "requires": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + } + }, "web3-core-method": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", @@ -36330,6 +34718,15 @@ "web3-utils": "1.10.0" } }, + "web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "optional": true, + "requires": { + "eventemitter3": "4.0.4" + } + }, "web3-core-requestmanager": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", @@ -36433,6 +34830,24 @@ "web3-utils": "1.10.0" } }, + "web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "optional": true, + "requires": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true + } + } + }, "web3-eth-personal": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", @@ -36529,12 +34944,12 @@ } }, "@truffle/source-map-utils": { - "version": "1.3.118", - "resolved": "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.118.tgz", - "integrity": "sha512-SGOW6moch7MqsjSoUf7e/y6xuCZi5M6kEtSG1aaZQJrxrj/ZuooYpShXxISyiOAB89QZ5txCRVsN2EnNYgjjkA==", + "version": "1.3.119", + "resolved": "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.119.tgz", + "integrity": "sha512-TFYi3XvanY8WZBOfBwDHQe9HfZUXJ2ejnmFNjsq1//sbM4fUNWjeNshGqkWGxfKPh3OAzXgD4iTnPG3YeXM8YQ==", "requires": { - "@truffle/code-utils": "^3.0.3", - "@truffle/codec": "^0.17.2", + "@truffle/code-utils": "^3.0.4", + "@truffle/codec": "^0.17.3", "debug": "^4.3.1", "json-pointer": "^0.6.1", "node-interval-tree": "^1.3.3", @@ -36563,9 +34978,9 @@ } }, "@truffle/spinners": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/spinners/-/spinners-0.2.4.tgz", - "integrity": "sha512-8GsIX9GzO6wBDGoNF4yAmQEe95TiIuAJq9p+2szCKGArYbAD3kbn+mG3TMS3Gr/zAS5p7fTJxnCm60E2HghsUQ==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@truffle/spinners/-/spinners-0.2.5.tgz", + "integrity": "sha512-emYyLEuoY62MQV/RNjyVIuTPEjMyIA0WiYMG2N3yfh8OSjD/TC0HRc2oyDWtVkNNox/5D2tH2m5fFB8HOt80FQ==", "optional": true, "requires": { "@trufflesuite/spinnies": "^0.1.1" @@ -36666,9 +35081,9 @@ } }, "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", "optional": true, "requires": { "@types/node": "*" @@ -36684,17 +35099,17 @@ } }, "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", "requires": { "@types/node": "*" } }, "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "optional": true, "requires": { "@types/connect": "*", @@ -36713,9 +35128,9 @@ } }, "@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", "dev": true }, "@types/concat-stream": { @@ -36728,9 +35143,9 @@ } }, "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "optional": true, "requires": { "@types/node": "*" @@ -36743,9 +35158,9 @@ "optional": true }, "@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "requires": { "@types/ms": "*" @@ -36764,9 +35179,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.36", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", - "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "optional": true, "requires": { "@types/node": "*", @@ -36795,14 +35210,14 @@ } }, "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "optional": true }, "@types/json5": { @@ -36833,9 +35248,9 @@ "peer": true }, "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "optional": true }, "@types/minimatch": { @@ -36845,34 +35260,37 @@ "dev": true }, "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "dev": true }, "@types/node": { - "version": "20.5.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", "requires": { "@types/node": "*" } }, "@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", "devOptional": true }, "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "optional": true }, "@types/readable-stream": { @@ -36896,25 +35314,25 @@ } }, "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "requires": { "@types/node": "*" } }, "@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", "requires": { "@types/node": "*" } }, "@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "optional": true, "requires": { "@types/mime": "^1", @@ -36922,9 +35340,9 @@ } }, "@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "optional": true, "requires": { "@types/http-errors": "*", @@ -36933,15 +35351,21 @@ } }, "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "requires": { "@types/node": "*" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", @@ -37033,9 +35457,9 @@ } }, "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true }, "acorn-jsx": { @@ -37130,9 +35554,9 @@ } }, "amazon-cognito-identity-js": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.5.tgz", - "integrity": "sha512-bRAiw6uQuttufRD0TFcrWvA5hxAgPIwNzM0crmWniPdkmCxRoa68yxRaViZUbwAcGu9YPLCLqM87b1060BRddw==", + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.7.tgz", + "integrity": "sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ==", "dev": true, "requires": { "@aws-crypto/sha256-js": "1.2.2", @@ -37252,21 +35676,21 @@ } }, "apollo-server": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.12.1.tgz", - "integrity": "sha512-wgxx+J8KPTkhepi4qI9qY1xNoYzJfmvRKVUdFmFCZ3lyPO2j/+oOnAnyEVruAIQU5gquK10B0jdwVyvese9J/g==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.13.0.tgz", + "integrity": "sha512-hgT/MswNB5G1r+oBhggVX4Fjw53CFLqG15yB5sN+OrYkCVWF5YwPbJWHfSWa7699JMEXJGaoVfFzcvLZK0UlDg==", "optional": true, "requires": { "@types/express": "4.17.14", - "apollo-server-core": "^3.12.1", - "apollo-server-express": "^3.12.1", + "apollo-server-core": "^3.13.0", + "apollo-server-express": "^3.13.0", "express": "^4.17.1" } }, "apollo-server-core": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.12.1.tgz", - "integrity": "sha512-9SF5WAkkV0FZQ2HVUWI9Jada1U0jg7e8NCN9EklbtvaCeUlOLyXyM+KCWuZ7+dqHxjshbtcwylPHutt3uzoNkw==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.13.0.tgz", + "integrity": "sha512-v/g6DR6KuHn9DYSdtQijz8dLOkP78I5JSVJzPkARhDbhpH74QNwrQ2PP2URAPPEDJ2EeZNQDX8PvbYkAKqg+kg==", "optional": true, "requires": { "@apollo/utils.keyvaluecache": "^1.0.1", @@ -37304,9 +35728,9 @@ } }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "optional": true }, "yallist": { @@ -37334,9 +35758,9 @@ "requires": {} }, "apollo-server-express": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.12.1.tgz", - "integrity": "sha512-5A9efrhEXqDx08BnORWf0zPYCABENqur47VZZW8osQpSSnMINqzJiV5RMrzz8wIznecRRhEcz+BqLdiexqZdgg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.13.0.tgz", + "integrity": "sha512-iSxICNbDUyebOuM8EKb3xOrpIwOQgKxGbR2diSr4HP3IW8T3njKFOoMce50vr+moOCe1ev8BnLcw9SNbuUtf7g==", "optional": true, "requires": { "@types/accepts": "^1.3.5", @@ -37345,13 +35769,23 @@ "@types/express": "4.17.14", "@types/express-serve-static-core": "4.17.31", "accepts": "^1.3.5", - "apollo-server-core": "^3.12.1", + "apollo-server-core": "^3.13.0", "apollo-server-types": "^3.8.0", "body-parser": "^1.19.0", "cors": "^2.8.5", "parseurl": "^1.3.3" }, "dependencies": { + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "optional": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, "@types/express-serve-static-core": { "version": "4.17.31", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", @@ -37498,50 +35932,38 @@ } }, "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "requires": { "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.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.reduce": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", - "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" + "es-shim-unscopables": "^1.0.0" } }, "arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "requires": { "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" @@ -37643,9 +36065,9 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -37664,13 +36086,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" }, "dependencies": { @@ -37683,22 +36105,22 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.4.4" } }, "balanced-match": { @@ -37951,15 +36373,15 @@ } }, "browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "bs58": { @@ -38014,9 +36436,9 @@ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", "requires": { "node-gyp-build": "^4.3.0" } @@ -38056,15 +36478,6 @@ } } }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "requires": { - "streamsearch": "^1.1.0" - } - }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -38128,12 +36541,13 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "requires": { - "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": { @@ -38157,9 +36571,9 @@ "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==" }, "caniuse-lite": { - "version": "1.0.30001525", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz", - "integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==", + "version": "1.0.30001568", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", + "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", "dev": true }, "case": { @@ -38189,18 +36603,18 @@ } }, "chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "requires": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "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" } }, "chai-bn": { @@ -38251,10 +36665,13 @@ "dev": true }, "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } }, "cheerio": { "version": "1.0.0-rc.12", @@ -38405,41 +36822,14 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } }, "isobject": { @@ -38522,40 +36912,41 @@ } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" } } } @@ -38664,9 +37055,9 @@ "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==" }, "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true }, "concat-map": { @@ -38819,9 +37210,9 @@ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "convert-svg-core": { @@ -38910,12 +37301,12 @@ "dev": true }, "core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", "dev": true, "requires": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.2" } }, "core-util-is": { @@ -39094,9 +37485,9 @@ } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" }, "decode-uri-component": { "version": "0.2.2", @@ -39188,11 +37579,22 @@ } } }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -39378,9 +37780,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.508", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz", - "integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==", + "version": "1.4.610", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz", + "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==", "dev": true }, "elliptic": { @@ -39404,10 +37806,9 @@ "optional": true }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "1.0.2", @@ -39555,25 +37956,25 @@ } }, "es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "requires": { "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", + "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.1", + "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", @@ -39581,47 +37982,41 @@ "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.5.0", - "safe-array-concat": "^1.0.0", + "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.10" + "which-typed-array": "^1.1.13" } }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" } }, "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "es-to-primitive": { @@ -39762,18 +38157,19 @@ } }, "eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -39952,26 +38348,26 @@ } }, "eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "requires": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "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-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -40209,84 +38605,63 @@ } }, "eth-gas-reporter": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", - "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", "dev": true, "requires": { - "@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" }, "dependencies": { - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, "ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "requires": { - "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" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true - }, - "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", - "dev": true - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "dev": true } } }, @@ -40547,15 +38922,15 @@ } }, "ethers": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.1.tgz", - "integrity": "sha512-qX5kxIFMfg1i+epfgb0xF4WM7IqapIIu50pOJ17aebkxxa4BacW5jFrQRmCJpDEg2ZK2oNtR5QjrQ1WDBF29dA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.9.0.tgz", + "integrity": "sha512-pmfNyQzc2mseLe91FnT2vmNaTt8dDzhxZ/xItAV7uGsF4dI4ek2ufMu3rAkgQETL/TIs0GS5A+U05g9QyWnv3Q==", "dev": true, "peer": true, "requires": { - "@adraffy/ens-normalize": "1.9.2", - "@noble/hashes": "1.1.2", - "@noble/secp256k1": "1.7.1", + "@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", @@ -40563,9 +38938,9 @@ }, "dependencies": { "@noble/hashes": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", - "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "dev": true, "peer": true }, @@ -40751,6 +39126,12 @@ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -41002,9 +39383,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -41228,35 +39609,31 @@ } }, "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "requires": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "devOptional": true }, "for-each": { @@ -41382,9 +39759,9 @@ } }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.6", @@ -41806,20 +40183,20 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-port": { @@ -42056,9 +40433,9 @@ } }, "globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -42194,9 +40571,9 @@ } }, "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", "dev": true }, "handlebars": { @@ -42235,9 +40612,9 @@ } }, "hardhat": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.17.2.tgz", - "integrity": "sha512-oUv40jBeHw0dKpbyQ+iH9cmNMziweLoTW3MnkNxJ2Gc0KGLrQR/1n4vV4xY60zn2LdmRgnwPqy3CgtY0mfwIIA==", + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.2.tgz", + "integrity": "sha512-CRU3+0Cc8Qh9UpxKd8cLADDPes7ZDtKj4dTK+ERtLBomEzhRPLWklJn4VKOwjre9/k8GNd/e9DYxpfuzcxbXPQ==", "dev": true, "peer": true, "requires": { @@ -42291,20 +40668,6 @@ "ws": "^7.4.6" }, "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "peer": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "peer": true - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -42326,13 +40689,6 @@ "picomatch": "^2.0.4" } }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "peer": true - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -42340,16 +40696,6 @@ "dev": true, "peer": true }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -42360,13 +40706,6 @@ "fill-range": "^7.0.1" } }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -42377,15 +40716,6 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true - } } }, "chokidar": { @@ -42405,18 +40735,6 @@ "readdirp": "~3.6.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "peer": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -42441,24 +40759,10 @@ "dev": true, "peer": true }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "peer": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "peer": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "peer": true }, @@ -42482,13 +40786,6 @@ "locate-path": "^2.0.0" } }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "peer": true - }, "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -42507,6 +40804,13 @@ "is-glob": "^4.0.1" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "peer": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -42517,23 +40821,6 @@ "binary-extensions": "^2.0.0" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "peer": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "peer": true, - "requires": { - "argparse": "^2.0.1" - } - }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", @@ -42565,174 +40852,6 @@ "path-exists": "^3.0.0" } }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "peer": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "peer": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "peer": true - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -42859,28 +40978,6 @@ } } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "peer": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -42889,15 +40986,6 @@ "peer": true, "requires": { "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true - } } }, "tmp": { @@ -42910,47 +40998,6 @@ "os-tmpdir": "~1.0.2" } }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - } - } - }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -42958,49 +41005,6 @@ "dev": true, "peer": true, "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "peer": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "peer": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "peer": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "peer": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } } } }, @@ -43031,12 +41035,6 @@ "string-width": "^4.2.0" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -43076,14 +41074,6 @@ "sha1": "^1.1.1" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -43095,11 +41085,11 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "requires": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" } }, "has-proto": { @@ -43205,6 +41195,32 @@ "minimalistic-assert": "^1.0.1" } }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -43323,9 +41339,9 @@ } }, "http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "requires": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -43363,9 +41379,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true }, "immediate": { @@ -43424,19 +41440,13 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "install": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", - "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", - "dev": true - }, "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -43467,20 +41477,12 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dev": true, "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } + "hasown": "^2.0.0" } }, "is-arguments": { @@ -43545,28 +41547,20 @@ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dev": true, "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } + "hasown": "^2.0.0" } }, "is-date-object": { @@ -43578,22 +41572,13 @@ } }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } }, "is-dotfile": { @@ -43754,9 +41739,9 @@ } }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-string": { @@ -43949,11 +41934,21 @@ "optional": true }, "json-stable-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", - "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz", + "integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==", "requires": { - "jsonify": "^0.0.1" + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } } }, "json-stable-stringify-without-jsonify": { @@ -44004,9 +41999,9 @@ } }, "keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", "requires": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0", @@ -44043,9 +42038,9 @@ } }, "keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "requires": { "json-buffer": "3.0.1" } @@ -44447,70 +42442,12 @@ "dev": true }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "requires": { - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "loglevel": { @@ -44534,12 +42471,12 @@ } }, "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "lower-case": { @@ -44601,15 +42538,6 @@ "semver": "^5.6.0" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -44898,11 +42826,11 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "mkdirp-classic": { @@ -44930,41 +42858,38 @@ } }, "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "requires": { - "ansi-colors": "3.2.3", + "ansi-colors": "4.1.1", "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", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", "he": "1.2.0", - "js-yaml": "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" + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "dependencies": { "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "anymatch": { @@ -44977,12 +42902,27 @@ "picomatch": "^2.0.4" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -44993,34 +42933,25 @@ } }, "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" + "readdirp": "~3.6.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "fill-range": { @@ -45033,35 +42964,22 @@ } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -45071,12 +42989,6 @@ "is-glob": "^4.0.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -45087,38 +42999,36 @@ } }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "normalize-path": { @@ -45127,64 +43037,40 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^3.0.2" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "picomatch": "^2.0.4" + "picomatch": "^2.2.1" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - }, "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { - "isexe": "^2.0.0" + "has-flag": "^4.0.0" } } } @@ -45264,10 +43150,16 @@ } } }, + "n": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/n/-/n-9.2.0.tgz", + "integrity": "sha512-R8mFN2OWwNVc+r1f9fDzcT34DnDwUIHskrpTesZ6SdluaXBBnRtTu5tlfaSPloBi1Z/eGJoPO9nhyawWPad5UQ==", + "dev": true + }, "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "dev": true, "optional": true }, @@ -45354,12 +43246,6 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -45388,16 +43274,6 @@ "lodash": "^4.17.21" } }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -45408,9 +43284,9 @@ } }, "node-gyp-build": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", - "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==" + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==" }, "node-interval-tree": { "version": "1.3.3", @@ -45421,9 +43297,9 @@ } }, "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "nofilter": { @@ -45466,73 +43342,76 @@ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" }, "npm": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.1.0.tgz", - "integrity": "sha512-pZ2xybXzNGbJFZEKNbPoEXsE38Xou9VTnxxBk+B3pz0ndsGCs7iWHoUCPSsISU2hjmkWfDkJo3bYKE8RDOg4eg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.5.tgz", + "integrity": "sha512-lXdZ7titEN8CH5YJk9C/aYRU9JeDxQ4d8rwIIDsvH3SMjLjHTukB2CFstMiB30zXs4vCrPN2WH6cDq1yHBeJAw==", "dev": true, "requires": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.1.0", - "@npmcli/config": "^7.2.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", "@npmcli/fs": "^3.1.0", "@npmcli/map-workspaces": "^3.0.4", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.1", - "@sigstore/tuf": "^2.1.0", + "@npmcli/run-script": "^7.0.2", + "@sigstore/tuf": "^2.2.0", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.0", + "cacache": "^18.0.1", "chalk": "^5.3.0", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", "cli-table3": "^0.6.3", "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.3", + "glob": "^10.3.10", "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.0", + "hosted-git-info": "^7.0.1", "ini": "^4.1.1", "init-package-json": "^6.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", - "libnpmaccess": "^8.0.0", - "libnpmdiff": "^6.0.1", - "libnpmexec": "^7.0.1", - "libnpmfund": "^4.1.1", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", "libnpmhook": "^10.0.0", - "libnpmorg": "^6.0.0", - "libnpmpack": "^6.0.1", - "libnpmpublish": "^9.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", "libnpmsearch": "^7.0.0", "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.0", + "libnpmversion": "^5.0.1", "make-fetch-happen": "^13.0.0", "minimatch": "^9.0.3", - "minipass": "^7.0.3", + "minipass": "^7.0.4", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.0", + "node-gyp": "^10.0.1", "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.0.0", + "npm-registry-fetch": "^16.1.0", "npm-user-validate": "^2.0.0", "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.4", + "pacote": "^17.0.5", "parse-conflict-json": "^3.0.1", "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", "read": "^2.1.0", "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1", "ssri": "^10.0.5", + "strip-ansi": "^7.1.0", "supports-color": "^9.4.0", - "tar": "^6.1.15", + "tar": "^6.2.0", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", @@ -45560,11 +43439,6 @@ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "bundled": true, - "dev": true - }, "emoji-regex": { "version": "9.2.2", "bundled": true, @@ -45579,14 +43453,6 @@ "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } - }, - "strip-ansi": { - "version": "7.1.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } } } }, @@ -45596,56 +43462,19 @@ "dev": true }, "@npmcli/agent": { - "version": "2.1.1", + "version": "2.2.0", "bundled": true, "dev": true, "requires": { + "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" - }, - "dependencies": { - "agent-base": { - "version": "7.1.0", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.3.4" - } - }, - "http-proxy-agent": { - "version": "7.0.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^7.0.2", - "debug": "4" - } - }, - "socks-proxy-agent": { - "version": "8.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^7.0.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - } - } } }, "@npmcli/arborist": { - "version": "7.1.0", + "version": "7.2.2", "bundled": true, "dev": true, "requires": { @@ -45657,18 +43486,18 @@ "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.0", - "@npmcli/run-script": "^7.0.1", + "@npmcli/query": "^3.0.1", + "@npmcli/run-script": "^7.0.2", "bin-links": "^4.0.1", "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.0", + "hosted-git-info": "^7.0.1", "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", "minimatch": "^9.0.0", "nopt": "^7.0.0", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-registry-fetch": "^16.0.0", "npmlog": "^7.0.1", @@ -45685,12 +43514,12 @@ } }, "@npmcli/config": { - "version": "7.2.0", + "version": "8.0.3", "bundled": true, "dev": true, "requires": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "ini": "^4.1.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", @@ -45705,6 +43534,16 @@ "dev": true, "requires": { "ansi-styles": "^4.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + } } }, "@npmcli/fs": { @@ -45794,7 +43633,7 @@ } }, "@npmcli/query": { - "version": "3.0.0", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { @@ -45802,13 +43641,13 @@ } }, "@npmcli/run-script": { - "version": "7.0.1", + "version": "7.0.2", "bundled": true, "dev": true, "requires": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^9.0.0", + "node-gyp": "^10.0.0", "read-package-json-fast": "^3.0.0", "which": "^4.0.0" } @@ -45833,7 +43672,7 @@ "dev": true }, "@sigstore/sign": { - "version": "2.1.0", + "version": "2.2.0", "bundled": true, "dev": true, "requires": { @@ -45843,7 +43682,7 @@ } }, "@sigstore/tuf": { - "version": "2.1.0", + "version": "2.2.0", "bundled": true, "dev": true, "requires": { @@ -45851,11 +43690,6 @@ "tuf-js": "^2.1.0" } }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "@tufjs/canonical-json": { "version": "2.0.0", "bundled": true, @@ -45884,19 +43718,11 @@ } }, "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.5.0", + "version": "7.1.0", "bundled": true, "dev": true, "requires": { - "humanize-ms": "^1.2.1" + "debug": "^4.3.4" } }, "aggregate-error": { @@ -45909,17 +43735,14 @@ } }, "ansi-regex": { - "version": "5.0.1", + "version": "6.0.1", "bundled": true, "dev": true }, "ansi-styles": { - "version": "4.3.0", + "version": "6.2.1", "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } + "dev": true }, "aproba": { "version": "2.0.0", @@ -45932,7 +43755,7 @@ "dev": true }, "are-we-there-yet": { - "version": "4.0.0", + "version": "4.0.1", "bundled": true, "dev": true, "requires": { @@ -45951,7 +43774,7 @@ "dev": true }, "bin-links": { - "version": "4.0.2", + "version": "4.0.3", "bundled": true, "dev": true, "requires": { @@ -45992,7 +43815,7 @@ } }, "cacache": { - "version": "18.0.0", + "version": "18.0.1", "bundled": true, "dev": true, "requires": { @@ -46001,7 +43824,7 @@ "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -46021,16 +43844,16 @@ "dev": true }, "ci-info": { - "version": "3.8.0", + "version": "4.0.0", "bundled": true, "dev": true }, "cidr-regex": { - "version": "3.1.1", + "version": "4.0.3", "bundled": true, "dev": true, "requires": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" } }, "clean-stack": { @@ -46045,6 +43868,21 @@ "requires": { "string-width": "^4.2.3", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "cli-table3": { @@ -46062,7 +43900,7 @@ "dev": true }, "cmd-shim": { - "version": "6.0.1", + "version": "6.0.2", "bundled": true, "dev": true }, @@ -46091,6 +43929,21 @@ "requires": { "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "common-ancestor-path": { @@ -46098,11 +43951,6 @@ "bundled": true, "dev": true }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, "console-control-strings": { "version": "1.1.0", "bundled": true, @@ -46232,13 +44080,8 @@ "minipass": "^7.0.3" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "function-bind": { - "version": "1.1.1", + "version": "1.1.2", "bundled": true, "dev": true }, @@ -46255,15 +44098,30 @@ "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "wide-align": "^1.1.5" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "glob": { - "version": "10.3.3", + "version": "10.3.10", "bundled": true, "dev": true, "requires": { "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" @@ -46274,21 +44132,21 @@ "bundled": true, "dev": true }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true }, + "hasown": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "hosted-git-info": { - "version": "7.0.0", + "version": "7.0.1", "bundled": true, "dev": true, "requires": { @@ -46301,32 +44159,23 @@ "dev": true }, "http-proxy-agent": { - "version": "5.0.0", + "version": "7.0.0", "bundled": true, "dev": true, "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" } }, "https-proxy-agent": { - "version": "5.0.1", + "version": "7.0.2", "bundled": true, "dev": true, "requires": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" } }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, "iconv-lite": { "version": "0.6.3", "bundled": true, @@ -46342,7 +44191,7 @@ "dev": true }, "ignore-walk": { - "version": "6.0.3", + "version": "6.0.4", "bundled": true, "dev": true, "requires": { @@ -46359,20 +44208,6 @@ "bundled": true, "dev": true }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, "ini": { "version": "4.1.1", "bundled": true, @@ -46398,24 +44233,24 @@ "dev": true }, "ip-regex": { - "version": "4.3.0", + "version": "5.0.0", "bundled": true, "dev": true }, "is-cidr": { - "version": "4.0.2", + "version": "5.0.3", "bundled": true, "dev": true, "requires": { - "cidr-regex": "^3.1.1" + "cidr-regex": "4.0.3" } }, "is-core-module": { - "version": "2.12.1", + "version": "2.13.1", "bundled": true, "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-fullwidth-code-point": { @@ -46434,7 +44269,7 @@ "dev": true }, "jackspeak": { - "version": "2.2.1", + "version": "2.3.6", "bundled": true, "dev": true, "requires": { @@ -46443,7 +44278,7 @@ } }, "json-parse-even-better-errors": { - "version": "3.0.0", + "version": "3.0.1", "bundled": true, "dev": true }, @@ -46468,39 +44303,39 @@ "dev": true }, "libnpmaccess": { - "version": "8.0.0", + "version": "8.0.2", "bundled": true, "dev": true, "requires": { - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "npm-registry-fetch": "^16.0.0" } }, "libnpmdiff": { - "version": "6.0.1", + "version": "6.0.4", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.1.0", + "@npmcli/arborist": "^7.2.1", "@npmcli/disparity-colors": "^3.0.0", "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", "diff": "^5.1.0", "minimatch": "^9.0.0", - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "pacote": "^17.0.4", - "tar": "^6.1.13" + "tar": "^6.2.0" } }, "libnpmexec": { - "version": "7.0.1", + "version": "7.0.5", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "ci-info": "^3.7.1", - "npm-package-arg": "^11.0.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.1", "npmlog": "^7.0.1", "pacote": "^17.0.4", "proc-log": "^3.0.0", @@ -46511,15 +44346,15 @@ } }, "libnpmfund": { - "version": "4.1.1", + "version": "5.0.2", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.1.0" + "@npmcli/arborist": "^7.2.1" } }, "libnpmhook": { - "version": "10.0.0", + "version": "10.0.1", "bundled": true, "dev": true, "requires": { @@ -46528,7 +44363,7 @@ } }, "libnpmorg": { - "version": "6.0.0", + "version": "6.0.2", "bundled": true, "dev": true, "requires": { @@ -46537,24 +44372,24 @@ } }, "libnpmpack": { - "version": "6.0.1", + "version": "6.0.4", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "npm-package-arg": "^11.0.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "npm-package-arg": "^11.0.1", "pacote": "^17.0.4" } }, "libnpmpublish": { - "version": "9.0.0", + "version": "9.0.3", "bundled": true, "dev": true, "requires": { - "ci-info": "^3.6.1", + "ci-info": "^4.0.0", "normalize-package-data": "^6.0.0", - "npm-package-arg": "^11.0.0", + "npm-package-arg": "^11.0.1", "npm-registry-fetch": "^16.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7", @@ -46563,7 +44398,7 @@ } }, "libnpmsearch": { - "version": "7.0.0", + "version": "7.0.1", "bundled": true, "dev": true, "requires": { @@ -46571,7 +44406,7 @@ } }, "libnpmteam": { - "version": "6.0.0", + "version": "6.0.1", "bundled": true, "dev": true, "requires": { @@ -46580,19 +44415,19 @@ } }, "libnpmversion": { - "version": "5.0.0", + "version": "5.0.2", "bundled": true, "dev": true, "requires": { "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.1", + "@npmcli/run-script": "^7.0.2", "json-parse-even-better-errors": "^3.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7" } }, "lru-cache": { - "version": "10.0.1", + "version": "10.1.0", "bundled": true, "dev": true }, @@ -46623,26 +44458,16 @@ } }, "minipass": { - "version": "7.0.3", + "version": "7.0.4", "bundled": true, "dev": true }, "minipass-collect": { - "version": "1.0.2", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } + "minipass": "^7.0.3" } }, "minipass-fetch": { @@ -46769,210 +44594,20 @@ "dev": true }, "node-gyp": { - "version": "9.4.0", + "version": "10.0.1", "bundled": true, "dev": true, "requires": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", + "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "17.1.4", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.3.3", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.0.3", - "bundled": true, - "dev": true - } - } - }, - "gauge": { - "version": "4.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "lru-cache": { - "version": "7.18.3", - "bundled": true, - "dev": true - }, - "make-fetch-happen": { - "version": "11.1.1", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "nopt": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "npmlog": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "readable-stream": { - "version": "3.6.2", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "which": "^4.0.0" } }, "nopt": { @@ -47008,7 +44643,7 @@ } }, "npm-install-checks": { - "version": "6.2.0", + "version": "6.3.0", "bundled": true, "dev": true, "requires": { @@ -47021,7 +44656,7 @@ "dev": true }, "npm-package-arg": { - "version": "11.0.0", + "version": "11.0.1", "bundled": true, "dev": true, "requires": { @@ -47032,11 +44667,11 @@ } }, "npm-packlist": { - "version": "8.0.0", + "version": "8.0.1", "bundled": true, "dev": true, "requires": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" } }, "npm-pick-manifest": { @@ -47060,7 +44695,7 @@ } }, "npm-registry-fetch": { - "version": "16.0.0", + "version": "16.1.0", "bundled": true, "dev": true, "requires": { @@ -47089,14 +44724,6 @@ "set-blocking": "^2.0.0" } }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, "p-map": { "version": "4.0.0", "bundled": true, @@ -47106,7 +44733,7 @@ } }, "pacote": { - "version": "17.0.4", + "version": "17.0.5", "bundled": true, "dev": true, "requires": { @@ -47140,11 +44767,6 @@ "just-diff-apply": "^5.2.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "path-key": { "version": "3.1.1", "bundled": true, @@ -47249,14 +44871,15 @@ } }, "readable-stream": { - "version": "4.4.0", + "version": "4.4.2", "bundled": true, "dev": true, "requires": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" } }, "retry": { @@ -47264,46 +44887,6 @@ "bundled": true, "dev": true }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, "safe-buffer": { "version": "5.2.1", "bundled": true, @@ -47352,7 +44935,7 @@ "dev": true }, "signal-exit": { - "version": "4.0.2", + "version": "4.1.0", "bundled": true, "dev": true }, @@ -47382,13 +44965,13 @@ } }, "socks-proxy-agent": { - "version": "7.0.0", + "version": "8.0.2", "bundled": true, "dev": true, "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" } }, "spdx-correct": { @@ -47415,7 +44998,7 @@ } }, "spdx-license-ids": { - "version": "3.0.13", + "version": "3.0.16", "bundled": true, "dev": true }, @@ -47443,6 +45026,21 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "string-width-cjs": { @@ -47453,14 +45051,29 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "strip-ansi": { - "version": "6.0.1", + "version": "7.1.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" } }, "strip-ansi-cjs": { @@ -47469,6 +45082,13 @@ "dev": true, "requires": { "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + } } }, "supports-color": { @@ -47477,7 +45097,7 @@ "dev": true }, "tar": { - "version": "6.1.15", + "version": "6.2.0", "bundled": true, "dev": true, "requires": { @@ -47623,16 +45243,6 @@ "strip-ansi": "^7.0.1" }, "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "bundled": true, - "dev": true - }, "emoji-regex": { "version": "9.2.2", "bundled": true, @@ -47647,14 +45257,6 @@ "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } - }, - "strip-ansi": { - "version": "7.1.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } } } }, @@ -47666,13 +45268,31 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, "write-file-atomic": { "version": "5.0.1", "bundled": true, @@ -47765,49 +45385,22 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } } } }, "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-keys": { "version": "1.1.1", @@ -47832,12 +45425,12 @@ } }, "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } @@ -47853,19 +45446,6 @@ "es-abstract": "^1.22.1" } }, - "object.getownpropertydescriptors": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", - "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", - "dev": true, - "requires": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" - } - }, "object.groupby": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", @@ -48002,24 +45582,12 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -48657,20 +46225,20 @@ "dev": true }, "prettier-plugin-solidity": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz", - "integrity": "sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.2.0.tgz", + "integrity": "sha512-fgxcUZpVAP+LlRfy5JI5oaAkXGkmsje2VJ5krv/YMm+rcTZbIUwFguSw5f+WFuttMjpDm6wB4UL7WVkArEfiVA==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.16.0", - "semver": "^7.3.8", + "@solidity-parser/parser": "^0.16.2", + "semver": "^7.5.4", "solidity-comments-extractor": "^0.0.7" }, "dependencies": { "@solidity-parser/parser": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz", - "integrity": "sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "requires": { "antlr4ts": "^0.5.0-alpha.4" @@ -49051,21 +46619,14 @@ } }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -49128,52 +46689,12 @@ } } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -49319,9 +46840,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -49361,13 +46882,13 @@ } }, "regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "set-function-name": "^2.0.0" } }, "regexpp": { @@ -49495,26 +47016,6 @@ } } }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -49526,10 +47027,9 @@ "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==" }, "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" }, "requireindex": { "version": "1.1.0", @@ -49563,9 +47063,9 @@ } }, "resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "requires": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -49703,12 +47203,12 @@ "peer": true }, "safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -49929,6 +47429,27 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -49982,10 +47503,13 @@ } }, "sha1-file": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-1.0.4.tgz", - "integrity": "sha512-IgcUYjTck/UAx0wdtBoTwiy4/yiIZX6do4uaqUtryJY/pBOQC1w3Cb/bZMyC2H3QYnodL5vbX0lY69xlWqeBnA==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-2.0.1.tgz", + "integrity": "sha512-L4Kum9Lp8cWqcGKycZcXxR6spUoG4idDIUzAKjPiELnIZWxiFlZ5HFVzFxVxuWuGPsrraeL0JoGk0nFZ7AGFEQ==", + "dev": true, + "requires": { + "hasha": "^5.2.0" + } }, "sha3": { "version": "2.1.4", @@ -50100,6 +47624,41 @@ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, + "sloc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/sloc/-/sloc-0.3.0.tgz", + "integrity": "sha512-fKmMA8q5OyeZpFCxBa3FuFywQcziQXKBw9B8jwDJ/Ra3H/pkZpQJl9g5s3MIjUo2jwUDHUnaxXgVXObXFdiJBw==", + "dev": true, + "requires": { + "async": "^3.2.4", + "cli-table": "^0.3.11", + "commander": "^11.0.0", + "readdirp": "^3.3.0" + }, + "dependencies": { + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + } + } + }, "snake-case": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", @@ -50151,41 +47710,14 @@ "is-extendable": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } }, "ms": { @@ -50252,17 +47784,17 @@ "dev": true }, "sol2uml": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.13.tgz", - "integrity": "sha512-ACfGQzfciKuCZw7//P2URj1bRHoX/KnJweuPKNcctzalSZGsjNdw8uRzLl1ph00F9xqu4z9wpDGWJ0GSzox2SQ==", + "version": "2.5.20", + "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.20.tgz", + "integrity": "sha512-La+UQ4Y6n8yG3Vfy5FudhZGJvymJ13PxuC00W4pKF3iIZFcRGPVH7RLBQ8lc+JqOt+YW92oSaSGSwHnlTmd7tg==", "dev": true, "requires": { "@aduh95/viz.js": "^3.7.0", "@solidity-parser/parser": "^0.16.1", - "axios": "^1.3.4", + "axios": "^1.6.0", "axios-debug-log": "^1.0.0", "cli-color": "^2.0.3", - "commander": "^11.0.0", + "commander": "^11.1.0", "convert-svg-to-png": "^0.6.4", "debug": "^4.3.4", "diff-match-patch": "^1.0.5", @@ -50272,18 +47804,18 @@ }, "dependencies": { "@solidity-parser/parser": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz", - "integrity": "sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "requires": { "antlr4ts": "^0.5.0-alpha.4" } }, "commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true }, "ethers": { @@ -50327,9 +47859,9 @@ } }, "solc": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.21.tgz", - "integrity": "sha512-N55ogy2dkTRwiONbj4e6wMZqUNaLZkiRcjGyeafjLYzo/tf/IvhHY5P5wpe+H3Fubh9idu071i8eOGO31s1ylg==", + "version": "0.8.23", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.23.tgz", + "integrity": "sha512-uqe69kFWfJc3cKdxj+Eg9CdW1CP3PLZDPeyJStQVWL8Q9jjjKD0VuRAKBFR8mrWiq5A7gJqERxJFYJsklrVsfA==", "dev": true, "requires": { "command-exists": "^1.2.8", @@ -50337,6 +47869,7 @@ "follow-redirects": "^1.12.1", "js-sha3": "0.8.0", "memorystream": "^0.3.1", + "n": "^9.2.0", "semver": "^5.5.0", "tmp": "0.0.33" }, @@ -50376,13 +47909,68 @@ } }, "solidity-ast": { - "version": "0.4.52", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.52.tgz", - "integrity": "sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw==", + "version": "0.4.55", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.55.tgz", + "integrity": "sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA==", "requires": { "array.prototype.findlast": "^1.2.2" } }, + "solidity-code-metrics": { + "version": "0.0.25", + "resolved": "https://registry.npmjs.org/solidity-code-metrics/-/solidity-code-metrics-0.0.25.tgz", + "integrity": "sha512-of1wT4B5GL0/IahPttkEQUU3Bgq2PpLfQ1GcGdE8aMOhryWrEa4V5LYYd7cqKwyzWaRYIZ/pLUnaoJtCV2HfHA==", + "dev": true, + "requires": { + "@solidity-parser/parser": "^0.16.1", + "glob": "^8.0.3", + "sloc": "^0.3.0", + "solidity-doppelganger": "^0.0.11", + "surya": "^0.4.6" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "solidity-comments-extractor": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", @@ -50390,9 +47978,9 @@ "dev": true }, "solidity-coverage": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.4.tgz", - "integrity": "sha512-xeHOfBOjdMF6hWTbt42iH4x+7j1Atmrf5OldDPMxI+i/COdExUxszOswD9qqvcBTaLGiOrrpnh9UZjSpt4rBsg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.5.tgz", + "integrity": "sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==", "dev": true, "requires": { "@ethersproject/abi": "^5.0.9", @@ -50407,7 +47995,7 @@ "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", @@ -50418,20 +48006,14 @@ }, "dependencies": { "@solidity-parser/parser": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz", - "integrity": "sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "requires": { "antlr4ts": "^0.5.0-alpha.4" } }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -50441,31 +48023,6 @@ "color-convert": "^1.9.0" } }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -50477,22 +48034,6 @@ "supports-color": "^5.3.0" } }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "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" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -50508,39 +48049,12 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -50552,71 +48066,12 @@ "universalify": "^0.1.0" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -50626,157 +48081,159 @@ "yallist": "^4.0.0" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "lru-cache": "^6.0.0" } }, - "mocha": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", - "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "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" - }, - "dependencies": { - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "has-flag": "^3.0.0" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + } + } + }, + "solidity-docgen": { + "version": "0.6.0-beta.36", + "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.36.tgz", + "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", + "dev": true, + "requires": { + "handlebars": "^4.7.7", + "solidity-ast": "^0.4.38" + } + }, + "solidity-doppelganger": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/solidity-doppelganger/-/solidity-doppelganger-0.0.11.tgz", + "integrity": "sha512-mLIuW1Gfcr49zAZuE3XiQoqvkIAOKJBsgg//3DUvX8G6PvQErfnEKSajXwrYmW27oawwB/qbdRYuFR0inpsJQQ==", + "dev": true, + "requires": { + "@solidity-parser/parser": "^0.16.1", + "glob": "^8.0.3", + "yargs": "^17.0.1" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "balanced-match": "^1.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" } }, - "path-exists": { + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { - "picomatch": "^2.0.4" + "brace-expansion": "^2.0.1" } }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "ansi-regex": "^5.0.1" } }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "isexe": "^2.0.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true } } }, - "solidity-docgen": { - "version": "0.6.0-beta.36", - "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.36.tgz", - "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", - "dev": true, - "requires": { - "handlebars": "^4.7.7", - "solidity-ast": "^0.4.38" - } - }, "solium": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/solium/-/solium-1.2.5.tgz", @@ -50884,6 +48341,12 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", @@ -50925,12 +48388,6 @@ "path-is-absolute": "^1.0.0" } }, - "growl": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", - "dev": true - }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -51042,12 +48499,6 @@ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", @@ -51057,6 +48508,12 @@ "has-flag": "^2.0.0" } }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -51203,9 +48660,9 @@ } }, "spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" }, "split-string": { "version": "3.1.0", @@ -51223,9 +48680,9 @@ "dev": true }, "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -51283,41 +48740,14 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } } } @@ -51327,18 +48757,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "dev": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true - }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -51363,33 +48781,33 @@ } }, "string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "requires": { "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": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "requires": { "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": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "requires": { "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" } }, "strip-ansi": { @@ -51482,283 +48900,92 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "surya": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.6.tgz", - "integrity": "sha512-zaTYkRbms26cuOWu5jon5l4OsToHX7ZEflqTozXgq/XxUL3VY+tEnxT9Te2WVsA/sYgZPwcH92yQZJgljsss4g==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.11.tgz", + "integrity": "sha512-SsDGqYQ1XCkGfCutLQ5s0Es2Tt41lY4FcrxlMiiOzPVJbD3AclI+Cot2SbtXuw/CeqRqaugLE5B95tfMDsRp9g==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.14.1", + "@solidity-parser/parser": "^0.16.1", "c3-linearization": "^0.3.0", "colors": "^1.4.0", "graphviz": "0.0.9", - "sha1-file": "^1.0.4", + "sha1-file": "^2.0.0", "treeify": "^1.1.0", - "yargs": "^11.1.1" + "yargs": "^17.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "antlr4ts": "^0.5.0-alpha.4" } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { - "pump": "^3.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "isexe": "^2.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-regex": "^5.0.1" } }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, "yargs": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", - "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.0", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true } } }, @@ -52091,9 +49318,9 @@ }, "dependencies": { "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" } } }, @@ -52127,11 +49354,6 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -52167,11 +49389,6 @@ "fill-range": "^7.0.1" } }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -52187,31 +49404,11 @@ "readdirp": "~3.6.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" - }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -52229,11 +49426,6 @@ "path-exists": "^4.0.0" } }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - }, "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -52256,11 +49448,6 @@ "binary-extensions": "^2.0.0" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -52277,15 +49464,6 @@ "p-locate": "^5.0.0" } }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, "minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -52356,24 +49534,6 @@ "picomatch": "^2.2.1" } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -52381,51 +49541,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } } } }, @@ -52462,10 +49577,10 @@ "wrap-ansi": "^6.2.0" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "is-fullwidth-code-point": { @@ -52474,6 +49589,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -52494,6 +49615,12 @@ "ansi-regex": "^5.0.1" } }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -52505,6 +49632,12 @@ "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -52824,14 +49957,19 @@ "dev": true }, "undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "version": "5.28.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", + "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", "dev": true, "requires": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" } }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "unfetch": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", @@ -52935,9 +50073,9 @@ } }, "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -53064,24 +50202,24 @@ "optional": true }, "web3": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.2.tgz", - "integrity": "sha512-DAtZ3a3ruPziE80uZ3Ob0YDZxt6Vk2un/F5BcBrxO70owJ9Z1Y2+loZmbh1MoAmoLGjA/SUSHeUtid3fYmBaog==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.3.tgz", + "integrity": "sha512-DgUdOOqC/gTqW+VQl1EdPxrVRPB66xVNtuZ5KD4adVBtko87hkgM8BTZ0lZ8IbUfnQk6DyjcDujMiH3oszllAw==", "dev": true, "requires": { - "web3-bzz": "1.10.2", - "web3-core": "1.10.2", - "web3-eth": "1.10.2", - "web3-eth-personal": "1.10.2", - "web3-net": "1.10.2", - "web3-shh": "1.10.2", - "web3-utils": "1.10.2" + "web3-bzz": "1.10.3", + "web3-core": "1.10.3", + "web3-eth": "1.10.3", + "web3-eth-personal": "1.10.3", + "web3-net": "1.10.3", + "web3-shh": "1.10.3", + "web3-utils": "1.10.3" } }, "web3-bzz": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.2.tgz", - "integrity": "sha512-vLOfDCj6198Qc7esDrCKeFA/M3ZLbowsaHQ0hIL4NmIHoq7lU8aSRTa5AI+JBh8cKN1gVryJsuW2ZCc5bM4I4Q==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.3.tgz", + "integrity": "sha512-XDIRsTwekdBXtFytMpHBuun4cK4x0ZMIDXSoo1UVYp+oMyZj07c7gf7tNQY5qZ/sN+CJIas4ilhN25VJcjSijQ==", "dev": true, "requires": { "@types/node": "^12.12.6", @@ -53098,18 +50236,18 @@ } }, "web3-core": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.2.tgz", - "integrity": "sha512-qTn2UmtE8tvwMRsC5pXVdHxrQ4uZ6jiLgF5DRUVtdi7dPUmX18Dp9uxKfIfhGcA011EAn8P6+X7r3pvi2YRxBw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.3.tgz", + "integrity": "sha512-Vbk0/vUNZxJlz3RFjAhNNt7qTpX8yE3dn3uFxfX5OHbuon5u65YEOd3civ/aQNW745N0vGUlHFNxxmn+sG9DIw==", "dev": true, "requires": { "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-requestmanager": "1.10.2", - "web3-utils": "1.10.2" + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-requestmanager": "1.10.3", + "web3-utils": "1.10.3" }, "dependencies": { "@types/node": { @@ -53123,276 +50261,110 @@ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } } } }, "web3-core-helpers": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", - "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.3.tgz", + "integrity": "sha512-Yv7dQC3B9ipOc5sWm3VAz1ys70Izfzb8n9rSiQYIPjpqtJM+3V4EeK6ghzNR6CO2es0+Yu9CtCkw0h8gQhrTxA==", + "dev": true, "requires": { - "web3-eth-iban": "1.10.0", - "web3-utils": "1.10.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "web3-eth-iban": "1.10.3", + "web3-utils": "1.10.3" } }, "web3-core-method": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.2.tgz", - "integrity": "sha512-gG6ES+LOuo01MJHML4gnEt702M8lcPGMYZoX8UjZzmEebGrPYOY9XccpCrsFgCeKgQzM12SVnlwwpMod1+lcLg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.3.tgz", + "integrity": "sha512-VZ/Dmml4NBmb0ep5PTSg9oqKoBtG0/YoMPei/bq/tUdlhB2dMB79sbeJPwx592uaV0Vpk7VltrrrBv5hTM1y4Q==", "dev": true, "requires": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.10.2", - "web3-core-promievent": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-utils": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-core-promievent": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.2.tgz", - "integrity": "sha512-Qkkb1dCDOU8dZeORkcwJBQRAX+mdsjx8LqFBB+P4W9QgwMqyJ6LXda+y1XgyeEVeKEmY1RCeTq9Y94q1v62Sfw==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } + "web3-core-helpers": "1.10.3", + "web3-core-promievent": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-utils": "1.10.3" } }, "web3-core-promievent": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", - "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.3.tgz", + "integrity": "sha512-HgjY+TkuLm5uTwUtaAfkTgRx/NzMxvVradCi02gy17NxDVdg/p6svBHcp037vcNpkuGeFznFJgULP+s2hdVgUQ==", + "dev": true, "requires": { "eventemitter3": "4.0.4" } }, "web3-core-requestmanager": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.2.tgz", - "integrity": "sha512-nlLeNJUu6fR+ZbJr2k9Du/nN3VWwB4AJPY4r6nxUODAmykgJq57T21cLP/BEk6mbiFQYGE9TrrPhh4qWxQEtAw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.3.tgz", + "integrity": "sha512-VT9sKJfgM2yBOIxOXeXiDuFMP4pxzF6FT+y8KTLqhDFHkbG3XRe42Vm97mB/IvLQCJOmokEjl3ps8yP1kbggyw==", "dev": true, "requires": { "util": "^0.12.5", - "web3-core-helpers": "1.10.2", - "web3-providers-http": "1.10.2", - "web3-providers-ipc": "1.10.2", - "web3-providers-ws": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } + "web3-core-helpers": "1.10.3", + "web3-providers-http": "1.10.3", + "web3-providers-ipc": "1.10.3", + "web3-providers-ws": "1.10.3" } }, "web3-core-subscriptions": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.2.tgz", - "integrity": "sha512-MiWcKjz4tco793EPPPLc/YOJmYUV3zAfxeQH/UVTfBejMfnNvmfwKa2SBKfPIvKQHz/xI5bV2TF15uvJEucU7w==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.3.tgz", + "integrity": "sha512-KW0Mc8sgn70WadZu7RjQ4H5sNDJ5Lx8JMI3BWos+f2rW0foegOCyWhRu33W1s6ntXnqeBUw5rRCXZRlA3z+HNA==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } + "web3-core-helpers": "1.10.3" } }, "web3-eth": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.2.tgz", - "integrity": "sha512-s38rhrntyhGShmXC4R/aQtfkpcmev9c7iZwgb9CDIBFo7K8nrEJvqIOyajeZTxnDIiGzTJmrHxiKSadii5qTRg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.3.tgz", + "integrity": "sha512-Uk1U2qGiif2mIG8iKu23/EQJ2ksB1BQXy3wF3RvFuyxt8Ft9OEpmGlO7wOtAyJdoKzD5vcul19bJpPcWSAYZhA==", "dev": true, "requires": { - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-eth-abi": "1.10.2", - "web3-eth-accounts": "1.10.2", - "web3-eth-contract": "1.10.2", - "web3-eth-ens": "1.10.2", - "web3-eth-iban": "1.10.2", - "web3-eth-personal": "1.10.2", - "web3-net": "1.10.2", - "web3-utils": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-eth-abi": "1.10.3", + "web3-eth-accounts": "1.10.3", + "web3-eth-contract": "1.10.3", + "web3-eth-ens": "1.10.3", + "web3-eth-iban": "1.10.3", + "web3-eth-personal": "1.10.3", + "web3-net": "1.10.3", + "web3-utils": "1.10.3" } }, "web3-eth-abi": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.2.tgz", - "integrity": "sha512-pY4fQUio7W7ZRSLf+vsYkaxJqaT/jHcALZjIxy+uBQaYAJ3t6zpQqMZkJB3Dw7HUODRJ1yI0NPEFGTnkYf/17A==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.3.tgz", + "integrity": "sha512-O8EvV67uhq0OiCMekqYsDtb6FzfYzMXT7VMHowF8HV6qLZXCGTdB/NH4nJrEh2mFtEwVdS6AmLFJAQd2kVyoMQ==", "dev": true, "requires": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.10.2" + "web3-utils": "1.10.3" } }, "web3-eth-accounts": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.2.tgz", - "integrity": "sha512-6/HhCBYAXN/f553/SyxS9gY62NbLgpD1zJpENcvRTDpJN3Znvli1cmpl5Q3ZIUJkvHnG//48EWfWh0cbb3fbKQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.3.tgz", + "integrity": "sha512-8MipGgwusDVgn7NwKOmpeo3gxzzd+SmwcWeBdpXknuyDiZSQy9tXe+E9LeFGrmys/8mLLYP79n3jSbiTyv+6pQ==", "dev": true, "requires": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", + "@ethereumjs/common": "2.6.5", + "@ethereumjs/tx": "3.5.2", "@ethereumjs/util": "^8.1.0", "eth-lib": "0.2.8", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-utils": "1.10.3" }, "dependencies": { "eth-lib": { @@ -53407,189 +50379,75 @@ } }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - } - } } } }, "web3-eth-contract": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.2.tgz", - "integrity": "sha512-CZLKPQRmupP/+OZ5A/CBwWWkBiz5B/foOpARz0upMh1yjb0dEud4YzRW2gJaeNu0eGxDLsWVaXhUimJVGYprQw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.3.tgz", + "integrity": "sha512-Y2CW61dCCyY4IoUMD4JsEQWrILX4FJWDWC/Txx/pr3K/+fGsBGvS9kWQN5EsVXOp4g7HoFOfVh9Lf7BmVVSRmg==", "dev": true, "requires": { "@types/bn.js": "^5.1.1", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-promievent": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-eth-abi": "1.10.2", - "web3-utils": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-core-promievent": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.2.tgz", - "integrity": "sha512-Qkkb1dCDOU8dZeORkcwJBQRAX+mdsjx8LqFBB+P4W9QgwMqyJ6LXda+y1XgyeEVeKEmY1RCeTq9Y94q1v62Sfw==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-promievent": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-eth-abi": "1.10.3", + "web3-utils": "1.10.3" } }, "web3-eth-ens": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.2.tgz", - "integrity": "sha512-kTQ42UdNHy4BQJHgWe97bHNMkc3zCMBKKY7t636XOMxdI/lkRdIjdE5nQzt97VjQvSVasgIWYKRAtd8aRaiZiQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.3.tgz", + "integrity": "sha512-hR+odRDXGqKemw1GFniKBEXpjYwLgttTES+bc7BfTeoUyUZXbyDHe5ifC+h+vpzxh4oS0TnfcIoarK0Z9tFSiQ==", "dev": true, "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-promievent": "1.10.2", - "web3-eth-abi": "1.10.2", - "web3-eth-contract": "1.10.2", - "web3-utils": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-core-promievent": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.2.tgz", - "integrity": "sha512-Qkkb1dCDOU8dZeORkcwJBQRAX+mdsjx8LqFBB+P4W9QgwMqyJ6LXda+y1XgyeEVeKEmY1RCeTq9Y94q1v62Sfw==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-promievent": "1.10.3", + "web3-eth-abi": "1.10.3", + "web3-eth-contract": "1.10.3", + "web3-utils": "1.10.3" } }, "web3-eth-iban": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", - "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.3.tgz", + "integrity": "sha512-ZCfOjYKAjaX2TGI8uif5ah+J3BYFuo+47JOIV1RIz2l7kD9VfnxvRH5UiQDRyMALQC7KFd2hUqIEtHklapNyKA==", + "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.10.0" + "web3-utils": "1.10.3" }, "dependencies": { "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true } } }, "web3-eth-personal": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.2.tgz", - "integrity": "sha512-+vEbJsPUJc5J683y0c2aN645vXC+gPVlFVCQu4IjPvXzJrAtUfz26+IZ6AUOth4fDJPT0f1uSLS5W2yrUdw9BQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.3.tgz", + "integrity": "sha512-avrQ6yWdADIvuNQcFZXmGLCEzulQa76hUOuVywN7O3cklB4nFc/Gp3yTvD3bOAaE7DhjLQfhUTCzXL7WMxVTsw==", "dev": true, "requires": { "@types/node": "^12.12.6", - "web3-core": "1.10.2", - "web3-core-helpers": "1.10.2", - "web3-core-method": "1.10.2", - "web3-net": "1.10.2", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-helpers": "1.10.3", + "web3-core-method": "1.10.3", + "web3-net": "1.10.3", + "web3-utils": "1.10.3" }, "dependencies": { "@types/node": { @@ -53597,64 +50455,32 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } } } }, "web3-net": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.2.tgz", - "integrity": "sha512-w9i1t2z7dItagfskhaCKwpp6W3ylUR88gs68u820y5f8yfK5EbPmHc6c2lD8X9ZrTnmDoeOpIRCN/RFPtZCp+g==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.3.tgz", + "integrity": "sha512-IoSr33235qVoI1vtKssPUigJU9Fc/Ph0T9CgRi15sx+itysmvtlmXMNoyd6Xrgm9LuM4CIhxz7yDzH93B79IFg==", "dev": true, "requires": { - "web3-core": "1.10.2", - "web3-core-method": "1.10.2", - "web3-utils": "1.10.2" + "web3-core": "1.10.3", + "web3-core-method": "1.10.3", + "web3-utils": "1.10.3" } }, "web3-providers-http": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.2.tgz", - "integrity": "sha512-G8abKtpkyKGpRVKvfjIF3I4O/epHP7mxXWN8mNMQLkQj1cjMFiZBZ13f+qI77lNJN7QOf6+LtNdKrhsTGU72TA==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.3.tgz", + "integrity": "sha512-6dAgsHR3MxJ0Qyu3QLFlQEelTapVfWNTu5F45FYh8t7Y03T1/o+YAkVxsbY5AdmD+y5bXG/XPJ4q8tjL6MgZHw==", "dev": true, "requires": { "abortcontroller-polyfill": "^1.7.5", "cross-fetch": "^4.0.0", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.10.2" + "web3-core-helpers": "1.10.3" }, "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, "cross-fetch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", @@ -53663,122 +50489,46 @@ "requires": { "node-fetch": "^2.6.12" } - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } } } }, "web3-providers-ipc": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.2.tgz", - "integrity": "sha512-lWbn6c+SgvhLymU8u4Ea/WOVC0Gqs7OJUvauejWz+iLycxeF0xFNyXnHVAi42ZJDPVI3vnfZotafoxcNNL7Sug==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.3.tgz", + "integrity": "sha512-vP5WIGT8FLnGRfswTxNs9rMfS1vCbMezj/zHbBe/zB9GauBRTYVrUo2H/hVrhLg8Ut7AbsKZ+tCJ4mAwpKi2hA==", "dev": true, "requires": { "oboe": "2.1.5", - "web3-core-helpers": "1.10.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } + "web3-core-helpers": "1.10.3" } }, "web3-providers-ws": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.2.tgz", - "integrity": "sha512-3nYSiP6grI5GvpkSoehctSywfCTodU21VY8bUtXyFHK/IVfDooNtMpd5lVIMvXVAlaxwwrCfjebokaJtKH2Iag==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.3.tgz", + "integrity": "sha512-/filBXRl48INxsh6AuCcsy4v5ndnTZ/p6bl67kmO9aK1wffv7CT++DrtclDtVMeDGCgB3van+hEf9xTAVXur7Q==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.2", + "web3-core-helpers": "1.10.3", "websocket": "^1.0.32" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "web3-core-helpers": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz", - "integrity": "sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ==", - "dev": true, - "requires": { - "web3-eth-iban": "1.10.2", - "web3-utils": "1.10.2" - } - }, - "web3-eth-iban": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz", - "integrity": "sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.2" - } - } } }, "web3-shh": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.2.tgz", - "integrity": "sha512-UP0Kc3pHv9uULFu0+LOVfPwKBSJ6B+sJ5KflF7NyBk6TvNRxlpF3hUhuaVDCjjB/dDUR6T0EQeg25FA2uzJbag==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.3.tgz", + "integrity": "sha512-cAZ60CPvs9azdwMSQ/PSUdyV4PEtaW5edAZhu3rCXf6XxQRliBboic+AvwUvB6j3eswY50VGa5FygfVmJ1JVng==", "dev": true, "requires": { - "web3-core": "1.10.2", - "web3-core-method": "1.10.2", - "web3-core-subscriptions": "1.10.2", - "web3-net": "1.10.2" + "web3-core": "1.10.3", + "web3-core-method": "1.10.3", + "web3-core-subscriptions": "1.10.3", + "web3-net": "1.10.3" } }, "web3-utils": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.2.tgz", - "integrity": "sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", "requires": { "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", @@ -53790,6 +50540,14 @@ "utf8": "3.0.0" }, "dependencies": { + "@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "requires": { + "@noble/hashes": "1.3.1" + } + }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -53902,32 +50660,22 @@ } }, "which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" }, "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "requires": { "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" } }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, "window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", @@ -53951,64 +50699,41 @@ "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" } } } @@ -54096,10 +50821,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yaeti": { "version": "0.0.6", @@ -54112,114 +50836,72 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "dependencies": { "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "path-exists": { + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" } } } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "dependencies": { "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" } } }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - } - }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index 4a340811..80f68a38 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "test:deployment": "npx truffle test test/deployment/deployment.test.js", "test:proxy": "npx truffle test test/proxy/general/Proxy.test.js test/proxy/general/UpgradeProxy.test.js", "test:metaTx": "npx truffle test test/standard/modules/MetaTxModule.test.js test/proxy/modules/MetaTxModule.test.js", - "test:hardhat:burn": "npx hardhat test test/standard/modules/BurnModule.test.js test/proxy/modules/BurnModule.test.js", - "test:hardhat:mint": "npx hardhat test test/standard/modules/MintModule.test.js test/proxy/modules/MintModule.test.js", + "test:hardhat:burn": "npx hardhat test test/standard/modules/ERC20BurnModule.test.js test/proxy/modules/ERC20BurnModule.test.js", + "test:hardhat:mint": "npx hardhat test test/standard/modules/ERC20MintModule.test.js test/proxy/modules/ERC20MintModule.test.js", "test:hardhat:erc20Base": "npx hardhat test test/standard/modules/ERC20BaseModule.test.js test/proxy/modules/ERC20BaseModule.test.js", "test:hardhat:debt": "npx hardhat test test/standard/modules/DebtModule.test.js test/proxy/modules/DebtModule.test.js", "test:hardhat:base": "npx hardhat test test/standard/modules/BaseModule.test.js test/proxy/modules/BaseModule.test.js", @@ -52,10 +52,10 @@ "test:hardhat:creditEvents": "npx hardhat test test/standard/modules/CreditEventsModule.test.js test/proxy/modules/CreditEventsModule.test.js", "test:hardhat:validation": "npx hardhat test test/standard/modules/ValidationModule/ValidationModule.test.js test/proxy/modules/ValidationModule/ValidationModule.test.js test/standard/modules/ValidationModule/ValidationModuleConstructor.test.js test/proxy/modules/ValidationModule/ValidationModuleConstructor.test.js test/standard/modules/ValidationModule/ValidationModuleSetRuleEngine.test.js test/proxy/modules/ValidationModule/ValidationModuleSetRuleEngine.test.js", "test:hardhat:authorization": "npx hardhat test test/standard/modules/AuthorizationModule/AuthorizationModule.test.js test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js", - "test:hardhat:snapshot": "npx hardhat test test/standard/modules/SnapshotModule.test.js test/proxy/modules/SnapshotModule.test.js", + "test:hardhat:snapshot": "npx hardhat test test/standard/modules/ERC20SnapshotModule.test.js test/proxy/modules/ERC20SnapshotModule.test.js", "test:hardhat:enforcement": "npx hardhat test test/standard/modules/EnforcementModule.test.js test/proxy/modules/EnforcementModule.test.js", "test:hardhat:metaTx": "npx hardhat test test/standard/modules/MetaTxModule.test.js test/proxy/modules/MetaTxModule.test.js", - "test:hardhat:proxy": "npx hardhat test test/proxy/general/Proxy.test.js test/proxy/general/UpgradeProxy.test.js", + "test:hardhat:proxy": "npx hardhat test test/proxy/general/Beacon.test.js test/proxy/general/Transparent.test.js test/proxy/general/Proxy.test.js test/proxy/general/UpgradeProxy.test.js", "test:hardhat:deployment": "npx hardhat test test/deployment/deployment.test.js" }, "repository": { @@ -91,30 +91,30 @@ "eslint-plugin-n": "^15.7.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.1", - "eth-gas-reporter": "^0.2.25", + "eth-gas-reporter": "^0.2.27", "ethereumjs-util": "^7.1.5", "ethjs-abi": "^0.2.1", "ethlint": "^1.2.5", "hardhat-contract-sizer": "^2.10.0", "hardhat-gas-reporter": "^1.0.9", - "install": "^0.13.0", "keccak256": "^1.0.6", - "npm": "^10.1.0", + "npm": "^10.2.5", "prettier": "^2.8.7", "prettier-plugin-solidity": "^1.1.3", - "sol2uml": "^2.5.4", + "sol2uml": "^2.5.20", "solc": "^0.8.19", "solgraph": "^1.0.2", - "solidity-coverage": "^0.8.2", + "solidity-code-metrics": "^0.0.25", + "solidity-coverage": "^0.8.5", "solidity-docgen": "^0.6.0-beta.35", - "surya": "^0.4.6", + "surya": "^0.4.11", "truffle": "5.9.3", "truffle-contract-size": "^2.0.1", "truffle-flattener": "^1.6.0", "web3": "^1.9.0" }, "dependencies": { - "@openzeppelin/contracts": "^5.0.0", + "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/truffle-upgrades": "^1.17.1", "eth-sig-util": "^3.0.1", "ethereumjs-wallet": "^1.0.2" diff --git a/test/common/AuthorizationModule/AuthorizationModuleCommon.js b/test/common/AuthorizationModule/AuthorizationModuleCommon.js index e8df45d8..614a542e 100644 --- a/test/common/AuthorizationModule/AuthorizationModuleCommon.js +++ b/test/common/AuthorizationModule/AuthorizationModuleCommon.js @@ -1,11 +1,14 @@ -const { expectEvent, time } = require('@openzeppelin/test-helpers') +const { expectEvent } = require('@openzeppelin/test-helpers') const { expectRevertCustomError } = require('../../../openzeppelin-contracts-upgradeable/test/helpers/customError') -const { PAUSER_ROLE, DEFAULT_ADMIN_ROLE } = require('../../utils') +const { + PAUSER_ROLE, + DEFAULT_ADMIN_ROLE, + ZERO_ADDRESS +} = require('../../utils') const chai = require('chai') const should = chai.should() -const { DEFAULT_ADMIN_DELAY_WEB3 } = require('../../deploymentUtils') function AuthorizationModuleCommon (admin, address1, address2) { context('Authorization', function () { it('testAdminCanGrantRole', async function () { @@ -76,88 +79,6 @@ function AuthorizationModuleCommon (admin, address1, address2) { // Assert (await this.cmtat.hasRole(PAUSER_ROLE, address1)).should.equal(true) }) - - it('testCanAdminTransferAdminship', async function () { - // Arrange - Assert - (await this.cmtat.owner()).should.equal(admin) - // Act 1 - // Starts an admin transfer - await this.cmtat.beginDefaultAdminTransfer(address1, { from: admin }) - - // Wait for acceptance - const acceptSchedule = web3.utils - .toBN(await time.latest()) - .add(DEFAULT_ADMIN_DELAY_WEB3) - // We jump into the future - await time.increase(acceptSchedule.addn(1)) - - // Act 2 - this.logs = await this.cmtat.acceptDefaultAdminTransfer({ from: address1 }); - - // Assert - (await this.cmtat.owner()).should.equal(address1) - // Events - expectEvent(this.logs, 'RoleRevoked', { - role: DEFAULT_ADMIN_ROLE, - account: admin - }) - expectEvent(this.logs, 'RoleGranted', { - role: DEFAULT_ADMIN_ROLE, - account: address1 - }) - }) - - /* - Already tested by OpenZeppelin library - */ - it('testCannotNonAdminTransferAdminship', async function () { - // Arrange - Assert - (await this.cmtat.owner()).should.equal(admin) - // Act - // Starts an admin transfer - await expectRevertCustomError( - this.cmtat.beginDefaultAdminTransfer(address1, { from: address1 }), - 'AccessControlUnauthorizedAccount', - [address1, DEFAULT_ADMIN_ROLE] - ); - // Assert - (await this.cmtat.owner()).should.equal(admin) - }) - - it('testCanAdminTransferAdminshipDirectly', async function () { - // Arrange - Assert - (await this.cmtat.owner()).should.equal(admin) - - // Act - // Transfer the rights - await this.cmtat.transferAdminshipDirectly(address1, { from: admin }); - - // Assert - (await this.cmtat.owner()).should.equal(address1) - // Events - expectEvent(this.logs, 'RoleRevoked', { - role: DEFAULT_ADMIN_ROLE, - account: admin - }) - expectEvent(this.logs, 'RoleGranted', { - role: DEFAULT_ADMIN_ROLE, - account: address1 - }) - }) - - it('testCannotNonAdminTransferAdminshipDirectly', async function () { - // Arrange - Assert - (await this.cmtat.owner()).should.equal(admin) - // Transfer the rights - await expectRevertCustomError( - this.cmtat.transferAdminshipDirectly(address1, { from: address2 }), - 'AccessControlUnauthorizedAccount', - [address2, DEFAULT_ADMIN_ROLE] - ); - - // Assert - (await this.cmtat.owner()).should.equal(admin) - }) }) } module.exports = AuthorizationModuleCommon diff --git a/test/common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon.js b/test/common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon.js new file mode 100644 index 00000000..a2539d74 --- /dev/null +++ b/test/common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon.js @@ -0,0 +1,135 @@ +const { expectEvent } = require('@openzeppelin/test-helpers') +const { + expectRevertCustomError +} = require('../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js') +const { DEFAULT_ADMIN_ROLE } = require('../../utils.js') +const { should } = require('chai').should() + +function AuthorizationModuleSetAuthorizationEngineCommon ( + admin, + address1, + authorizationEngine +) { + context('AuthorizationEngineSetTest', function () { + it('testCanBeSetByAdminIfNotAlreadySet', async function () { + // Act + this.logs = await this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { + from: admin + } + ) + // Assert + // emits a RuleEngineSet event + expectEvent(this.logs, 'AuthorizationEngine', { + newAuthorizationEngine: this.authorizationEngineMock.address + }) + }) + + it('testCannotBeSetByAdminIfAlreadySet', async function () { + // Arrange + await this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { + from: admin + } + ) + // Act + await expectRevertCustomError( + this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { + from: admin + } + ), + 'CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet', + [] + ) + }) + + it('testCannotNonAdminSetAuthorizationEngine', async function () { + // Act + await expectRevertCustomError( + this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { from: address1 } + ), + 'AccessControlUnauthorizedAccount', + [address1, DEFAULT_ADMIN_ROLE] + ) + }) + + // Mock + it('testCanTransferAdminIfAuthorizedByTheEngine', async function () { + // Arrange + await this.authorizationEngineMock.authorizeAdminChange(address1) + // Act + await this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { from: admin } + ) + // Assert + this.logs = await this.cmtat.grantRole(DEFAULT_ADMIN_ROLE, address1, { + from: admin + }); + // Assert + (await this.cmtat.hasRole(DEFAULT_ADMIN_ROLE, address1)).should.equal( + true + ) + }) + + // Mock + it('testCannotTransferAdminIfNotAuthorizedByTheEngine', async function () { + // Arrange + await this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { from: admin } + ) + // Act + await expectRevertCustomError( + this.cmtat.grantRole(DEFAULT_ADMIN_ROLE, address1, { + from: admin + }), + 'CMTAT_AuthorizationModule_InvalidAuthorization', + [] + ) + }) + + it('testCanRevokeAdminIfAuthorizedByTheEngine', async function () { + // Arrange + await this.authorizationEngineMock.authorizeAdminChange(address1) + // Act + await this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { from: admin } + ) + // Assert + this.logs = await this.cmtat.revokeRole(DEFAULT_ADMIN_ROLE, address1, { + from: admin + }); + // Assert + (await this.cmtat.hasRole(DEFAULT_ADMIN_ROLE, address1)).should.equal( + false + ) + }) + + // Mock + it('testCannotRevokeAdminIfNotAuthorizedByTheEngine', async function () { + // Arrange + await this.cmtat.setAuthorizationEngine( + this.authorizationEngineMock.address, + { from: admin } + ) + await this.authorizationEngineMock.setRevokeAdminRoleAuthorized(false) + // Act + await expectRevertCustomError( + this.cmtat.revokeRole(DEFAULT_ADMIN_ROLE, address1, { + from: admin + }), + 'CMTAT_AuthorizationModule_InvalidAuthorization', + [] + ) + }) + }) +} +module.exports = AuthorizationModuleSetAuthorizationEngineCommon diff --git a/test/common/BaseModuleCommon.js b/test/common/BaseModuleCommon.js index 7979ef82..48d27daa 100644 --- a/test/common/BaseModuleCommon.js +++ b/test/common/BaseModuleCommon.js @@ -9,7 +9,7 @@ function BaseModuleCommon (owner, address1, address2, address3, proxyTest) { context('Token structure', function () { it('testHasTheDefinedVersion', async function () { // Act + Assert - (await this.cmtat.VERSION()).should.equal('2.3.1') + (await this.cmtat.VERSION()).should.equal('2.4.0') }) it('testHasTheDefinedTokenId', async function () { // Act + Assert diff --git a/test/common/ERC20BaseModuleCommon.js b/test/common/ERC20BaseModuleCommon.js index 7087d17f..7a16ec1e 100644 --- a/test/common/ERC20BaseModuleCommon.js +++ b/test/common/ERC20BaseModuleCommon.js @@ -4,7 +4,7 @@ const { } = require('../../openzeppelin-contracts-upgradeable/test/helpers/customError') const { should } = require('chai').should() -function BaseModuleCommon (admin, address1, address2, address3, proxyTest) { +function ERC20BaseModuleCommon (admin, address1, address2, address3, proxyTest) { context('Token structure', function () { it('testHasTheDefinedName', async function () { // Act + Assert @@ -20,6 +20,32 @@ function BaseModuleCommon (admin, address1, address2, address3, proxyTest) { }) }) + context('Balance', function () { + const TOKEN_AMOUNTS = [BN(31), BN(32), BN(33)] + const TOKEN_INITIAL_SUPPLY = TOKEN_AMOUNTS.reduce((a, b) => { + return a.add(b) + }) + beforeEach(async function () { + await this.cmtat.mint(address1, TOKEN_AMOUNTS[0], { from: admin }) + await this.cmtat.mint(address2, TOKEN_AMOUNTS[1], { from: admin }) + await this.cmtat.mint(address3, TOKEN_AMOUNTS[2], { from: admin }) + }) + it('testHasTheCorrectBalanceInfo', async function () { + // Act + Assert + // Assert + const ADDRESSES = [address1, address2, address3] + let result = await this.cmtat.balanceInfo(ADDRESSES) + result[0][0].should.be.bignumber.equal(TOKEN_AMOUNTS[0]) + result[0][1].should.be.bignumber.equal(TOKEN_AMOUNTS[1]) + result[1].should.be.bignumber.equal(TOKEN_INITIAL_SUPPLY) + + const ADDRESSES2 = [] + result = await this.cmtat.balanceInfo(ADDRESSES2) + BN(result[0].length).should.be.bignumber.equal(BN(0)) + result[1].should.be.bignumber.equal(TOKEN_INITIAL_SUPPLY) + }) + }) + context('Allowance', function () { // address1 -> address3 it('testApproveAllowance', async function () { @@ -74,71 +100,6 @@ function BaseModuleCommon (admin, address1, address2, address3, proxyTest) { value: AMOUNT_TO_APPROVE }) }) - - it('testDefinedAllowanceByTakingInAccountTheCurrentAllowance', async function () { - const AMOUNT_TO_APPROVE = BN(30) - const FIRST_AMOUNT_TO_APPROVE = BN(20); - // Arrange - ( - await this.cmtat.allowance(address1, address3) - ).should.be.bignumber.equal('0') - await this.cmtat.approve(address3, FIRST_AMOUNT_TO_APPROVE, { - from: address1 - }); - // Arrange - Assert - ( - await this.cmtat.allowance(address1, address3) - ).should.be.bignumber.equal(FIRST_AMOUNT_TO_APPROVE) - // Act - this.logs = await this.cmtat.methods['approve(address,uint256,uint256)']( - address3, - AMOUNT_TO_APPROVE, - FIRST_AMOUNT_TO_APPROVE, - { from: address1 } - ); - // Assert - ( - await this.cmtat.allowance(address1, address3) - ).should.be.bignumber.equal(AMOUNT_TO_APPROVE) - // emits an Approval event - expectEvent(this.logs, 'Approval', { - owner: address1, - spender: address3, - value: AMOUNT_TO_APPROVE - }) - }) - - it('testCannotDefinedAllowanceByTakingInAccountTheWrongCurrentAllowance', async function () { - const AMOUNT_TO_APPROVE = BN(30) - const FIRST_AMOUNT_TO_APPROVE = BN(20) - const WRONG_CURRENT_ALLOWANCE = BN(10); - // Arrange - ( - await this.cmtat.allowance(address1, address3) - ).should.be.bignumber.equal('0') - await this.cmtat.approve(address3, FIRST_AMOUNT_TO_APPROVE, { - from: address1 - }); - // Arrange - Assert - ( - await this.cmtat.allowance(address1, address3) - ).should.be.bignumber.equal(FIRST_AMOUNT_TO_APPROVE) - // Act - await expectRevertCustomError( - this.cmtat.methods['approve(address,uint256,uint256)']( - address3, - AMOUNT_TO_APPROVE, - WRONG_CURRENT_ALLOWANCE, - { from: address1 } - ), - 'CMTAT_ERC20BaseModule_WrongAllowance', - [address3, FIRST_AMOUNT_TO_APPROVE, WRONG_CURRENT_ALLOWANCE] - ); - // Assert - ( - await this.cmtat.allowance(address1, address3) - ).should.be.bignumber.equal(FIRST_AMOUNT_TO_APPROVE) - }) }) context('Transfer', function () { @@ -427,4 +388,4 @@ function BaseModuleCommon (admin, address1, address2, address3, proxyTest) { }) }) } -module.exports = BaseModuleCommon +module.exports = ERC20BaseModuleCommon diff --git a/test/common/ERC20BurnModuleCommon.js b/test/common/ERC20BurnModuleCommon.js index 779ef694..73363ef8 100644 --- a/test/common/ERC20BurnModuleCommon.js +++ b/test/common/ERC20BurnModuleCommon.js @@ -1,12 +1,17 @@ const { BN, expectEvent } = require('@openzeppelin/test-helpers') -const { BURNER_ROLE, ZERO_ADDRESS } = require('../utils') +const { + BURNER_ROLE, + BURNER_FROM_ROLE, + MINTER_ROLE, + ZERO_ADDRESS +} = require('../utils') const { expectRevertCustomError } = require('../../openzeppelin-contracts-upgradeable/test/helpers/customError.js') const { should } = require('chai').should() -function ERC20BurnModuleCommon (admin, address1, address2) { - context('Burn', function () { +function ERC20BurnModuleCommon (admin, address1, address2, address3) { + context('burn', function () { const INITIAL_SUPPLY = new BN(50) const REASON = 'BURN_TEST' const VALUE1 = new BN(20) @@ -22,7 +27,7 @@ function ERC20BurnModuleCommon (admin, address1, address2) { it('testCanBeBurntByAdmin', async function () { // Act // Burn 20 - this.logs = await this.cmtat.forceBurn(address1, VALUE1, REASON, { + this.logs = await this.cmtat.burn(address1, VALUE1, REASON, { from: admin }) // Assert @@ -46,7 +51,7 @@ function ERC20BurnModuleCommon (admin, address1, address2) { // Burn 30 // Act - this.logs = await this.cmtat.forceBurn(address1, DIFFERENCE, REASON, { + this.logs = await this.cmtat.burn(address1, DIFFERENCE, REASON, { from: admin }) @@ -72,7 +77,7 @@ function ERC20BurnModuleCommon (admin, address1, address2) { // Arrange await this.cmtat.grantRole(BURNER_ROLE, address2, { from: admin }) // Act - this.logs = await this.cmtat.forceBurn(address1, VALUE1, REASON, { + this.logs = await this.cmtat.burn(address1, VALUE1, REASON, { from: address2 }); // Assert @@ -102,7 +107,7 @@ function ERC20BurnModuleCommon (admin, address1, address2) { const ADDRESS1_BALANCE = await this.cmtat.balanceOf(address1) // Act await expectRevertCustomError( - this.cmtat.forceBurn(address1, AMOUNT_TO_BURN, '', { from: admin }), + this.cmtat.burn(address1, AMOUNT_TO_BURN, '', { from: admin }), 'ERC20InsufficientBalance', [address1, ADDRESS1_BALANCE, AMOUNT_TO_BURN] ) @@ -110,13 +115,170 @@ function ERC20BurnModuleCommon (admin, address1, address2) { it('testCannotBeBurntWithoutBurnerRole', async function () { await expectRevertCustomError( - this.cmtat.forceBurn(address1, 20, '', { from: address2 }), + this.cmtat.burn(address1, 20, '', { from: address2 }), + 'AccessControlUnauthorizedAccount', + [address2, BURNER_ROLE] + ) + }) + }) + + context('burnFrom', function () { + const INITIAL_SUPPLY = new BN(50) + const VALUE1 = new BN(20) + + beforeEach(async function () { + await this.cmtat.mint(address1, INITIAL_SUPPLY, { from: admin }); + (await this.cmtat.totalSupply()).should.be.bignumber.equal( + INITIAL_SUPPLY + ) + }) + + it('canBeBurnFrom', async function () { + // Arrange + const AMOUNT_TO_BURN = BN(20) + await this.cmtat.grantRole(BURNER_FROM_ROLE, address2, { from: admin }) + await this.cmtat.approve(address2, 50, { from: address1 }) + // Act + this.logs = await this.cmtat.burnFrom(address1, AMOUNT_TO_BURN, { + from: address2 + }) + // Assert + expectEvent(this.logs, 'Transfer', { + from: address1, + to: ZERO_ADDRESS, + value: AMOUNT_TO_BURN + }) + expectEvent(this.logs, 'BurnFrom', { + owner: address1, + spender: address2, + value: AMOUNT_TO_BURN + }); + (await this.cmtat.balanceOf(address1)).should.be.bignumber.equal('30'); + (await this.cmtat.totalSupply()).should.be.bignumber.equal('30') + }) + + it('TestCannotBeBurnWithoutAllowance', async function () { + const AMOUNT_TO_BURN = 20 + await expectRevertCustomError( + this.cmtat.burnFrom(address1, AMOUNT_TO_BURN, { from: admin }), + 'ERC20InsufficientAllowance', + [admin, 0, AMOUNT_TO_BURN] + ) + }) + + it('testCannotBeBurntWithoutBurnerFromRole', async function () { + await expectRevertCustomError( + this.cmtat.burnFrom(address1, 20, { from: address2 }), + 'AccessControlUnauthorizedAccount', + [address2, BURNER_FROM_ROLE] + ) + }) + }) + + context('burnAndMint', function () { + const INITIAL_SUPPLY = new BN(50) + const VALUE1 = new BN(20) + + beforeEach(async function () { + await this.cmtat.mint(address1, INITIAL_SUPPLY, { from: admin }); + (await this.cmtat.totalSupply()).should.be.bignumber.equal( + INITIAL_SUPPLY + ) + }) + + it('canBeBurnAndMit', async function () { + // Arrange + const AMOUNT_TO_BURN = BN(20) + const AMOUNT_TO_MINT = BN(15) + await this.cmtat.grantRole(BURNER_ROLE, address2, { from: admin }) + await this.cmtat.grantRole(MINTER_ROLE, address2, { from: admin }) + // await this.cmtat.approve(address2, 50, { from: address1 }) + // Act + this.logs = await this.cmtat.burnAndMint( + address1, + address3, + AMOUNT_TO_BURN, + AMOUNT_TO_MINT, + 'recovery', + { from: address2 } + ) + // Assert + expectEvent(this.logs, 'Transfer', { + from: address1, + to: ZERO_ADDRESS, + value: AMOUNT_TO_BURN + }) + expectEvent(this.logs, 'Transfer', { + from: ZERO_ADDRESS, + to: address3, + value: AMOUNT_TO_MINT + }) + + expectEvent(this.logs, 'Burn', { + owner: address1, + value: AMOUNT_TO_BURN, + reason: 'recovery' + }) + + expectEvent(this.logs, 'Mint', { + account: address3, + value: AMOUNT_TO_MINT + }); + (await this.cmtat.balanceOf(address1)).should.be.bignumber.equal( + INITIAL_SUPPLY.sub(AMOUNT_TO_BURN) + ); + (await this.cmtat.balanceOf(address3)).should.be.bignumber.equal( + AMOUNT_TO_MINT + ); + (await this.cmtat.totalSupply()).should.be.bignumber.equal( + INITIAL_SUPPLY.sub(AMOUNT_TO_BURN).add(AMOUNT_TO_MINT) + ) + }) + + it('canBeBurnAndMintWithoutMinterRole', async function () { + // Arrange + const AMOUNT_TO_BURN = BN(20) + const AMOUNT_TO_MINT = BN(15) + await this.cmtat.grantRole(BURNER_ROLE, address2, { from: admin }) + // await this.cmtat.approve(address2, 50, { from: address1 }) + // Act + await expectRevertCustomError( + this.cmtat.burnAndMint( + address1, + address3, + AMOUNT_TO_BURN, + AMOUNT_TO_MINT, + 'recovery', + { from: address2 } + ), + 'AccessControlUnauthorizedAccount', + [address2, MINTER_ROLE] + ) + }) + + it('canBeBurnAndMintWithoutBurnerRole', async function () { + // Arrange + const AMOUNT_TO_BURN = BN(20) + const AMOUNT_TO_MINT = BN(15) + await this.cmtat.grantRole(MINTER_ROLE, address2, { from: admin }) + // await this.cmtat.approve(address2, 50, { from: address1 }) + // Assert + await expectRevertCustomError( + this.cmtat.burnAndMint( + address1, + address3, + AMOUNT_TO_BURN, + AMOUNT_TO_MINT, + 'recovery', + { from: address2 } + ), 'AccessControlUnauthorizedAccount', [address2, BURNER_ROLE] ) }) }) - context('BurnBatch', function () { + + context('burnBatch', function () { const REASON = 'BURN_TEST' const TOKEN_HOLDER = [admin, address1, address2] const TOKEN_SUPPLY_BY_HOLDERS = [BN(10), BN(100), BN(1000)] @@ -152,7 +314,7 @@ function ERC20BurnModuleCommon (admin, address1, address2) { it('testCanBeBurntBatchByAdmin', async function () { // Act // Burn - this.logs = await this.cmtat.forceBurnBatch( + this.logs = await this.cmtat.burnBatch( TOKEN_HOLDER, TOKEN_BY_HOLDERS_TO_BURN, REASON, @@ -200,7 +362,7 @@ function ERC20BurnModuleCommon (admin, address1, address2) { // Act // Burn - this.logs = await this.cmtat.forceBurnBatch( + this.logs = await this.cmtat.burnBatch( TOKEN_HOLDER, TOKEN_BY_HOLDERS_TO_BURN, REASON, @@ -247,12 +409,9 @@ function ERC20BurnModuleCommon (admin, address1, address2) { const ADDRESS2_BALANCE = await this.cmtat.balanceOf(address2) // Act await expectRevertCustomError( - this.cmtat.forceBurnBatch( - TOKEN_HOLDER, - TOKEN_BY_HOLDERS_TO_BURN_FAIL, - '', - { from: admin } - ), + this.cmtat.burnBatch(TOKEN_HOLDER, TOKEN_BY_HOLDERS_TO_BURN_FAIL, '', { + from: admin + }), 'ERC20InsufficientBalance', [address2, ADDRESS2_BALANCE, TOKEN_BY_HOLDERS_TO_BURN_FAIL[2]] ) @@ -260,7 +419,7 @@ function ERC20BurnModuleCommon (admin, address1, address2) { it('testCannotBeBurntWithoutBurnerRole', async function () { await expectRevertCustomError( - this.cmtat.forceBurnBatch(TOKEN_HOLDER, TOKEN_BY_HOLDERS_TO_BURN, '', { + this.cmtat.burnBatch(TOKEN_HOLDER, TOKEN_BY_HOLDERS_TO_BURN, '', { from: address2 }), 'AccessControlUnauthorizedAccount', @@ -268,11 +427,11 @@ function ERC20BurnModuleCommon (admin, address1, address2) { ) }) - it('testCannotBurnBatchIfLengthMismatchMissingAddresses', async function () { + it('testCannotburnBatchIfLengthMismatchMissingAddresses', async function () { // Number of addresses is insufficient const TOKEN_HOLDER_INVALID = [admin, address1] await expectRevertCustomError( - this.cmtat.forceBurnBatch( + this.cmtat.burnBatch( TOKEN_HOLDER_INVALID, TOKEN_BY_HOLDERS_TO_BURN, REASON, @@ -283,11 +442,11 @@ function ERC20BurnModuleCommon (admin, address1, address2) { ) }) - it('testCannotBurnBatchIfLengthMismatchTooManyAddresses', async function () { + it('testCannotburnBatchIfLengthMismatchTooManyAddresses', async function () { // There are too many addresses const TOKEN_HOLDER_INVALID = [admin, address1, address1, address1] await expectRevertCustomError( - this.cmtat.forceBurnBatch( + this.cmtat.burnBatch( TOKEN_HOLDER_INVALID, TOKEN_BY_HOLDERS_TO_BURN, REASON, @@ -298,10 +457,10 @@ function ERC20BurnModuleCommon (admin, address1, address2) { ) }) - it('testCannotBurnBatchIfAccountsIsEmpty', async function () { + it('testCannotburnBatchIfAccountsIsEmpty', async function () { const TOKEN_ADDRESS_TOS_INVALID = [] await expectRevertCustomError( - this.cmtat.forceBurnBatch( + this.cmtat.burnBatch( TOKEN_ADDRESS_TOS_INVALID, TOKEN_BY_HOLDERS_TO_BURN, REASON, diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonGetNextSnapshot.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonGetNextSnapshot.js index b1c538b4..a8072c2a 100644 --- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonGetNextSnapshot.js +++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonGetNextSnapshot.js @@ -14,7 +14,7 @@ function ERC20SnapshotModuleCommonGetNextSnapshot ( beforeEach(async function () { this.currentTime = await time.latest() }) - it('can get all next snapshots', async function () { + it('testCanGetAllNextSnapshots', async function () { // Arrange this.snapshotTime1 = this.currentTime.add(time.duration.seconds(10)) this.snapshotTime2 = this.currentTime.add(time.duration.seconds(15)) @@ -47,9 +47,20 @@ function ERC20SnapshotModuleCommonGetNextSnapshot ( this.snapshotTime4, this.snapshotTime5 ]) + // Act + const AllSnapshots = await this.cmtat.getAllSnapshots() + // Assert + checkArraySnapshot(AllSnapshots, [ + this.snapshotTime1, + this.snapshotTime2, + this.snapshotTime3, + this.snapshotTime4, + this.snapshotTime5 + ]) }) - it('return empty array if all snapshots are in the past', async function () { + // + it('testCanReturnEmptyArrayIfAllSnapshotsAreInThePast', async function () { // Arrange this.snapshotTime1 = this.currentTime.add(time.duration.seconds(2)) this.snapshotTime2 = this.currentTime.add(time.duration.seconds(3)) @@ -71,7 +82,7 @@ function ERC20SnapshotModuleCommonGetNextSnapshot ( snapshots.length.should.equal(0) }) - it('return only future snapshots if some snapshots are in the past', async function () { + it('testCanReturnOnlyFutureSnapshotsIfSomeSnapshotsAreInThePast', async function () { // Arrange this.snapshotTime1 = this.currentTime.add(time.duration.seconds(2)) this.snapshotTime2 = this.currentTime.add(time.duration.seconds(20)) diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js index 63aaa933..bc687140 100644 --- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js +++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js @@ -13,7 +13,12 @@ const { checkArraySnapshot } = require('./ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') -function ERC20SnapshotModuleCommonRescheduling (owner, address1, address2, address3) { +function ERC20SnapshotModuleCommonRescheduling ( + owner, + address1, + address2, + address3 +) { context('Snapshot rescheduling', function () { beforeEach(async function () { this.currentTime = await time.latest() diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js index 65c8d71f..b86f5a0c 100644 --- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js +++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js @@ -12,7 +12,12 @@ const { checkArraySnapshot } = require('./ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') -function ERC20SnapshotModuleCommonScheduling (owner, address1, address2, address3) { +function ERC20SnapshotModuleCommonScheduling ( + owner, + address1, + address2, + address3 +) { context('Snapshot scheduling', function () { beforeEach(async function () { this.currentTime = await time.latest() @@ -44,6 +49,24 @@ function ERC20SnapshotModuleCommonScheduling (owner, address1, address2, address ) }) + it('reverts when trying to schedule a snapshot before the last snapshot', async function () { + const SNAPSHOT_TIME = this.currentTime.add(time.duration.seconds(120)) + // Act + this.logs = await this.cmtat.scheduleSnapshot(SNAPSHOT_TIME, { + from: owner + }) + const SNAPSHOT_TIME_INVALID = SNAPSHOT_TIME.sub( + time.duration.seconds(60) + ) + await expectRevertCustomError( + this.cmtat.scheduleSnapshot(SNAPSHOT_TIME_INVALID, { + from: owner + }), + 'CMTAT_SnapshotModule_SnapshotTimestampBeforeLastSnapshot', + [SNAPSHOT_TIME_INVALID, SNAPSHOT_TIME] + ) + }) + it('reverts when trying to schedule a snapshot in the past', async function () { const SNAPSHOT_TIME = this.currentTime.sub(time.duration.seconds(60)) await expectRevertCustomError( diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js index 7b3e91e0..a42b8256 100644 --- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js +++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js @@ -13,7 +13,12 @@ const { checkArraySnapshot } = require('./ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') -function ERC20SnapshotModuleCommonUnschedule (owner, address1, address2, address3) { +function ERC20SnapshotModuleCommonUnschedule ( + owner, + address1, + address2, + address3 +) { context('unscheduleSnapshotNotOptimized', function () { beforeEach(async function () { this.currentTime = await time.latest() @@ -83,6 +88,18 @@ function ERC20SnapshotModuleCommonUnschedule (owner, address1, address2, address snapshots = await this.cmtat.getNextSnapshots() snapshots.length.should.equal(0) }) + + it('testCannotUnscheduleASnapshotInThePast', async function () { + const SNAPSHOT_TIME = this.currentTime.sub(time.duration.seconds(60)) + await expectRevertCustomError( + this.cmtat.unscheduleSnapshotNotOptimized(SNAPSHOT_TIME, { + from: owner + }), + 'CMTAT_SnapshotModule_SnapshotAlreadyDone', + [] + ) + }) + it('can unschedule a snaphot in a random place', async function () { const RANDOM_SNAPSHOT = this.currentTime.add(time.duration.seconds(17)) await this.cmtat.scheduleSnapshot(this.snapshotTime1, { @@ -187,6 +204,7 @@ function ERC20SnapshotModuleCommonUnschedule (owner, address1, address2, address snapshots.length.should.equal(1) }) }) + context('Snapshot unscheduling', function () { beforeEach(async function () { this.currentTime = await time.latest() diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js index 276e267e..ce96fa64 100644 --- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js +++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js @@ -1,3 +1,4 @@ +const { BN } = require('@openzeppelin/test-helpers') const getUnixTimestamp = () => { return Math.round(new Date().getTime() / 1000) } @@ -11,12 +12,28 @@ async function checkSnapshot (time, totalSupply, addresses, balances) { (await this.cmtat.snapshotTotalSupply(time)).should.be.bignumber.equal( totalSupply ) - + const result = await this.cmtat.methods[ + 'snapshotInfoBatch(uint256,address[])' + ](time, addresses) + const times = [time] + const result2 = await this.cmtat.methods[ + 'snapshotInfoBatch(uint256[],address[])' + ](times, addresses) for (let i = 0; i < balances.length; ++i) { ( await this.cmtat.snapshotBalanceOf(time, addresses[i]) ).should.be.bignumber.equal(balances[i]) + await this.cmtat.snapshotInfo(time, addresses[i]) + const { 0: ownerBalance, 1: totalSupplyGet } = + await this.cmtat.snapshotInfo(time, addresses[i]) + // const [ownerBalance, totalSupplyGet] + ownerBalance.should.be.bignumber.equal(balances[i]) + result[0][i].should.be.bignumber.equal(balances[i]) + result2[0][0][i].should.be.bignumber.equal(balances[i]) + totalSupplyGet.should.be.bignumber.equal(totalSupply) } + result[1].should.be.bignumber.equal(totalSupply) + result2[1][0].should.be.bignumber.equal(totalSupply) } async function checkArraySnapshot (snapshots, snapshotsValue) { diff --git a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js index 3b9e9fcd..c4128811 100644 --- a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js +++ b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js @@ -1,6 +1,8 @@ const { time, BN } = require('@openzeppelin/test-helpers') const { should } = require('chai').should() -const { checkSnapshot } = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') +const { + checkSnapshot +} = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') function ERC20SnapshotModuleMultiplePlannedTest ( admin, diff --git a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js index 8ecfd2a0..83c03981 100644 --- a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js +++ b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js @@ -1,6 +1,8 @@ const { time } = require('@openzeppelin/test-helpers') const { should } = require('chai').should() -const { checkSnapshot } = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') +const { + checkSnapshot +} = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') const reason = 'BURN_TEST' function ERC20SnapshotModuleOnePlannedSnapshotTest ( @@ -86,7 +88,7 @@ function ERC20SnapshotModuleOnePlannedSnapshotTest ( ) // Act - await this.cmtat.forceBurn(address1, BURN_AMOUNT, reason, { + await this.cmtat.burn(address1, BURN_AMOUNT, reason, { from: admin, gas: 5000000, gasPrice: 500000000 diff --git a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js index eac3d097..be02a075 100644 --- a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js +++ b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js @@ -1,6 +1,8 @@ const { time } = require('@openzeppelin/test-helpers') const { should } = require('chai').should() -const { checkSnapshot } = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') +const { + checkSnapshot +} = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils') function ERC20SnapshotModuleCommonGlobal (admin, address1, address2, address3) { context('zeroPlannedSnapshotTest', function () { diff --git a/test/common/EnforcementModuleCommon.js b/test/common/EnforcementModuleCommon.js index 78f636ba..1c7fd267 100644 --- a/test/common/EnforcementModuleCommon.js +++ b/test/common/EnforcementModuleCommon.js @@ -60,6 +60,11 @@ function EnforcementModuleCommon (owner, address1, address2, address3) { this.logs = await this.cmtat.freeze(address1, reasonFreeze, { from: address2 }); + // Act + Assert + // Act + Assert + ( + await this.cmtat.validateTransfer(address1, address2, 10) + ).should.be.equal(false); // Assert (await this.cmtat.frozen(address1)).should.equal(true) @@ -145,7 +150,7 @@ function EnforcementModuleCommon (owner, address1, address2, address3) { await this.cmtat.detectTransferRestriction(address1, address2, 10) ).should.be.bignumber.equal('2'); (await this.cmtat.messageForTransferRestriction(2)).should.equal( - 'The address FROM is frozen' + 'Address FROM is frozen' ) const AMOUNT_TO_TRANSFER = 10 await expectRevertCustomError( @@ -168,7 +173,7 @@ function EnforcementModuleCommon (owner, address1, address2, address3) { await this.cmtat.detectTransferRestriction(address1, address2, 10) ).should.be.bignumber.equal('3'); (await this.cmtat.messageForTransferRestriction(3)).should.equal( - 'The address TO is frozen' + 'Address TO is frozen' ) const AMOUNT_TO_TRANSFER = 10 await expectRevertCustomError( @@ -195,9 +200,7 @@ function EnforcementModuleCommon (owner, address1, address2, address3) { from: owner }) // Assert - expectEvent.notEmitted( - this.logs, - 'Freeze'); + expectEvent.notEmitted(this.logs, 'Freeze'); (await this.cmtat.frozen(address1)).should.equal(true) }) @@ -210,17 +213,11 @@ function EnforcementModuleCommon (owner, address1, address2, address3) { await this.cmtat.unfreeze(address1, reasonFreeze, { from: owner }) // Act - this.logs = await this.cmtat.unfreeze( - address1, - reasonUnfreeze, - { - from: owner - } - ) + this.logs = await this.cmtat.unfreeze(address1, reasonUnfreeze, { + from: owner + }) // Assert - expectEvent.notEmitted( - this.logs, - 'Unfreeze'); + expectEvent.notEmitted(this.logs, 'Unfreeze'); (await this.cmtat.frozen(address1)).should.equal(false) }) }) diff --git a/test/common/PauseModuleCommon.js b/test/common/PauseModuleCommon.js index ed0244bc..3a7babb5 100644 --- a/test/common/PauseModuleCommon.js +++ b/test/common/PauseModuleCommon.js @@ -103,6 +103,14 @@ function PauseModuleCommon (admin, address1, address2, address3) { const AMOUNT_TO_TRANSFER = 10 // Act await this.cmtat.pause({ from: admin }); + // Act + Assert + ( + await this.cmtat.validateTransfer( + address1, + address2, + AMOUNT_TO_TRANSFER + ) + ).should.be.equal(false); // Assert ( await this.cmtat.detectTransferRestriction( diff --git a/test/common/ValidationModule/ValidationModuleCommon.js b/test/common/ValidationModule/ValidationModuleCommon.js index e0970a61..04be0b0b 100644 --- a/test/common/ValidationModule/ValidationModuleCommon.js +++ b/test/common/ValidationModule/ValidationModuleCommon.js @@ -25,11 +25,25 @@ function ValidationModuleCommon ( } }) + it('testCanValidateTransferWithoutRuleEngine', async function () { + // Arrange + await this.cmtat.setRuleEngine(ZERO_ADDRESS, { + from: admin + }); + // Act + Assert + ( + await this.cmtat.validateTransfer(address1, address2, 10) + ).should.be.equal(true) + }) + it('testCanDetectTransferRestrictionValidTransfer', async function () { // Act + Assert ( await this.cmtat.detectTransferRestriction(address1, address2, 11) - ).should.be.bignumber.equal('0') + ).should.be.bignumber.equal('0'); + ( + await this.cmtat.validateTransfer(address1, address2, 11) + ).should.be.equal(true) }) it('testCanReturnMessageValidTransfer', async function () { @@ -47,7 +61,15 @@ function ValidationModuleCommon ( address2, RULE_MOCK_AMOUNT_MAX + 1 ) - ).should.be.bignumber.equal('10') + ).should.be.bignumber.equal('10'); + + ( + await this.cmtat.validateTransfer( + address1, + address2, + RULE_MOCK_AMOUNT_MAX + 1 + ) + ).should.be.equal(false) }) it('testCanReturnMessageWithAmountTooHigh', async function () { @@ -66,7 +88,15 @@ function ValidationModuleCommon ( // ADDRESS1 may transfer tokens to ADDRESS2 it('testCanTransferAllowedByRule', async function () { - const AMOUNT_TO_TRANSFER = 11 + const AMOUNT_TO_TRANSFER = 11; + // Act + ( + await this.cmtat.validateTransfer( + address1, + address2, + AMOUNT_TO_TRANSFER + ) + ).should.be.equal(true) // Act await this.cmtat.transfer(address2, AMOUNT_TO_TRANSFER, { from: address1 @@ -85,7 +115,15 @@ function ValidationModuleCommon ( // reverts if ADDRESS1 transfers more tokens than rule allows it('testCannotTransferIfNotAllowedByRule', async function () { - const AMOUNT_TO_TRANSFER = RULE_MOCK_AMOUNT_MAX + 1 + const AMOUNT_TO_TRANSFER = RULE_MOCK_AMOUNT_MAX + 1; + // Act + ( + await this.cmtat.validateTransfer( + address1, + address2, + AMOUNT_TO_TRANSFER + ) + ).should.be.equal(false) // Act await expectRevertCustomError( this.cmtat.transfer(address2, AMOUNT_TO_TRANSFER, { from: address1 }), diff --git a/test/deployment/deployment.test.js b/test/deployment/deployment.test.js index df953828..26160066 100644 --- a/test/deployment/deployment.test.js +++ b/test/deployment/deployment.test.js @@ -7,9 +7,8 @@ const { deployCMTATProxyWithParameter, deployCMTATStandaloneWithParameter } = require('../deploymentUtils') -contract('CMTAT - Deployment', function ([_], deployer) { +contract('CMTAT - Deployment', function ([_], deployer, address1, address2) { it('testCannotDeployProxyWithAdminSetToAddressZero', async function () { - const delayTime = BigInt(time.duration.days(3)) this.flag = 5 const DECIMAL = 0 // Act + Assert @@ -18,7 +17,7 @@ contract('CMTAT - Deployment', function ([_], deployer) { deployer, _, ZERO_ADDRESS, - delayTime, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DECIMAL, @@ -28,8 +27,8 @@ contract('CMTAT - Deployment', function ([_], deployer) { 'CMTAT_info', this.flag ), - 'AccessControlInvalidDefaultAdmin', - [ZERO_ADDRESS] + 'CMTAT_AuthorizationModule_AddressZeroNotAllowed', + [] ) }) it('testCannotDeployStandaloneWithAdminSetToAddressZero', async function () { @@ -41,7 +40,7 @@ contract('CMTAT - Deployment', function ([_], deployer) { deployer, _, ZERO_ADDRESS, - web3.utils.toBN(time.duration.days(3)), + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DECIMAL, @@ -51,8 +50,8 @@ contract('CMTAT - Deployment', function ([_], deployer) { 'CMTAT_info', this.flag ), - 'AccessControlInvalidDefaultAdmin', - [ZERO_ADDRESS] + 'CMTAT_AuthorizationModule_AddressZeroNotAllowed', + [] ) }) }) diff --git a/test/deploymentUtils.js b/test/deploymentUtils.js index 4eb5a2fc..041da677 100644 --- a/test/deploymentUtils.js +++ b/test/deploymentUtils.js @@ -1,27 +1,19 @@ const { ZERO_ADDRESS } = require('./utils') const CMTAT_STANDALONE = artifacts.require('CMTAT_STANDALONE') -const CMTAT_STANDALONE_SNAPSHOT = artifacts.require( - 'CMTATSnapshotStandaloneTest' -) +const CMTAT_STANDALONE_SNAPSHOT = artifacts.require('CMTAT_STANDALONE') const CMTAT_PROXY = artifacts.require('CMTAT_PROXY') -const CMTAT_PROXY_SNAPSHOT = artifacts.require('CMTATSnapshotProxyTest') +// const CMTAT_PROXY_SNAPSHOT_TRUFFLE = artifacts.require('CMTATSnapshotProxyTest') +const CMTAT_PROXY_SNAPSHOT_TRUFFLE = artifacts.require('CMTAT_PROXY') const { deployProxy } = require('@openzeppelin/truffle-upgrades') -const { time } = require('@openzeppelin/test-helpers') const { ethers, upgrades } = require('hardhat') const DEPLOYMENT_FLAG = 5 const DEPLOYMENT_DECIMAL = 0 -const DEFAULT_ADMIN_DELAY = 1 -const DEFAULT_ADMIN_DELAY_WEB3 = web3.utils.toBN( - time.duration.days(DEFAULT_ADMIN_DELAY) -) -const DEFAULT_ADMIN_DELAY_HARDHAT = BigInt( - time.duration.days(DEFAULT_ADMIN_DELAY) -) + async function deployCMTATStandalone (_, admin, deployerAddress) { const cmtat = await CMTAT_STANDALONE.new( _, admin, - DEFAULT_ADMIN_DELAY_WEB3, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DEPLOYMENT_DECIMAL, @@ -35,11 +27,21 @@ async function deployCMTATStandalone (_, admin, deployerAddress) { return cmtat } +async function deployCMTATProxyImplementation ( + deployerAddress, + forwarderIrrevocable +) { + const cmtat = await CMTAT_PROXY.new(forwarderIrrevocable, { + from: deployerAddress + }) + return cmtat +} + async function deployCMTATStandaloneWithParameter ( deployerAddress, forwarderIrrevocable, admin, - defaultAdminDelay, + authorizationEngine, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -52,7 +54,7 @@ async function deployCMTATStandaloneWithParameter ( const cmtat = await CMTAT_STANDALONE.new( forwarderIrrevocable, admin, - defaultAdminDelay, + authorizationEngine, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -67,11 +69,10 @@ async function deployCMTATStandaloneWithParameter ( } async function deployCMTATStandaloneWithSnapshot (_, admin, deployerAddress) { - const DEFAULT_ADMIN_DELAY_WEB3_ = web3.utils.toBN(time.duration.days(3)) const cmtat = await CMTAT_STANDALONE_SNAPSHOT.new( _, admin, - DEFAULT_ADMIN_DELAY_WEB3_, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DEPLOYMENT_DECIMAL, @@ -94,7 +95,7 @@ async function deployCMTATProxy (_, admin, deployerAddress) { ETHERS_CMTAT_PROXY_FACTORY, [ admin, - DEFAULT_ADMIN_DELAY_HARDHAT, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DEPLOYMENT_DECIMAL, @@ -110,8 +111,7 @@ async function deployCMTATProxy (_, admin, deployerAddress) { from: deployerAddress } ) - const TRUFFLE_CMTAT_PROXY = artifacts.require('CMTAT_PROXY') - const TRUFFLE_CMTAT_PROXY_ADDRESS = await TRUFFLE_CMTAT_PROXY.at( + const TRUFFLE_CMTAT_PROXY_ADDRESS = await CMTAT_PROXY_SNAPSHOT_TRUFFLE.at( await ETHERS_CMTAT_PROXY.getAddress() ) return TRUFFLE_CMTAT_PROXY_ADDRESS @@ -120,13 +120,13 @@ async function deployCMTATProxy (_, admin, deployerAddress) { async function deployCMTATProxyWithSnapshot (_, admin, deployerAddress) { // Ref: https://forum.openzeppelin.com/t/upgrades-hardhat-truffle5/30883/3 const ETHERS_CMTAT_PROXY_FACTORY = await ethers.getContractFactory( - 'CMTATSnapshotProxyTest' + 'CMTAT_PROXY' ) const ETHERS_CMTAT_PROXY = await upgrades.deployProxy( ETHERS_CMTAT_PROXY_FACTORY, [ admin, - DEFAULT_ADMIN_DELAY_HARDHAT, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DEPLOYMENT_DECIMAL, @@ -142,7 +142,7 @@ async function deployCMTATProxyWithSnapshot (_, admin, deployerAddress) { from: deployerAddress } ) - const TRUFFLE_CMTAT_PROXY = artifacts.require('CMTATSnapshotProxyTest') + const TRUFFLE_CMTAT_PROXY = artifacts.require('CMTAT_PROXY') const TRUFFLE_CMTAT_PROXY_ADDRESS = await TRUFFLE_CMTAT_PROXY.at( await ETHERS_CMTAT_PROXY.getAddress() ) @@ -158,7 +158,7 @@ async function deployCMTATProxyWithKillTest (_, admin, deployerAddress) { ETHERS_CMTAT_PROXY_FACTORY, [ admin, - DEFAULT_ADMIN_DELAY_HARDHAT, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DEPLOYMENT_DECIMAL, @@ -185,7 +185,7 @@ async function deployCMTATProxyWithParameter ( deployerAddress, forwarderIrrevocable, admin, - defaultAdminDelay, + authorizationEngine, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -203,7 +203,7 @@ async function deployCMTATProxyWithParameter ( ETHERS_CMTAT_PROXY_FACTORY, [ admin, - defaultAdminDelay, + authorizationEngine, nameIrrevocable, symbolIrrevocable, decimalsIrrevocable, @@ -236,5 +236,5 @@ module.exports = { deployCMTATStandaloneWithParameter, DEPLOYMENT_FLAG, DEPLOYMENT_DECIMAL, - DEFAULT_ADMIN_DELAY_WEB3 + deployCMTATProxyImplementation } diff --git a/test/proxy/general/Proxy.test.js b/test/proxy/general/Proxy.test.js index 8b15b413..f75fd9b0 100644 --- a/test/proxy/general/Proxy.test.js +++ b/test/proxy/general/Proxy.test.js @@ -1,4 +1,3 @@ -const { time } = require('@openzeppelin/test-helpers') const { should } = require('chai').should() const { expectRevertCustomError @@ -27,12 +26,12 @@ contract( }) context('Attacker', function () { - // Here the argument to indicate if it is deployed with a proxy, set at false by the attacker it('testCannotBeTakenControlByAttacker', async function () { + // Act await expectRevertCustomError( this.implementationContract.initialize( attacker, - BigInt(time.duration.days(3)), + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DECIMAL, @@ -46,6 +45,7 @@ contract( 'InvalidInitialization', [] ) + // act + assert await expectRevertCustomError( this.implementationContract.pause({ from: attacker }), 'AccessControlUnauthorizedAccount', diff --git a/test/proxy/general/UpgradeProxy.test.js b/test/proxy/general/UpgradeProxy.test.js index 3e3b836a..a683ca8c 100644 --- a/test/proxy/general/UpgradeProxy.test.js +++ b/test/proxy/general/UpgradeProxy.test.js @@ -1,8 +1,7 @@ -const { BN, time } = require('@openzeppelin/test-helpers') +const { BN } = require('@openzeppelin/test-helpers') const { should } = require('chai').should() const { ZERO_ADDRESS } = require('../../utils') const { - deployCMTATProxy, DEPLOYMENT_FLAG, DEPLOYMENT_DECIMAL } = require('../../deploymentUtils') @@ -29,7 +28,7 @@ contract( ETHERS_CMTAT_PROXY_FACTORY, [ admin, - BigInt(time.duration.days(3)), + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DEPLOYMENT_DECIMAL, diff --git a/test/proxy/general/factory/Beacon.test.js b/test/proxy/general/factory/Beacon.test.js new file mode 100644 index 00000000..9720f35a --- /dev/null +++ b/test/proxy/general/factory/Beacon.test.js @@ -0,0 +1,109 @@ +const CMTAT_BEACON_FACTORY = artifacts.require('CMTAT_BEACON_FACTORY') +const { should } = require('chai').should() +const { + expectRevertCustomError +} = require('../../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js') +const CMTAT = artifacts.require('CMTAT_PROXY') +const { CMTAT_DEPLOYER_ROLE } = require('../../../utils.js') +const { ZERO_ADDRESS } = require('../../../utils.js') +const { + DEPLOYMENT_FLAG, + deployCMTATProxyImplementation +} = require('../../../deploymentUtils.js') +const DEPLOYMENT_DECIMAL = 0 +const { BN, expectEvent } = require('@openzeppelin/test-helpers') +contract( + 'Deploy Beacon with Factory', + function ([_, admin, attacker, deployerAddress]) { + beforeEach(async function () { + this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation( + _, + deployerAddress + ) + this.FACTORY = await CMTAT_BEACON_FACTORY.new( + this.CMTAT_PROXY_IMPL.address, + admin, + admin + ) + }) + + context('FactoryDeployment', function () { + it('testCanReturnTheRightImplementation', async function () { + // Act + Assert + (await this.FACTORY.implementation()).should.equal( + this.CMTAT_PROXY_IMPL.address + ) + }) + }) + + context('Deploy CMTAT with Factory', function () { + it('testCannotBeDeployedByAttacker', async function () { + // Act + await expectRevertCustomError( + this.FACTORY.deployCMTAT( + admin, + ZERO_ADDRESS, + 'CMTA Token', + 'CMTAT', + DEPLOYMENT_DECIMAL, + 'CMTAT_ISIN', + 'https://cmta.ch', + ZERO_ADDRESS, + 'CMTAT_info', + DEPLOYMENT_FLAG, + { from: attacker } + ), + 'AccessControlUnauthorizedAccount', + [attacker, CMTAT_DEPLOYER_ROLE] + ) + }) + it('testCanDeployCMTATWithFactory', async function () { + // Act + this.logs = await this.FACTORY.deployCMTAT( + admin, + ZERO_ADDRESS, + 'CMTA Token', + 'CMTAT', + DEPLOYMENT_DECIMAL, + 'CMTAT_ISIN', + 'https://cmta.ch', + ZERO_ADDRESS, + 'CMTAT_info', + DEPLOYMENT_FLAG, + { + from: admin + } + ) + + // Check Id increment + this.logs.logs[1].args[1].should.be.bignumber.equal(BN(0)) + // Assert + const CMTAT_ADDRESS = this.logs.logs[1].args[0]; + // Check address with ID + (await this.FACTORY.getAddress(0)).should.equal(CMTAT_ADDRESS) + const CMTAT_TRUFFLE = await CMTAT.at(CMTAT_ADDRESS) + // Act + Assert + await CMTAT_TRUFFLE.mint(admin, 100, { + from: admin + }) + this.logs = await this.FACTORY.deployCMTAT( + admin, + ZERO_ADDRESS, + 'CMTA Token', + 'CMTAT', + DEPLOYMENT_DECIMAL, + 'CMTAT_ISIN', + 'https://cmta.ch', + ZERO_ADDRESS, + 'CMTAT_info', + DEPLOYMENT_FLAG, + { + from: admin + } + ) + // Check Id increment + this.logs.logs[1].args[1].should.be.bignumber.equal(BN(1)) + }) + }) + } +) diff --git a/test/proxy/general/factory/BeaconFactoryDeploy.test copy.js b/test/proxy/general/factory/BeaconFactoryDeploy.test copy.js new file mode 100644 index 00000000..a5e96310 --- /dev/null +++ b/test/proxy/general/factory/BeaconFactoryDeploy.test copy.js @@ -0,0 +1,54 @@ +const CMTAT_BEACON_FACTORY = artifacts.require('CMTAT_BEACON_FACTORY') +const { should } = require('chai').should() +const { + expectRevertCustomError +} = require('../../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js') +const { ZERO_ADDRESS } = require('../../../utils.js') +const { + deployCMTATProxyImplementation +} = require('../../../deploymentUtils.js') +contract( + 'Deploy Beacon with Factory', + function ([_, admin, attacker, deployerAddress]) { + beforeEach(async function () { + this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation( + _, + deployerAddress + ) + }) + + context('BeaconDeployment', function () { + it('testCannotDeployIfImplementationIsZero', async function () { + await expectRevertCustomError( + CMTAT_BEACON_FACTORY.new(ZERO_ADDRESS, admin, admin, { from: admin }), + 'CMTAT_Factory_AddressZeroNotAllowedForLogicContract', + [] + ) + }) + it('testCannotDeployIfFactoryAdminIsZero', async function () { + await expectRevertCustomError( + CMTAT_BEACON_FACTORY.new( + this.CMTAT_PROXY_IMPL.address, + ZERO_ADDRESS, + admin, + { from: admin } + ), + 'CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin', + [] + ) + }) + it('testCannotDeployIfBeaconOwnerIsZero', async function () { + await expectRevertCustomError( + CMTAT_BEACON_FACTORY.new( + this.CMTAT_PROXY_IMPL.address, + admin, + ZERO_ADDRESS, + { from: admin } + ), + 'CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner', + [] + ) + }) + }) + } +) diff --git a/test/proxy/general/factory/Transparent.test.js b/test/proxy/general/factory/Transparent.test.js new file mode 100644 index 00000000..1cda457a --- /dev/null +++ b/test/proxy/general/factory/Transparent.test.js @@ -0,0 +1,110 @@ +const CMTAT_TP_FACTORY = artifacts.require('CMTAT_TP_FACTORY') +const { should } = require('chai').should() +const { + expectRevertCustomError +} = require('../../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js') +const CMTAT = artifacts.require('CMTAT_PROXY') +const { ZERO_ADDRESS, CMTAT_DEPLOYER_ROLE } = require('../../../utils.js') +const { + DEPLOYMENT_FLAG, + deployCMTATProxyImplementation +} = require('../../../deploymentUtils.js') +const { upgrades } = require('hardhat') +const DEPLOYMENT_DECIMAL = 0 +const { BN, expectEvent } = require('@openzeppelin/test-helpers') +contract( + 'Deploy TP with Factory', + function ([_, admin, attacker, deployerAddress]) { + beforeEach(async function () { + this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation( + _, + deployerAddress + ) + this.FACTORY = await CMTAT_TP_FACTORY.new( + this.CMTAT_PROXY_IMPL.address, + admin + ) + }) + + context('FactoryDeployment', function () { + it('testCanReturnTheRightImplementation', async function () { + // Act + Assert + (await this.FACTORY.logic()).should.equal( + this.CMTAT_PROXY_IMPL.address + ) + }) + }) + + context('Deploy CMTAT with Factory', function () { + it('testCannotBeDeployedByAttacker', async function () { + // Act + await expectRevertCustomError( + this.FACTORY.deployCMTAT( + admin, + admin, + ZERO_ADDRESS, + 'CMTA Token', + 'CMTAT', + DEPLOYMENT_DECIMAL, + 'CMTAT_ISIN', + 'https://cmta.ch', + ZERO_ADDRESS, + 'CMTAT_info', + DEPLOYMENT_FLAG, + { from: attacker } + ), + 'AccessControlUnauthorizedAccount', + [attacker, CMTAT_DEPLOYER_ROLE] + ) + }) + it('testCanDeployCMTATWithFactory', async function () { + // Act + this.logs = await this.FACTORY.deployCMTAT( + admin, + admin, + ZERO_ADDRESS, + 'CMTA Token', + 'CMTAT', + DEPLOYMENT_DECIMAL, + 'CMTAT_ISIN', + 'https://cmta.ch', + ZERO_ADDRESS, + 'CMTAT_info', + DEPLOYMENT_FLAG, + { + from: admin + } + ) + // Assert + // Check Id + this.logs.logs[1].args[1].should.be.bignumber.equal(BN(0)) + const CMTAT_ADDRESS = this.logs.logs[1].args[0]; + // Check address with ID + (await this.FACTORY.getAddress(0)).should.equal(CMTAT_ADDRESS) + const CMTAT_TRUFFLE = await CMTAT.at(CMTAT_ADDRESS) + await CMTAT_TRUFFLE.mint(admin, 100, { + from: admin + }) + // Second deployment + this.logs = await this.FACTORY.deployCMTAT( + admin, + admin, + ZERO_ADDRESS, + 'CMTA Token', + 'CMTAT', + DEPLOYMENT_DECIMAL, + 'CMTAT_ISIN', + 'https://cmta.ch', + ZERO_ADDRESS, + 'CMTAT_info', + DEPLOYMENT_FLAG, + { + from: admin + } + ) + // Check Id increment + this.logs.logs[1].args[1].should.be.bignumber.equal(BN(1)) + }) + }) + } +) diff --git a/test/proxy/general/factory/TransparentFactoyDeploy.test.js b/test/proxy/general/factory/TransparentFactoyDeploy.test.js new file mode 100644 index 00000000..843fe8f0 --- /dev/null +++ b/test/proxy/general/factory/TransparentFactoyDeploy.test.js @@ -0,0 +1,41 @@ +const CMTAT_TP_FACTORY = artifacts.require('CMTAT_TP_FACTORY') +const { should } = require('chai').should() +const { + expectRevertCustomError +} = require('../../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js') +const { ZERO_ADDRESS } = require('../../../utils.js') +const { + deployCMTATProxyImplementation +} = require('../../../deploymentUtils.js') +contract( + 'Deploy TP with Factory', + function ([_, admin, attacker, deployerAddress]) { + beforeEach(async function () { + this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation( + _, + deployerAddress + ) + // this.FACTORY = await CMTAT_TP_FACTORY.new(this.CMTAT_PROXY_IMPL.address, admin) + }) + + context('FactoryDeployment', function () { + it('testCannotDeployIfImplementationIsZero', async function () { + await expectRevertCustomError( + CMTAT_TP_FACTORY.new(ZERO_ADDRESS, admin, { from: admin }), + 'CMTAT_Factory_AddressZeroNotAllowedForLogicContract', + [] + ) + }) + + it('testCannotDeployIfFactoryAdminIsZero', async function () { + await expectRevertCustomError( + CMTAT_TP_FACTORY.new(this.CMTAT_PROXY_IMPL.address, ZERO_ADDRESS, { + from: admin + }), + 'CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin', + [] + ) + }) + }) + } +) diff --git a/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js b/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js index 776722e2..a109c457 100644 --- a/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js +++ b/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js @@ -1,13 +1,18 @@ const AuthorizationModuleCommon = require('../../../common/AuthorizationModule/AuthorizationModuleCommon') +const AuthorizationModuleSetAuthorizationEngineCommon = require('../../../common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon') const { deployCMTATProxy } = require('../../../deploymentUtils') - +const AuthorizationEngineMock = artifacts.require('AuthorizationEngineMock') contract( 'Proxy - AuthorizationModule', function ([_, admin, address1, address2, deployerAddress]) { beforeEach(async function () { this.cmtat = await deployCMTATProxy(_, admin, deployerAddress) + this.authorizationEngineMock = await AuthorizationEngineMock.new({ + from: admin + }) }) AuthorizationModuleCommon(admin, address1, address2) + AuthorizationModuleSetAuthorizationEngineCommon(admin, address1) } ) diff --git a/test/proxy/modules/ERC20BurnModule.test.js b/test/proxy/modules/ERC20BurnModule.test.js index 4b8b6c4a..488d967a 100644 --- a/test/proxy/modules/ERC20BurnModule.test.js +++ b/test/proxy/modules/ERC20BurnModule.test.js @@ -2,12 +2,12 @@ const BurnModuleCommon = require('../../common/ERC20BurnModuleCommon') const { deployCMTATProxy } = require('../../deploymentUtils') contract( - 'Proxy - BurnModule', - function ([_, admin, address1, address2, deployerAddress]) { + 'Proxy - ERC20BurnModule', + function ([_, admin, address1, address2, address3, deployerAddress]) { beforeEach(async function () { this.cmtat = await deployCMTATProxy(_, admin, deployerAddress) }) - BurnModuleCommon(admin, address1, address2) + BurnModuleCommon(admin, address1, address2, address3) } ) diff --git a/test/proxy/modules/ERC20MintModule.test.js b/test/proxy/modules/ERC20MintModule.test.js index 4115f464..6132b9ca 100644 --- a/test/proxy/modules/ERC20MintModule.test.js +++ b/test/proxy/modules/ERC20MintModule.test.js @@ -2,7 +2,7 @@ const ERC20MintModuleCommon = require('../../common/ERC20MintModuleCommon') const { deployCMTATProxy } = require('../../deploymentUtils') contract( - 'Proxy - MintModule', + 'Proxy - ERC20MintModule', function ([_, admin, address1, address2, deployerAddress]) { beforeEach(async function () { this.cmtat = await deployCMTATProxy(_, admin, deployerAddress) diff --git a/test/proxy/modules/ERC20SnapshotModule.test.js b/test/proxy/modules/ERC20SnapshotModule.test.js index 2746ed01..8f424cd0 100644 --- a/test/proxy/modules/ERC20SnapshotModule.test.js +++ b/test/proxy/modules/ERC20SnapshotModule.test.js @@ -8,7 +8,7 @@ const ERC20SnapshotModuleOnePlannedSnapshotTest = require('../../common/ERC20Sna const ERC20SnapshotModuleZeroPlannedSnapshotTest = require('../../common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot') contract( - 'Proxy - SnapshotModule', + 'Proxy - ERC20SnapshotModule', function ([_, admin, address1, address2, address3, deployerAddress]) { beforeEach(async function () { this.cmtat = await deployCMTATProxyWithSnapshot( @@ -18,11 +18,26 @@ contract( ) }) ERC20SnapshotModuleMultiplePlannedTest(admin, address1, address2, address3) - ERC20SnapshotModuleOnePlannedSnapshotTest(admin, address1, address2, address3) - ERC20SnapshotModuleZeroPlannedSnapshotTest(admin, address1, address2, address3) + ERC20SnapshotModuleOnePlannedSnapshotTest( + admin, + address1, + address2, + address3 + ) + ERC20SnapshotModuleZeroPlannedSnapshotTest( + admin, + address1, + address2, + address3 + ) ERC20SnapshotModuleCommonRescheduling(admin, address1, address2, address3) ERC20SnapshotModuleCommonScheduling(admin, address1, address2, address3) ERC20SnapshotModuleCommonUnschedule(admin, address1, address2, address3) - ERC20SnapshotModuleCommonGetNextSnapshot(admin, address1, address2, address3) + ERC20SnapshotModuleCommonGetNextSnapshot( + admin, + address1, + address2, + address3 + ) } ) diff --git a/test/proxy/modules/MetaTxModule.test.js b/test/proxy/modules/MetaTxModule.test.js index bef29103..18fa343c 100644 --- a/test/proxy/modules/MetaTxModule.test.js +++ b/test/proxy/modules/MetaTxModule.test.js @@ -1,6 +1,3 @@ -const { time } = require('@openzeppelin/test-helpers') -const { deployProxy } = require('@openzeppelin/truffle-upgrades') -const CMTAT = artifacts.require('CMTAT_PROXY') const MinimalForwarderMock = artifacts.require('MinimalForwarderMock') const MetaTxModuleCommon = require('../../common/MetaTxModuleCommon') const { deployCMTATProxyWithParameter } = require('../../deploymentUtils') @@ -14,12 +11,11 @@ contract( const DECIMAL = 0 this.forwarder = await MinimalForwarderMock.new() await this.forwarder.initialize(ERC2771ForwarderDomain) - const delayTime = BigInt(time.duration.days(3)) this.cmtat = await deployCMTATProxyWithParameter( deployerAddress, this.forwarder.address, admin, - delayTime, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DECIMAL, diff --git a/test/proxy/modules/ValidationModule/ValidationModuleConstructor.test.js b/test/proxy/modules/ValidationModule/ValidationModuleConstructor.test.js index 0815c786..13f70a91 100644 --- a/test/proxy/modules/ValidationModule/ValidationModuleConstructor.test.js +++ b/test/proxy/modules/ValidationModule/ValidationModuleConstructor.test.js @@ -1,6 +1,6 @@ -const { time } = require('@openzeppelin/test-helpers') const ValidationModuleCommon = require('../../../common/ValidationModule/ValidationModuleCommon') const { deployCMTATProxyWithParameter } = require('../../../deploymentUtils') +const { ZERO_ADDRESS } = require('../../../utils') const RuleEngineMock = artifacts.require('RuleEngineMock') const ADDRESS1_INITIAL_BALANCE = 17 const ADDRESS2_INITIAL_BALANCE = 18 @@ -13,12 +13,11 @@ contract( this.flag = 5 const DECIMAL = 0 this.ruleEngineMock = await RuleEngineMock.new({ from: admin }) - const delayTime = BigInt(time.duration.days(3)) this.cmtat = await deployCMTATProxyWithParameter( deployerAddress, _, admin, - delayTime, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DECIMAL, diff --git a/test/standard/modules/ERC20BurnModule.test.js b/test/standard/modules/ERC20BurnModule.test.js index b2e155cf..9a838149 100644 --- a/test/standard/modules/ERC20BurnModule.test.js +++ b/test/standard/modules/ERC20BurnModule.test.js @@ -1,12 +1,12 @@ const ERC20BurnModuleCommon = require('../../common/ERC20BurnModuleCommon') const { deployCMTATStandalone } = require('../../deploymentUtils') contract( - 'Standard - BurnModule', - function ([_, admin, address1, address2, deployerAddress]) { + 'Standard - ERC20BurnModule', + function ([_, admin, address1, address2, address3, deployerAddress]) { beforeEach(async function () { this.cmtat = await deployCMTATStandalone(_, admin, deployerAddress) }) - ERC20BurnModuleCommon(admin, address1, address2) + ERC20BurnModuleCommon(admin, address1, address2, address3) } ) diff --git a/test/standard/modules/ERC20MintModule.test.js b/test/standard/modules/ERC20MintModule.test.js index 4319c447..686bc36d 100644 --- a/test/standard/modules/ERC20MintModule.test.js +++ b/test/standard/modules/ERC20MintModule.test.js @@ -1,7 +1,7 @@ const ERC20MintModuleCommon = require('../../common/ERC20MintModuleCommon') const { deployCMTATStandalone } = require('../../deploymentUtils') contract( - 'Standard - MintModule', + 'Standard - ERC20MintModule', function ([_, admin, address1, address2, deployerAddress]) { beforeEach(async function () { this.cmtat = await deployCMTATStandalone(_, admin, deployerAddress) diff --git a/test/standard/modules/ERC20SnapshotModule.test.js b/test/standard/modules/ERC20SnapshotModule.test.js index 47687cb5..6f5636ec 100644 --- a/test/standard/modules/ERC20SnapshotModule.test.js +++ b/test/standard/modules/ERC20SnapshotModule.test.js @@ -1,4 +1,3 @@ -const CMTAT = artifacts.require('CMTATSnapshotStandaloneTest') const ERC20SnapshotModuleCommonRescheduling = require('../../common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling') const ERC20SnapshotModuleCommonScheduling = require('../../common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling') const ERC20SnapshotModuleCommonUnschedule = require('../../common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule') @@ -8,7 +7,7 @@ const ERC20SnapshotModuleOnePlannedSnapshotTest = require('../../common/ERC20Sna const ERC20SnapshotModuleZeroPlannedSnapshotTest = require('../../common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot') const { deployCMTATStandaloneWithSnapshot } = require('../../deploymentUtils') contract( - 'Standard - SnapshotModule', + 'Standard - ERC20SnapshotModule', function ([_, admin, address1, address2, address3, deployerAddress]) { beforeEach(async function () { this.cmtat = await deployCMTATStandaloneWithSnapshot( @@ -18,11 +17,26 @@ contract( ) }) ERC20SnapshotModuleMultiplePlannedTest(admin, address1, address2, address3) - ERC20SnapshotModuleOnePlannedSnapshotTest(admin, address1, address2, address3) - ERC20SnapshotModuleZeroPlannedSnapshotTest(admin, address1, address2, address3) + ERC20SnapshotModuleOnePlannedSnapshotTest( + admin, + address1, + address2, + address3 + ) + ERC20SnapshotModuleZeroPlannedSnapshotTest( + admin, + address1, + address2, + address3 + ) ERC20SnapshotModuleCommonRescheduling(admin, address1, address2, address3) ERC20SnapshotModuleCommonScheduling(admin, address1, address2, address3) ERC20SnapshotModuleCommonUnschedule(admin, address1, address2, address3) - ERC20SnapshotModuleCommonGetNextSnapshot(admin, address1, address2, address3) + ERC20SnapshotModuleCommonGetNextSnapshot( + admin, + address1, + address2, + address3 + ) } ) diff --git a/test/standard/modules/MetaTxModule.test.js b/test/standard/modules/MetaTxModule.test.js index c6c2ef83..602e5f90 100644 --- a/test/standard/modules/MetaTxModule.test.js +++ b/test/standard/modules/MetaTxModule.test.js @@ -1,4 +1,3 @@ -const { time } = require('@openzeppelin/test-helpers') const MinimalForwarderMock = artifacts.require('MinimalForwarderMock') const MetaTxModuleCommon = require('../../common/MetaTxModuleCommon') const { deployCMTATStandaloneWithParameter } = require('../../deploymentUtils') @@ -16,7 +15,7 @@ contract( deployerAddress, this.forwarder.address, admin, - web3.utils.toBN(time.duration.days(3)), + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DECIMAL, diff --git a/test/standard/modules/ValidationModule/ValidationModule.test.js b/test/standard/modules/ValidationModule/ValidationModule.test.js index 4a512e67..8cbe3229 100644 --- a/test/standard/modules/ValidationModule/ValidationModule.test.js +++ b/test/standard/modules/ValidationModule/ValidationModule.test.js @@ -1,5 +1,6 @@ const ValidationModuleCommon = require('../../../common/ValidationModule/ValidationModuleCommon') const { deployCMTATStandalone } = require('../../../deploymentUtils') +const { ZERO_ADDRESS } = require('../../../utils') const ADDRESS1_INITIAL_BALANCE = 31 const ADDRESS2_INITIAL_BALANCE = 32 const ADDRESS3_INITIAL_BALANCE = 33 diff --git a/test/standard/modules/ValidationModule/ValidationModuleConstructor.test.js b/test/standard/modules/ValidationModule/ValidationModuleConstructor.test.js index c68060df..dfe3da63 100644 --- a/test/standard/modules/ValidationModule/ValidationModuleConstructor.test.js +++ b/test/standard/modules/ValidationModule/ValidationModuleConstructor.test.js @@ -1,9 +1,9 @@ -const { time } = require('@openzeppelin/test-helpers') const ValidationModuleCommon = require('../../../common/ValidationModule/ValidationModuleCommon') const RuleEngineMock = artifacts.require('RuleEngineMock') const { deployCMTATStandaloneWithParameter } = require('../../../deploymentUtils') +const { ZERO_ADDRESS } = require('../../../utils') const ADDRESS1_INITIAL_BALANCE = 17 const ADDRESS2_INITIAL_BALANCE = 18 const ADDRESS3_INITIAL_BALANCE = 19 @@ -14,12 +14,11 @@ contract( this.flag = 5 const DECIMAL = 0 this.ruleEngineMock = await RuleEngineMock.new({ from: admin }) - const delayTime = BigInt(time.duration.days(3)) this.cmtat = await deployCMTATStandaloneWithParameter( deployerAddress, _, admin, - delayTime, + ZERO_ADDRESS, 'CMTA Token', 'CMTAT', DECIMAL, diff --git a/test/utils.js b/test/utils.js index a09b6992..cc236e64 100644 --- a/test/utils.js +++ b/test/utils.js @@ -3,6 +3,8 @@ module.exports = { '0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6', // keccak256("MINTER_ROLE"); BURNER_ROLE: '0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848', // keccak256("BURNER_ROLE"); + BURNER_FROM_ROLE: + '0x5bfe08abba057c54e6a28bce27ce8c53eb21d7a94376a70d475b5dee60b6c4e2', // keccak256("BURNER_FROM_ROLE"); ENFORCER_ROLE: '0x973ef39d76cc2c6090feab1c030bec6ab5db557f64df047a4c4f9b5953cf1df3', // keccak256("ENFORCER_ROLE"); PAUSER_ROLE: @@ -15,6 +17,8 @@ module.exports = { '0xaa2de0737115053bf7d3d68e733306557628aef4b4aefa746cbf344fc7267247', // keccak256("DEBT_CREDIT_EVENT_ROLE"); DEFAULT_ADMIN_ROLE: '0x0000000000000000000000000000000000000000000000000000000000000000', + CMTAT_DEPLOYER_ROLE: + '0x13293a342e85bb7a675992804d0c6194d27d85f90a7401d0666e206fe3b06a03', ZERO_ADDRESS: '0x0000000000000000000000000000000000000000', RULE_MOCK_AMOUNT_MAX: '20', CMTAT_TRANSFER_REJECT: 'CMTAT: transfer rejected by validation module', diff --git a/truffle-config.js b/truffle-config.js index 7e8270cc..061321ba 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -24,7 +24,7 @@ module.exports = { }, compilers: { solc: { - version: '0.8.20', + version: '0.8.22', settings: { optimizer: { enabled: true,

AuthorizationModule.sol
50%5/1062.5%5/875%3/450%5/10AuthorizationModule.sol
100%16/1691.67%22/24100%5/595.45%21/22
  +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138        @@ -195,12 +216,11 @@

      -  -16× +20× -10× -10×   +14× +14×       @@ -211,14 +231,22 @@

      +20× + +        -17×   +  +  +    +  +  +    @@ -235,25 +263,33 @@

      -20× -         +17×   +   +   +   - +         -   - +  +  +  +19× + +  +15× +12×     @@ -263,14 +299,20 @@

      +483× +32× +  +451×   -425× +  +  +464× 28×   -397× -51× +436× +57×   -346× +379×       @@ -279,7 +321,6 @@

  pragma solidity ^0.8.20;   -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../internal/ValidationModuleInternal.sol"; import "../core/PauseModule.sol"; @@ -306,44 +347,20 @@

}   /* - @notice set a RuleEngine - @param ruleEngine_ the call will be reverted if the new value of ruleEngine is the same as the current one + * @notice set a RuleEngine + * @param ruleEngine_ the call will be reverted if the new value of ruleEngine is the same as the current one */ function setRuleEngine( - IERC1404Wrapper ruleEngine_ + IRuleEngine ruleEngine_ ) external onlyRole(DEFAULT_ADMIN_ROLE) { - if (ruleEngine == ruleEngine_) - revert Errors.CMTAT_ValidationModule_SameValue(); + if (ruleEngine == ruleEngine_){ + revert Errors.CMTAT_ValidationModule_SameValue(); + } ruleEngine = ruleEngine_; emit RuleEngine(ruleEngine_); }   - /** - * @dev ERC1404 check if _value token can be transferred from _from to _to - * @param from address The address which you want to send tokens from - * @param to address The address which you want to transfer to - * @param amount uint256 the amount of tokens to be transferred - * @return code of the rejection reason - */ - function detectTransferRestriction( - address from, - address to, - uint256 amount - ) public view override returns (uint8 code) { - if (paused()) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_PAUSED); - } else if (frozen(from)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_FROM_FROZEN); - } else if (frozen(to)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_TO_FROZEN); - } else if (address(ruleEngine) != address(0)) { - return _detectTransferRestriction(from, to, amount); - } else { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - } -  - /** + /** * @dev ERC1404 returns the human readable explaination corresponding to the error code returned by detectTransferRestriction * @param restrictionCode The error code returned by detectTransferRestriction * @return message The human readable explaination corresponding to the error code returned by detectTransferRestriction @@ -374,13 +391,38 @@

return TEXT_UNKNOWN_CODE; } } + + /** + * @dev ERC1404 check if _value token can be transferred from _from to _to + * @param from address The address which you want to send tokens from + * @param to address The address which you want to transfer to + * @param amount uint256 the amount of tokens to be transferred + * @return code of the rejection reason + */ + function detectTransferRestriction( + address from, + address to, + uint256 amount + ) public view override returns (uint8 code) { + if (paused()) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_PAUSED); + } else if (frozen(from)) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_FROM_FROZEN); + } else if (frozen(to)) { + return uint8(REJECTED_CODE_BASE.TRANSFER_REJECTED_TO_FROZEN); + } else if (address(ruleEngine) != address(0)) { + return _detectTransferRestriction(from, to, amount); + } else { + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + }   function validateTransfer( address from, address to, uint256 amount ) public view override returns (bool) { - if (paused() || frozen(from) || frozen(to)) { + if (!_validateTransferByModule(from, to, amount)) { return false; } if (address(ruleEngine) != address(0)) { @@ -388,6 +430,27 @@

} return true; } +  + function _validateTransferByModule( + address from, + address to, + uint256 /*amount*/ + ) internal view returns (bool) { + if (paused() || frozen(from) || frozen(to)) { + return false; + } + return true; + } +  + function _operateOnTransfer(address from, address to, uint256 amount) override internal returns (bool){ + if (!_validateTransferByModule(from, to, amount)){ + return false; + } + if (address(ruleEngine) != address(0)) { + return ValidationModuleInternal._operateOnTransfer(from, to, amount); + } + return true; + }   uint256[50] private __gap; } @@ -397,7 +460,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html index f39ec619..a6acad6f 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html @@ -22,22 +22,22 @@

100% Statements - 27/27 + 35/35
- 96.88% + 97.37% Branches - 31/32 + 37/38
100% Functions - 5/5 + 7/7
100% Lines - 22/22 + 30/30
@@ -62,13 +62,13 @@

ValidationModule.sol
100%27/2796.88%31/3235/3597.37%37/38 100%5/57/7 100%22/2230/30
  +115        @@ -201,7 +187,7 @@

      -364× +384×       @@ -243,9 +229,6 @@

    14× -10× -10× -        @@ -279,22 +262,11 @@

      -  -  -  - - - + +   -  -  -  -  -  -  - - +       @@ -304,7 +276,6 @@

pragma solidity ^0.8.20;   // required OZ imports here -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import "../../../libraries/Errors.sol";   @@ -312,6 +283,7 @@

/* Events */ /** * @notice Emitted when the specified `spender` spends the specified `value` tokens owned by the specified `owner` reducing the corresponding allowance. + * @dev The allowance can be also "spend" with the function BurnFrom, but in this case, the emitted event is BurnFrom. */ event Spend(address indexed owner, address indexed spender, uint256 value);   @@ -366,14 +338,11 @@

if (bool(tos.length != values.length)) { revert Errors.CMTAT_ERC20BaseModule_TosValueslengthMismatch(); } -  - for (uint256 i = 0; i < tos.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < tos.length; ++i) { // We call directly the internal function transfer // The reason is that the public function adds only the owner address recovery ERC20Upgradeable._transfer(_msgSender(), tos[i], values[i]); - unchecked { - ++i; - } } // not really useful // Here only to keep the same behaviour as transfer @@ -402,27 +371,16 @@

}   /** - * @notice Allows `spender` to withdraw from your account multiple times, up to the `value` amount - * @dev see {OpenZeppelin ERC20 - approve} - */ - function approve( - address spender, - uint256 value, - uint256 currentAllowance - ) public virtual returns (bool) { - address owner = _msgSender(); - uint256 currentAllowanceFromSmartContract = allowance(owner, spender); - if (currentAllowanceFromSmartContract != currentAllowance) { - revert Errors.CMTAT_ERC20BaseModule_WrongAllowance( - spender, - currentAllowanceFromSmartContract, - currentAllowance - ); + * @param addresses list of address to know their balance + * @return balances ,totalSupply array with balance for each address, totalSupply + * @dev useful for the snapshot rule + */ + function balanceInfo(address[] calldata addresses) public view returns(uint256[] memory balances , uint256 totalSupply) { + balances = new uint256[](addresses.length); + for(uint256 i = 0; i < addresses.length; ++i){ + balances[i] = ERC20Upgradeable.balanceOf(addresses[i]); } - // We call directly the internal function _approve - // The reason is that the public function adds only the owner address recovery - ERC20Upgradeable._approve(owner, spender, value); - return true; + totalSupply = ERC20Upgradeable.totalSupply(); }   uint256[50] private __gap; @@ -433,7 +391,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html index 60b8f856..b01c2741 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html @@ -22,22 +22,22 @@

100% Statements - 7/7 + 14/14
- 90% + 92.86% Branches - 9/10 + 13/14
100% Functions - 3/3 + 4/4
100% Lines - 11/11 + 18/18
@@ -118,7 +118,49 @@

73 74 75 -76

  +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115  +  +  +        @@ -150,8 +192,10 @@

      -12× - +  +18× +14× +        @@ -185,28 +229,66 @@

24× 20× -20× -20×             +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + +  + +  +  + + +  +  + +  + +  + +  +  +  +   

//SPDX-License-Identifier: MPL-2.0
  
 pragma solidity ^0.8.20;
  
 import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
 import "../../security/AuthorizationModule.sol";
- 
-abstract contract ERC20BurnModule is ERC20Upgradeable, AuthorizationModule {
+import "../../../interfaces/ICCIPToken.sol";
+abstract contract ERC20BurnModule is ERC20Upgradeable, ICCIPBurnFromERC20, AuthorizationModule {
+    bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+    bytes32 public constant BURNER_FROM_ROLE = keccak256("BURNER_FROM_ROLE");
     /**
-     * @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason`
-     */
+    * @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason`
+    */
     event Burn(address indexed owner, uint256 value, string reason);
- 
+    /**
+    * @notice Emitted when the specified `spender` burns the specified `value` tokens owned by the specified `owner` reducing the corresponding allowance.
+    */
+    event BurnFrom(address indexed owner, address indexed spender, uint256 value);
     function __ERC20BurnModule_init_unchained() internal EonlyInitializing {
         // no variable to initialize
     }
@@ -220,7 +302,7 @@ 

* Requirements: * - the caller must have the `BURNER_ROLE`. */ - function forceBurn( + function burn( address account, uint256 value, string calldata reason @@ -228,10 +310,11 @@

_burn(account, value); emit Burn(account, value, reason); } +    /** * - * @notice batch version of {forceBurn}. + * @notice batch version of {burn}. * @dev * See {ERC20-_burn} and {OpenZeppelin ERC1155_burnBatch}. * @@ -243,7 +326,7 @@

* - `accounts` and `values` must have the same length * - the caller must have the `BURNER_ROLE`. */ - function forceBurnBatch( + function burnBatch( address[] calldata accounts, uint256[] calldata values, string calldata reason @@ -256,15 +339,49 @@

if (bool(accounts.length != values.length)) { revert Errors.CMTAT_BurnModule_AccountsValueslengthMismatch(); } -  - for (uint256 i = 0; i < accounts.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < accounts.length; ++i ) { _burn(accounts[i], values[i]); emit Burn(accounts[i], values[i], reason); - unchecked { - ++i; - } } } +  + /** + * @notice Destroys `amount` tokens from `account`, deducting from the caller's + * allowance. + * @dev + * Can be used to authorize a bridge (e.g. CCIP) to burn token owned by the bridge + * No string parameter reason to be compatible with Bridge, e.g. CCIP + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ``accounts``'s tokens of at least + * `value`. + */ + function burnFrom(address account, uint256 value) + public + onlyRole(BURNER_FROM_ROLE) + { + // Allowance check + address sender = _msgSender(); + uint256 currentAllowance = allowance(account, sender); + if(currentAllowance < value){ + // ERC-6093 + revert ERC20InsufficientAllowance(sender, currentAllowance, value); + } + // Update allowance + unchecked { + _approve(account, sender, currentAllowance - value); + } + // burn + _burn(account, value); + // We also emit a burn event since its a burn operation + emit Burn(account, value, "burnFrom"); + // Specific event for the operation + emit BurnFrom(account, sender, value); + }   uint256[50] private __gap; } @@ -274,7 +391,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html index 88c90dad..f077c4e3 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html @@ -37,7 +37,7 @@

100% Lines - 11/11 + 9/9
@@ -148,8 +148,11 @@

      -246× -246× +  +  +  +277× +277×       @@ -183,9 +186,6 @@

18× 54× 54× -54× -54× -        @@ -196,10 +196,11 @@

pragma solidity ^0.8.20;   import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; -  -abstract contract ERC20MintModule is ERC20Upgradeable, AuthorizationModule { +import "../../../interfaces/ICCIPToken.sol"; +abstract contract ERC20MintModule is ERC20Upgradeable, ICCIPMintERC20, AuthorizationModule { + // MintModule + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); /** * @notice Emitted when the specified `value` amount of new tokens are created and * allocated to the specified `account`. @@ -212,6 +213,8 @@

  /** * @notice Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0) + * @param account token receiver + * @param value amount of tokens * @dev * See {OpenZeppelin ERC20-_mint}. * Emits a {Mint} event. @@ -253,13 +256,10 @@

if (bool(accounts.length != values.length)) { revert Errors.CMTAT_MintModule_AccountsValueslengthMismatch(); } -  - for (uint256 i = 0; i < accounts.length; ) { + // No need of unchecked block since Soliditiy 0.8.22 + for (uint256 i = 0; i < accounts.length; ++i ) { _mint(accounts[i], values[i]); emit Mint(accounts[i], values[i]); - unchecked { - ++i; - } } }   @@ -271,7 +271,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html index 66fc14f8..d0f53140 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html @@ -97,7 +97,11 @@

52 53 54 -55

  +55 +56 +57  +  +        @@ -167,11 +171,13 @@

EnforcementModuleInternal, AuthorizationModule { + // EnforcementModule + bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE"); string internal constant TEXT_TRANSFER_REJECTED_FROM_FROZEN = - "The address FROM is frozen"; + "Address FROM is frozen";   string internal constant TEXT_TRANSFER_REJECTED_TO_FROZEN = - "The address TO is frozen"; + "Address TO is frozen";   function __EnforcementModule_init_unchained() internal EonlyInitializing { // no variable to initialize @@ -211,7 +217,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html index f80dbf69..5d2f5fd8 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html @@ -126,7 +126,9 @@

81 82 83 -84

  +84 +85  +        @@ -214,7 +216,6 @@

pragma solidity ^0.8.20;   import "../../../../openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol";   /** @@ -228,6 +229,8 @@

* event of a large bug. */ abstract contract PauseModule is PausableUpgradeable, AuthorizationModule { + // PauseModule + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); string internal constant TEXT_TRANSFER_REJECTED_PAUSED = "All transfers paused"; bool private isDeactivated; @@ -298,7 +301,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html index 3c118ee8..a7da88fb 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html @@ -22,22 +22,22 @@

100% Statements - 42/42 + 45/45
- 87.93% + 88.33% Branches - 51/58 + 53/60
100% Functions - 24/24 + 25/25
100% Lines - 67/67 + 68/68
@@ -75,26 +75,26 @@

ERC20BaseModule.sol
100%15/1580%8/1011/1175%6/8 100% 5/5 100%21/2117/17
ERC20BurnModule.sol
100%7/790%9/1014/1492.86%13/14 100%3/34/4 100%11/1118/18
100% 3/3 100%11/119/9
  +82 +83 +84 +85  +  +  +        @@ -222,6 +228,9 @@

ContextUpgradeable, AuthorizationModule { + // CreditEvents + bytes32 public constant DEBT_CREDIT_EVENT_ROLE = + keccak256("DEBT_CREDIT_EVENT_ROLE"); CreditEvents public creditEvents;   /* Events */ @@ -292,7 +301,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html index 77084e43..322d1741 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html @@ -274,7 +274,11 @@

229 230 231 -232

  +232 +233 +234  +  +        @@ -522,6 +526,8 @@

ContextUpgradeable, AuthorizationModule { + // DebtModule + bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE"); DebtBase public debt;   /* Events */ @@ -566,9 +572,9 @@

// no variable to initialize }   - /* - @notice Set all attributes of debt - The values of all attributes will be changed even if the new values are the same as the current ones + /** + * @notice Set all attributes of debt + * The values of all attributes will be changed even if the new values are the same as the current ones */ function setDebt(DebtBase calldata debt_) public onlyRole(DEBT_ROLE) { debt = debt_; @@ -603,8 +609,8 @@

emit CouponFrequency(debt_.couponFrequency, debt_.couponFrequency); }   - /* - @notice The call will be reverted if the new value of interestRate is the same as the current one + /** + * @notice The call will be reverted if the new value of interestRate is the same as the current one */ function setInterestRate(uint256 interestRate_) public onlyRole(DEBT_ROLE) { if (interestRate_ == debt.interestRate) { @@ -614,8 +620,8 @@

emit InterestRate(interestRate_); }   - /* - @notice The call will be reverted if the new value of parValue is the same as the current one + /** + * @notice The call will be reverted if the new value of parValue is the same as the current one */ function setParValue(uint256 parValue_) public onlyRole(DEBT_ROLE) { if (parValue_ == debt.parValue) { @@ -625,8 +631,8 @@

emit ParValue(parValue_); }   - /* - @notice The Guarantor will be changed even if the new value is the same as the current one + /** + * @notice The Guarantor will be changed even if the new value is the same as the current one */ function setGuarantor( string calldata guarantor_ @@ -635,8 +641,8 @@

emit Guarantor(guarantor_, guarantor_); }   - /* - @notice The bonHolder will be changed even if the new value is the same as the current one + /** + * @notice The bonHolder will be changed even if the new value is the same as the current one */ function setBondHolder( string calldata bondHolder_ @@ -645,8 +651,8 @@

emit BondHolder(bondHolder_, bondHolder_); }   - /* - @notice The maturityDate will be changed even if the new value is the same as the current one + /** + * @notice The maturityDate will be changed even if the new value is the same as the current one */ function setMaturityDate( string calldata maturityDate_ @@ -655,8 +661,8 @@

emit MaturityDate(maturityDate_, maturityDate_); }   - /* - @notice The interestScheduleFormat will be changed even if the new value is the same as the current one + /** + * @notice The interestScheduleFormat will be changed even if the new value is the same as the current one */ function setInterestScheduleFormat( string calldata interestScheduleFormat_ @@ -668,8 +674,8 @@

); }   - /* - @notice The interestPaymentDate will be changed even if the new value is the same as the current one + /** + * @notice The interestPaymentDate will be changed even if the new value is the same as the current one */ function setInterestPaymentDate( string calldata interestPaymentDate_ @@ -678,8 +684,8 @@

emit InterestPaymentDate(interestPaymentDate_, interestPaymentDate_); }   - /* - @notice The dayCountConvention will be changed even if the new value is the same as the current one + /** + * @notice The dayCountConvention will be changed even if the new value is the same as the current one */ function setDayCountConvention( string calldata dayCountConvention_ @@ -688,8 +694,8 @@

emit DayCountConvention(dayCountConvention_, dayCountConvention_); }   - /* - @notice The businessDayConvention will be changed even if the new value is the same as the current one + /** + * @notice The businessDayConvention will be changed even if the new value is the same as the current one */ function setBusinessDayConvention( string calldata businessDayConvention_ @@ -701,8 +707,8 @@

); }   - /* - @notice The publicHolidayCalendar will be changed even if the new value is the same as the current one + /** + * @notice The publicHolidayCalendar will be changed even if the new value is the same as the current one */ function setPublicHolidaysCalendar( string calldata publicHolidaysCalendar_ @@ -714,8 +720,8 @@

); }   - /* - @notice The issuanceDate will be changed even if the new value is the same as the current one + /** + * @notice The issuanceDate will be changed even if the new value is the same as the current one */ function setIssuanceDate( string calldata issuanceDate_ @@ -724,8 +730,8 @@

emit IssuanceDate(issuanceDate_, issuanceDate_); }   - /* - @notice The couponFrequency will be changed even if the new value is the same as the current one + /** + * @notice The couponFrequency will be changed even if the new value is the same as the current one */ function setCouponFrequency( string calldata couponFrequency_ @@ -742,7 +748,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html index 8b114961..b75db962 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html @@ -90,7 +90,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html index d73d7d2f..fe06161a 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html @@ -120,7 +120,8 @@

75 76 77 -78

  +78 +79        @@ -148,7 +149,8 @@

      -170× +  +176×       @@ -192,7 +194,7 @@

      -12× +16×       @@ -201,7 +203,6 @@

  pragma solidity ^0.8.20;   -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; import "../../security/AuthorizationModule.sol"; import "../../internal/ERC20SnapshotModuleInternal.sol";   @@ -215,6 +216,8 @@

ERC20SnapshotModuleInternal, AuthorizationModule { + // SnapshotModule + bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE"); function __ERC20SnasphotModule_init_unchained() internal EonlyInitializing { // no variable to initialize } @@ -280,7 +283,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html index 082448fc..0d146d71 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html @@ -20,9 +20,9 @@

- 50% + 100% Statements - 1/2 + 0/0
100% @@ -30,18 +30,18 @@

0/0

- 66.67% + 100% Functions - 2/3 + 1/1
- 50% + 100% Lines - 1/2 + 0/0
-
+

-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
-	
-	
-	
-	
@@ -90,7 +90,7 @@ 

diff --git a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol.html b/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol.html deleted file mode 100644 index dff5edb2..00000000 --- a/doc/general/test/coverage/lcov-report/contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol.html +++ /dev/null @@ -1,716 +0,0 @@ - - - - Code coverage report for contracts/test/CMTATSnapshot/CMTAT_BASE_SnapshotTest.sol - - - - - - - -
-
-

- all files / contracts/test/CMTATSnapshot/ CMTAT_BASE_SnapshotTest.sol -

-
-
- 89.29% - Statements - 25/28 -
-
- 50% - Branches - 4/8 -
-
- 62.5% - Functions - 5/8 -
-
- 86.21% - Lines - 25/29 -
-
-
-
-

1 2 @@ -66,37 +66,7 @@

21 22 23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45

  -  -  -  -  -  -  -  -  -  +24        @@ -116,18 +86,6 @@

      -1455× -  -  -  -  -  -  -  -  -  -  -        @@ -136,7 +94,6 @@

pragma solidity ^0.8.20;   import "../../../../openzeppelin-contracts-upgradeable/contracts/metatx/ERC2771ContextUpgradeable.sol"; -import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";   /** * @dev Meta transaction (gasless) module. @@ -152,26 +109,6 @@

) ERC2771ContextUpgradeable(trustedForwarder) { // Nothing to do } -  - function _msgSender() - internal - view - virtual - override - returns (address sender) - { - return ERC2771ContextUpgradeable._msgSender(); - } -  - function _msgData() - internal - view - virtual - override - returns (bytes calldata) - { - return ERC2771ContextUpgradeable._msgData(); - }   uint256[50] private __gap; } @@ -181,7 +118,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html index 99005e95..9b3e8d2d 100644 --- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html @@ -20,9 +20,9 @@

- 85.71% + 100% Statements - 6/7 + 5/5
91.67% @@ -30,14 +30,14 @@

11/12

- 88.89% + 100% Functions - 8/9 + 7/7
- 85.71% + 100% Lines - 6/7 + 5/5
@@ -72,16 +72,16 @@

MetaTxModule.sol
50%1/2MetaTxModule.sol
100%0/0100%0/0100%1/1 100% 0/066.67%2/350%1/2
- -
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -86× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -86× -86× -  -86× -  -86× -86× -  -  -86× -  -  -  -  -86× -  -86× -  -  -  -86× -86× -86× -86× -  -86× -86× -  -86× -86× -  -  -  -  -  -86× -  -  -86× -86× -86× -  -  -86× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -66× -  -  -  -  -  -  -  -  -66× -  -  -  -  -  -  -  -  -  -  -  -426× -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
//SPDX-License-Identifier: MPL-2.0
- 
-pragma solidity ^0.8.20;
- 
-// required OZ imports here
-import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
-import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol";
- 
-import "../../modules/wrapper/core/BaseModule.sol";
-import "../../modules/wrapper/core/ERC20BurnModule.sol";
-import "../../modules/wrapper/core/ERC20MintModule.sol";
-import "../../modules/wrapper/core/EnforcementModule.sol";
-import "../../modules/wrapper/core/ERC20BaseModule.sol";
-import "../../modules/wrapper/core/PauseModule.sol";
-/*
-SnapshotModule:
-Add this import in case you add the SnapshotModule
-*/
-import "../../modules/wrapper/controllers/ValidationModule.sol";
-import "../../modules/wrapper/extensions/ERC20SnapshotModule.sol";
-import "../../modules/wrapper/extensions/MetaTxModule.sol";
-import "../../modules/wrapper/extensions/DebtModule/DebtBaseModule.sol";
-import "../../modules/wrapper/extensions/DebtModule/CreditEventsModule.sol";
-import "../../modules/security/AuthorizationModule.sol";
- 
-import "../../libraries/Errors.sol";
- 
-abstract contract CMTAT_BASE_SnapshotTest is
-    Initializable,
-    ContextUpgradeable,
-    BaseModule,
-    PauseModule,
-    ERC20MintModule,
-    ERC20BurnModule,
-    EnforcementModule,
-    ValidationModule,
-    MetaTxModule,
-    ERC20BaseModule,
-    ERC20SnapshotModule,
-    DebtBaseModule,
-    CreditEventsModule
-{
-    /**
-    @notice 
-    initialize the proxy contract
-    The calls to this function will revert if the contract was deployed without a proxy
-    */
-    function initialize(
-        address admin,
-        uint48 initialDelayToAcceptAdminRole, 
-        string memory nameIrrevocable,
-        string memory symbolIrrevocable,
-        uint8 decimalsIrrevocable,
-        string memory tokenId_,
-        string memory terms_,
-        IERC1404Wrapper ruleEngine_,
-        string memory information_,
-        uint256 flag_
-    ) public Einitializer {
-        __CMTAT_init(
-            admin,
-            initialDelayToAcceptAdminRole,
-            nameIrrevocable,
-            symbolIrrevocable,
-            decimalsIrrevocable,
-            tokenId_,
-            terms_,
-            ruleEngine_,
-            information_,
-            flag_
-        );
-    }
- 
-    /**
-    @dev calls the different initialize functions from the different modules
-    */
-    function __CMTAT_init(
-        address admin,
-        uint48 initialDelayToAcceptAdminRole, 
-        string memory nameIrrevocable,
-        string memory symbolIrrevocable,
-        uint8 decimalsIrrevocable,
-        string memory tokenId_,
-        string memory terms_,
-        IERC1404Wrapper ruleEngine_,
-        string memory information_,
-        uint256 flag_
-    ) internal EonlyInitializing {
-        /* OpenZeppelin library */
-        // OZ init_unchained functions are called firstly due to inheritance
-        __Context_init_unchained();
-        __ERC20_init_unchained(nameIrrevocable, symbolIrrevocable);
-        // AccessControlUpgradeable inherits from ERC165Upgradeable
-        __ERC165_init_unchained();
-        // AuthorizationModule inherits from AccessControlUpgradeable
-        __AccessControl_init_unchained();
-        __Pausable_init_unchained();
- 
-        /* Internal Modules */
-        __Enforcement_init_unchained();
-        /*
-        SnapshotModule:
-        Add this call in case you add the SnapshotModule
-        */
-        __ERC20Snapshot_init_unchained();
-        
-        __Validation_init_unchained(ruleEngine_);
- 
-        /* Wrapper */
-        // AuthorizationModule_init_unchained is called firstly due to inheritance
-        __AuthorizationModule_init_unchained();
-        __AccessControlDefaultAdminRules_init_unchained(initialDelayToAcceptAdminRole, admin);
-        __ERC20BurnModule_init_unchained();
-        __ERC20MintModule_init_unchained();
-        // EnforcementModule_init_unchained is called before ValidationModule_init_unchained due to inheritance
-        __EnforcementModule_init_unchained();
-        __ERC20BaseModule_init_unchained(decimalsIrrevocable);
-        // PauseModule_init_unchained is called before ValidationModule_init_unchained due to inheritance
-        __PauseModule_init_unchained();
-        __ValidationModule_init_unchained();
- 
-        /*
-        SnapshotModule:
-        Add this call in case you add the SnapshotModule
-        */
-        __ERC20SnasphotModule_init_unchained();
- 
-        /* Other modules */
-        __DebtBaseModule_init_unchained();
-        __CreditEvents_init_unchained();
-        __Base_init_unchained(tokenId_, terms_, information_, flag_);
- 
-        /* own function */
-        __CMTAT_init_unchained();
-    }
- 
-    function __CMTAT_init_unchained() internal EonlyInitializing {
-        // no variable to initialize
-    }
- 
-    /**
-    @notice Returns the number of decimals used to get its user representation.
-    */
-    function decimals()
-        public
-        view
-        virtual
-        override(ERC20Upgradeable, ERC20BaseModule)
-        returns (uint8)
-    {
-        return ERC20BaseModule.decimals();
-    }
- 
-    function transferFrom(
-        address sender,
-        address recipient,
-        uint256 amount
-    )
-        public
-        virtual
-        override(ERC20Upgradeable, ERC20BaseModule)
-        returns (bool)
-    {
-        return ERC20BaseModule.transferFrom(sender, recipient, amount);
-    }
- 
-    /*
-    @dev 
-    SnapshotModule:
-    - override SnapshotModuleInternal if you add the SnapshotModule
-    e.g. override(SnapshotModuleInternal, ERC20Upgradeable)
-    - remove the keyword view
-    */
-    function _update(
-        address from,
-        address to,
-        uint256 amount
-    ) internal override(ERC20SnapshotModuleInternal, ERC20Upgradeable) {
-        // We call the SnapshotModule only if the transfer is valid
-        Iif (!ValidationModule.validateTransfer(from, to, amount))
-            revert Errors.CMTAT_InvalidTransfer(from, to, amount);
-        /*
-        We do not call ERC20Upgradeable._update(from, to, amount) here because it is called inside the SnapshotModule
-        */
-        /*
-        SnapshotModule:
-        Add this call in case you add the SnapshotModule
-        */
-        ERC20SnapshotModuleInternal._update(from, to, amount);
-    }
- 
-    /** 
-    @dev This surcharge is not necessary if you do not use the MetaTxModule
-    */
-    function _msgSender()
-        internal
-        view
-        override(MetaTxModule, ContextUpgradeable)
-        returns (address sender)
-    {
-        return MetaTxModule._msgSender();
-    }
- 
-    /** 
-    @dev This surcharge is not necessary if you do not use the MetaTxModule
-    */
-    function _msgData()
-        internal
-        view
-        override(MetaTxModule, ContextUpgradeable)
-        returns (bytes calldata)
-    {
-        return MetaTxModule._msgData();
-    }
- 
-    uint256[50] private __gap;
-}
- 
-
- - - - - - - - diff --git a/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html b/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html index 7c1eec94..77a7b2e2 100644 --- a/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html +++ b/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html @@ -118,7 +118,7 @@

diff --git a/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html b/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html index 82e459fa..c64aa1d2 100644 --- a/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html +++ b/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html @@ -77,7 +77,7 @@

diff --git a/doc/general/test/coverage/lcov-report/index.html b/doc/general/test/coverage/lcov-report/index.html index 43688c12..b4ae6e63 100644 --- a/doc/general/test/coverage/lcov-report/index.html +++ b/doc/general/test/coverage/lcov-report/index.html @@ -20,24 +20,24 @@

- 93.75% + 99.66% Statements - 270/288 + 291/292
- 87.88% + 93.1% Branches - 232/264 + 270/290
- 91.07% + 99.13% Functions - 102/112 + 114/115
- 94.29% + 99.49% Lines - 347/368 + 388/390
@@ -71,6 +71,19 @@

2/2
contracts/deployment/
100%18/18100%14/14100%7/7100%31/31
contracts/interfaces/
0/0
contracts/interfaces/engine/
100%0/0100%0/0100%0/0100%0/0
contracts/libraries/
contracts/modules/
96.15%25/26
96.88%31/32 75% 6/887.5%7/896.3%26/2790%9/1096.97%32/33
contracts/modules/internal/
92.73%102/11086.96%80/9286.67%26/3093.2%137/147
100%31/3185%17/20100%18/18100%42/42
contracts/modules/security/
50%5/1062.5%5/875%3/450%5/10contracts/modules/internal/base/
100%74/7497.06%66/68100%14/14100%102/102
contracts/modules/wrapper/controllers/contracts/modules/security/
100%27/2796.88%31/3216/1691.67%22/24 100% 5/595.45%21/22
contracts/modules/wrapper/controllers/
100%22/2235/3597.37%37/38100%7/7100%30/30
contracts/modules/wrapper/core/
100%42/4287.93%51/5845/4588.33%53/60 100%24/2425/25 100%67/6768/68
contracts/modules/wrapper/extensions/
85.71%6/7
100%5/5 91.67% 11/1288.89%8/985.71%6/7100%7/7100%5/5
55/55
contracts/test/CMTATSnapshot/
90%27/3050%4/870%7/1087.1%27/31
contracts/test/proxy/