diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..70af670 --- /dev/null +++ b/.gitignore @@ -0,0 +1,113 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +#Typescript compiled JS +build/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# VSCode folder +.vscode/ +.vscode +vscode/ +vscode \ No newline at end of file diff --git a/README.md b/README.md index ce36276..5d794d2 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,42 @@ ## Introduction -Solidity is the primary language for developing smart contracts on blockchain platforms such as Celo. A common use case of blockchain technology is to build supply chain solutions, enabling transparent and immutable tracking of assets from production to delivery. This challenge involves creating a simple supply chain contract using Solidity. +This is an answer to CELO [Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge](https://github.com/celo-academy/Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge) developed with Hardhat, the contract is coded in Solidity and tests in JavaScript. -## Problem Statement +The main purpose of this repository is to provide an educational example for a basic Supply Chain problem, while teaching basic Solidity principles and how to test them. -Design a smart contract that facilitates a basic supply chain for tracking assets with the following requirements: +Contract and tests are commented for an easy understanding. -1. The contract should allow producers to register new assets, each with a unique ID and additional details such as product type, production date, and origin. -2. The contract should allow assets to be transferred from the producer to a carrier, from the carrier to a retailer, and from the retailer to a consumer. -3. Each transfer should update the asset's current holder and maintain a history of all past holders. -4. The contract should allow anyone to check an asset's current holder and its holder history by querying the asset's unique ID. -5. The contract should prevent an asset's details from being altered once it is registered. +## How to run -## Hints +Clone repository and install dependencies.\ +There is one contract called SupplyChainTracking.sol included in the "contracts" folder.\ +Test files are included inside the "test" folder.\ +To compile the contract run: +``` +npx hardhat compile +``` +To run the test suite: +``` +npx hardhat test +``` +You can also visit [https://remix.ethereum.org/](https://remix.ethereum.org/) to deploy and play with the contract. -- Use a `struct` to define an asset with attributes like ID, product type, production date, origin, current holder, and holder history. -- Use `mapping` to link asset IDs with their respective asset data. -- Use `msg.sender` to track the current holder during asset transfers. -- Use `modifier` functions to enforce restrictions, such as preventing changes after an asset is registered. +## Challenge requirements: -## Evaluation Criteria +Design a smart contract that facilitates a basic supply chain for tracking assets with the following requirements: -- **Correctness**: The contract should compile without errors and fulfill all the requirements. -- **Readability**: The contract should be well-documented, with comments explaining the code. -- **Testability**: You should also provide examples of how to test each function of the contract. +1. [x] The contract should allow producers to register new assets, each with a unique ID and additional details such as product type, production date, and origin. +2. [x] The contract should allow assets to be transferred from the producer to a carrier, from the carrier to a retailer, and from the retailer to a consumer. +3. [x] Each transfer should update the asset's current holder and maintain a history of all past holders. +4. [x] The contract should allow anyone to check an asset's current holder and its holder history by querying the asset's unique ID. +5. [x] The contract should prevent an asset's details from being altered once it is registered. +6. [x] Use a `struct` to define an asset with attributes like ID, product type, production date, origin, current holder, and holder history. +7. [x] Use `mapping` to link asset IDs with their respective asset data. +8. [x] Use `msg.sender` to track the current holder during asset transfers. +9. [x] Use `modifier` functions to enforce restrictions, such as preventing changes after an asset is registered. -Please note, managing asset information on a supply chain requires considerations for privacy and security. This challenge does not cover all aspects of a real-world decentralized supply chain system. +## Warning -For a comprehensive understanding of Celo smart contracts and Solidity, please refer to the Celo and Solidity tutorials. - -## Submission +Please note, managing asset information on a supply chain requires considerations for privacy and security. This challenge does not cover all aspects of a real-world decentralized supply chain system. -Please reply with a link to your PR on GitHub, including your supply chain contract. Also, include any notes or comments you think are necessary to understand your design and choices. Lastly, provide a brief explanation about how each function of the contract should be tested. +For a comprehensive understanding of Celo smart contracts and Solidity, please refer to the Celo and Solidity tutorials. \ No newline at end of file diff --git a/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json b/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json new file mode 100644 index 0000000..064c219 --- /dev/null +++ b/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "..\\..\\..\\..\\build-info\\f54596849a897a67ea2e588cc2693605.json" +} diff --git a/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json b/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json new file mode 100644 index 0000000..5345edc --- /dev/null +++ b/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json @@ -0,0 +1,85 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Ownable", + "sourceName": "@openzeppelin/contracts/access/Ownable.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json b/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json new file mode 100644 index 0000000..064c219 --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "..\\..\\..\\..\\build-info\\f54596849a897a67ea2e588cc2693605.json" +} diff --git a/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json b/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json new file mode 100644 index 0000000..8fe86fc --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/build-info/f54596849a897a67ea2e588cc2693605.json b/artifacts/build-info/f54596849a897a67ea2e588cc2693605.json new file mode 100644 index 0000000..38b4529 --- /dev/null +++ b/artifacts/build-info/f54596849a897a67ea2e588cc2693605.json @@ -0,0 +1 @@ +{"id":"f54596849a897a67ea2e588cc2693605","_format":"hh-sol-build-info-1","solcVersion":"0.8.20","solcLongVersion":"0.8.20+commit.a1b79de6","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"contracts/SupplyChainTracking.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\r\npragma solidity ^0.8.2;\r\n\r\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\r\n\r\n/**\r\n * @title SupplyChainTracking\r\n * @author raphaelpg\r\n * @notice Simple Supply Chain Tracking contract\r\n * Contract inherit from OpenZeppelin Ownable.sol contract to provide ownership functionnalities\r\n * Visit https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol\r\n */\r\ncontract SupplyChainTracking is Ownable {\r\n\r\n /**\r\n * Contract state variables.\r\n */\r\n uint assetCounter; // asset Id counter, incremented when a new asset is registered\r\n\r\n /**\r\n * Possible roles of the actors \r\n * For example, to set an actor role as a Producer, actor's role must be registered as 0 \r\n */\r\n enum Role {\r\n Producer,\r\n Carrier,\r\n Retailer,\r\n Consumer\r\n }\r\n\r\n /**\r\n * Defining the struct variables Actor and Asset\r\n * Actor will be using the Role defined above\r\n */\r\n struct Actor {\r\n Role role;\r\n bool active;\r\n }\r\n\r\n /**\r\n * For simplicity here we define the Type and Origin of a product as a string\r\n */\r\n struct Asset {\r\n uint productId;\r\n string productType; \r\n uint256 productionDate; // Date in Unix timestamp format \r\n string origin;\r\n address currentHolder;\r\n address[] holderHistory;\r\n }\r\n\r\n /**\r\n * Mappings to store actors and assets\r\n */\r\n mapping(address => Actor) private actors;\r\n mapping(uint => Asset) public assets;\r\n\r\n /**\r\n * List of events emitted by the functions\r\n */\r\n event ActorRegistered(address actor, Role role);\r\n event ActorDisabled(address actor);\r\n event AssetRegistered(uint productId);\r\n event AssetTransfered(uint productId, address _from, address _to);\r\n\r\n /**\r\n * Defining specific errors\r\n */\r\n error OnlyAssetOwner();\r\n\r\n /**\r\n * Contract initialization.\r\n * Here we initialized the variables to their starting values\r\n * Msg.sender is passed as a param to the Ownable Contract to allow ownership functionnalities\r\n */\r\n constructor() \r\n Ownable(msg.sender) \r\n {\r\n /**\r\n * We start the asset counter at 1 for clarity purposes and ease security checks:\r\n * First asset ID will start at 1 avoinding possible confusion arround arrays first element\r\n * Assets ids below 1 and above assetCounter won't be returned by the get function\r\n */\r\n assetCounter = 1;\r\n }\r\n\r\n /**\r\n * Custom modifiers can be created and applied on any functions\r\n * Here we can apply this modifier to restrict the use of the function by the owner of the contract only\r\n * @dev Throws if called by any account other than the owner.\r\n */\r\n modifier onlyAssetOwner(uint _assetId) {\r\n if (assets[_assetId].currentHolder != msg.sender) revert OnlyAssetOwner();\r\n _;\r\n }\r\n\r\n /**\r\n * Contract functions.\r\n */\r\n /**\r\n * Function to register an actor\r\n * Call the function again to modify the role of an already registered actor\r\n * @param _actor The Ethereum address of the actor being registered\r\n * @param _role The role of the actor being registered\r\n */\r\n function registerActor(address _actor, Role _role) \r\n public \r\n onlyOwner \r\n {\r\n actors[_actor] = Actor(_role, true);\r\n emit ActorRegistered(_actor, _role);\r\n }\r\n\r\n /**\r\n * Function to disable an actor\r\n * @param _actor The Ethereum address of the actor being registered\r\n */\r\n function disableActor(address _actor) \r\n public \r\n onlyOwner \r\n {\r\n actors[_actor].active = false;\r\n emit ActorDisabled(_actor);\r\n }\r\n\r\n /**\r\n * Function to get an actor's data\r\n * @param _actor The Ethereum address of the actor being retrieved\r\n */\r\n function getActor(address _actor) \r\n public\r\n view\r\n onlyOwner\r\n returns (Role, bool)\r\n {\r\n return (\r\n actors[_actor].role,\r\n actors[_actor].active\r\n );\r\n }\r\n\r\n /**\r\n * Function to register an asset\r\n * @param _productType The type of the new product in a string format, could be implemented as a enum list optionnaly\r\n * @param _productionDate The date of production of the new product in a Unix timestamp format\r\n * @param _origin The origing of the new product in a string format, could be implemented as a enum list and retrieved from the producers directly\r\n */\r\n function registerAsset(string calldata _productType, uint256 _productionDate, string calldata _origin) \r\n public \r\n {\r\n address _actor = msg.sender;\r\n require(actors[_actor].active == true, \"Actor not enabled\");\r\n require(actors[_actor].role == Role.Producer, \"Actor's role must be Producer\");\r\n\r\n uint _currentAssetId = assetCounter;\r\n assets[_currentAssetId].productId = _currentAssetId;\r\n assets[_currentAssetId].productType = _productType;\r\n assets[_currentAssetId].productionDate = _productionDate;\r\n assets[_currentAssetId].origin = _origin;\r\n assets[_currentAssetId].currentHolder = _actor;\r\n assets[_currentAssetId].holderHistory.push(_actor);\r\n\r\n assetCounter += 1;\r\n emit AssetRegistered(_currentAssetId);\r\n }\r\n\r\n /**\r\n * Function to retrieve total number of assets\r\n */\r\n function getTotalAssetNumber()\r\n public\r\n view\r\n returns (uint)\r\n {\r\n return (assetCounter - 1);\r\n }\r\n\r\n\r\n /**\r\n * Function to retrieve an asset's data providing it's ID (simple mapping getter does not return history array)\r\n * @param _assetId The ID of the asset being retrieved\r\n */\r\n function getAsset(uint _assetId)\r\n public\r\n view\r\n returns (string memory, uint256, string memory, address, address[] memory)\r\n {\r\n require(_assetId >= 1 && _assetId < assetCounter, \"Asset ID must be within valid range\");\r\n return (\r\n assets[_assetId].productType,\r\n assets[_assetId].productionDate,\r\n assets[_assetId].origin,\r\n assets[_assetId].currentHolder,\r\n assets[_assetId].holderHistory\r\n );\r\n }\r\n\r\n /**\r\n * Function to retrieve an asset's current holder providing it's ID\r\n * @param _assetId The ID of the asset being retrieved\r\n */\r\n function getAssetCurrentHolder(uint _assetId)\r\n public\r\n view\r\n returns (address)\r\n {\r\n require(_assetId >= 1 && _assetId < assetCounter, \"Asset ID must be within valid range\");\r\n return (\r\n assets[_assetId].currentHolder\r\n );\r\n }\r\n\r\n /**\r\n * Function to retrieve an asset's holder history providing it's ID\r\n * @param _assetId The ID of the asset being retrieved\r\n */\r\n function getAssetHolderHistory(uint _assetId)\r\n public\r\n view\r\n returns (address[] memory)\r\n {\r\n require(_assetId >= 1 && _assetId < assetCounter, \"Asset ID must be within valid range\");\r\n return (\r\n assets[_assetId].holderHistory\r\n );\r\n }\r\n\r\n /**\r\n * Function to transfer an asset to the next actor\r\n * @param _assetId The ID of the asset being transferred\r\n * @param _newHolder The ethereum address of the next holder\r\n */\r\n function transferAsset(uint _assetId, address _newHolder)\r\n public\r\n onlyAssetOwner(_assetId)\r\n {\r\n address currentHolder = msg.sender;\r\n require(_assetId >= 1 && _assetId < assetCounter, \"Asset ID must be within valid range\");\r\n require(actors[_newHolder].active == true, \"Next owner is not valid\");\r\n require(actors[currentHolder].role != Role.Consumer, \"Consumer can not transfer asset\");\r\n require(uint8(actors[_newHolder].role) == uint8(actors[currentHolder].role) + 1, \"Wrong next owner role\");\r\n\r\n assets[_assetId].currentHolder = _newHolder;\r\n assets[_assetId].holderHistory.push(_newHolder);\r\n emit AssetTransfered(_assetId, currentHolder, _newHolder);\r\n }\r\n}"}},"settings":{"evmVersion":"paris","optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[169],"Ownable":[147]},"id":148,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":148,"sourceUnit":170,"src":"128:45:0","symbolAliases":[{"foreign":{"id":2,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"136:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5,"name":"Context","nameLocations":["692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":169,"src":"692:7:0"},"id":6,"nodeType":"InheritanceSpecifier","src":"692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":147,"linearizedBaseContracts":[147,169],"name":"Ownable","nameLocation":"681:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8,"mutability":"mutable","name":"_owner","nameLocation":"722:6:0","nodeType":"VariableDeclaration","scope":147,"src":"706:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":9,"nodeType":"StructuredDocumentation","src":"735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":13,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:0","nodeType":"ErrorDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11,"mutability":"mutable","name":"account","nameLocation":"866:7:0","nodeType":"VariableDeclaration","scope":13,"src":"858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:0"},"src":"825:50:0"},{"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":18,"name":"OwnableInvalidOwner","nameLocation":"974:19:0","nodeType":"ErrorDefinition","parameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16,"mutability":"mutable","name":"owner","nameLocation":"1002:5:0","nodeType":"VariableDeclaration","scope":18,"src":"994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:0"},"src":"968:41:0"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":24,"name":"OwnershipTransferred","nameLocation":"1021:20:0","nodeType":"EventDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:0","nodeType":"VariableDeclaration","scope":24,"src":"1042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:0","nodeType":"VariableDeclaration","scope":24,"src":"1073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:0"},"src":"1015:84:0"},{"body":{"id":49,"nodeType":"Block","src":"1259:153:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":35,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":33,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":32,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:0","typeDescriptions":{}}},"id":34,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44,"nodeType":"IfStatement","src":"1269:95:0","trueBody":{"id":43,"nodeType":"Block","src":"1301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":39,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:0","typeDescriptions":{}}},"id":40,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"1322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"RevertStatement","src":"1315:38:0"}]}},{"expression":{"arguments":[{"id":46,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":45,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"1373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":47,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":48,"nodeType":"ExpressionStatement","src":"1373:32:0"}]},"documentation":{"id":25,"nodeType":"StructuredDocumentation","src":"1105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":50,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:0","nodeType":"VariableDeclaration","scope":50,"src":"1237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:0"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[],"src":"1259:0:0"},"scope":147,"src":"1225:187:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":57,"nodeType":"Block","src":"1521:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":53,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"1531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55,"nodeType":"ExpressionStatement","src":"1531:13:0"},{"id":56,"nodeType":"PlaceholderStatement","src":"1554:1:0"}]},"documentation":{"id":51,"nodeType":"StructuredDocumentation","src":"1418:77:0","text":" @dev Throws if called by any account other than the owner."},"id":58,"name":"onlyOwner","nameLocation":"1509:9:0","nodeType":"ModifierDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1518:2:0"},"src":"1500:62:0","virtual":false,"visibility":"internal"},{"body":{"id":66,"nodeType":"Block","src":"1693:30:0","statements":[{"expression":{"id":64,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"1710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":63,"id":65,"nodeType":"Return","src":"1703:13:0"}]},"documentation":{"id":59,"nodeType":"StructuredDocumentation","src":"1568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":67,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:0","nodeType":"FunctionDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[],"src":"1652:2:0"},"returnParameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67,"src":"1684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:0"},"scope":147,"src":"1638:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":83,"nodeType":"Block","src":"1841:117:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":71,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"1855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":73,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"1866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82,"nodeType":"IfStatement","src":"1851:101:0","trueBody":{"id":81,"nodeType":"Block","src":"1880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":77,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"1928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"1901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80,"nodeType":"RevertStatement","src":"1894:47:0"}]}}]},"documentation":{"id":68,"nodeType":"StructuredDocumentation","src":"1729:62:0","text":" @dev Throws if the sender is not the owner."},"id":84,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:0","nodeType":"FunctionDefinition","parameters":{"id":69,"nodeType":"ParameterList","parameters":[],"src":"1816:2:0"},"returnParameters":{"id":70,"nodeType":"ParameterList","parameters":[],"src":"1841:0:0"},"scope":147,"src":"1796:162:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":97,"nodeType":"Block","src":"2347:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":93,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":92,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:0","typeDescriptions":{}}},"id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":95,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":96,"nodeType":"ExpressionStatement","src":"2357:30:0"}]},"documentation":{"id":85,"nodeType":"StructuredDocumentation","src":"1964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":98,"implemented":true,"kind":"function","modifiers":[{"id":88,"kind":"modifierInvocation","modifierName":{"id":87,"name":"onlyOwner","nameLocations":["2337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"2337:9:0"},"nodeType":"ModifierInvocation","src":"2337:9:0"}],"name":"renounceOwnership","nameLocation":"2302:17:0","nodeType":"FunctionDefinition","parameters":{"id":86,"nodeType":"ParameterList","parameters":[],"src":"2319:2:0"},"returnParameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2347:0:0"},"scope":147,"src":"2293:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":125,"nodeType":"Block","src":"2613:145:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":106,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"2627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:0","typeDescriptions":{}}},"id":110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":120,"nodeType":"IfStatement","src":"2623:91:0","trueBody":{"id":119,"nodeType":"Block","src":"2651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:0","typeDescriptions":{}}},"id":116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":112,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"2672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":118,"nodeType":"RevertStatement","src":"2665:38:0"}]}},{"expression":{"arguments":[{"id":122,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"2742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":121,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":124,"nodeType":"ExpressionStatement","src":"2723:28:0"}]},"documentation":{"id":99,"nodeType":"StructuredDocumentation","src":"2400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":126,"implemented":true,"kind":"function","modifiers":[{"id":104,"kind":"modifierInvocation","modifierName":{"id":103,"name":"onlyOwner","nameLocations":["2603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"2603:9:0"},"nodeType":"ModifierInvocation","src":"2603:9:0"}],"name":"transferOwnership","nameLocation":"2552:17:0","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:0","nodeType":"VariableDeclaration","scope":126,"src":"2570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:0"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"2613:0:0"},"scope":147,"src":"2543:215:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":145,"nodeType":"Block","src":"2975:124:0","statements":[{"assignments":[133],"declarations":[{"constant":false,"id":133,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:0","nodeType":"VariableDeclaration","scope":145,"src":"2985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":135,"initialValue":{"id":134,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"3004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:0"},{"expression":{"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":136,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"3020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":137,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"3029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":139,"nodeType":"ExpressionStatement","src":"3020:17:0"},{"eventCall":{"arguments":[{"id":141,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":133,"src":"3073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":142,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"3083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":140,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"3052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"EmitStatement","src":"3047:45:0"}]},"documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"2764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":146,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:0","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:0","nodeType":"VariableDeclaration","scope":146,"src":"2940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:0"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"2975:0:0"},"scope":147,"src":"2912:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":148,"src":"663:2438:0","usedErrors":[13,18],"usedEvents":[24]}],"src":"102:3000:0"},"id":0},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[169]},"id":170,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":149,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:1"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":150,"nodeType":"StructuredDocumentation","src":"127:496:1","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":169,"linearizedBaseContracts":[169],"name":"Context","nameLocation":"642:7:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":158,"nodeType":"Block","src":"718:34:1","statements":[{"expression":{"expression":{"id":155,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:1","memberName":"sender","nodeType":"MemberAccess","src":"735:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":154,"id":157,"nodeType":"Return","src":"728:17:1"}]},"id":159,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:1","nodeType":"FunctionDefinition","parameters":{"id":151,"nodeType":"ParameterList","parameters":[],"src":"675:2:1"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":159,"src":"709:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:1"},"scope":169,"src":"656:96:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":167,"nodeType":"Block","src":"825:32:1","statements":[{"expression":{"expression":{"id":164,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:1","memberName":"data","nodeType":"MemberAccess","src":"842:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":163,"id":166,"nodeType":"Return","src":"835:15:1"}]},"id":168,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:1","nodeType":"FunctionDefinition","parameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"775:2:1"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":168,"src":"809:14:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":161,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:1"},"scope":169,"src":"758:99:1","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":170,"src":"624:235:1","usedErrors":[],"usedEvents":[]}],"src":"101:759:1"},"id":1},"contracts/SupplyChainTracking.sol":{"ast":{"absolutePath":"contracts/SupplyChainTracking.sol","exportedSymbols":{"Context":[169],"Ownable":[147],"SupplyChainTracking":[645]},"id":646,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":171,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"39:23:2"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":172,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":646,"sourceUnit":148,"src":"66:52:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":174,"name":"Ownable","nameLocations":["471:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":147,"src":"471:7:2"},"id":175,"nodeType":"InheritanceSpecifier","src":"471:7:2"}],"canonicalName":"SupplyChainTracking","contractDependencies":[],"contractKind":"contract","documentation":{"id":173,"nodeType":"StructuredDocumentation","src":"122:315:2","text":" @title SupplyChainTracking\n @author raphaelpg\n @notice Simple Supply Chain Tracking contract\n Contract inherit from OpenZeppelin Ownable.sol contract to provide ownership functionnalities\n Visit https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol"},"fullyImplemented":true,"id":645,"linearizedBaseContracts":[645,147,169],"name":"SupplyChainTracking","nameLocation":"448:19:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":176,"nodeType":"StructuredDocumentation","src":"486:42:2","text":" Contract state variables."},"id":178,"mutability":"mutable","name":"assetCounter","nameLocation":"537:12:2","nodeType":"VariableDeclaration","scope":645,"src":"532:17:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":177,"name":"uint","nodeType":"ElementaryTypeName","src":"532:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"canonicalName":"SupplyChainTracking.Role","documentation":{"id":179,"nodeType":"StructuredDocumentation","src":"620:136:2","text":" Possible roles of the actors \n For example, to set an actor role as a Producer, actor's role must be registered as 0 "},"id":184,"members":[{"id":180,"name":"Producer","nameLocation":"777:8:2","nodeType":"EnumValue","src":"777:8:2"},{"id":181,"name":"Carrier","nameLocation":"792:7:2","nodeType":"EnumValue","src":"792:7:2"},{"id":182,"name":"Retailer","nameLocation":"806:8:2","nodeType":"EnumValue","src":"806:8:2"},{"id":183,"name":"Consumer","nameLocation":"821:8:2","nodeType":"EnumValue","src":"821:8:2"}],"name":"Role","nameLocation":"765:4:2","nodeType":"EnumDefinition","src":"760:74:2"},{"canonicalName":"SupplyChainTracking.Actor","documentation":{"id":185,"nodeType":"StructuredDocumentation","src":"840:111:2","text":" Defining the struct variables Actor and Asset\n Actor will be using the Role defined above"},"id":191,"members":[{"constant":false,"id":188,"mutability":"mutable","name":"role","nameLocation":"980:4:2","nodeType":"VariableDeclaration","scope":191,"src":"975:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"},"typeName":{"id":187,"nodeType":"UserDefinedTypeName","pathNode":{"id":186,"name":"Role","nameLocations":["975:4:2"],"nodeType":"IdentifierPath","referencedDeclaration":184,"src":"975:4:2"},"referencedDeclaration":184,"src":"975:4:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"active","nameLocation":"996:6:2","nodeType":"VariableDeclaration","scope":191,"src":"991:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":189,"name":"bool","nodeType":"ElementaryTypeName","src":"991:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Actor","nameLocation":"962:5:2","nodeType":"StructDefinition","scope":645,"src":"955:53:2","visibility":"public"},{"canonicalName":"SupplyChainTracking.Asset","documentation":{"id":192,"nodeType":"StructuredDocumentation","src":"1014:91:2","text":" For simplicity here we define the Type and Origin of a product as a string"},"id":206,"members":[{"constant":false,"id":194,"mutability":"mutable","name":"productId","nameLocation":"1134:9:2","nodeType":"VariableDeclaration","scope":206,"src":"1129:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":193,"name":"uint","nodeType":"ElementaryTypeName","src":"1129:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":196,"mutability":"mutable","name":"productType","nameLocation":"1157:11:2","nodeType":"VariableDeclaration","scope":206,"src":"1150:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":195,"name":"string","nodeType":"ElementaryTypeName","src":"1150:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"productionDate","nameLocation":"1184:14:2","nodeType":"VariableDeclaration","scope":206,"src":"1176:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":197,"name":"uint256","nodeType":"ElementaryTypeName","src":"1176:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":200,"mutability":"mutable","name":"origin","nameLocation":"1246:6:2","nodeType":"VariableDeclaration","scope":206,"src":"1239:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":199,"name":"string","nodeType":"ElementaryTypeName","src":"1239:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":202,"mutability":"mutable","name":"currentHolder","nameLocation":"1267:13:2","nodeType":"VariableDeclaration","scope":206,"src":"1259:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":201,"name":"address","nodeType":"ElementaryTypeName","src":"1259:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":205,"mutability":"mutable","name":"holderHistory","nameLocation":"1297:13:2","nodeType":"VariableDeclaration","scope":206,"src":"1287:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"1287:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":204,"nodeType":"ArrayTypeName","src":"1287:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"name":"Asset","nameLocation":"1116:5:2","nodeType":"StructDefinition","scope":645,"src":"1109:207:2","visibility":"public"},{"constant":false,"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"1322:52:2","text":" Mappings to store actors and assets"},"id":212,"mutability":"mutable","name":"actors","nameLocation":"1412:6:2","nodeType":"VariableDeclaration","scope":645,"src":"1378:40:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor)"},"typeName":{"id":211,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":208,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1378:25:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":210,"nodeType":"UserDefinedTypeName","pathNode":{"id":209,"name":"Actor","nameLocations":["1397:5:2"],"nodeType":"IdentifierPath","referencedDeclaration":191,"src":"1397:5:2"},"referencedDeclaration":191,"src":"1397:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage_ptr","typeString":"struct SupplyChainTracking.Actor"}}},"visibility":"private"},{"constant":false,"functionSelector":"cf35bdd0","id":217,"mutability":"mutable","name":"assets","nameLocation":"1453:6:2","nodeType":"VariableDeclaration","scope":645,"src":"1423:36:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset)"},"typeName":{"id":216,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":213,"name":"uint","nodeType":"ElementaryTypeName","src":"1431:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1423:22:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":215,"nodeType":"UserDefinedTypeName","pathNode":{"id":214,"name":"Asset","nameLocations":["1439:5:2"],"nodeType":"IdentifierPath","referencedDeclaration":206,"src":"1439:5:2"},"referencedDeclaration":206,"src":"1439:5:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage_ptr","typeString":"struct SupplyChainTracking.Asset"}}},"visibility":"public"},{"anonymous":false,"documentation":{"id":218,"nodeType":"StructuredDocumentation","src":"1466:56:2","text":" List of events emitted by the functions"},"eventSelector":"9d298435d839e75ea5c40e98fc6aa208cc7c2a9ba6ffb5d9703e179bcf1b248e","id":225,"name":"ActorRegistered","nameLocation":"1532:15:2","nodeType":"EventDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"indexed":false,"mutability":"mutable","name":"actor","nameLocation":"1556:5:2","nodeType":"VariableDeclaration","scope":225,"src":"1548:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":219,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":223,"indexed":false,"mutability":"mutable","name":"role","nameLocation":"1568:4:2","nodeType":"VariableDeclaration","scope":225,"src":"1563:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"},"typeName":{"id":222,"nodeType":"UserDefinedTypeName","pathNode":{"id":221,"name":"Role","nameLocations":["1563:4:2"],"nodeType":"IdentifierPath","referencedDeclaration":184,"src":"1563:4:2"},"referencedDeclaration":184,"src":"1563:4:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"visibility":"internal"}],"src":"1547:26:2"},"src":"1526:48:2"},{"anonymous":false,"eventSelector":"6104c637b94c6924ba582f11d228cf3203eb42d40b94a3ab64e60006032a93d5","id":229,"name":"ActorDisabled","nameLocation":"1584:13:2","nodeType":"EventDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"indexed":false,"mutability":"mutable","name":"actor","nameLocation":"1606:5:2","nodeType":"VariableDeclaration","scope":229,"src":"1598:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":226,"name":"address","nodeType":"ElementaryTypeName","src":"1598:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1597:15:2"},"src":"1578:35:2"},{"anonymous":false,"eventSelector":"cc7b4929606ce963ba54b6a998f106f7748e78c03dc7f08fd77aeb28230eb2d3","id":233,"name":"AssetRegistered","nameLocation":"1623:15:2","nodeType":"EventDefinition","parameters":{"id":232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"indexed":false,"mutability":"mutable","name":"productId","nameLocation":"1644:9:2","nodeType":"VariableDeclaration","scope":233,"src":"1639:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":230,"name":"uint","nodeType":"ElementaryTypeName","src":"1639:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1638:16:2"},"src":"1617:38:2"},{"anonymous":false,"eventSelector":"fb1218ff291ccbefa25b58131603cc93001ff09f257940a8896e43c4d36b446e","id":241,"name":"AssetTransfered","nameLocation":"1665:15:2","nodeType":"EventDefinition","parameters":{"id":240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":235,"indexed":false,"mutability":"mutable","name":"productId","nameLocation":"1686:9:2","nodeType":"VariableDeclaration","scope":241,"src":"1681:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":234,"name":"uint","nodeType":"ElementaryTypeName","src":"1681:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":237,"indexed":false,"mutability":"mutable","name":"_from","nameLocation":"1705:5:2","nodeType":"VariableDeclaration","scope":241,"src":"1697:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":236,"name":"address","nodeType":"ElementaryTypeName","src":"1697:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":239,"indexed":false,"mutability":"mutable","name":"_to","nameLocation":"1720:3:2","nodeType":"VariableDeclaration","scope":241,"src":"1712:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":238,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1680:44:2"},"src":"1659:66:2"},{"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"1731:41:2","text":" Defining specific errors"},"errorSelector":"1d08eb64","id":244,"name":"OnlyAssetOwner","nameLocation":"1782:14:2","nodeType":"ErrorDefinition","parameters":{"id":243,"nodeType":"ParameterList","parameters":[],"src":"1796:2:2"},"src":"1776:23:2"},{"body":{"id":256,"nodeType":"Block","src":"2057:319:2","statements":[{"documentation":" We start the asset counter at 1 for clarity purposes and ease security checks:\n First asset ID will start at 1 avoinding possible confusion arround arrays first element\n Assets ids below 1 and above assetCounter won't be returned by the get function","expression":{"id":254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":252,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"2354:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2369:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2354:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":255,"nodeType":"ExpressionStatement","src":"2354:16:2"}]},"documentation":{"id":245,"nodeType":"StructuredDocumentation","src":"1805:204:2","text":" Contract initialization.\n Here we initialized the variables to their starting values\n Msg.sender is passed as a param to the Ownable Contract to allow ownership functionnalities"},"id":257,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":248,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2041:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2045:6:2","memberName":"sender","nodeType":"MemberAccess","src":"2041:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":250,"kind":"baseConstructorSpecifier","modifierName":{"id":247,"name":"Ownable","nameLocations":["2033:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":147,"src":"2033:7:2"},"nodeType":"ModifierInvocation","src":"2033:19:2"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"2024:2:2"},"returnParameters":{"id":251,"nodeType":"ParameterList","parameters":[],"src":"2057:0:2"},"scope":645,"src":"2013:363:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":274,"nodeType":"Block","src":"2675:94:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":262,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"2686:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":264,"indexExpression":{"id":263,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"2693:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2686:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2703:13:2","memberName":"currentHolder","nodeType":"MemberAccess","referencedDeclaration":202,"src":"2686:30:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":266,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2720:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2724:6:2","memberName":"sender","nodeType":"MemberAccess","src":"2720:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2686:44:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":272,"nodeType":"IfStatement","src":"2682:73:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":269,"name":"OnlyAssetOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"2739:14:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":271,"nodeType":"RevertStatement","src":"2732:23:2"}},{"id":273,"nodeType":"PlaceholderStatement","src":"2762:1:2"}]},"documentation":{"id":258,"nodeType":"StructuredDocumentation","src":"2382:250:2","text":" Custom modifiers can be created and applied on any functions\n Here we can apply this modifier to restrict the use of the function by the owner of the contract only\n @dev Throws if called by any account other than the owner."},"id":275,"name":"onlyAssetOwner","nameLocation":"2645:14:2","nodeType":"ModifierDefinition","parameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":260,"mutability":"mutable","name":"_assetId","nameLocation":"2665:8:2","nodeType":"VariableDeclaration","scope":275,"src":"2660:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint","nodeType":"ElementaryTypeName","src":"2660:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2659:15:2"},"src":"2636:133:2","virtual":false,"visibility":"internal"},{"body":{"id":300,"nodeType":"Block","src":"3158:90:2","statements":[{"expression":{"id":293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":286,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"3165:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":288,"indexExpression":{"id":287,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"3172:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3165:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":290,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"3188:5:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},{"hexValue":"74727565","id":291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3195:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":289,"name":"Actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"3182:5:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Actor_$191_storage_ptr_$","typeString":"type(struct SupplyChainTracking.Actor storage pointer)"}},"id":292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3182:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_memory_ptr","typeString":"struct SupplyChainTracking.Actor memory"}},"src":"3165:35:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":294,"nodeType":"ExpressionStatement","src":"3165:35:2"},{"eventCall":{"arguments":[{"id":296,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"3228:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":297,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"3236:5:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}],"id":295,"name":"ActorRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"3212:15:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_enum$_Role_$184_$returns$__$","typeString":"function (address,enum SupplyChainTracking.Role)"}},"id":298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3212:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":299,"nodeType":"EmitStatement","src":"3207:35:2"}]},"documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"2815:255:2","text":" Function to register an actor\n Call the function again to modify the role of an already registered actor\n @param _actor The Ethereum address of the actor being registered\n @param _role The role of the actor being registered"},"functionSelector":"de7ac991","id":301,"implemented":true,"kind":"function","modifiers":[{"id":284,"kind":"modifierInvocation","modifierName":{"id":283,"name":"onlyOwner","nameLocations":["3144:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"3144:9:2"},"nodeType":"ModifierInvocation","src":"3144:9:2"}],"name":"registerActor","nameLocation":"3083:13:2","nodeType":"FunctionDefinition","parameters":{"id":282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"_actor","nameLocation":"3105:6:2","nodeType":"VariableDeclaration","scope":301,"src":"3097:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"3097:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":281,"mutability":"mutable","name":"_role","nameLocation":"3118:5:2","nodeType":"VariableDeclaration","scope":301,"src":"3113:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"},"typeName":{"id":280,"nodeType":"UserDefinedTypeName","pathNode":{"id":279,"name":"Role","nameLocations":["3113:4:2"],"nodeType":"IdentifierPath","referencedDeclaration":184,"src":"3113:4:2"},"referencedDeclaration":184,"src":"3113:4:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"visibility":"internal"}],"src":"3096:28:2"},"returnParameters":{"id":285,"nodeType":"ParameterList","parameters":[],"src":"3158:0:2"},"scope":645,"src":"3074:174:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":320,"nodeType":"Block","src":"3445:75:2","statements":[{"expression":{"id":314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":309,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"3452:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":311,"indexExpression":{"id":310,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3459:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3452:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3467:6:2","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":190,"src":"3452:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3476:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3452:29:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":315,"nodeType":"ExpressionStatement","src":"3452:29:2"},{"eventCall":{"arguments":[{"id":317,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3507:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":316,"name":"ActorDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"3493:13:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3493:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":319,"nodeType":"EmitStatement","src":"3488:26:2"}]},"documentation":{"id":302,"nodeType":"StructuredDocumentation","src":"3254:116:2","text":" Function to disable an actor\n @param _actor The Ethereum address of the actor being registered"},"functionSelector":"d5cbe157","id":321,"implemented":true,"kind":"function","modifiers":[{"id":307,"kind":"modifierInvocation","modifierName":{"id":306,"name":"onlyOwner","nameLocations":["3431:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"3431:9:2"},"nodeType":"ModifierInvocation","src":"3431:9:2"}],"name":"disableActor","nameLocation":"3383:12:2","nodeType":"FunctionDefinition","parameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":304,"mutability":"mutable","name":"_actor","nameLocation":"3404:6:2","nodeType":"VariableDeclaration","scope":321,"src":"3396:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":303,"name":"address","nodeType":"ElementaryTypeName","src":"3396:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3395:16:2"},"returnParameters":{"id":308,"nodeType":"ParameterList","parameters":[],"src":"3445:0:2"},"scope":645,"src":"3374:146:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":344,"nodeType":"Block","src":"3749:85:2","statements":[{"expression":{"components":[{"expression":{"baseExpression":{"id":334,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"3772:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":336,"indexExpression":{"id":335,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"3779:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3772:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3787:4:2","memberName":"role","nodeType":"MemberAccess","referencedDeclaration":188,"src":"3772:19:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},{"expression":{"baseExpression":{"id":338,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"3800:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":340,"indexExpression":{"id":339,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"3807:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3800:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3815:6:2","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":190,"src":"3800:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":342,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3763:65:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_Role_$184_$_t_bool_$","typeString":"tuple(enum SupplyChainTracking.Role,bool)"}},"functionReturnParameters":333,"id":343,"nodeType":"Return","src":"3756:72:2"}]},"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"3526:118:2","text":" Function to get an actor's data\n @param _actor The Ethereum address of the actor being retrieved"},"functionSelector":"4138d167","id":345,"implemented":true,"kind":"function","modifiers":[{"id":327,"kind":"modifierInvocation","modifierName":{"id":326,"name":"onlyOwner","nameLocations":["3710:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"3710:9:2"},"nodeType":"ModifierInvocation","src":"3710:9:2"}],"name":"getActor","nameLocation":"3657:8:2","nodeType":"FunctionDefinition","parameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"_actor","nameLocation":"3674:6:2","nodeType":"VariableDeclaration","scope":345,"src":"3666:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":323,"name":"address","nodeType":"ElementaryTypeName","src":"3666:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3665:16:2"},"returnParameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"3734:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"},"typeName":{"id":329,"nodeType":"UserDefinedTypeName","pathNode":{"id":328,"name":"Role","nameLocations":["3734:4:2"],"nodeType":"IdentifierPath","referencedDeclaration":184,"src":"3734:4:2"},"referencedDeclaration":184,"src":"3734:4:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"visibility":"internal"},{"constant":false,"id":332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"3740:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":331,"name":"bool","nodeType":"ElementaryTypeName","src":"3740:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3733:12:2"},"scope":645,"src":"3648:186:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":436,"nodeType":"Block","src":"4379:640:2","statements":[{"assignments":[356],"declarations":[{"constant":false,"id":356,"mutability":"mutable","name":"_actor","nameLocation":"4394:6:2","nodeType":"VariableDeclaration","scope":436,"src":"4386:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":355,"name":"address","nodeType":"ElementaryTypeName","src":"4386:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":359,"initialValue":{"expression":{"id":357,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4403:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4407:6:2","memberName":"sender","nodeType":"MemberAccess","src":"4403:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4386:27:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":361,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"4428:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":363,"indexExpression":{"id":362,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"4435:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4428:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4443:6:2","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":190,"src":"4428:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4453:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4428:29:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4163746f72206e6f7420656e61626c6564","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4459:19:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e","typeString":"literal_string \"Actor not enabled\""},"value":"Actor not enabled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e","typeString":"literal_string \"Actor not enabled\""}],"id":360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4420:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4420:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":369,"nodeType":"ExpressionStatement","src":"4420:59:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":371,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"4494:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":373,"indexExpression":{"id":372,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"4501:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4494:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4509:4:2","memberName":"role","nodeType":"MemberAccess","referencedDeclaration":188,"src":"4494:19:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":375,"name":"Role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"4517:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Role_$184_$","typeString":"type(enum SupplyChainTracking.Role)"}},"id":376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4522:8:2","memberName":"Producer","nodeType":"MemberAccess","referencedDeclaration":180,"src":"4517:13:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"src":"4494:36:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4163746f72277320726f6c65206d7573742062652050726f6475636572","id":378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4532:31:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071","typeString":"literal_string \"Actor's role must be Producer\""},"value":"Actor's role must be Producer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071","typeString":"literal_string \"Actor's role must be Producer\""}],"id":370,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4486:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4486:78:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":380,"nodeType":"ExpressionStatement","src":"4486:78:2"},{"assignments":[382],"declarations":[{"constant":false,"id":382,"mutability":"mutable","name":"_currentAssetId","nameLocation":"4578:15:2","nodeType":"VariableDeclaration","scope":436,"src":"4573:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":381,"name":"uint","nodeType":"ElementaryTypeName","src":"4573:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":384,"initialValue":{"id":383,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4596:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4573:35:2"},{"expression":{"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":385,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"4615:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":387,"indexExpression":{"id":386,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4622:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4615:23:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4639:9:2","memberName":"productId","nodeType":"MemberAccess","referencedDeclaration":194,"src":"4615:33:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":389,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4651:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4615:51:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":391,"nodeType":"ExpressionStatement","src":"4615:51:2"},{"expression":{"id":397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":392,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"4673:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":394,"indexExpression":{"id":393,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4680:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4673:23:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4697:11:2","memberName":"productType","nodeType":"MemberAccess","referencedDeclaration":196,"src":"4673:35:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":396,"name":"_productType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"4711:12:2","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"4673:50:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":398,"nodeType":"ExpressionStatement","src":"4673:50:2"},{"expression":{"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":399,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"4730:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":401,"indexExpression":{"id":400,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4737:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4730:23:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4754:14:2","memberName":"productionDate","nodeType":"MemberAccess","referencedDeclaration":198,"src":"4730:38:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":403,"name":"_productionDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":350,"src":"4771:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4730:56:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":405,"nodeType":"ExpressionStatement","src":"4730:56:2"},{"expression":{"id":411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":406,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"4793:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":408,"indexExpression":{"id":407,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4800:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4793:23:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4817:6:2","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":200,"src":"4793:30:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":410,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"4826:7:2","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"4793:40:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":412,"nodeType":"ExpressionStatement","src":"4793:40:2"},{"expression":{"id":418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":413,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"4840:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":415,"indexExpression":{"id":414,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4847:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4840:23:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4864:13:2","memberName":"currentHolder","nodeType":"MemberAccess","referencedDeclaration":202,"src":"4840:37:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":417,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"4880:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4840:46:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":419,"nodeType":"ExpressionStatement","src":"4840:46:2"},{"expression":{"arguments":[{"id":425,"name":"_actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"4936:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":420,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"4893:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":422,"indexExpression":{"id":421,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4900:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4893:23:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4917:13:2","memberName":"holderHistory","nodeType":"MemberAccess","referencedDeclaration":205,"src":"4893:37:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4931:4:2","memberName":"push","nodeType":"MemberAccess","src":"4893:42:2","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4893:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":427,"nodeType":"ExpressionStatement","src":"4893:50:2"},{"expression":{"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":428,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4952:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4968:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4952:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":431,"nodeType":"ExpressionStatement","src":"4952:17:2"},{"eventCall":{"arguments":[{"id":433,"name":"_currentAssetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"4997:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":432,"name":"AssetRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":233,"src":"4981:15:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4981:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":435,"nodeType":"EmitStatement","src":"4976:37:2"}]},"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"3840:415:2","text":" Function to register an asset\n @param _productType The type of the new product in a string format, could be implemented as a enum list optionnaly\n @param _productionDate The date of production of the new product in a Unix timestamp format\n @param _origin The origing of the new product in a string format, could be implemented as a enum list and retrieved from the producers directly"},"functionSelector":"f742c5b0","id":437,"implemented":true,"kind":"function","modifiers":[],"name":"registerAsset","nameLocation":"4268:13:2","nodeType":"FunctionDefinition","parameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"_productType","nameLocation":"4298:12:2","nodeType":"VariableDeclaration","scope":437,"src":"4282:28:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":347,"name":"string","nodeType":"ElementaryTypeName","src":"4282:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"_productionDate","nameLocation":"4320:15:2","nodeType":"VariableDeclaration","scope":437,"src":"4312:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":349,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":352,"mutability":"mutable","name":"_origin","nameLocation":"4353:7:2","nodeType":"VariableDeclaration","scope":437,"src":"4337:23:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":351,"name":"string","nodeType":"ElementaryTypeName","src":"4337:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4281:80:2"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[],"src":"4379:0:2"},"scope":645,"src":"4259:760:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":448,"nodeType":"Block","src":"5165:38:2","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":443,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"5180:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5195:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5180:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":446,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5179:18:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":442,"id":447,"nodeType":"Return","src":"5172:25:2"}]},"documentation":{"id":438,"nodeType":"StructuredDocumentation","src":"5025:60:2","text":" Function to retrieve total number of assets"},"functionSelector":"43247d03","id":449,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalAssetNumber","nameLocation":"5098:19:2","nodeType":"FunctionDefinition","parameters":{"id":439,"nodeType":"ParameterList","parameters":[],"src":"5117:2:2"},"returnParameters":{"id":442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":449,"src":"5156:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":440,"name":"uint","nodeType":"ElementaryTypeName","src":"5156:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5155:6:2"},"scope":645,"src":"5089:114:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":499,"nodeType":"Block","src":"5536:309:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":467,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5551:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5563:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5551:13:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":470,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5568:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":471,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"5579:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5568:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5551:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4173736574204944206d7573742062652077697468696e2076616c69642072616e6765","id":474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5593:37:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""},"value":"Asset ID must be within valid range"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""}],"id":466,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5543:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5543:88:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":476,"nodeType":"ExpressionStatement","src":"5543:88:2"},{"expression":{"components":[{"expression":{"baseExpression":{"id":477,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"5654:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":479,"indexExpression":{"id":478,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5661:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5654:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":480,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5671:11:2","memberName":"productType","nodeType":"MemberAccess","referencedDeclaration":196,"src":"5654:28:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"baseExpression":{"id":481,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"5691:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":483,"indexExpression":{"id":482,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5698:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5691:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5708:14:2","memberName":"productionDate","nodeType":"MemberAccess","referencedDeclaration":198,"src":"5691:31:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":485,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"5731:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":487,"indexExpression":{"id":486,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5738:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5731:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":488,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5748:6:2","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":200,"src":"5731:23:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"baseExpression":{"id":489,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"5763:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":491,"indexExpression":{"id":490,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5770:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5763:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5780:13:2","memberName":"currentHolder","nodeType":"MemberAccess","referencedDeclaration":202,"src":"5763:30:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":493,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"5802:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":495,"indexExpression":{"id":494,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"5809:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5802:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5819:13:2","memberName":"holderHistory","nodeType":"MemberAccess","referencedDeclaration":205,"src":"5802:30:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"id":497,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5645:194:2","typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_storage_$_t_uint256_$_t_string_storage_$_t_address_$_t_array$_t_address_$dyn_storage_$","typeString":"tuple(string storage ref,uint256,string storage ref,address,address[] storage ref)"}},"functionReturnParameters":465,"id":498,"nodeType":"Return","src":"5638:201:2"}]},"documentation":{"id":450,"nodeType":"StructuredDocumentation","src":"5211:183:2","text":" Function to retrieve an asset's data providing it's ID (simple mapping getter does not return history array)\n @param _assetId The ID of the asset being retrieved"},"functionSelector":"eac8f5b8","id":500,"implemented":true,"kind":"function","modifiers":[],"name":"getAsset","nameLocation":"5407:8:2","nodeType":"FunctionDefinition","parameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"_assetId","nameLocation":"5421:8:2","nodeType":"VariableDeclaration","scope":500,"src":"5416:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint","nodeType":"ElementaryTypeName","src":"5416:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5415:15:2"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":500,"src":"5467:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":454,"name":"string","nodeType":"ElementaryTypeName","src":"5467:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":500,"src":"5482:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":456,"name":"uint256","nodeType":"ElementaryTypeName","src":"5482:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":500,"src":"5491:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":458,"name":"string","nodeType":"ElementaryTypeName","src":"5491:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":500,"src":"5506:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":460,"name":"address","nodeType":"ElementaryTypeName","src":"5506:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":500,"src":"5515:16:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":462,"name":"address","nodeType":"ElementaryTypeName","src":"5515:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":463,"nodeType":"ArrayTypeName","src":"5515:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5466:66:2"},"scope":645,"src":"5398:447:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":525,"nodeType":"Block","src":"6088:161:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":509,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":503,"src":"6103:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6115:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6103:13:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":512,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":503,"src":"6120:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":513,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"6131:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6120:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6103:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4173736574204944206d7573742062652077697468696e2076616c69642072616e6765","id":516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6145:37:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""},"value":"Asset ID must be within valid range"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""}],"id":508,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6095:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6095:88:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":518,"nodeType":"ExpressionStatement","src":"6095:88:2"},{"expression":{"components":[{"expression":{"baseExpression":{"id":519,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"6206:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":521,"indexExpression":{"id":520,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":503,"src":"6213:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6206:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6223:13:2","memberName":"currentHolder","nodeType":"MemberAccess","referencedDeclaration":202,"src":"6206:30:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":523,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6197:46:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":507,"id":524,"nodeType":"Return","src":"6190:53:2"}]},"documentation":{"id":501,"nodeType":"StructuredDocumentation","src":"5851:139:2","text":" Function to retrieve an asset's current holder providing it's ID\n @param _assetId The ID of the asset being retrieved"},"functionSelector":"026e2d8c","id":526,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetCurrentHolder","nameLocation":"6003:21:2","nodeType":"FunctionDefinition","parameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":503,"mutability":"mutable","name":"_assetId","nameLocation":"6030:8:2","nodeType":"VariableDeclaration","scope":526,"src":"6025:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":502,"name":"uint","nodeType":"ElementaryTypeName","src":"6025:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6024:15:2"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":526,"src":"6076:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":505,"name":"address","nodeType":"ElementaryTypeName","src":"6076:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6075:9:2"},"scope":645,"src":"5994:255:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":552,"nodeType":"Block","src":"6501:161:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":536,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"6516:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6528:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6516:13:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":539,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"6533:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":540,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"6544:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6533:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6516:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4173736574204944206d7573742062652077697468696e2076616c69642072616e6765","id":543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6558:37:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""},"value":"Asset ID must be within valid range"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""}],"id":535,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6508:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6508:88:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":545,"nodeType":"ExpressionStatement","src":"6508:88:2"},{"expression":{"components":[{"expression":{"baseExpression":{"id":546,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"6619:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":548,"indexExpression":{"id":547,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"6626:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6619:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6636:13:2","memberName":"holderHistory","nodeType":"MemberAccess","referencedDeclaration":205,"src":"6619:30:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6610:46:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":534,"id":551,"nodeType":"Return","src":"6603:53:2"}]},"documentation":{"id":527,"nodeType":"StructuredDocumentation","src":"6255:139:2","text":" Function to retrieve an asset's holder history providing it's ID\n @param _assetId The ID of the asset being retrieved"},"functionSelector":"6446e628","id":553,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetHolderHistory","nameLocation":"6407:21:2","nodeType":"FunctionDefinition","parameters":{"id":530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":529,"mutability":"mutable","name":"_assetId","nameLocation":"6434:8:2","nodeType":"VariableDeclaration","scope":553,"src":"6429:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":528,"name":"uint","nodeType":"ElementaryTypeName","src":"6429:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6428:15:2"},"returnParameters":{"id":534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":553,"src":"6480:16:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":531,"name":"address","nodeType":"ElementaryTypeName","src":"6480:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":532,"nodeType":"ArrayTypeName","src":"6480:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6479:18:2"},"scope":645,"src":"6398:264:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":643,"nodeType":"Block","src":"6963:594:2","statements":[{"assignments":[565],"declarations":[{"constant":false,"id":565,"mutability":"mutable","name":"currentHolder","nameLocation":"6978:13:2","nodeType":"VariableDeclaration","scope":643,"src":"6970:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":564,"name":"address","nodeType":"ElementaryTypeName","src":"6970:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":568,"initialValue":{"expression":{"id":566,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6994:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6998:6:2","memberName":"sender","nodeType":"MemberAccess","src":"6994:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6970:34:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":570,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"7019:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7031:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7019:13:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":573,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"7036:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":574,"name":"assetCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"7047:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7036:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7019:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4173736574204944206d7573742062652077697468696e2076616c69642072616e6765","id":577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7061:37:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""},"value":"Asset ID must be within valid range"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","typeString":"literal_string \"Asset ID must be within valid range\""}],"id":569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7011:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:88:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":579,"nodeType":"ExpressionStatement","src":"7011:88:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":581,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"7114:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":583,"indexExpression":{"id":582,"name":"_newHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"7121:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7114:18:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7133:6:2","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":190,"src":"7114:25:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7143:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7114:33:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e657874206f776e6572206973206e6f742076616c6964","id":587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7149:25:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392","typeString":"literal_string \"Next owner is not valid\""},"value":"Next owner is not valid"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392","typeString":"literal_string \"Next owner is not valid\""}],"id":580,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7106:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7106:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":589,"nodeType":"ExpressionStatement","src":"7106:69:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":591,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"7190:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":593,"indexExpression":{"id":592,"name":"currentHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"7197:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7190:21:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7212:4:2","memberName":"role","nodeType":"MemberAccess","referencedDeclaration":188,"src":"7190:26:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":595,"name":"Role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"7220:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Role_$184_$","typeString":"type(enum SupplyChainTracking.Role)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7225:8:2","memberName":"Consumer","nodeType":"MemberAccess","referencedDeclaration":183,"src":"7220:13:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}},"src":"7190:43:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f6e73756d65722063616e206e6f74207472616e73666572206173736574","id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7235:33:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0","typeString":"literal_string \"Consumer can not transfer asset\""},"value":"Consumer can not transfer asset"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0","typeString":"literal_string \"Consumer can not transfer asset\""}],"id":590,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7182:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7182:87:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":600,"nodeType":"ExpressionStatement","src":"7182:87:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"baseExpression":{"id":604,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"7290:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":606,"indexExpression":{"id":605,"name":"_newHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"7297:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7290:18:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7309:4:2","memberName":"role","nodeType":"MemberAccess","referencedDeclaration":188,"src":"7290:23:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}],"id":603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7284:5:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":602,"name":"uint8","nodeType":"ElementaryTypeName","src":"7284:5:2","typeDescriptions":{}}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7284:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"baseExpression":{"id":611,"name":"actors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"7324:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Actor_$191_storage_$","typeString":"mapping(address => struct SupplyChainTracking.Actor storage ref)"}},"id":613,"indexExpression":{"id":612,"name":"currentHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"7331:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7324:21:2","typeDescriptions":{"typeIdentifier":"t_struct$_Actor_$191_storage","typeString":"struct SupplyChainTracking.Actor storage ref"}},"id":614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7346:4:2","memberName":"role","nodeType":"MemberAccess","referencedDeclaration":188,"src":"7324:26:2","typeDescriptions":{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Role_$184","typeString":"enum SupplyChainTracking.Role"}],"id":610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7318:5:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":609,"name":"uint8","nodeType":"ElementaryTypeName","src":"7318:5:2","typeDescriptions":{}}},"id":615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7354:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7318:37:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7284:71:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57726f6e67206e657874206f776e657220726f6c65","id":619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7357:23:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a","typeString":"literal_string \"Wrong next owner role\""},"value":"Wrong next owner role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a","typeString":"literal_string \"Wrong next owner role\""}],"id":601,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7276:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:105:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":621,"nodeType":"ExpressionStatement","src":"7276:105:2"},{"expression":{"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":622,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"7390:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":624,"indexExpression":{"id":623,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"7397:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7390:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7407:13:2","memberName":"currentHolder","nodeType":"MemberAccess","referencedDeclaration":202,"src":"7390:30:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":626,"name":"_newHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"7423:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7390:43:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":628,"nodeType":"ExpressionStatement","src":"7390:43:2"},{"expression":{"arguments":[{"id":634,"name":"_newHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"7476:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"id":629,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"7440:6:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Asset_$206_storage_$","typeString":"mapping(uint256 => struct SupplyChainTracking.Asset storage ref)"}},"id":631,"indexExpression":{"id":630,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"7447:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7440:16:2","typeDescriptions":{"typeIdentifier":"t_struct$_Asset_$206_storage","typeString":"struct SupplyChainTracking.Asset storage ref"}},"id":632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7457:13:2","memberName":"holderHistory","nodeType":"MemberAccess","referencedDeclaration":205,"src":"7440:30:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7471:4:2","memberName":"push","nodeType":"MemberAccess","src":"7440:35:2","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7440:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":636,"nodeType":"ExpressionStatement","src":"7440:47:2"},{"eventCall":{"arguments":[{"id":638,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"7515:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":639,"name":"currentHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"7525:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":640,"name":"_newHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"7540:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":637,"name":"AssetTransfered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"7499:15:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256,address,address)"}},"id":641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7499:52:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":642,"nodeType":"EmitStatement","src":"7494:57:2"}]},"documentation":{"id":554,"nodeType":"StructuredDocumentation","src":"6668:188:2","text":" Function to transfer an asset to the next actor\n @param _assetId The ID of the asset being transferred\n @param _newHolder The ethereum address of the next holder"},"functionSelector":"fa62ee8d","id":644,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":561,"name":"_assetId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"6950:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":562,"kind":"modifierInvocation","modifierName":{"id":560,"name":"onlyAssetOwner","nameLocations":["6935:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":275,"src":"6935:14:2"},"nodeType":"ModifierInvocation","src":"6935:24:2"}],"name":"transferAsset","nameLocation":"6869:13:2","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":556,"mutability":"mutable","name":"_assetId","nameLocation":"6888:8:2","nodeType":"VariableDeclaration","scope":644,"src":"6883:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":555,"name":"uint","nodeType":"ElementaryTypeName","src":"6883:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":558,"mutability":"mutable","name":"_newHolder","nameLocation":"6906:10:2","nodeType":"VariableDeclaration","scope":644,"src":"6898:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":557,"name":"address","nodeType":"ElementaryTypeName","src":"6898:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6882:35:2"},"returnParameters":{"id":563,"nodeType":"ParameterList","parameters":[],"src":"6963:0:2"},"scope":645,"src":"6860:697:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":646,"src":"439:7121:2","usedErrors":[13,18,244],"usedEvents":[24,225,229,233,241]}],"src":"39:7521:2"},"id":2}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867\",\"dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867\",\"dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY\"]}},\"version\":1}"}},"contracts/SupplyChainTracking.sol":{"SupplyChainTracking":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"OnlyAssetOwner","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"actor","type":"address"}],"name":"ActorDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"actor","type":"address"},{"indexed":false,"internalType":"enum SupplyChainTracking.Role","name":"role","type":"uint8"}],"name":"ActorRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"productId","type":"uint256"}],"name":"AssetRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"productId","type":"uint256"},{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"}],"name":"AssetTransfered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"assets","outputs":[{"internalType":"uint256","name":"productId","type":"uint256"},{"internalType":"string","name":"productType","type":"string"},{"internalType":"uint256","name":"productionDate","type":"uint256"},{"internalType":"string","name":"origin","type":"string"},{"internalType":"address","name":"currentHolder","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_actor","type":"address"}],"name":"disableActor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_actor","type":"address"}],"name":"getActor","outputs":[{"internalType":"enum SupplyChainTracking.Role","name":"","type":"uint8"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_assetId","type":"uint256"}],"name":"getAsset","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_assetId","type":"uint256"}],"name":"getAssetCurrentHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_assetId","type":"uint256"}],"name":"getAssetHolderHistory","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAssetNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_actor","type":"address"},{"internalType":"enum SupplyChainTracking.Role","name":"_role","type":"uint8"}],"name":"registerActor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_productType","type":"string"},{"internalType":"uint256","name":"_productionDate","type":"uint256"},{"internalType":"string","name":"_origin","type":"string"}],"name":"registerAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_assetId","type":"uint256"},{"internalType":"address","name":"_newHolder","type":"address"}],"name":"transferAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_257":{"entryPoint":null,"id":257,"parameterSlots":0,"returnSlots":0},"@_50":{"entryPoint":null,"id":50,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_146":{"entryPoint":167,"id":146,"parameterSlots":1,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":415,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":432,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":395,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":363,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:590:3","statements":[{"body":{"nodeType":"YulBlock","src":"52:81:3","statements":[{"nodeType":"YulAssignment","src":"62:65:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"77:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"84:42:3","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"73:3:3"},"nodeType":"YulFunctionCall","src":"73:54:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:3"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:3","type":""}],"src":"7:126:3"},{"body":{"nodeType":"YulBlock","src":"184:51:3","statements":[{"nodeType":"YulAssignment","src":"194:35:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:3"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"205:17:3"},"nodeType":"YulFunctionCall","src":"205:24:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"194:7:3"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"166:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"176:7:3","type":""}],"src":"139:96:3"},{"body":{"nodeType":"YulBlock","src":"306:53:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"323:3:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"346:5:3"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"328:17:3"},"nodeType":"YulFunctionCall","src":"328:24:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"316:6:3"},"nodeType":"YulFunctionCall","src":"316:37:3"},"nodeType":"YulExpressionStatement","src":"316:37:3"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"294:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"301:3:3","type":""}],"src":"241:118:3"},{"body":{"nodeType":"YulBlock","src":"463:124:3","statements":[{"nodeType":"YulAssignment","src":"473:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"485:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"496:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"481:3:3"},"nodeType":"YulFunctionCall","src":"481:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"473:4:3"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"553:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"566:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"577:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"562:3:3"},"nodeType":"YulFunctionCall","src":"562:17:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"509:43:3"},"nodeType":"YulFunctionCall","src":"509:71:3"},"nodeType":"YulExpressionStatement","src":"509:71:3"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"435:9:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"447:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"458:4:3","type":""}],"src":"365:222:3"}]},"contents":"{\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":3,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000885760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200007f9190620001b0565b60405180910390fd5b6200009981620000a760201b60201c565b5060018081905550620001cd565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000198826200016b565b9050919050565b620001aa816200018b565b82525050565b6000602082019050620001c760008301846200019f565b92915050565b61211780620001dd6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063cf35bdd01161008c578063eac8f5b811610066578063eac8f5b814610217578063f2fde38b1461024b578063f742c5b014610267578063fa62ee8d14610283576100cf565b8063cf35bdd0146101ab578063d5cbe157146101df578063de7ac991146101fb576100cf565b8063026e2d8c146100d45780634138d1671461010457806343247d03146101355780636446e62814610153578063715018a6146101835780638da5cb5b1461018d575b600080fd5b6100ee60048036038101906100e99190611445565b61029f565b6040516100fb91906114b3565b60405180910390f35b61011e600480360381019061011991906114fa565b610330565b60405161012c9291906115b9565b60405180910390f35b61013d6103e4565b60405161014a91906115f1565b60405180910390f35b61016d60048036038101906101689190611445565b6103f9565b60405161017a91906116ca565b60405180910390f35b61018b6104ee565b005b610195610502565b6040516101a291906114b3565b60405180910390f35b6101c560048036038101906101c09190611445565b61052b565b6040516101d695949392919061177c565b60405180910390f35b6101f960048036038101906101f491906114fa565b610691565b005b61021560048036038101906102109190611802565b61072e565b005b610231600480360381019061022c9190611445565b61082f565b604051610242959493929190611842565b60405180910390f35b610265600480360381019061026091906114fa565b610acd565b005b610281600480360381019061027c919061190f565b610b53565b005b61029d600480360381019061029891906119a4565b610e52565b005b6000600182101580156102b3575060015482105b6102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e990611a56565b60405180910390fd5b6003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008061033b6112b2565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1691509150915091565b6000600180546103f49190611aa5565b905090565b60606001821015801561040d575060015482105b61044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390611a56565b60405180910390fd5b600360008381526020019081526020016000206005018054806020026020016040519081016040528092919081815260200182805480156104e257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610498575b50505050509050919050565b6104f66112b2565b6105006000611339565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360205280600052604060002060009150905080600001549080600101805461055490611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461058090611b08565b80156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050908060020154908060030180546105e890611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461061490611b08565b80156106615780601f1061063657610100808354040283529160200191610661565b820191906000526020600020905b81548152906001019060200180831161064457829003601f168201915b5050505050908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b6106996112b2565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055507f6104c637b94c6924ba582f11d228cf3203eb42d40b94a3ab64e60006032a93d58160405161072391906114b3565b60405180910390a150565b6107366112b2565b604051806040016040528082600381111561075457610753611527565b5b815260200160011515815250600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360038111156107ca576107c9611527565b5b021790555060208201518160000160016101000a81548160ff0219169083151502179055509050507f9d298435d839e75ea5c40e98fc6aa208cc7c2a9ba6ffb5d9703e179bcf1b248e8282604051610823929190611b39565b60405180910390a15050565b606060006060600060606001861015801561084b575060015486105b61088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088190611a56565b60405180910390fd5b60036000878152602001908152602001600020600101600360008881526020019081526020016000206002015460036000898152602001908152602001600020600301600360008a815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008b815260200190815260200160002060050184805461092690611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461095290611b08565b801561099f5780601f106109745761010080835404028352916020019161099f565b820191906000526020600020905b81548152906001019060200180831161098257829003601f168201915b505050505094508280546109b290611b08565b80601f01602080910402602001604051908101604052809291908181526020018280546109de90611b08565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050925080805480602002602001604051908101604052809291908181526020018280548015610ab357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a69575b505050505090509450945094509450945091939590929450565b610ad56112b2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b475760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b3e91906114b3565b60405180910390fd5b610b5081611339565b50565b600033905060011515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590611bae565b60405180910390fd5b60006003811115610c0257610c01611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115610c6457610c63611527565b5b14610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90611c1a565b60405180910390fd5b600060015490508060036000838152602001908152602001600020600001819055508686600360008481526020019081526020016000206001019182610ceb929190611e20565b508460036000838152602001908152602001600020600201819055508383600360008481526020019081526020016000206003019182610d2c929190611e20565b50816003600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000828152602001908152602001600020600501829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001806000828254610e0b9190611ef0565b925050819055507fcc7b4929606ce963ba54b6a998f106f7748e78c03dc7f08fd77aeb28230eb2d381604051610e4191906115f1565b60405180910390a150505050505050565b813373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f1d08eb6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600033905060018410158015610f05575060015484105b610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90611a56565b60405180910390fd5b60011515600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190611f70565b60405180910390fd5b600380811115610fed57610fec611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561104f5761104e611527565b5b0361108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690611fdc565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156110f3576110f2611527565b5b6110fd9190612009565b60ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561116257611161611527565b5b60ff16146111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c9061208a565b60405180910390fd5b826003600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000858152602001908152602001600020600501839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffb1218ff291ccbefa25b58131603cc93001ff09f257940a8896e43c4d36b446e8482856040516112a4939291906120aa565b60405180910390a150505050565b6112ba6113fd565b73ffffffffffffffffffffffffffffffffffffffff166112d8610502565b73ffffffffffffffffffffffffffffffffffffffff1614611337576112fb6113fd565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161132e91906114b3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600080fd5b6000819050919050565b6114228161140f565b811461142d57600080fd5b50565b60008135905061143f81611419565b92915050565b60006020828403121561145b5761145a611405565b5b600061146984828501611430565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061149d82611472565b9050919050565b6114ad81611492565b82525050565b60006020820190506114c860008301846114a4565b92915050565b6114d781611492565b81146114e257600080fd5b50565b6000813590506114f4816114ce565b92915050565b6000602082840312156115105761150f611405565b5b600061151e848285016114e5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061156757611566611527565b5b50565b600081905061157882611556565b919050565b60006115888261156a565b9050919050565b6115988161157d565b82525050565b60008115159050919050565b6115b38161159e565b82525050565b60006040820190506115ce600083018561158f565b6115db60208301846115aa565b9392505050565b6115eb8161140f565b82525050565b600060208201905061160660008301846115e2565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61164181611492565b82525050565b60006116538383611638565b60208301905092915050565b6000602082019050919050565b60006116778261160c565b6116818185611617565b935061168c83611628565b8060005b838110156116bd5781516116a48882611647565b97506116af8361165f565b925050600181019050611690565b5085935050505092915050565b600060208201905081810360008301526116e4818461166c565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561172657808201518184015260208101905061170b565b60008484015250505050565b6000601f19601f8301169050919050565b600061174e826116ec565b61175881856116f7565b9350611768818560208601611708565b61177181611732565b840191505092915050565b600060a08201905061179160008301886115e2565b81810360208301526117a38187611743565b90506117b260408301866115e2565b81810360608301526117c48185611743565b90506117d360808301846114a4565b9695505050505050565b600481106117ea57600080fd5b50565b6000813590506117fc816117dd565b92915050565b6000806040838503121561181957611818611405565b5b6000611827858286016114e5565b9250506020611838858286016117ed565b9150509250929050565b600060a082019050818103600083015261185c8188611743565b905061186b60208301876115e2565b818103604083015261187d8186611743565b905061188c60608301856114a4565b818103608083015261189e818461166c565b90509695505050505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126118cf576118ce6118aa565b5b8235905067ffffffffffffffff8111156118ec576118eb6118af565b5b602083019150836001820283011115611908576119076118b4565b5b9250929050565b60008060008060006060868803121561192b5761192a611405565b5b600086013567ffffffffffffffff8111156119495761194861140a565b5b611955888289016118b9565b9550955050602061196888828901611430565b935050604086013567ffffffffffffffff8111156119895761198861140a565b5b611995888289016118b9565b92509250509295509295909350565b600080604083850312156119bb576119ba611405565b5b60006119c985828601611430565b92505060206119da858286016114e5565b9150509250929050565b7f4173736574204944206d7573742062652077697468696e2076616c696420726160008201527f6e67650000000000000000000000000000000000000000000000000000000000602082015250565b6000611a406023836116f7565b9150611a4b826119e4565b604082019050919050565b60006020820190508181036000830152611a6f81611a33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ab08261140f565b9150611abb8361140f565b9250828203905081811115611ad357611ad2611a76565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2057607f821691505b602082108103611b3357611b32611ad9565b5b50919050565b6000604082019050611b4e60008301856114a4565b611b5b602083018461158f565b9392505050565b7f4163746f72206e6f7420656e61626c6564000000000000000000000000000000600082015250565b6000611b986011836116f7565b9150611ba382611b62565b602082019050919050565b60006020820190508181036000830152611bc781611b8b565b9050919050565b7f4163746f72277320726f6c65206d7573742062652050726f6475636572000000600082015250565b6000611c04601d836116f7565b9150611c0f82611bce565b602082019050919050565b60006020820190508181036000830152611c3381611bf7565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cd67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c99565b611ce08683611c99565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d1d611d18611d138461140f565b611cf8565b61140f565b9050919050565b6000819050919050565b611d3783611d02565b611d4b611d4382611d24565b848454611ca6565b825550505050565b600090565b611d60611d53565b611d6b818484611d2e565b505050565b5b81811015611d8f57611d84600082611d58565b600181019050611d71565b5050565b601f821115611dd457611da581611c74565b611dae84611c89565b81016020851015611dbd578190505b611dd1611dc985611c89565b830182611d70565b50505b505050565b600082821c905092915050565b6000611df760001984600802611dd9565b1980831691505092915050565b6000611e108383611de6565b9150826002028217905092915050565b611e2a8383611c3a565b67ffffffffffffffff811115611e4357611e42611c45565b5b611e4d8254611b08565b611e58828285611d93565b6000601f831160018114611e875760008415611e75578287013590505b611e7f8582611e04565b865550611ee7565b601f198416611e9586611c74565b60005b82811015611ebd57848901358255600182019150602085019450602081019050611e98565b86831015611eda5784890135611ed6601f891682611de6565b8355505b6001600288020188555050505b50505050505050565b6000611efb8261140f565b9150611f068361140f565b9250828201905080821115611f1e57611f1d611a76565b5b92915050565b7f4e657874206f776e6572206973206e6f742076616c6964000000000000000000600082015250565b6000611f5a6017836116f7565b9150611f6582611f24565b602082019050919050565b60006020820190508181036000830152611f8981611f4d565b9050919050565b7f436f6e73756d65722063616e206e6f74207472616e7366657220617373657400600082015250565b6000611fc6601f836116f7565b9150611fd182611f90565b602082019050919050565b60006020820190508181036000830152611ff581611fb9565b9050919050565b600060ff82169050919050565b600061201482611ffc565b915061201f83611ffc565b9250828201905060ff81111561203857612037611a76565b5b92915050565b7f57726f6e67206e657874206f776e657220726f6c650000000000000000000000600082015250565b60006120746015836116f7565b915061207f8261203e565b602082019050919050565b600060208201905081810360008301526120a381612067565b9050919050565b60006060820190506120bf60008301866115e2565b6120cc60208301856114a4565b6120d960408301846114a4565b94935050505056fea264697066735822122004254f201e3063d0071daf387aff10e75d1f05df7863fa056337ae762e1c7e5664736f6c63430008140033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x88 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x7F SWAP2 SWAP1 PUSH3 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x99 DUP2 PUSH3 0xA7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH1 0x1 DUP1 DUP2 SWAP1 SSTORE POP PUSH3 0x1CD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x198 DUP3 PUSH3 0x16B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1AA DUP2 PUSH3 0x18B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1C7 PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x19F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2117 DUP1 PUSH3 0x1DD PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCF35BDD0 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAC8F5B8 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xEAC8F5B8 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0xF742C5B0 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xFA62EE8D EQ PUSH2 0x283 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0xCF35BDD0 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0xD5CBE157 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xDE7AC991 EQ PUSH2 0x1FB JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x26E2D8C EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x4138D167 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x43247D03 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x6446E628 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12C SWAP3 SWAP2 SWAP1 PUSH2 0x15B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x3E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x168 SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17A SWAP2 SWAP1 PUSH2 0x16CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18B PUSH2 0x4EE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x502 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A2 SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C0 SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x177C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x215 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x210 SWAP2 SWAP1 PUSH2 0x1802 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x242 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1842 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x260 SWAP2 SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH2 0xACD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x281 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x27C SWAP2 SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0x19A4 JUMP JUMPDEST PUSH2 0xE52 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 LT ISZERO DUP1 ISZERO PUSH2 0x2B3 JUMPI POP PUSH1 0x1 SLOAD DUP3 LT JUMPDEST PUSH2 0x2F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E9 SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x33B PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD PUSH2 0x3F4 SWAP2 SWAP1 PUSH2 0x1AA5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 LT ISZERO DUP1 ISZERO PUSH2 0x40D JUMPI POP PUSH1 0x1 SLOAD DUP3 LT JUMPDEST PUSH2 0x44C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x443 SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x498 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4F6 PUSH2 0x12B2 JUMP JUMPDEST PUSH2 0x500 PUSH1 0x0 PUSH2 0x1339 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x554 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x580 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5CD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5B0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD DUP1 SLOAD PUSH2 0x5E8 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x614 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x661 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x636 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x661 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x644 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP6 JUMP JUMPDEST PUSH2 0x699 PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x6104C637B94C6924BA582F11D228CF3203EB42D40B94A3AB64E60006032A93D5 DUP2 PUSH1 0x40 MLOAD PUSH2 0x723 SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x736 PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x754 JUMPI PUSH2 0x753 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7CA JUMPI PUSH2 0x7C9 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH32 0x9D298435D839E75EA5C40E98FC6AA208CC7C2A9BA6FFB5D9703E179BCF1B248E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x823 SWAP3 SWAP2 SWAP1 PUSH2 0x1B39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 PUSH1 0x1 DUP7 LT ISZERO DUP1 ISZERO PUSH2 0x84B JUMPI POP PUSH1 0x1 SLOAD DUP7 LT JUMPDEST PUSH2 0x88A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x881 SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x3 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP5 DUP1 SLOAD PUSH2 0x926 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x952 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x974 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x982 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP5 POP DUP3 DUP1 SLOAD PUSH2 0x9B2 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x9DE SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA2B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA00 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA2B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA0E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP3 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0xAB3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0xA69 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP2 SWAP4 SWAP6 SWAP1 SWAP3 SWAP5 POP JUMP JUMPDEST PUSH2 0xAD5 PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB47 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB3E SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB50 DUP2 PUSH2 0x1339 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH1 0x1 ISZERO ISZERO PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0xBEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE5 SWAP1 PUSH2 0x1BAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH2 0xC01 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC64 JUMPI PUSH2 0xC63 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST EQ PUSH2 0xCA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC9B SWAP1 PUSH2 0x1C1A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP DUP1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP7 DUP7 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP2 DUP3 PUSH2 0xCEB SWAP3 SWAP2 SWAP1 PUSH2 0x1E20 JUMP JUMPDEST POP DUP5 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP4 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SWAP2 DUP3 PUSH2 0xD2C SWAP3 SWAP2 SWAP1 PUSH2 0x1E20 JUMP JUMPDEST POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP1 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE0B SWAP2 SWAP1 PUSH2 0x1EF0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH32 0xCC7B4929606CE963BA54B6A998F106F7748E78C03DC7F08FD77AEB28230EB2D3 DUP2 PUSH1 0x40 MLOAD PUSH2 0xE41 SWAP2 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xEEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x1D08EB6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH1 0x1 DUP5 LT ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI POP PUSH1 0x1 SLOAD DUP5 LT JUMPDEST PUSH2 0xF44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF3B SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ISZERO ISZERO PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFD1 SWAP1 PUSH2 0x1F70 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFEC PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x104F JUMPI PUSH2 0x104E PUSH2 0x1527 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x108F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1086 SWAP1 PUSH2 0x1FDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x10F3 JUMPI PUSH2 0x10F2 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH2 0x10FD SWAP2 SWAP1 PUSH2 0x2009 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1162 JUMPI PUSH2 0x1161 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH1 0xFF AND EQ PUSH2 0x11A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x119C SWAP1 PUSH2 0x208A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP4 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xFB1218FF291CCBEFA25B58131603CC93001FF09F257940A8896E43C4D36B446E DUP5 DUP3 DUP6 PUSH1 0x40 MLOAD PUSH2 0x12A4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x12BA PUSH2 0x13FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12D8 PUSH2 0x502 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1337 JUMPI PUSH2 0x12FB PUSH2 0x13FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x132E SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1422 DUP2 PUSH2 0x140F JUMP JUMPDEST DUP2 EQ PUSH2 0x142D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x143F DUP2 PUSH2 0x1419 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x145B JUMPI PUSH2 0x145A PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1469 DUP5 DUP3 DUP6 ADD PUSH2 0x1430 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x149D DUP3 PUSH2 0x1472 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14AD DUP2 PUSH2 0x1492 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14C8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x14A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14D7 DUP2 PUSH2 0x1492 JUMP JUMPDEST DUP2 EQ PUSH2 0x14E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x14F4 DUP2 PUSH2 0x14CE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1510 JUMPI PUSH2 0x150F PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP5 DUP3 DUP6 ADD PUSH2 0x14E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x1567 JUMPI PUSH2 0x1566 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x1578 DUP3 PUSH2 0x1556 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1588 DUP3 PUSH2 0x156A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1598 DUP2 PUSH2 0x157D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15B3 DUP2 PUSH2 0x159E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x15CE PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x158F JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x15AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x15EB DUP2 PUSH2 0x140F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1606 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x15E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1641 DUP2 PUSH2 0x1492 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1653 DUP4 DUP4 PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1677 DUP3 PUSH2 0x160C JUMP JUMPDEST PUSH2 0x1681 DUP2 DUP6 PUSH2 0x1617 JUMP JUMPDEST SWAP4 POP PUSH2 0x168C DUP4 PUSH2 0x1628 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16BD JUMPI DUP2 MLOAD PUSH2 0x16A4 DUP9 DUP3 PUSH2 0x1647 JUMP JUMPDEST SWAP8 POP PUSH2 0x16AF DUP4 PUSH2 0x165F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1690 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x16E4 DUP2 DUP5 PUSH2 0x166C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1726 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x170B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x174E DUP3 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x1758 DUP2 DUP6 PUSH2 0x16F7 JUMP JUMPDEST SWAP4 POP PUSH2 0x1768 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1708 JUMP JUMPDEST PUSH2 0x1771 DUP2 PUSH2 0x1732 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x1791 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x15E2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x17A3 DUP2 DUP8 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x17B2 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x15E2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x17C4 DUP2 DUP6 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x17D3 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x14A4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x17EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x17FC DUP2 PUSH2 0x17DD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1819 JUMPI PUSH2 0x1818 PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1827 DUP6 DUP3 DUP7 ADD PUSH2 0x14E5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1838 DUP6 DUP3 DUP7 ADD PUSH2 0x17ED JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x185C DUP2 DUP9 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x186B PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x15E2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x187D DUP2 DUP7 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x188C PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x14A4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x189E DUP2 DUP5 PUSH2 0x166C JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x18CF JUMPI PUSH2 0x18CE PUSH2 0x18AA JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18EC JUMPI PUSH2 0x18EB PUSH2 0x18AF JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1908 JUMPI PUSH2 0x1907 PUSH2 0x18B4 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x192B JUMPI PUSH2 0x192A PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1949 JUMPI PUSH2 0x1948 PUSH2 0x140A JUMP JUMPDEST JUMPDEST PUSH2 0x1955 DUP9 DUP3 DUP10 ADD PUSH2 0x18B9 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 PUSH2 0x1968 DUP9 DUP3 DUP10 ADD PUSH2 0x1430 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1989 JUMPI PUSH2 0x1988 PUSH2 0x140A JUMP JUMPDEST JUMPDEST PUSH2 0x1995 DUP9 DUP3 DUP10 ADD PUSH2 0x18B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19BB JUMPI PUSH2 0x19BA PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x19C9 DUP6 DUP3 DUP7 ADD PUSH2 0x1430 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x19DA DUP6 DUP3 DUP7 ADD PUSH2 0x14E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4173736574204944206D7573742062652077697468696E2076616C6964207261 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E67650000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A40 PUSH1 0x23 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A4B DUP3 PUSH2 0x19E4 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A6F DUP2 PUSH2 0x1A33 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1AB0 DUP3 PUSH2 0x140F JUMP JUMPDEST SWAP2 POP PUSH2 0x1ABB DUP4 PUSH2 0x140F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x1AD3 JUMPI PUSH2 0x1AD2 PUSH2 0x1A76 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1B20 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1B33 JUMPI PUSH2 0x1B32 PUSH2 0x1AD9 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1B4E PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x14A4 JUMP JUMPDEST PUSH2 0x1B5B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x158F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4163746F72206E6F7420656E61626C6564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B98 PUSH1 0x11 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1BA3 DUP3 PUSH2 0x1B62 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BC7 DUP2 PUSH2 0x1B8B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4163746F72277320726F6C65206D7573742062652050726F6475636572000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C04 PUSH1 0x1D DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C0F DUP3 PUSH2 0x1BCE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C33 DUP2 PUSH2 0x1BF7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x1CD6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x1C99 JUMP JUMPDEST PUSH2 0x1CE0 DUP7 DUP4 PUSH2 0x1C99 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D1D PUSH2 0x1D18 PUSH2 0x1D13 DUP5 PUSH2 0x140F JUMP JUMPDEST PUSH2 0x1CF8 JUMP JUMPDEST PUSH2 0x140F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1D37 DUP4 PUSH2 0x1D02 JUMP JUMPDEST PUSH2 0x1D4B PUSH2 0x1D43 DUP3 PUSH2 0x1D24 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x1CA6 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x1D60 PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x1D6B DUP2 DUP5 DUP5 PUSH2 0x1D2E JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1D8F JUMPI PUSH2 0x1D84 PUSH1 0x0 DUP3 PUSH2 0x1D58 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1D71 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1DD4 JUMPI PUSH2 0x1DA5 DUP2 PUSH2 0x1C74 JUMP JUMPDEST PUSH2 0x1DAE DUP5 PUSH2 0x1C89 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1DBD JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1DD1 PUSH2 0x1DC9 DUP6 PUSH2 0x1C89 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x1D70 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DF7 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1DD9 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E10 DUP4 DUP4 PUSH2 0x1DE6 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1E2A DUP4 DUP4 PUSH2 0x1C3A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E43 JUMPI PUSH2 0x1E42 PUSH2 0x1C45 JUMP JUMPDEST JUMPDEST PUSH2 0x1E4D DUP3 SLOAD PUSH2 0x1B08 JUMP JUMPDEST PUSH2 0x1E58 DUP3 DUP3 DUP6 PUSH2 0x1D93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1E87 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1E75 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x1E7F DUP6 DUP3 PUSH2 0x1E04 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1E95 DUP7 PUSH2 0x1C74 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1EBD JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1E98 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1EDA JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x1ED6 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x1DE6 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EFB DUP3 PUSH2 0x140F JUMP JUMPDEST SWAP2 POP PUSH2 0x1F06 DUP4 PUSH2 0x140F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1F1E JUMPI PUSH2 0x1F1D PUSH2 0x1A76 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E657874206F776E6572206973206E6F742076616C6964000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F5A PUSH1 0x17 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1F65 DUP3 PUSH2 0x1F24 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F89 DUP2 PUSH2 0x1F4D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x436F6E73756D65722063616E206E6F74207472616E7366657220617373657400 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC6 PUSH1 0x1F DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1FD1 DUP3 PUSH2 0x1F90 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FF5 DUP2 PUSH2 0x1FB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2014 DUP3 PUSH2 0x1FFC JUMP JUMPDEST SWAP2 POP PUSH2 0x201F DUP4 PUSH2 0x1FFC JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x2038 JUMPI PUSH2 0x2037 PUSH2 0x1A76 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x57726F6E67206E657874206F776E657220726F6C650000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2074 PUSH1 0x15 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x207F DUP3 PUSH2 0x203E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x20A3 DUP2 PUSH2 0x2067 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x20BF PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x15E2 JUMP JUMPDEST PUSH2 0x20CC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x14A4 JUMP JUMPDEST PUSH2 0x20D9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x14A4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV 0x25 0x4F KECCAK256 0x1E ADDRESS PUSH4 0xD0071DAF CODESIZE PUSH27 0xFF10E75D1F05DF7863FA056337AE762E1C7E5664736F6C63430008 EQ STOP CALLER ","sourceMap":"439:7121:2:-:0;;;2013:363;;;;;;;;;;2041:10;1297:1:0;1273:26;;:12;:26;;;1269:95;;1350:1;1322:31;;;;;;;;;;;:::i;:::-;;;;;;;;1269:95;1373:32;1392:12;1373:18;;;:32;;:::i;:::-;1225:187;2369:1:2::1;2354:12:::0;:16:::1;;;;439:7121:::0;;2912:187:0;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;7:126:3:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;439:7121:2:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkOwner_84":{"entryPoint":4786,"id":84,"parameterSlots":0,"returnSlots":0},"@_msgSender_159":{"entryPoint":5117,"id":159,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_146":{"entryPoint":4921,"id":146,"parameterSlots":1,"returnSlots":0},"@assets_217":{"entryPoint":1323,"id":217,"parameterSlots":0,"returnSlots":0},"@disableActor_321":{"entryPoint":1681,"id":321,"parameterSlots":1,"returnSlots":0},"@getActor_345":{"entryPoint":816,"id":345,"parameterSlots":1,"returnSlots":2},"@getAssetCurrentHolder_526":{"entryPoint":671,"id":526,"parameterSlots":1,"returnSlots":1},"@getAssetHolderHistory_553":{"entryPoint":1017,"id":553,"parameterSlots":1,"returnSlots":1},"@getAsset_500":{"entryPoint":2095,"id":500,"parameterSlots":1,"returnSlots":5},"@getTotalAssetNumber_449":{"entryPoint":996,"id":449,"parameterSlots":0,"returnSlots":1},"@owner_67":{"entryPoint":1282,"id":67,"parameterSlots":0,"returnSlots":1},"@registerActor_301":{"entryPoint":1838,"id":301,"parameterSlots":2,"returnSlots":0},"@registerAsset_437":{"entryPoint":2899,"id":437,"parameterSlots":5,"returnSlots":0},"@renounceOwnership_98":{"entryPoint":1262,"id":98,"parameterSlots":0,"returnSlots":0},"@transferAsset_644":{"entryPoint":3666,"id":644,"parameterSlots":2,"returnSlots":0},"@transferOwnership_126":{"entryPoint":2765,"id":126,"parameterSlots":1,"returnSlots":0},"abi_decode_t_address":{"entryPoint":5349,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_enum$_Role_$184":{"entryPoint":6125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_string_calldata_ptr":{"entryPoint":6329,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_uint256":{"entryPoint":5168,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5370,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_enum$_Role_$184":{"entryPoint":6146,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_string_calldata_ptrt_uint256t_string_calldata_ptr":{"entryPoint":6415,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":5189,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":6564,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encodeUpdatedPos_t_address_to_t_address":{"entryPoint":5703,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":5688,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":5284,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":5740,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":5546,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_enum$_Role_$184_to_t_uint8_fromStack":{"entryPoint":5519,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":5955,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e_to_t_string_memory_ptr_fromStack":{"entryPoint":7051,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0_to_t_string_memory_ptr_fromStack":{"entryPoint":8121,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392_to_t_string_memory_ptr_fromStack":{"entryPoint":8013,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403_to_t_string_memory_ptr_fromStack":{"entryPoint":6707,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071_to_t_string_memory_ptr_fromStack":{"entryPoint":7159,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a_to_t_string_memory_ptr_fromStack":{"entryPoint":8295,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":5602,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":5299,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_enum$_Role_$184__to_t_address_t_uint8__fromStack_reversed":{"entryPoint":6969,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":5834,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_Role_$184_t_bool__to_t_uint8_t_bool__fromStack_reversed":{"entryPoint":5561,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address_t_array$_t_address_$dyn_memory_ptr__to_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":6210,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7086,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8156,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8048,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6742,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7194,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8330,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":5617,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed":{"entryPoint":8362,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address__to_t_uint256_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":6012,"id":null,"parameterSlots":6,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":5672,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_string_storage":{"entryPoint":7284,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":5644,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_calldata_ptr":{"entryPoint":7226,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":5868,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":5727,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":5655,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":5879,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":7920,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":8201,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":6821,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_string_storage":{"entryPoint":7571,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":5266,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":5534,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_enum$_Role_$184":{"entryPoint":5482,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":5234,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":5135,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":8188,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":7536,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_enum$_Role_$184_to_t_uint8":{"entryPoint":5501,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint256_to_t_uint256":{"entryPoint":7426,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage":{"entryPoint":7712,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":5896,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":7305,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":6920,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":7684,"id":null,"parameterSlots":2,"returnSlots":1},"identity":{"entryPoint":7416,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":7654,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":6774,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5415,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":6873,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":7237,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":7460,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":6319,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":6314,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":6324,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":5130,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":5125,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":5938,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":7321,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":7641,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":7512,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e":{"entryPoint":7010,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0":{"entryPoint":8080,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392":{"entryPoint":7972,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403":{"entryPoint":6628,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071":{"entryPoint":7118,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a":{"entryPoint":8254,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":7334,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":7470,"id":null,"parameterSlots":3,"returnSlots":0},"validator_assert_t_enum$_Role_$184":{"entryPoint":5462,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":5326,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_enum$_Role_$184":{"entryPoint":6109,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":5145,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":7507,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:24673:3","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:3","statements":[{"nodeType":"YulAssignment","src":"57:19:3","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:3","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:3"},"nodeType":"YulFunctionCall","src":"67:9:3"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:3"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:3","type":""}],"src":"7:75:3"},{"body":{"nodeType":"YulBlock","src":"177:28:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:3"},"nodeType":"YulFunctionCall","src":"187:12:3"},"nodeType":"YulExpressionStatement","src":"187:12:3"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:3"},{"body":{"nodeType":"YulBlock","src":"300:28:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:3"},"nodeType":"YulFunctionCall","src":"310:12:3"},"nodeType":"YulExpressionStatement","src":"310:12:3"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:3"},{"body":{"nodeType":"YulBlock","src":"379:32:3","statements":[{"nodeType":"YulAssignment","src":"389:16:3","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:3"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:3","type":""}],"src":"334:77:3"},{"body":{"nodeType":"YulBlock","src":"460:79:3","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:3"},"nodeType":"YulFunctionCall","src":"519:12:3"},"nodeType":"YulExpressionStatement","src":"519:12:3"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"490:17:3"},"nodeType":"YulFunctionCall","src":"490:24:3"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:3"},"nodeType":"YulFunctionCall","src":"480:35:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:3"},"nodeType":"YulFunctionCall","src":"473:43:3"},"nodeType":"YulIf","src":"470:63:3"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:3","type":""}],"src":"417:122:3"},{"body":{"nodeType":"YulBlock","src":"597:87:3","statements":[{"nodeType":"YulAssignment","src":"607:29:3","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:3"},"nodeType":"YulFunctionCall","src":"616:20:3"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:3"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:3"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"645:26:3"},"nodeType":"YulFunctionCall","src":"645:33:3"},"nodeType":"YulExpressionStatement","src":"645:33:3"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:3","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:3","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:3","type":""}],"src":"545:139:3"},{"body":{"nodeType":"YulBlock","src":"756:263:3","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:3"},"nodeType":"YulFunctionCall","src":"804:79:3"},"nodeType":"YulExpressionStatement","src":"804:79:3"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:3"},"nodeType":"YulFunctionCall","src":"773:23:3"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:3","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:3"},"nodeType":"YulFunctionCall","src":"769:32:3"},"nodeType":"YulIf","src":"766:119:3"},{"nodeType":"YulBlock","src":"895:117:3","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:3","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:3","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:3","type":""}]},{"nodeType":"YulAssignment","src":"939:63:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:3"},"nodeType":"YulFunctionCall","src":"970:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:3"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"949:20:3"},"nodeType":"YulFunctionCall","src":"949:53:3"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:3"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:3","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:3","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:3","type":""}],"src":"690:329:3"},{"body":{"nodeType":"YulBlock","src":"1070:81:3","statements":[{"nodeType":"YulAssignment","src":"1080:65:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1095:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"1102:42:3","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1091:3:3"},"nodeType":"YulFunctionCall","src":"1091:54:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1080:7:3"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1052:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1062:7:3","type":""}],"src":"1025:126:3"},{"body":{"nodeType":"YulBlock","src":"1202:51:3","statements":[{"nodeType":"YulAssignment","src":"1212:35:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1241:5:3"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"1223:17:3"},"nodeType":"YulFunctionCall","src":"1223:24:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1212:7:3"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1184:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1194:7:3","type":""}],"src":"1157:96:3"},{"body":{"nodeType":"YulBlock","src":"1324:53:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1341:3:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1364:5:3"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1346:17:3"},"nodeType":"YulFunctionCall","src":"1346:24:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1334:6:3"},"nodeType":"YulFunctionCall","src":"1334:37:3"},"nodeType":"YulExpressionStatement","src":"1334:37:3"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1312:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1319:3:3","type":""}],"src":"1259:118:3"},{"body":{"nodeType":"YulBlock","src":"1481:124:3","statements":[{"nodeType":"YulAssignment","src":"1491:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1503:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"1514:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1499:3:3"},"nodeType":"YulFunctionCall","src":"1499:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1491:4:3"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1571:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1584:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"1595:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1580:3:3"},"nodeType":"YulFunctionCall","src":"1580:17:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"1527:43:3"},"nodeType":"YulFunctionCall","src":"1527:71:3"},"nodeType":"YulExpressionStatement","src":"1527:71:3"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1453:9:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1465:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1476:4:3","type":""}],"src":"1383:222:3"},{"body":{"nodeType":"YulBlock","src":"1654:79:3","statements":[{"body":{"nodeType":"YulBlock","src":"1711:16:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1720:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1723:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1713:6:3"},"nodeType":"YulFunctionCall","src":"1713:12:3"},"nodeType":"YulExpressionStatement","src":"1713:12:3"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1677:5:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1702:5:3"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1684:17:3"},"nodeType":"YulFunctionCall","src":"1684:24:3"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1674:2:3"},"nodeType":"YulFunctionCall","src":"1674:35:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1667:6:3"},"nodeType":"YulFunctionCall","src":"1667:43:3"},"nodeType":"YulIf","src":"1664:63:3"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1647:5:3","type":""}],"src":"1611:122:3"},{"body":{"nodeType":"YulBlock","src":"1791:87:3","statements":[{"nodeType":"YulAssignment","src":"1801:29:3","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1823:6:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1810:12:3"},"nodeType":"YulFunctionCall","src":"1810:20:3"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1801:5:3"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1866:5:3"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1839:26:3"},"nodeType":"YulFunctionCall","src":"1839:33:3"},"nodeType":"YulExpressionStatement","src":"1839:33:3"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1769:6:3","type":""},{"name":"end","nodeType":"YulTypedName","src":"1777:3:3","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1785:5:3","type":""}],"src":"1739:139:3"},{"body":{"nodeType":"YulBlock","src":"1950:263:3","statements":[{"body":{"nodeType":"YulBlock","src":"1996:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1998:77:3"},"nodeType":"YulFunctionCall","src":"1998:79:3"},"nodeType":"YulExpressionStatement","src":"1998:79:3"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1971:7:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"1980:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1967:3:3"},"nodeType":"YulFunctionCall","src":"1967:23:3"},{"kind":"number","nodeType":"YulLiteral","src":"1992:2:3","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1963:3:3"},"nodeType":"YulFunctionCall","src":"1963:32:3"},"nodeType":"YulIf","src":"1960:119:3"},{"nodeType":"YulBlock","src":"2089:117:3","statements":[{"nodeType":"YulVariableDeclaration","src":"2104:15:3","value":{"kind":"number","nodeType":"YulLiteral","src":"2118:1:3","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2108:6:3","type":""}]},{"nodeType":"YulAssignment","src":"2133:63:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2168:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"2179:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2164:3:3"},"nodeType":"YulFunctionCall","src":"2164:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2188:7:3"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2143:20:3"},"nodeType":"YulFunctionCall","src":"2143:53:3"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2133:6:3"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1920:9:3","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1931:7:3","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1943:6:3","type":""}],"src":"1884:329:3"},{"body":{"nodeType":"YulBlock","src":"2247:152:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2264:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2267:77:3","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2257:6:3"},"nodeType":"YulFunctionCall","src":"2257:88:3"},"nodeType":"YulExpressionStatement","src":"2257:88:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2361:1:3","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2364:4:3","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2354:6:3"},"nodeType":"YulFunctionCall","src":"2354:15:3"},"nodeType":"YulExpressionStatement","src":"2354:15:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2385:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2388:4:3","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2378:6:3"},"nodeType":"YulFunctionCall","src":"2378:15:3"},"nodeType":"YulExpressionStatement","src":"2378:15:3"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2219:180:3"},{"body":{"nodeType":"YulBlock","src":"2456:62:3","statements":[{"body":{"nodeType":"YulBlock","src":"2490:22:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"2492:16:3"},"nodeType":"YulFunctionCall","src":"2492:18:3"},"nodeType":"YulExpressionStatement","src":"2492:18:3"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2479:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"2486:1:3","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2476:2:3"},"nodeType":"YulFunctionCall","src":"2476:12:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2469:6:3"},"nodeType":"YulFunctionCall","src":"2469:20:3"},"nodeType":"YulIf","src":"2466:46:3"}]},"name":"validator_assert_t_enum$_Role_$184","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2449:5:3","type":""}],"src":"2405:113:3"},{"body":{"nodeType":"YulBlock","src":"2577:74:3","statements":[{"nodeType":"YulAssignment","src":"2587:16:3","value":{"name":"value","nodeType":"YulIdentifier","src":"2598:5:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2587:7:3"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2639:5:3"}],"functionName":{"name":"validator_assert_t_enum$_Role_$184","nodeType":"YulIdentifier","src":"2604:34:3"},"nodeType":"YulFunctionCall","src":"2604:41:3"},"nodeType":"YulExpressionStatement","src":"2604:41:3"}]},"name":"cleanup_t_enum$_Role_$184","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2559:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2569:7:3","type":""}],"src":"2524:127:3"},{"body":{"nodeType":"YulBlock","src":"2723:61:3","statements":[{"nodeType":"YulAssignment","src":"2733:45:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2772:5:3"}],"functionName":{"name":"cleanup_t_enum$_Role_$184","nodeType":"YulIdentifier","src":"2746:25:3"},"nodeType":"YulFunctionCall","src":"2746:32:3"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"2733:9:3"}]}]},"name":"convert_t_enum$_Role_$184_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2703:5:3","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"2713:9:3","type":""}],"src":"2657:127:3"},{"body":{"nodeType":"YulBlock","src":"2861:72:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2878:3:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2920:5:3"}],"functionName":{"name":"convert_t_enum$_Role_$184_to_t_uint8","nodeType":"YulIdentifier","src":"2883:36:3"},"nodeType":"YulFunctionCall","src":"2883:43:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2871:6:3"},"nodeType":"YulFunctionCall","src":"2871:56:3"},"nodeType":"YulExpressionStatement","src":"2871:56:3"}]},"name":"abi_encode_t_enum$_Role_$184_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2849:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2856:3:3","type":""}],"src":"2790:143:3"},{"body":{"nodeType":"YulBlock","src":"2981:48:3","statements":[{"nodeType":"YulAssignment","src":"2991:32:3","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3016:5:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3009:6:3"},"nodeType":"YulFunctionCall","src":"3009:13:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3002:6:3"},"nodeType":"YulFunctionCall","src":"3002:21:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2991:7:3"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2963:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2973:7:3","type":""}],"src":"2939:90:3"},{"body":{"nodeType":"YulBlock","src":"3094:50:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3111:3:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3131:5:3"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"3116:14:3"},"nodeType":"YulFunctionCall","src":"3116:21:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3104:6:3"},"nodeType":"YulFunctionCall","src":"3104:34:3"},"nodeType":"YulExpressionStatement","src":"3104:34:3"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3082:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3089:3:3","type":""}],"src":"3035:109:3"},{"body":{"nodeType":"YulBlock","src":"3276:206:3","statements":[{"nodeType":"YulAssignment","src":"3286:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3298:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"3309:2:3","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3294:3:3"},"nodeType":"YulFunctionCall","src":"3294:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3286:4:3"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3372:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3385:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"3396:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3381:3:3"},"nodeType":"YulFunctionCall","src":"3381:17:3"}],"functionName":{"name":"abi_encode_t_enum$_Role_$184_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"3322:49:3"},"nodeType":"YulFunctionCall","src":"3322:77:3"},"nodeType":"YulExpressionStatement","src":"3322:77:3"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3447:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3460:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"3471:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3456:3:3"},"nodeType":"YulFunctionCall","src":"3456:18:3"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3409:37:3"},"nodeType":"YulFunctionCall","src":"3409:66:3"},"nodeType":"YulExpressionStatement","src":"3409:66:3"}]},"name":"abi_encode_tuple_t_enum$_Role_$184_t_bool__to_t_uint8_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3240:9:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3252:6:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3260:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3271:4:3","type":""}],"src":"3150:332:3"},{"body":{"nodeType":"YulBlock","src":"3553:53:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3570:3:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3593:5:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3575:17:3"},"nodeType":"YulFunctionCall","src":"3575:24:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3563:6:3"},"nodeType":"YulFunctionCall","src":"3563:37:3"},"nodeType":"YulExpressionStatement","src":"3563:37:3"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3541:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3548:3:3","type":""}],"src":"3488:118:3"},{"body":{"nodeType":"YulBlock","src":"3710:124:3","statements":[{"nodeType":"YulAssignment","src":"3720:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3732:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"3743:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3728:3:3"},"nodeType":"YulFunctionCall","src":"3728:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3720:4:3"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3800:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3813:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"3824:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3809:3:3"},"nodeType":"YulFunctionCall","src":"3809:17:3"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"3756:43:3"},"nodeType":"YulFunctionCall","src":"3756:71:3"},"nodeType":"YulExpressionStatement","src":"3756:71:3"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3682:9:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3694:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3705:4:3","type":""}],"src":"3612:222:3"},{"body":{"nodeType":"YulBlock","src":"3914:40:3","statements":[{"nodeType":"YulAssignment","src":"3925:22:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3941:5:3"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3935:5:3"},"nodeType":"YulFunctionCall","src":"3935:12:3"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3925:6:3"}]}]},"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3897:5:3","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3907:6:3","type":""}],"src":"3840:114:3"},{"body":{"nodeType":"YulBlock","src":"4071:73:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4088:3:3"},{"name":"length","nodeType":"YulIdentifier","src":"4093:6:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4081:6:3"},"nodeType":"YulFunctionCall","src":"4081:19:3"},"nodeType":"YulExpressionStatement","src":"4081:19:3"},{"nodeType":"YulAssignment","src":"4109:29:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4128:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"4133:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4124:3:3"},"nodeType":"YulFunctionCall","src":"4124:14:3"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4109:11:3"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4043:3:3","type":""},{"name":"length","nodeType":"YulTypedName","src":"4048:6:3","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4059:11:3","type":""}],"src":"3960:184:3"},{"body":{"nodeType":"YulBlock","src":"4222:60:3","statements":[{"nodeType":"YulAssignment","src":"4232:11:3","value":{"name":"ptr","nodeType":"YulIdentifier","src":"4240:3:3"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4232:4:3"}]},{"nodeType":"YulAssignment","src":"4253:22:3","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"4265:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"4270:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4261:3:3"},"nodeType":"YulFunctionCall","src":"4261:14:3"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4253:4:3"}]}]},"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"4209:3:3","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"4217:4:3","type":""}],"src":"4150:132:3"},{"body":{"nodeType":"YulBlock","src":"4343:53:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4360:3:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4383:5:3"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4365:17:3"},"nodeType":"YulFunctionCall","src":"4365:24:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4353:6:3"},"nodeType":"YulFunctionCall","src":"4353:37:3"},"nodeType":"YulExpressionStatement","src":"4353:37:3"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4331:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4338:3:3","type":""}],"src":"4288:108:3"},{"body":{"nodeType":"YulBlock","src":"4482:99:3","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4526:6:3"},{"name":"pos","nodeType":"YulIdentifier","src":"4534:3:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"4492:33:3"},"nodeType":"YulFunctionCall","src":"4492:46:3"},"nodeType":"YulExpressionStatement","src":"4492:46:3"},{"nodeType":"YulAssignment","src":"4547:28:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4565:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"4570:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4561:3:3"},"nodeType":"YulFunctionCall","src":"4561:14:3"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"4547:10:3"}]}]},"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"4455:6:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4463:3:3","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"4471:10:3","type":""}],"src":"4402:179:3"},{"body":{"nodeType":"YulBlock","src":"4662:38:3","statements":[{"nodeType":"YulAssignment","src":"4672:22:3","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"4684:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"4689:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4680:3:3"},"nodeType":"YulFunctionCall","src":"4680:14:3"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"4672:4:3"}]}]},"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"4649:3:3","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"4657:4:3","type":""}],"src":"4587:113:3"},{"body":{"nodeType":"YulBlock","src":"4860:608:3","statements":[{"nodeType":"YulVariableDeclaration","src":"4870:68:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4932:5:3"}],"functionName":{"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4884:47:3"},"nodeType":"YulFunctionCall","src":"4884:54:3"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4874:6:3","type":""}]},{"nodeType":"YulAssignment","src":"4947:93:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5028:3:3"},{"name":"length","nodeType":"YulIdentifier","src":"5033:6:3"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4954:73:3"},"nodeType":"YulFunctionCall","src":"4954:86:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4947:3:3"}]},{"nodeType":"YulVariableDeclaration","src":"5049:71:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5114:5:3"}],"functionName":{"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5064:49:3"},"nodeType":"YulFunctionCall","src":"5064:56:3"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"5053:7:3","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5129:21:3","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"5143:7:3"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5133:6:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"5219:224:3","statements":[{"nodeType":"YulVariableDeclaration","src":"5233:34:3","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5260:6:3"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5254:5:3"},"nodeType":"YulFunctionCall","src":"5254:13:3"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"5237:13:3","type":""}]},{"nodeType":"YulAssignment","src":"5280:70:3","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"5331:13:3"},{"name":"pos","nodeType":"YulIdentifier","src":"5346:3:3"}],"functionName":{"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulIdentifier","src":"5287:43:3"},"nodeType":"YulFunctionCall","src":"5287:63:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5280:3:3"}]},{"nodeType":"YulAssignment","src":"5363:70:3","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5426:6:3"}],"functionName":{"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5373:52:3"},"nodeType":"YulFunctionCall","src":"5373:60:3"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5363:6:3"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5181:1:3"},{"name":"length","nodeType":"YulIdentifier","src":"5184:6:3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5178:2:3"},"nodeType":"YulFunctionCall","src":"5178:13:3"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5192:18:3","statements":[{"nodeType":"YulAssignment","src":"5194:14:3","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5203:1:3"},{"kind":"number","nodeType":"YulLiteral","src":"5206:1:3","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5199:3:3"},"nodeType":"YulFunctionCall","src":"5199:9:3"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5194:1:3"}]}]},"pre":{"nodeType":"YulBlock","src":"5163:14:3","statements":[{"nodeType":"YulVariableDeclaration","src":"5165:10:3","value":{"kind":"number","nodeType":"YulLiteral","src":"5174:1:3","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5169:1:3","type":""}]}]},"src":"5159:284:3"},{"nodeType":"YulAssignment","src":"5452:10:3","value":{"name":"pos","nodeType":"YulIdentifier","src":"5459:3:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5452:3:3"}]}]},"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4839:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4846:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4855:3:3","type":""}],"src":"4736:732:3"},{"body":{"nodeType":"YulBlock","src":"5622:225:3","statements":[{"nodeType":"YulAssignment","src":"5632:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5644:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"5655:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5640:3:3"},"nodeType":"YulFunctionCall","src":"5640:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5632:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5679:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"5690:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5675:3:3"},"nodeType":"YulFunctionCall","src":"5675:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5698:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"5704:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5694:3:3"},"nodeType":"YulFunctionCall","src":"5694:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5668:6:3"},"nodeType":"YulFunctionCall","src":"5668:47:3"},"nodeType":"YulExpressionStatement","src":"5668:47:3"},{"nodeType":"YulAssignment","src":"5724:116:3","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5826:6:3"},{"name":"tail","nodeType":"YulIdentifier","src":"5835:4:3"}],"functionName":{"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5732:93:3"},"nodeType":"YulFunctionCall","src":"5732:108:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5724:4:3"}]}]},"name":"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5594:9:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5606:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5617:4:3","type":""}],"src":"5474:373:3"},{"body":{"nodeType":"YulBlock","src":"5912:40:3","statements":[{"nodeType":"YulAssignment","src":"5923:22:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5939:5:3"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5933:5:3"},"nodeType":"YulFunctionCall","src":"5933:12:3"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5923:6:3"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5895:5:3","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5905:6:3","type":""}],"src":"5853:99:3"},{"body":{"nodeType":"YulBlock","src":"6054:73:3","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6071:3:3"},{"name":"length","nodeType":"YulIdentifier","src":"6076:6:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6064:6:3"},"nodeType":"YulFunctionCall","src":"6064:19:3"},"nodeType":"YulExpressionStatement","src":"6064:19:3"},{"nodeType":"YulAssignment","src":"6092:29:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6111:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"6116:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6107:3:3"},"nodeType":"YulFunctionCall","src":"6107:14:3"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"6092:11:3"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6026:3:3","type":""},{"name":"length","nodeType":"YulTypedName","src":"6031:6:3","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6042:11:3","type":""}],"src":"5958:169:3"},{"body":{"nodeType":"YulBlock","src":"6195:184:3","statements":[{"nodeType":"YulVariableDeclaration","src":"6205:10:3","value":{"kind":"number","nodeType":"YulLiteral","src":"6214:1:3","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6209:1:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"6274:63:3","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6299:3:3"},{"name":"i","nodeType":"YulIdentifier","src":"6304:1:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6295:3:3"},"nodeType":"YulFunctionCall","src":"6295:11:3"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6318:3:3"},{"name":"i","nodeType":"YulIdentifier","src":"6323:1:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6314:3:3"},"nodeType":"YulFunctionCall","src":"6314:11:3"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6308:5:3"},"nodeType":"YulFunctionCall","src":"6308:18:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6288:6:3"},"nodeType":"YulFunctionCall","src":"6288:39:3"},"nodeType":"YulExpressionStatement","src":"6288:39:3"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6235:1:3"},{"name":"length","nodeType":"YulIdentifier","src":"6238:6:3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6232:2:3"},"nodeType":"YulFunctionCall","src":"6232:13:3"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6246:19:3","statements":[{"nodeType":"YulAssignment","src":"6248:15:3","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6257:1:3"},{"kind":"number","nodeType":"YulLiteral","src":"6260:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6253:3:3"},"nodeType":"YulFunctionCall","src":"6253:10:3"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6248:1:3"}]}]},"pre":{"nodeType":"YulBlock","src":"6228:3:3","statements":[]},"src":"6224:113:3"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6357:3:3"},{"name":"length","nodeType":"YulIdentifier","src":"6362:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6353:3:3"},"nodeType":"YulFunctionCall","src":"6353:16:3"},{"kind":"number","nodeType":"YulLiteral","src":"6371:1:3","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6346:6:3"},"nodeType":"YulFunctionCall","src":"6346:27:3"},"nodeType":"YulExpressionStatement","src":"6346:27:3"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6177:3:3","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6182:3:3","type":""},{"name":"length","nodeType":"YulTypedName","src":"6187:6:3","type":""}],"src":"6133:246:3"},{"body":{"nodeType":"YulBlock","src":"6433:54:3","statements":[{"nodeType":"YulAssignment","src":"6443:38:3","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6461:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"6468:2:3","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6457:3:3"},"nodeType":"YulFunctionCall","src":"6457:14:3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6477:2:3","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6473:3:3"},"nodeType":"YulFunctionCall","src":"6473:7:3"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6453:3:3"},"nodeType":"YulFunctionCall","src":"6453:28:3"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6443:6:3"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6416:5:3","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"6426:6:3","type":""}],"src":"6385:102:3"},{"body":{"nodeType":"YulBlock","src":"6585:285:3","statements":[{"nodeType":"YulVariableDeclaration","src":"6595:53:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6642:5:3"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"6609:32:3"},"nodeType":"YulFunctionCall","src":"6609:39:3"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6599:6:3","type":""}]},{"nodeType":"YulAssignment","src":"6657:78:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6723:3:3"},{"name":"length","nodeType":"YulIdentifier","src":"6728:6:3"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6664:58:3"},"nodeType":"YulFunctionCall","src":"6664:71:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6657:3:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6783:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"6790:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6779:3:3"},"nodeType":"YulFunctionCall","src":"6779:16:3"},{"name":"pos","nodeType":"YulIdentifier","src":"6797:3:3"},{"name":"length","nodeType":"YulIdentifier","src":"6802:6:3"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6744:34:3"},"nodeType":"YulFunctionCall","src":"6744:65:3"},"nodeType":"YulExpressionStatement","src":"6744:65:3"},{"nodeType":"YulAssignment","src":"6818:46:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6829:3:3"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6856:6:3"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"6834:21:3"},"nodeType":"YulFunctionCall","src":"6834:29:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6825:3:3"},"nodeType":"YulFunctionCall","src":"6825:39:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6818:3:3"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6566:5:3","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6573:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6581:3:3","type":""}],"src":"6493:377:3"},{"body":{"nodeType":"YulBlock","src":"7126:596:3","statements":[{"nodeType":"YulAssignment","src":"7136:27:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7148:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"7159:3:3","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7144:3:3"},"nodeType":"YulFunctionCall","src":"7144:19:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7136:4:3"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7217:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7230:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"7241:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7226:3:3"},"nodeType":"YulFunctionCall","src":"7226:17:3"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"7173:43:3"},"nodeType":"YulFunctionCall","src":"7173:71:3"},"nodeType":"YulExpressionStatement","src":"7173:71:3"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7265:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"7276:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7261:3:3"},"nodeType":"YulFunctionCall","src":"7261:18:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7285:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"7291:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7281:3:3"},"nodeType":"YulFunctionCall","src":"7281:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7254:6:3"},"nodeType":"YulFunctionCall","src":"7254:48:3"},"nodeType":"YulExpressionStatement","src":"7254:48:3"},{"nodeType":"YulAssignment","src":"7311:86:3","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7383:6:3"},{"name":"tail","nodeType":"YulIdentifier","src":"7392:4:3"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7319:63:3"},"nodeType":"YulFunctionCall","src":"7319:78:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7311:4:3"}]},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7451:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7464:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"7475:2:3","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7460:3:3"},"nodeType":"YulFunctionCall","src":"7460:18:3"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"7407:43:3"},"nodeType":"YulFunctionCall","src":"7407:72:3"},"nodeType":"YulExpressionStatement","src":"7407:72:3"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7500:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"7511:2:3","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7496:3:3"},"nodeType":"YulFunctionCall","src":"7496:18:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7520:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"7526:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7516:3:3"},"nodeType":"YulFunctionCall","src":"7516:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7489:6:3"},"nodeType":"YulFunctionCall","src":"7489:48:3"},"nodeType":"YulExpressionStatement","src":"7489:48:3"},{"nodeType":"YulAssignment","src":"7546:86:3","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"7618:6:3"},{"name":"tail","nodeType":"YulIdentifier","src":"7627:4:3"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7554:63:3"},"nodeType":"YulFunctionCall","src":"7554:78:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7546:4:3"}]},{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7686:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7699:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"7710:3:3","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7695:3:3"},"nodeType":"YulFunctionCall","src":"7695:19:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"7642:43:3"},"nodeType":"YulFunctionCall","src":"7642:73:3"},"nodeType":"YulExpressionStatement","src":"7642:73:3"}]},"name":"abi_encode_tuple_t_uint256_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address__to_t_uint256_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7066:9:3","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7078:6:3","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7086:6:3","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7094:6:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7102:6:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7110:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7121:4:3","type":""}],"src":"6876:846:3"},{"body":{"nodeType":"YulBlock","src":"7779:56:3","statements":[{"body":{"nodeType":"YulBlock","src":"7813:16:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7822:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7825:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7815:6:3"},"nodeType":"YulFunctionCall","src":"7815:12:3"},"nodeType":"YulExpressionStatement","src":"7815:12:3"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7802:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"7809:1:3","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7799:2:3"},"nodeType":"YulFunctionCall","src":"7799:12:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7792:6:3"},"nodeType":"YulFunctionCall","src":"7792:20:3"},"nodeType":"YulIf","src":"7789:40:3"}]},"name":"validator_revert_t_enum$_Role_$184","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7772:5:3","type":""}],"src":"7728:107:3"},{"body":{"nodeType":"YulBlock","src":"7901:95:3","statements":[{"nodeType":"YulAssignment","src":"7911:29:3","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7933:6:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7920:12:3"},"nodeType":"YulFunctionCall","src":"7920:20:3"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7911:5:3"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7984:5:3"}],"functionName":{"name":"validator_revert_t_enum$_Role_$184","nodeType":"YulIdentifier","src":"7949:34:3"},"nodeType":"YulFunctionCall","src":"7949:41:3"},"nodeType":"YulExpressionStatement","src":"7949:41:3"}]},"name":"abi_decode_t_enum$_Role_$184","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7879:6:3","type":""},{"name":"end","nodeType":"YulTypedName","src":"7887:3:3","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"7895:5:3","type":""}],"src":"7841:155:3"},{"body":{"nodeType":"YulBlock","src":"8093:399:3","statements":[{"body":{"nodeType":"YulBlock","src":"8139:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8141:77:3"},"nodeType":"YulFunctionCall","src":"8141:79:3"},"nodeType":"YulExpressionStatement","src":"8141:79:3"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8114:7:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"8123:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8110:3:3"},"nodeType":"YulFunctionCall","src":"8110:23:3"},{"kind":"number","nodeType":"YulLiteral","src":"8135:2:3","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8106:3:3"},"nodeType":"YulFunctionCall","src":"8106:32:3"},"nodeType":"YulIf","src":"8103:119:3"},{"nodeType":"YulBlock","src":"8232:117:3","statements":[{"nodeType":"YulVariableDeclaration","src":"8247:15:3","value":{"kind":"number","nodeType":"YulLiteral","src":"8261:1:3","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8251:6:3","type":""}]},{"nodeType":"YulAssignment","src":"8276:63:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8311:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"8322:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8307:3:3"},"nodeType":"YulFunctionCall","src":"8307:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8331:7:3"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8286:20:3"},"nodeType":"YulFunctionCall","src":"8286:53:3"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8276:6:3"}]}]},{"nodeType":"YulBlock","src":"8359:126:3","statements":[{"nodeType":"YulVariableDeclaration","src":"8374:16:3","value":{"kind":"number","nodeType":"YulLiteral","src":"8388:2:3","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8378:6:3","type":""}]},{"nodeType":"YulAssignment","src":"8404:71:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8447:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"8458:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8443:3:3"},"nodeType":"YulFunctionCall","src":"8443:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8467:7:3"}],"functionName":{"name":"abi_decode_t_enum$_Role_$184","nodeType":"YulIdentifier","src":"8414:28:3"},"nodeType":"YulFunctionCall","src":"8414:61:3"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8404:6:3"}]}]}]},"name":"abi_decode_tuple_t_addresst_enum$_Role_$184","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8055:9:3","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8066:7:3","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8078:6:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8086:6:3","type":""}],"src":"8002:490:3"},{"body":{"nodeType":"YulBlock","src":"8798:697:3","statements":[{"nodeType":"YulAssignment","src":"8808:27:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8820:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"8831:3:3","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8816:3:3"},"nodeType":"YulFunctionCall","src":"8816:19:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8808:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8856:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"8867:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8852:3:3"},"nodeType":"YulFunctionCall","src":"8852:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8875:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"8881:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8871:3:3"},"nodeType":"YulFunctionCall","src":"8871:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8845:6:3"},"nodeType":"YulFunctionCall","src":"8845:47:3"},"nodeType":"YulExpressionStatement","src":"8845:47:3"},{"nodeType":"YulAssignment","src":"8901:86:3","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8973:6:3"},{"name":"tail","nodeType":"YulIdentifier","src":"8982:4:3"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8909:63:3"},"nodeType":"YulFunctionCall","src":"8909:78:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8901:4:3"}]},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9041:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9054:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"9065:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9050:3:3"},"nodeType":"YulFunctionCall","src":"9050:18:3"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"8997:43:3"},"nodeType":"YulFunctionCall","src":"8997:72:3"},"nodeType":"YulExpressionStatement","src":"8997:72:3"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9090:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"9101:2:3","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9086:3:3"},"nodeType":"YulFunctionCall","src":"9086:18:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"9110:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"9116:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9106:3:3"},"nodeType":"YulFunctionCall","src":"9106:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9079:6:3"},"nodeType":"YulFunctionCall","src":"9079:48:3"},"nodeType":"YulExpressionStatement","src":"9079:48:3"},{"nodeType":"YulAssignment","src":"9136:86:3","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9208:6:3"},{"name":"tail","nodeType":"YulIdentifier","src":"9217:4:3"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9144:63:3"},"nodeType":"YulFunctionCall","src":"9144:78:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9136:4:3"}]},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"9276:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9289:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"9300:2:3","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9285:3:3"},"nodeType":"YulFunctionCall","src":"9285:18:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"9232:43:3"},"nodeType":"YulFunctionCall","src":"9232:72:3"},"nodeType":"YulExpressionStatement","src":"9232:72:3"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9325:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"9336:3:3","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9321:3:3"},"nodeType":"YulFunctionCall","src":"9321:19:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"9346:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"9352:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9342:3:3"},"nodeType":"YulFunctionCall","src":"9342:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9314:6:3"},"nodeType":"YulFunctionCall","src":"9314:49:3"},"nodeType":"YulExpressionStatement","src":"9314:49:3"},{"nodeType":"YulAssignment","src":"9372:116:3","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"9474:6:3"},{"name":"tail","nodeType":"YulIdentifier","src":"9483:4:3"}],"functionName":{"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9380:93:3"},"nodeType":"YulFunctionCall","src":"9380:108:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9372:4:3"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address_t_array$_t_address_$dyn_memory_ptr__to_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8738:9:3","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8750:6:3","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8758:6:3","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8766:6:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8774:6:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8782:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8793:4:3","type":""}],"src":"8498:997:3"},{"body":{"nodeType":"YulBlock","src":"9590:28:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9607:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9610:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9600:6:3"},"nodeType":"YulFunctionCall","src":"9600:12:3"},"nodeType":"YulExpressionStatement","src":"9600:12:3"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"9501:117:3"},{"body":{"nodeType":"YulBlock","src":"9713:28:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9730:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9733:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9723:6:3"},"nodeType":"YulFunctionCall","src":"9723:12:3"},"nodeType":"YulExpressionStatement","src":"9723:12:3"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"9624:117:3"},{"body":{"nodeType":"YulBlock","src":"9836:28:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9853:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9856:1:3","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9846:6:3"},"nodeType":"YulFunctionCall","src":"9846:12:3"},"nodeType":"YulExpressionStatement","src":"9846:12:3"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"9747:117:3"},{"body":{"nodeType":"YulBlock","src":"9959:478:3","statements":[{"body":{"nodeType":"YulBlock","src":"10008:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"10010:77:3"},"nodeType":"YulFunctionCall","src":"10010:79:3"},"nodeType":"YulExpressionStatement","src":"10010:79:3"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9987:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"9995:4:3","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9983:3:3"},"nodeType":"YulFunctionCall","src":"9983:17:3"},{"name":"end","nodeType":"YulIdentifier","src":"10002:3:3"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9979:3:3"},"nodeType":"YulFunctionCall","src":"9979:27:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9972:6:3"},"nodeType":"YulFunctionCall","src":"9972:35:3"},"nodeType":"YulIf","src":"9969:122:3"},{"nodeType":"YulAssignment","src":"10100:30:3","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10123:6:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10110:12:3"},"nodeType":"YulFunctionCall","src":"10110:20:3"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10100:6:3"}]},{"body":{"nodeType":"YulBlock","src":"10173:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"10175:77:3"},"nodeType":"YulFunctionCall","src":"10175:79:3"},"nodeType":"YulExpressionStatement","src":"10175:79:3"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10145:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"10153:18:3","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10142:2:3"},"nodeType":"YulFunctionCall","src":"10142:30:3"},"nodeType":"YulIf","src":"10139:117:3"},{"nodeType":"YulAssignment","src":"10265:29:3","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10281:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"10289:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10277:3:3"},"nodeType":"YulFunctionCall","src":"10277:17:3"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"10265:8:3"}]},{"body":{"nodeType":"YulBlock","src":"10348:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"10350:77:3"},"nodeType":"YulFunctionCall","src":"10350:79:3"},"nodeType":"YulExpressionStatement","src":"10350:79:3"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"10313:8:3"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10327:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"10335:4:3","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10323:3:3"},"nodeType":"YulFunctionCall","src":"10323:17:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10309:3:3"},"nodeType":"YulFunctionCall","src":"10309:32:3"},{"name":"end","nodeType":"YulIdentifier","src":"10343:3:3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10306:2:3"},"nodeType":"YulFunctionCall","src":"10306:41:3"},"nodeType":"YulIf","src":"10303:128:3"}]},"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9926:6:3","type":""},{"name":"end","nodeType":"YulTypedName","src":"9934:3:3","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"9942:8:3","type":""},{"name":"length","nodeType":"YulTypedName","src":"9952:6:3","type":""}],"src":"9884:553:3"},{"body":{"nodeType":"YulBlock","src":"10583:879:3","statements":[{"body":{"nodeType":"YulBlock","src":"10629:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10631:77:3"},"nodeType":"YulFunctionCall","src":"10631:79:3"},"nodeType":"YulExpressionStatement","src":"10631:79:3"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10604:7:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"10613:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10600:3:3"},"nodeType":"YulFunctionCall","src":"10600:23:3"},{"kind":"number","nodeType":"YulLiteral","src":"10625:2:3","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10596:3:3"},"nodeType":"YulFunctionCall","src":"10596:32:3"},"nodeType":"YulIf","src":"10593:119:3"},{"nodeType":"YulBlock","src":"10722:297:3","statements":[{"nodeType":"YulVariableDeclaration","src":"10737:45:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10768:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"10779:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10764:3:3"},"nodeType":"YulFunctionCall","src":"10764:17:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10751:12:3"},"nodeType":"YulFunctionCall","src":"10751:31:3"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10741:6:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"10829:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"10831:77:3"},"nodeType":"YulFunctionCall","src":"10831:79:3"},"nodeType":"YulExpressionStatement","src":"10831:79:3"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10801:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"10809:18:3","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10798:2:3"},"nodeType":"YulFunctionCall","src":"10798:30:3"},"nodeType":"YulIf","src":"10795:117:3"},{"nodeType":"YulAssignment","src":"10926:83:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10981:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"10992:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10977:3:3"},"nodeType":"YulFunctionCall","src":"10977:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11001:7:3"}],"functionName":{"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulIdentifier","src":"10944:32:3"},"nodeType":"YulFunctionCall","src":"10944:65:3"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10926:6:3"},{"name":"value1","nodeType":"YulIdentifier","src":"10934:6:3"}]}]},{"nodeType":"YulBlock","src":"11029:118:3","statements":[{"nodeType":"YulVariableDeclaration","src":"11044:16:3","value":{"kind":"number","nodeType":"YulLiteral","src":"11058:2:3","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11048:6:3","type":""}]},{"nodeType":"YulAssignment","src":"11074:63:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11109:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"11120:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11105:3:3"},"nodeType":"YulFunctionCall","src":"11105:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11129:7:3"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"11084:20:3"},"nodeType":"YulFunctionCall","src":"11084:53:3"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"11074:6:3"}]}]},{"nodeType":"YulBlock","src":"11157:298:3","statements":[{"nodeType":"YulVariableDeclaration","src":"11172:46:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11203:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"11214:2:3","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11199:3:3"},"nodeType":"YulFunctionCall","src":"11199:18:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11186:12:3"},"nodeType":"YulFunctionCall","src":"11186:32:3"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11176:6:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"11265:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"11267:77:3"},"nodeType":"YulFunctionCall","src":"11267:79:3"},"nodeType":"YulExpressionStatement","src":"11267:79:3"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11237:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"11245:18:3","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11234:2:3"},"nodeType":"YulFunctionCall","src":"11234:30:3"},"nodeType":"YulIf","src":"11231:117:3"},{"nodeType":"YulAssignment","src":"11362:83:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11417:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"11428:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11413:3:3"},"nodeType":"YulFunctionCall","src":"11413:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11437:7:3"}],"functionName":{"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulIdentifier","src":"11380:32:3"},"nodeType":"YulFunctionCall","src":"11380:65:3"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"11362:6:3"},{"name":"value4","nodeType":"YulIdentifier","src":"11370:6:3"}]}]}]},"name":"abi_decode_tuple_t_string_calldata_ptrt_uint256t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10521:9:3","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10532:7:3","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10544:6:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10552:6:3","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10560:6:3","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10568:6:3","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10576:6:3","type":""}],"src":"10443:1019:3"},{"body":{"nodeType":"YulBlock","src":"11551:391:3","statements":[{"body":{"nodeType":"YulBlock","src":"11597:83:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"11599:77:3"},"nodeType":"YulFunctionCall","src":"11599:79:3"},"nodeType":"YulExpressionStatement","src":"11599:79:3"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11572:7:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"11581:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11568:3:3"},"nodeType":"YulFunctionCall","src":"11568:23:3"},{"kind":"number","nodeType":"YulLiteral","src":"11593:2:3","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11564:3:3"},"nodeType":"YulFunctionCall","src":"11564:32:3"},"nodeType":"YulIf","src":"11561:119:3"},{"nodeType":"YulBlock","src":"11690:117:3","statements":[{"nodeType":"YulVariableDeclaration","src":"11705:15:3","value":{"kind":"number","nodeType":"YulLiteral","src":"11719:1:3","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11709:6:3","type":""}]},{"nodeType":"YulAssignment","src":"11734:63:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11769:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"11780:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11765:3:3"},"nodeType":"YulFunctionCall","src":"11765:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11789:7:3"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"11744:20:3"},"nodeType":"YulFunctionCall","src":"11744:53:3"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11734:6:3"}]}]},{"nodeType":"YulBlock","src":"11817:118:3","statements":[{"nodeType":"YulVariableDeclaration","src":"11832:16:3","value":{"kind":"number","nodeType":"YulLiteral","src":"11846:2:3","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11836:6:3","type":""}]},{"nodeType":"YulAssignment","src":"11862:63:3","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11897:9:3"},{"name":"offset","nodeType":"YulIdentifier","src":"11908:6:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11893:3:3"},"nodeType":"YulFunctionCall","src":"11893:22:3"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11917:7:3"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"11872:20:3"},"nodeType":"YulFunctionCall","src":"11872:53:3"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"11862:6:3"}]}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11513:9:3","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11524:7:3","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11536:6:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11544:6:3","type":""}],"src":"11468:474:3"},{"body":{"nodeType":"YulBlock","src":"12054:116:3","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12076:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"12084:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12072:3:3"},"nodeType":"YulFunctionCall","src":"12072:14:3"},{"hexValue":"4173736574204944206d7573742062652077697468696e2076616c6964207261","kind":"string","nodeType":"YulLiteral","src":"12088:34:3","type":"","value":"Asset ID must be within valid ra"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12065:6:3"},"nodeType":"YulFunctionCall","src":"12065:58:3"},"nodeType":"YulExpressionStatement","src":"12065:58:3"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12144:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"12152:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12140:3:3"},"nodeType":"YulFunctionCall","src":"12140:15:3"},{"hexValue":"6e6765","kind":"string","nodeType":"YulLiteral","src":"12157:5:3","type":"","value":"nge"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12133:6:3"},"nodeType":"YulFunctionCall","src":"12133:30:3"},"nodeType":"YulExpressionStatement","src":"12133:30:3"}]},"name":"store_literal_in_memory_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12046:6:3","type":""}],"src":"11948:222:3"},{"body":{"nodeType":"YulBlock","src":"12322:220:3","statements":[{"nodeType":"YulAssignment","src":"12332:74:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12398:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"12403:2:3","type":"","value":"35"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12339:58:3"},"nodeType":"YulFunctionCall","src":"12339:67:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12332:3:3"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12504:3:3"}],"functionName":{"name":"store_literal_in_memory_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403","nodeType":"YulIdentifier","src":"12415:88:3"},"nodeType":"YulFunctionCall","src":"12415:93:3"},"nodeType":"YulExpressionStatement","src":"12415:93:3"},{"nodeType":"YulAssignment","src":"12517:19:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12528:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"12533:2:3","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12524:3:3"},"nodeType":"YulFunctionCall","src":"12524:12:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12517:3:3"}]}]},"name":"abi_encode_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12310:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12318:3:3","type":""}],"src":"12176:366:3"},{"body":{"nodeType":"YulBlock","src":"12719:248:3","statements":[{"nodeType":"YulAssignment","src":"12729:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12741:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"12752:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12737:3:3"},"nodeType":"YulFunctionCall","src":"12737:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12729:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12776:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"12787:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12772:3:3"},"nodeType":"YulFunctionCall","src":"12772:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12795:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"12801:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12791:3:3"},"nodeType":"YulFunctionCall","src":"12791:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12765:6:3"},"nodeType":"YulFunctionCall","src":"12765:47:3"},"nodeType":"YulExpressionStatement","src":"12765:47:3"},{"nodeType":"YulAssignment","src":"12821:139:3","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12955:4:3"}],"functionName":{"name":"abi_encode_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12829:124:3"},"nodeType":"YulFunctionCall","src":"12829:131:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12821:4:3"}]}]},"name":"abi_encode_tuple_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12699:9:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12714:4:3","type":""}],"src":"12548:419:3"},{"body":{"nodeType":"YulBlock","src":"13001:152:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13018:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13021:77:3","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13011:6:3"},"nodeType":"YulFunctionCall","src":"13011:88:3"},"nodeType":"YulExpressionStatement","src":"13011:88:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13115:1:3","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"13118:4:3","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13108:6:3"},"nodeType":"YulFunctionCall","src":"13108:15:3"},"nodeType":"YulExpressionStatement","src":"13108:15:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13139:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13142:4:3","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13132:6:3"},"nodeType":"YulFunctionCall","src":"13132:15:3"},"nodeType":"YulExpressionStatement","src":"13132:15:3"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"12973:180:3"},{"body":{"nodeType":"YulBlock","src":"13204:149:3","statements":[{"nodeType":"YulAssignment","src":"13214:25:3","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"13237:1:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13219:17:3"},"nodeType":"YulFunctionCall","src":"13219:20:3"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"13214:1:3"}]},{"nodeType":"YulAssignment","src":"13248:25:3","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"13271:1:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13253:17:3"},"nodeType":"YulFunctionCall","src":"13253:20:3"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"13248:1:3"}]},{"nodeType":"YulAssignment","src":"13282:17:3","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"13294:1:3"},{"name":"y","nodeType":"YulIdentifier","src":"13297:1:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13290:3:3"},"nodeType":"YulFunctionCall","src":"13290:9:3"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"13282:4:3"}]},{"body":{"nodeType":"YulBlock","src":"13324:22:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"13326:16:3"},"nodeType":"YulFunctionCall","src":"13326:18:3"},"nodeType":"YulExpressionStatement","src":"13326:18:3"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"13315:4:3"},{"name":"x","nodeType":"YulIdentifier","src":"13321:1:3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13312:2:3"},"nodeType":"YulFunctionCall","src":"13312:11:3"},"nodeType":"YulIf","src":"13309:37:3"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"13190:1:3","type":""},{"name":"y","nodeType":"YulTypedName","src":"13193:1:3","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"13199:4:3","type":""}],"src":"13159:194:3"},{"body":{"nodeType":"YulBlock","src":"13387:152:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13404:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13407:77:3","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13397:6:3"},"nodeType":"YulFunctionCall","src":"13397:88:3"},"nodeType":"YulExpressionStatement","src":"13397:88:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13501:1:3","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"13504:4:3","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13494:6:3"},"nodeType":"YulFunctionCall","src":"13494:15:3"},"nodeType":"YulExpressionStatement","src":"13494:15:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13525:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13528:4:3","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13518:6:3"},"nodeType":"YulFunctionCall","src":"13518:15:3"},"nodeType":"YulExpressionStatement","src":"13518:15:3"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"13359:180:3"},{"body":{"nodeType":"YulBlock","src":"13596:269:3","statements":[{"nodeType":"YulAssignment","src":"13606:22:3","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"13620:4:3"},{"kind":"number","nodeType":"YulLiteral","src":"13626:1:3","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"13616:3:3"},"nodeType":"YulFunctionCall","src":"13616:12:3"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"13606:6:3"}]},{"nodeType":"YulVariableDeclaration","src":"13637:38:3","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"13667:4:3"},{"kind":"number","nodeType":"YulLiteral","src":"13673:1:3","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13663:3:3"},"nodeType":"YulFunctionCall","src":"13663:12:3"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"13641:18:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"13714:51:3","statements":[{"nodeType":"YulAssignment","src":"13728:27:3","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13742:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"13750:4:3","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13738:3:3"},"nodeType":"YulFunctionCall","src":"13738:17:3"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"13728:6:3"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"13694:18:3"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13687:6:3"},"nodeType":"YulFunctionCall","src":"13687:26:3"},"nodeType":"YulIf","src":"13684:81:3"},{"body":{"nodeType":"YulBlock","src":"13817:42:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"13831:16:3"},"nodeType":"YulFunctionCall","src":"13831:18:3"},"nodeType":"YulExpressionStatement","src":"13831:18:3"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"13781:18:3"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13804:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"13812:2:3","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13801:2:3"},"nodeType":"YulFunctionCall","src":"13801:14:3"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"13778:2:3"},"nodeType":"YulFunctionCall","src":"13778:38:3"},"nodeType":"YulIf","src":"13775:84:3"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"13580:4:3","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"13589:6:3","type":""}],"src":"13545:320:3"},{"body":{"nodeType":"YulBlock","src":"14003:212:3","statements":[{"nodeType":"YulAssignment","src":"14013:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14025:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"14036:2:3","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14021:3:3"},"nodeType":"YulFunctionCall","src":"14021:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14013:4:3"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14093:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14106:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"14117:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14102:3:3"},"nodeType":"YulFunctionCall","src":"14102:17:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"14049:43:3"},"nodeType":"YulFunctionCall","src":"14049:71:3"},"nodeType":"YulExpressionStatement","src":"14049:71:3"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14180:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14193:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"14204:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14189:3:3"},"nodeType":"YulFunctionCall","src":"14189:18:3"}],"functionName":{"name":"abi_encode_t_enum$_Role_$184_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"14130:49:3"},"nodeType":"YulFunctionCall","src":"14130:78:3"},"nodeType":"YulExpressionStatement","src":"14130:78:3"}]},"name":"abi_encode_tuple_t_address_t_enum$_Role_$184__to_t_address_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13967:9:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13979:6:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13987:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13998:4:3","type":""}],"src":"13871:344:3"},{"body":{"nodeType":"YulBlock","src":"14327:61:3","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14349:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"14357:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14345:3:3"},"nodeType":"YulFunctionCall","src":"14345:14:3"},{"hexValue":"4163746f72206e6f7420656e61626c6564","kind":"string","nodeType":"YulLiteral","src":"14361:19:3","type":"","value":"Actor not enabled"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14338:6:3"},"nodeType":"YulFunctionCall","src":"14338:43:3"},"nodeType":"YulExpressionStatement","src":"14338:43:3"}]},"name":"store_literal_in_memory_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14319:6:3","type":""}],"src":"14221:167:3"},{"body":{"nodeType":"YulBlock","src":"14540:220:3","statements":[{"nodeType":"YulAssignment","src":"14550:74:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14616:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"14621:2:3","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14557:58:3"},"nodeType":"YulFunctionCall","src":"14557:67:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14550:3:3"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14722:3:3"}],"functionName":{"name":"store_literal_in_memory_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e","nodeType":"YulIdentifier","src":"14633:88:3"},"nodeType":"YulFunctionCall","src":"14633:93:3"},"nodeType":"YulExpressionStatement","src":"14633:93:3"},{"nodeType":"YulAssignment","src":"14735:19:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14746:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"14751:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14742:3:3"},"nodeType":"YulFunctionCall","src":"14742:12:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14735:3:3"}]}]},"name":"abi_encode_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14528:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14536:3:3","type":""}],"src":"14394:366:3"},{"body":{"nodeType":"YulBlock","src":"14937:248:3","statements":[{"nodeType":"YulAssignment","src":"14947:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14959:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"14970:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14955:3:3"},"nodeType":"YulFunctionCall","src":"14955:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14947:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14994:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"15005:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14990:3:3"},"nodeType":"YulFunctionCall","src":"14990:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15013:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"15019:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15009:3:3"},"nodeType":"YulFunctionCall","src":"15009:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14983:6:3"},"nodeType":"YulFunctionCall","src":"14983:47:3"},"nodeType":"YulExpressionStatement","src":"14983:47:3"},{"nodeType":"YulAssignment","src":"15039:139:3","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15173:4:3"}],"functionName":{"name":"abi_encode_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15047:124:3"},"nodeType":"YulFunctionCall","src":"15047:131:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15039:4:3"}]}]},"name":"abi_encode_tuple_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14917:9:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14932:4:3","type":""}],"src":"14766:419:3"},{"body":{"nodeType":"YulBlock","src":"15297:73:3","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15319:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"15327:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15315:3:3"},"nodeType":"YulFunctionCall","src":"15315:14:3"},{"hexValue":"4163746f72277320726f6c65206d7573742062652050726f6475636572","kind":"string","nodeType":"YulLiteral","src":"15331:31:3","type":"","value":"Actor's role must be Producer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15308:6:3"},"nodeType":"YulFunctionCall","src":"15308:55:3"},"nodeType":"YulExpressionStatement","src":"15308:55:3"}]},"name":"store_literal_in_memory_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15289:6:3","type":""}],"src":"15191:179:3"},{"body":{"nodeType":"YulBlock","src":"15522:220:3","statements":[{"nodeType":"YulAssignment","src":"15532:74:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15598:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"15603:2:3","type":"","value":"29"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15539:58:3"},"nodeType":"YulFunctionCall","src":"15539:67:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15532:3:3"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15704:3:3"}],"functionName":{"name":"store_literal_in_memory_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071","nodeType":"YulIdentifier","src":"15615:88:3"},"nodeType":"YulFunctionCall","src":"15615:93:3"},"nodeType":"YulExpressionStatement","src":"15615:93:3"},{"nodeType":"YulAssignment","src":"15717:19:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15728:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"15733:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15724:3:3"},"nodeType":"YulFunctionCall","src":"15724:12:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15717:3:3"}]}]},"name":"abi_encode_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15510:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15518:3:3","type":""}],"src":"15376:366:3"},{"body":{"nodeType":"YulBlock","src":"15919:248:3","statements":[{"nodeType":"YulAssignment","src":"15929:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15941:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"15952:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15937:3:3"},"nodeType":"YulFunctionCall","src":"15937:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15929:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15976:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"15987:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15972:3:3"},"nodeType":"YulFunctionCall","src":"15972:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15995:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"16001:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15991:3:3"},"nodeType":"YulFunctionCall","src":"15991:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15965:6:3"},"nodeType":"YulFunctionCall","src":"15965:47:3"},"nodeType":"YulExpressionStatement","src":"15965:47:3"},{"nodeType":"YulAssignment","src":"16021:139:3","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16155:4:3"}],"functionName":{"name":"abi_encode_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16029:124:3"},"nodeType":"YulFunctionCall","src":"16029:131:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16021:4:3"}]}]},"name":"abi_encode_tuple_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15899:9:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15914:4:3","type":""}],"src":"15748:419:3"},{"body":{"nodeType":"YulBlock","src":"16239:31:3","statements":[{"nodeType":"YulAssignment","src":"16250:13:3","value":{"name":"len","nodeType":"YulIdentifier","src":"16260:3:3"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"16250:6:3"}]}]},"name":"array_length_t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16217:5:3","type":""},{"name":"len","nodeType":"YulTypedName","src":"16224:3:3","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"16232:6:3","type":""}],"src":"16173:97:3"},{"body":{"nodeType":"YulBlock","src":"16304:152:3","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16321:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16324:77:3","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16314:6:3"},"nodeType":"YulFunctionCall","src":"16314:88:3"},"nodeType":"YulExpressionStatement","src":"16314:88:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16418:1:3","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"16421:4:3","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16411:6:3"},"nodeType":"YulFunctionCall","src":"16411:15:3"},"nodeType":"YulExpressionStatement","src":"16411:15:3"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16442:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16445:4:3","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16435:6:3"},"nodeType":"YulFunctionCall","src":"16435:15:3"},"nodeType":"YulExpressionStatement","src":"16435:15:3"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"16276:180:3"},{"body":{"nodeType":"YulBlock","src":"16516:87:3","statements":[{"nodeType":"YulAssignment","src":"16526:11:3","value":{"name":"ptr","nodeType":"YulIdentifier","src":"16534:3:3"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"16526:4:3"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16554:1:3","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"16557:3:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16547:6:3"},"nodeType":"YulFunctionCall","src":"16547:14:3"},"nodeType":"YulExpressionStatement","src":"16547:14:3"},{"nodeType":"YulAssignment","src":"16570:26:3","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16588:1:3","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16591:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"16578:9:3"},"nodeType":"YulFunctionCall","src":"16578:18:3"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"16570:4:3"}]}]},"name":"array_dataslot_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16503:3:3","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"16511:4:3","type":""}],"src":"16462:141:3"},{"body":{"nodeType":"YulBlock","src":"16653:49:3","statements":[{"nodeType":"YulAssignment","src":"16663:33:3","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16681:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"16688:2:3","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16677:3:3"},"nodeType":"YulFunctionCall","src":"16677:14:3"},{"kind":"number","nodeType":"YulLiteral","src":"16693:2:3","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"16673:3:3"},"nodeType":"YulFunctionCall","src":"16673:23:3"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"16663:6:3"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16636:5:3","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"16646:6:3","type":""}],"src":"16609:93:3"},{"body":{"nodeType":"YulBlock","src":"16761:54:3","statements":[{"nodeType":"YulAssignment","src":"16771:37:3","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"16796:4:3"},{"name":"value","nodeType":"YulIdentifier","src":"16802:5:3"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16792:3:3"},"nodeType":"YulFunctionCall","src":"16792:16:3"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"16771:8:3"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"16736:4:3","type":""},{"name":"value","nodeType":"YulTypedName","src":"16742:5:3","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"16752:8:3","type":""}],"src":"16708:107:3"},{"body":{"nodeType":"YulBlock","src":"16897:317:3","statements":[{"nodeType":"YulVariableDeclaration","src":"16907:35:3","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"16928:10:3"},{"kind":"number","nodeType":"YulLiteral","src":"16940:1:3","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16924:3:3"},"nodeType":"YulFunctionCall","src":"16924:18:3"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"16911:9:3","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16951:109:3","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"16982:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"16993:66:3","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"16963:18:3"},"nodeType":"YulFunctionCall","src":"16963:97:3"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"16955:4:3","type":""}]},{"nodeType":"YulAssignment","src":"17069:51:3","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"17100:9:3"},{"name":"toInsert","nodeType":"YulIdentifier","src":"17111:8:3"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"17081:18:3"},"nodeType":"YulFunctionCall","src":"17081:39:3"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"17069:8:3"}]},{"nodeType":"YulAssignment","src":"17129:30:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17142:5:3"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"17153:4:3"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"17149:3:3"},"nodeType":"YulFunctionCall","src":"17149:9:3"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17138:3:3"},"nodeType":"YulFunctionCall","src":"17138:21:3"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17129:5:3"}]},{"nodeType":"YulAssignment","src":"17168:40:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17181:5:3"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"17192:8:3"},{"name":"mask","nodeType":"YulIdentifier","src":"17202:4:3"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17188:3:3"},"nodeType":"YulFunctionCall","src":"17188:19:3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"17178:2:3"},"nodeType":"YulFunctionCall","src":"17178:30:3"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"17168:6:3"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16858:5:3","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"16865:10:3","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"16877:8:3","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"16890:6:3","type":""}],"src":"16821:393:3"},{"body":{"nodeType":"YulBlock","src":"17252:28:3","statements":[{"nodeType":"YulAssignment","src":"17262:12:3","value":{"name":"value","nodeType":"YulIdentifier","src":"17269:5:3"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"17262:3:3"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17238:5:3","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"17248:3:3","type":""}],"src":"17220:60:3"},{"body":{"nodeType":"YulBlock","src":"17346:82:3","statements":[{"nodeType":"YulAssignment","src":"17356:66:3","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17414:5:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17396:17:3"},"nodeType":"YulFunctionCall","src":"17396:24:3"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"17387:8:3"},"nodeType":"YulFunctionCall","src":"17387:34:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17369:17:3"},"nodeType":"YulFunctionCall","src":"17369:53:3"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"17356:9:3"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17326:5:3","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"17336:9:3","type":""}],"src":"17286:142:3"},{"body":{"nodeType":"YulBlock","src":"17481:28:3","statements":[{"nodeType":"YulAssignment","src":"17491:12:3","value":{"name":"value","nodeType":"YulIdentifier","src":"17498:5:3"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"17491:3:3"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17467:5:3","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"17477:3:3","type":""}],"src":"17434:75:3"},{"body":{"nodeType":"YulBlock","src":"17591:193:3","statements":[{"nodeType":"YulVariableDeclaration","src":"17601:63:3","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"17656:7:3"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"17625:30:3"},"nodeType":"YulFunctionCall","src":"17625:39:3"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"17605:16:3","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"17680:4:3"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"17720:4:3"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"17714:5:3"},"nodeType":"YulFunctionCall","src":"17714:11:3"},{"name":"offset","nodeType":"YulIdentifier","src":"17727:6:3"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"17759:16:3"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"17735:23:3"},"nodeType":"YulFunctionCall","src":"17735:41:3"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"17686:27:3"},"nodeType":"YulFunctionCall","src":"17686:91:3"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"17673:6:3"},"nodeType":"YulFunctionCall","src":"17673:105:3"},"nodeType":"YulExpressionStatement","src":"17673:105:3"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"17568:4:3","type":""},{"name":"offset","nodeType":"YulTypedName","src":"17574:6:3","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"17582:7:3","type":""}],"src":"17515:269:3"},{"body":{"nodeType":"YulBlock","src":"17839:24:3","statements":[{"nodeType":"YulAssignment","src":"17849:8:3","value":{"kind":"number","nodeType":"YulLiteral","src":"17856:1:3","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"17849:3:3"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"17835:3:3","type":""}],"src":"17790:73:3"},{"body":{"nodeType":"YulBlock","src":"17922:136:3","statements":[{"nodeType":"YulVariableDeclaration","src":"17932:46:3","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"17946:30:3"},"nodeType":"YulFunctionCall","src":"17946:32:3"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"17936:6:3","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"18031:4:3"},{"name":"offset","nodeType":"YulIdentifier","src":"18037:6:3"},{"name":"zero_0","nodeType":"YulIdentifier","src":"18045:6:3"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"17987:43:3"},"nodeType":"YulFunctionCall","src":"17987:65:3"},"nodeType":"YulExpressionStatement","src":"17987:65:3"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"17908:4:3","type":""},{"name":"offset","nodeType":"YulTypedName","src":"17914:6:3","type":""}],"src":"17869:189:3"},{"body":{"nodeType":"YulBlock","src":"18114:136:3","statements":[{"body":{"nodeType":"YulBlock","src":"18181:63:3","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"18225:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"18232:1:3","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"18195:29:3"},"nodeType":"YulFunctionCall","src":"18195:39:3"},"nodeType":"YulExpressionStatement","src":"18195:39:3"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"18134:5:3"},{"name":"end","nodeType":"YulIdentifier","src":"18141:3:3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18131:2:3"},"nodeType":"YulFunctionCall","src":"18131:14:3"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"18146:26:3","statements":[{"nodeType":"YulAssignment","src":"18148:22:3","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"18161:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"18168:1:3","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18157:3:3"},"nodeType":"YulFunctionCall","src":"18157:13:3"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"18148:5:3"}]}]},"pre":{"nodeType":"YulBlock","src":"18128:2:3","statements":[]},"src":"18124:120:3"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"18102:5:3","type":""},{"name":"end","nodeType":"YulTypedName","src":"18109:3:3","type":""}],"src":"18064:186:3"},{"body":{"nodeType":"YulBlock","src":"18335:464:3","statements":[{"body":{"nodeType":"YulBlock","src":"18361:431:3","statements":[{"nodeType":"YulVariableDeclaration","src":"18375:54:3","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"18423:5:3"}],"functionName":{"name":"array_dataslot_t_string_storage","nodeType":"YulIdentifier","src":"18391:31:3"},"nodeType":"YulFunctionCall","src":"18391:38:3"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"18379:8:3","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18442:63:3","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"18465:8:3"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"18493:10:3"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"18475:17:3"},"nodeType":"YulFunctionCall","src":"18475:29:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18461:3:3"},"nodeType":"YulFunctionCall","src":"18461:44:3"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"18446:11:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"18662:27:3","statements":[{"nodeType":"YulAssignment","src":"18664:23:3","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"18679:8:3"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"18664:11:3"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"18646:10:3"},{"kind":"number","nodeType":"YulLiteral","src":"18658:2:3","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18643:2:3"},"nodeType":"YulFunctionCall","src":"18643:18:3"},"nodeType":"YulIf","src":"18640:49:3"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"18731:11:3"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"18748:8:3"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"18776:3:3"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"18758:17:3"},"nodeType":"YulFunctionCall","src":"18758:22:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18744:3:3"},"nodeType":"YulFunctionCall","src":"18744:37:3"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"18702:28:3"},"nodeType":"YulFunctionCall","src":"18702:80:3"},"nodeType":"YulExpressionStatement","src":"18702:80:3"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"18352:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"18357:2:3","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18349:2:3"},"nodeType":"YulFunctionCall","src":"18349:11:3"},"nodeType":"YulIf","src":"18346:446:3"}]},"name":"clean_up_bytearray_end_slots_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"18311:5:3","type":""},{"name":"len","nodeType":"YulTypedName","src":"18318:3:3","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"18323:10:3","type":""}],"src":"18256:543:3"},{"body":{"nodeType":"YulBlock","src":"18868:54:3","statements":[{"nodeType":"YulAssignment","src":"18878:37:3","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"18903:4:3"},{"name":"value","nodeType":"YulIdentifier","src":"18909:5:3"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"18899:3:3"},"nodeType":"YulFunctionCall","src":"18899:16:3"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"18878:8:3"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"18843:4:3","type":""},{"name":"value","nodeType":"YulTypedName","src":"18849:5:3","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"18859:8:3","type":""}],"src":"18805:117:3"},{"body":{"nodeType":"YulBlock","src":"18979:118:3","statements":[{"nodeType":"YulVariableDeclaration","src":"18989:68:3","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19038:1:3","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"19041:5:3"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"19034:3:3"},"nodeType":"YulFunctionCall","src":"19034:13:3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19053:1:3","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"19049:3:3"},"nodeType":"YulFunctionCall","src":"19049:6:3"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"19005:28:3"},"nodeType":"YulFunctionCall","src":"19005:51:3"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"19001:3:3"},"nodeType":"YulFunctionCall","src":"19001:56:3"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"18993:4:3","type":""}]},{"nodeType":"YulAssignment","src":"19066:25:3","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"19080:4:3"},{"name":"mask","nodeType":"YulIdentifier","src":"19086:4:3"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19076:3:3"},"nodeType":"YulFunctionCall","src":"19076:15:3"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"19066:6:3"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"18956:4:3","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"18962:5:3","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"18972:6:3","type":""}],"src":"18928:169:3"},{"body":{"nodeType":"YulBlock","src":"19183:214:3","statements":[{"nodeType":"YulAssignment","src":"19316:37:3","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"19343:4:3"},{"name":"len","nodeType":"YulIdentifier","src":"19349:3:3"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"19324:18:3"},"nodeType":"YulFunctionCall","src":"19324:29:3"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"19316:4:3"}]},{"nodeType":"YulAssignment","src":"19362:29:3","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"19373:4:3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19383:1:3","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"19386:3:3"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"19379:3:3"},"nodeType":"YulFunctionCall","src":"19379:11:3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"19370:2:3"},"nodeType":"YulFunctionCall","src":"19370:21:3"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"19362:4:3"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"19164:4:3","type":""},{"name":"len","nodeType":"YulTypedName","src":"19170:3:3","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"19178:4:3","type":""}],"src":"19102:295:3"},{"body":{"nodeType":"YulBlock","src":"19501:1304:3","statements":[{"nodeType":"YulVariableDeclaration","src":"19512:58:3","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"19561:3:3"},{"name":"len","nodeType":"YulIdentifier","src":"19566:3:3"}],"functionName":{"name":"array_length_t_string_calldata_ptr","nodeType":"YulIdentifier","src":"19526:34:3"},"nodeType":"YulFunctionCall","src":"19526:44:3"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"19516:6:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"19655:22:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"19657:16:3"},"nodeType":"YulFunctionCall","src":"19657:18:3"},"nodeType":"YulExpressionStatement","src":"19657:18:3"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"19627:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"19635:18:3","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"19624:2:3"},"nodeType":"YulFunctionCall","src":"19624:30:3"},"nodeType":"YulIf","src":"19621:56:3"},{"nodeType":"YulVariableDeclaration","src":"19687:52:3","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"19733:4:3"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"19727:5:3"},"nodeType":"YulFunctionCall","src":"19727:11:3"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"19701:25:3"},"nodeType":"YulFunctionCall","src":"19701:38:3"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"19691:6:3","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"19832:4:3"},{"name":"oldLen","nodeType":"YulIdentifier","src":"19838:6:3"},{"name":"newLen","nodeType":"YulIdentifier","src":"19846:6:3"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_string_storage","nodeType":"YulIdentifier","src":"19786:45:3"},"nodeType":"YulFunctionCall","src":"19786:67:3"},"nodeType":"YulExpressionStatement","src":"19786:67:3"},{"nodeType":"YulVariableDeclaration","src":"19863:18:3","value":{"kind":"number","nodeType":"YulLiteral","src":"19880:1:3","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"19867:9:3","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"19928:625:3","statements":[{"nodeType":"YulVariableDeclaration","src":"19942:37:3","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"19961:6:3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19973:4:3","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"19969:3:3"},"nodeType":"YulFunctionCall","src":"19969:9:3"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19957:3:3"},"nodeType":"YulFunctionCall","src":"19957:22:3"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"19946:7:3","type":""}]},{"nodeType":"YulVariableDeclaration","src":"19993:51:3","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"20039:4:3"}],"functionName":{"name":"array_dataslot_t_string_storage","nodeType":"YulIdentifier","src":"20007:31:3"},"nodeType":"YulFunctionCall","src":"20007:37:3"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"19997:6:3","type":""}]},{"nodeType":"YulVariableDeclaration","src":"20057:10:3","value":{"kind":"number","nodeType":"YulLiteral","src":"20066:1:3","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"20061:1:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"20125:170:3","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"20150:6:3"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"20175:3:3"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"20180:9:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20171:3:3"},"nodeType":"YulFunctionCall","src":"20171:19:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"20158:12:3"},"nodeType":"YulFunctionCall","src":"20158:33:3"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"20143:6:3"},"nodeType":"YulFunctionCall","src":"20143:49:3"},"nodeType":"YulExpressionStatement","src":"20143:49:3"},{"nodeType":"YulAssignment","src":"20209:24:3","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"20223:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"20231:1:3","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20219:3:3"},"nodeType":"YulFunctionCall","src":"20219:14:3"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"20209:6:3"}]},{"nodeType":"YulAssignment","src":"20250:31:3","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"20267:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"20278:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20263:3:3"},"nodeType":"YulFunctionCall","src":"20263:18:3"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"20250:9:3"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"20091:1:3"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"20094:7:3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"20088:2:3"},"nodeType":"YulFunctionCall","src":"20088:14:3"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"20103:21:3","statements":[{"nodeType":"YulAssignment","src":"20105:17:3","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"20114:1:3"},{"kind":"number","nodeType":"YulLiteral","src":"20117:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20110:3:3"},"nodeType":"YulFunctionCall","src":"20110:12:3"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"20105:1:3"}]}]},"pre":{"nodeType":"YulBlock","src":"20084:3:3","statements":[]},"src":"20080:215:3"},{"body":{"nodeType":"YulBlock","src":"20331:163:3","statements":[{"nodeType":"YulVariableDeclaration","src":"20349:50:3","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"20383:3:3"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"20388:9:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20379:3:3"},"nodeType":"YulFunctionCall","src":"20379:19:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"20366:12:3"},"nodeType":"YulFunctionCall","src":"20366:33:3"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"20353:9:3","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"20423:6:3"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"20450:9:3"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"20465:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"20473:4:3","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20461:3:3"},"nodeType":"YulFunctionCall","src":"20461:17:3"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"20431:18:3"},"nodeType":"YulFunctionCall","src":"20431:48:3"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"20416:6:3"},"nodeType":"YulFunctionCall","src":"20416:64:3"},"nodeType":"YulExpressionStatement","src":"20416:64:3"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"20314:7:3"},{"name":"newLen","nodeType":"YulIdentifier","src":"20323:6:3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"20311:2:3"},"nodeType":"YulFunctionCall","src":"20311:19:3"},"nodeType":"YulIf","src":"20308:186:3"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"20514:4:3"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"20528:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"20536:1:3","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"20524:3:3"},"nodeType":"YulFunctionCall","src":"20524:14:3"},{"kind":"number","nodeType":"YulLiteral","src":"20540:1:3","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20520:3:3"},"nodeType":"YulFunctionCall","src":"20520:22:3"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"20507:6:3"},"nodeType":"YulFunctionCall","src":"20507:36:3"},"nodeType":"YulExpressionStatement","src":"20507:36:3"}]},"nodeType":"YulCase","src":"19921:632:3","value":{"kind":"number","nodeType":"YulLiteral","src":"19926:1:3","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"20570:229:3","statements":[{"nodeType":"YulVariableDeclaration","src":"20584:14:3","value":{"kind":"number","nodeType":"YulLiteral","src":"20597:1:3","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"20588:5:3","type":""}]},{"body":{"nodeType":"YulBlock","src":"20621:74:3","statements":[{"nodeType":"YulAssignment","src":"20639:42:3","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"20665:3:3"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"20670:9:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20661:3:3"},"nodeType":"YulFunctionCall","src":"20661:19:3"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"20648:12:3"},"nodeType":"YulFunctionCall","src":"20648:33:3"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"20639:5:3"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"20614:6:3"},"nodeType":"YulIf","src":"20611:84:3"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"20715:4:3"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20774:5:3"},{"name":"newLen","nodeType":"YulIdentifier","src":"20781:6:3"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"20721:52:3"},"nodeType":"YulFunctionCall","src":"20721:67:3"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"20708:6:3"},"nodeType":"YulFunctionCall","src":"20708:81:3"},"nodeType":"YulExpressionStatement","src":"20708:81:3"}]},"nodeType":"YulCase","src":"20562:237:3","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"19901:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"19909:2:3","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"19898:2:3"},"nodeType":"YulFunctionCall","src":"19898:14:3"},"nodeType":"YulSwitch","src":"19891:908:3"}]},"name":"copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"19485:4:3","type":""},{"name":"src","nodeType":"YulTypedName","src":"19491:3:3","type":""},{"name":"len","nodeType":"YulTypedName","src":"19496:3:3","type":""}],"src":"19402:1403:3"},{"body":{"nodeType":"YulBlock","src":"20855:147:3","statements":[{"nodeType":"YulAssignment","src":"20865:25:3","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"20888:1:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"20870:17:3"},"nodeType":"YulFunctionCall","src":"20870:20:3"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"20865:1:3"}]},{"nodeType":"YulAssignment","src":"20899:25:3","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"20922:1:3"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"20904:17:3"},"nodeType":"YulFunctionCall","src":"20904:20:3"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"20899:1:3"}]},{"nodeType":"YulAssignment","src":"20933:16:3","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"20944:1:3"},{"name":"y","nodeType":"YulIdentifier","src":"20947:1:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20940:3:3"},"nodeType":"YulFunctionCall","src":"20940:9:3"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"20933:3:3"}]},{"body":{"nodeType":"YulBlock","src":"20973:22:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"20975:16:3"},"nodeType":"YulFunctionCall","src":"20975:18:3"},"nodeType":"YulExpressionStatement","src":"20975:18:3"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"20965:1:3"},{"name":"sum","nodeType":"YulIdentifier","src":"20968:3:3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"20962:2:3"},"nodeType":"YulFunctionCall","src":"20962:10:3"},"nodeType":"YulIf","src":"20959:36:3"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"20842:1:3","type":""},{"name":"y","nodeType":"YulTypedName","src":"20845:1:3","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"20851:3:3","type":""}],"src":"20811:191:3"},{"body":{"nodeType":"YulBlock","src":"21114:67:3","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21136:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"21144:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21132:3:3"},"nodeType":"YulFunctionCall","src":"21132:14:3"},{"hexValue":"4e657874206f776e6572206973206e6f742076616c6964","kind":"string","nodeType":"YulLiteral","src":"21148:25:3","type":"","value":"Next owner is not valid"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21125:6:3"},"nodeType":"YulFunctionCall","src":"21125:49:3"},"nodeType":"YulExpressionStatement","src":"21125:49:3"}]},"name":"store_literal_in_memory_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"21106:6:3","type":""}],"src":"21008:173:3"},{"body":{"nodeType":"YulBlock","src":"21333:220:3","statements":[{"nodeType":"YulAssignment","src":"21343:74:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21409:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"21414:2:3","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21350:58:3"},"nodeType":"YulFunctionCall","src":"21350:67:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21343:3:3"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21515:3:3"}],"functionName":{"name":"store_literal_in_memory_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392","nodeType":"YulIdentifier","src":"21426:88:3"},"nodeType":"YulFunctionCall","src":"21426:93:3"},"nodeType":"YulExpressionStatement","src":"21426:93:3"},{"nodeType":"YulAssignment","src":"21528:19:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21539:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"21544:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21535:3:3"},"nodeType":"YulFunctionCall","src":"21535:12:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21528:3:3"}]}]},"name":"abi_encode_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21321:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21329:3:3","type":""}],"src":"21187:366:3"},{"body":{"nodeType":"YulBlock","src":"21730:248:3","statements":[{"nodeType":"YulAssignment","src":"21740:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21752:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"21763:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21748:3:3"},"nodeType":"YulFunctionCall","src":"21748:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21740:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21787:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"21798:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21783:3:3"},"nodeType":"YulFunctionCall","src":"21783:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21806:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"21812:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21802:3:3"},"nodeType":"YulFunctionCall","src":"21802:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21776:6:3"},"nodeType":"YulFunctionCall","src":"21776:47:3"},"nodeType":"YulExpressionStatement","src":"21776:47:3"},{"nodeType":"YulAssignment","src":"21832:139:3","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21966:4:3"}],"functionName":{"name":"abi_encode_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21840:124:3"},"nodeType":"YulFunctionCall","src":"21840:131:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21832:4:3"}]}]},"name":"abi_encode_tuple_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21710:9:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21725:4:3","type":""}],"src":"21559:419:3"},{"body":{"nodeType":"YulBlock","src":"22090:75:3","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"22112:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"22120:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22108:3:3"},"nodeType":"YulFunctionCall","src":"22108:14:3"},{"hexValue":"436f6e73756d65722063616e206e6f74207472616e73666572206173736574","kind":"string","nodeType":"YulLiteral","src":"22124:33:3","type":"","value":"Consumer can not transfer asset"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22101:6:3"},"nodeType":"YulFunctionCall","src":"22101:57:3"},"nodeType":"YulExpressionStatement","src":"22101:57:3"}]},"name":"store_literal_in_memory_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"22082:6:3","type":""}],"src":"21984:181:3"},{"body":{"nodeType":"YulBlock","src":"22317:220:3","statements":[{"nodeType":"YulAssignment","src":"22327:74:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22393:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"22398:2:3","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22334:58:3"},"nodeType":"YulFunctionCall","src":"22334:67:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22327:3:3"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22499:3:3"}],"functionName":{"name":"store_literal_in_memory_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0","nodeType":"YulIdentifier","src":"22410:88:3"},"nodeType":"YulFunctionCall","src":"22410:93:3"},"nodeType":"YulExpressionStatement","src":"22410:93:3"},{"nodeType":"YulAssignment","src":"22512:19:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22523:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"22528:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22519:3:3"},"nodeType":"YulFunctionCall","src":"22519:12:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22512:3:3"}]}]},"name":"abi_encode_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22305:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22313:3:3","type":""}],"src":"22171:366:3"},{"body":{"nodeType":"YulBlock","src":"22714:248:3","statements":[{"nodeType":"YulAssignment","src":"22724:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22736:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"22747:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22732:3:3"},"nodeType":"YulFunctionCall","src":"22732:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22724:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22771:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"22782:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22767:3:3"},"nodeType":"YulFunctionCall","src":"22767:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22790:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"22796:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22786:3:3"},"nodeType":"YulFunctionCall","src":"22786:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22760:6:3"},"nodeType":"YulFunctionCall","src":"22760:47:3"},"nodeType":"YulExpressionStatement","src":"22760:47:3"},{"nodeType":"YulAssignment","src":"22816:139:3","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22950:4:3"}],"functionName":{"name":"abi_encode_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22824:124:3"},"nodeType":"YulFunctionCall","src":"22824:131:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22816:4:3"}]}]},"name":"abi_encode_tuple_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22694:9:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22709:4:3","type":""}],"src":"22543:419:3"},{"body":{"nodeType":"YulBlock","src":"23011:43:3","statements":[{"nodeType":"YulAssignment","src":"23021:27:3","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23036:5:3"},{"kind":"number","nodeType":"YulLiteral","src":"23043:4:3","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"23032:3:3"},"nodeType":"YulFunctionCall","src":"23032:16:3"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"23021:7:3"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22993:5:3","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"23003:7:3","type":""}],"src":"22968:86:3"},{"body":{"nodeType":"YulBlock","src":"23102:146:3","statements":[{"nodeType":"YulAssignment","src":"23112:23:3","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"23133:1:3"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"23117:15:3"},"nodeType":"YulFunctionCall","src":"23117:18:3"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"23112:1:3"}]},{"nodeType":"YulAssignment","src":"23144:23:3","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"23165:1:3"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"23149:15:3"},"nodeType":"YulFunctionCall","src":"23149:18:3"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"23144:1:3"}]},{"nodeType":"YulAssignment","src":"23176:16:3","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"23187:1:3"},{"name":"y","nodeType":"YulIdentifier","src":"23190:1:3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23183:3:3"},"nodeType":"YulFunctionCall","src":"23183:9:3"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"23176:3:3"}]},{"body":{"nodeType":"YulBlock","src":"23219:22:3","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"23221:16:3"},"nodeType":"YulFunctionCall","src":"23221:18:3"},"nodeType":"YulExpressionStatement","src":"23221:18:3"}]},"condition":{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"23208:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"23213:4:3","type":"","value":"0xff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23205:2:3"},"nodeType":"YulFunctionCall","src":"23205:13:3"},"nodeType":"YulIf","src":"23202:39:3"}]},"name":"checked_add_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"23089:1:3","type":""},{"name":"y","nodeType":"YulTypedName","src":"23092:1:3","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"23098:3:3","type":""}],"src":"23060:188:3"},{"body":{"nodeType":"YulBlock","src":"23360:65:3","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23382:6:3"},{"kind":"number","nodeType":"YulLiteral","src":"23390:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23378:3:3"},"nodeType":"YulFunctionCall","src":"23378:14:3"},{"hexValue":"57726f6e67206e657874206f776e657220726f6c65","kind":"string","nodeType":"YulLiteral","src":"23394:23:3","type":"","value":"Wrong next owner role"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23371:6:3"},"nodeType":"YulFunctionCall","src":"23371:47:3"},"nodeType":"YulExpressionStatement","src":"23371:47:3"}]},"name":"store_literal_in_memory_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23352:6:3","type":""}],"src":"23254:171:3"},{"body":{"nodeType":"YulBlock","src":"23577:220:3","statements":[{"nodeType":"YulAssignment","src":"23587:74:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23653:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"23658:2:3","type":"","value":"21"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23594:58:3"},"nodeType":"YulFunctionCall","src":"23594:67:3"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23587:3:3"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23759:3:3"}],"functionName":{"name":"store_literal_in_memory_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a","nodeType":"YulIdentifier","src":"23670:88:3"},"nodeType":"YulFunctionCall","src":"23670:93:3"},"nodeType":"YulExpressionStatement","src":"23670:93:3"},{"nodeType":"YulAssignment","src":"23772:19:3","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23783:3:3"},{"kind":"number","nodeType":"YulLiteral","src":"23788:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23779:3:3"},"nodeType":"YulFunctionCall","src":"23779:12:3"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23772:3:3"}]}]},"name":"abi_encode_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23565:3:3","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23573:3:3","type":""}],"src":"23431:366:3"},{"body":{"nodeType":"YulBlock","src":"23974:248:3","statements":[{"nodeType":"YulAssignment","src":"23984:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23996:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"24007:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23992:3:3"},"nodeType":"YulFunctionCall","src":"23992:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23984:4:3"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24031:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"24042:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24027:3:3"},"nodeType":"YulFunctionCall","src":"24027:17:3"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24050:4:3"},{"name":"headStart","nodeType":"YulIdentifier","src":"24056:9:3"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24046:3:3"},"nodeType":"YulFunctionCall","src":"24046:20:3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24020:6:3"},"nodeType":"YulFunctionCall","src":"24020:47:3"},"nodeType":"YulExpressionStatement","src":"24020:47:3"},{"nodeType":"YulAssignment","src":"24076:139:3","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24210:4:3"}],"functionName":{"name":"abi_encode_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24084:124:3"},"nodeType":"YulFunctionCall","src":"24084:131:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24076:4:3"}]}]},"name":"abi_encode_tuple_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23954:9:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23969:4:3","type":""}],"src":"23803:419:3"},{"body":{"nodeType":"YulBlock","src":"24382:288:3","statements":[{"nodeType":"YulAssignment","src":"24392:26:3","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24404:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"24415:2:3","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24400:3:3"},"nodeType":"YulFunctionCall","src":"24400:18:3"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24392:4:3"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"24472:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24485:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"24496:1:3","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24481:3:3"},"nodeType":"YulFunctionCall","src":"24481:17:3"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"24428:43:3"},"nodeType":"YulFunctionCall","src":"24428:71:3"},"nodeType":"YulExpressionStatement","src":"24428:71:3"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"24553:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24566:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"24577:2:3","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24562:3:3"},"nodeType":"YulFunctionCall","src":"24562:18:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"24509:43:3"},"nodeType":"YulFunctionCall","src":"24509:72:3"},"nodeType":"YulExpressionStatement","src":"24509:72:3"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"24635:6:3"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24648:9:3"},{"kind":"number","nodeType":"YulLiteral","src":"24659:2:3","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24644:3:3"},"nodeType":"YulFunctionCall","src":"24644:18:3"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"24591:43:3"},"nodeType":"YulFunctionCall","src":"24591:72:3"},"nodeType":"YulExpressionStatement","src":"24591:72:3"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24338:9:3","type":""},{"name":"value2","nodeType":"YulTypedName","src":"24350:6:3","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24358:6:3","type":""},{"name":"value0","nodeType":"YulTypedName","src":"24366:6:3","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24377:4:3","type":""}],"src":"24228:442:3"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function validator_assert_t_enum$_Role_$184(value) {\n if iszero(lt(value, 4)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_Role_$184(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_Role_$184(value)\n }\n\n function convert_t_enum$_Role_$184_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_Role_$184(value)\n }\n\n function abi_encode_t_enum$_Role_$184_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_enum$_Role_$184_to_t_uint8(value))\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_enum$_Role_$184_t_bool__to_t_uint8_t_bool__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_enum$_Role_$184_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bool_to_t_bool_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_array$_t_address_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_address_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n abi_encode_t_address_to_t_address(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_address_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // address[] -> address[]\n function abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_address_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_address_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_address_to_t_address(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_address_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint256_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address__to_t_uint256_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value3, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value4, add(headStart, 128))\n\n }\n\n function validator_revert_t_enum$_Role_$184(value) {\n if iszero(lt(value, 4)) { revert(0, 0) }\n }\n\n function abi_decode_t_enum$_Role_$184(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_enum$_Role_$184(value)\n }\n\n function abi_decode_tuple_t_addresst_enum$_Role_$184(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_enum$_Role_$184(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address_t_array$_t_address_$dyn_memory_ptr__to_t_string_memory_ptr_t_uint256_t_string_memory_ptr_t_address_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value2, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value4, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // string\n function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_string_calldata_ptrt_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3, value4 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function store_literal_in_memory_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403(memPtr) {\n\n mstore(add(memPtr, 0), \"Asset ID must be within valid ra\")\n\n mstore(add(memPtr, 32), \"nge\")\n\n }\n\n function abi_encode_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b265e1e0ec6e7c778ab39424efd387ece39c4e0d91f9bf22268c139830d7c403_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function abi_encode_tuple_t_address_t_enum$_Role_$184__to_t_address_t_uint8__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_enum$_Role_$184_to_t_uint8_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e(memPtr) {\n\n mstore(add(memPtr, 0), \"Actor not enabled\")\n\n }\n\n function abi_encode_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_29e128455d2beaedd4f9db801dbf0e72b3187090c2b3c3fe107eecef2f2cbf9e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071(memPtr) {\n\n mstore(add(memPtr, 0), \"Actor's role must be Producer\")\n\n }\n\n function abi_encode_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c0cfbc7713b3c89c269c93ae52a14997e761da6f0bec0805c459808392d89071_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_length_t_string_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len) {\n\n let newLen := array_length_t_string_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392(memPtr) {\n\n mstore(add(memPtr, 0), \"Next owner is not valid\")\n\n }\n\n function abi_encode_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 23)\n store_literal_in_memory_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_96424f0aa44a37fa8c21697fa7bc2785413d92c138e61bf194f89f88e517d392_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0(memPtr) {\n\n mstore(add(memPtr, 0), \"Consumer can not transfer asset\")\n\n }\n\n function abi_encode_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6175270a3b9463ce92cb68fd36f7602f97c4662c9d85a4edef52f95d70c552f0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function checked_add_t_uint8(x, y) -> sum {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n sum := add(x, y)\n\n if gt(sum, 0xff) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a(memPtr) {\n\n mstore(add(memPtr, 0), \"Wrong next owner role\")\n\n }\n\n function abi_encode_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 21)\n store_literal_in_memory_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eff17cd07b38e165131a2fbb6a2f6003269e8edd7076fe13c753aaff3512a95a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_address_t_address__to_t_uint256_t_address_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n}\n","id":3,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063cf35bdd01161008c578063eac8f5b811610066578063eac8f5b814610217578063f2fde38b1461024b578063f742c5b014610267578063fa62ee8d14610283576100cf565b8063cf35bdd0146101ab578063d5cbe157146101df578063de7ac991146101fb576100cf565b8063026e2d8c146100d45780634138d1671461010457806343247d03146101355780636446e62814610153578063715018a6146101835780638da5cb5b1461018d575b600080fd5b6100ee60048036038101906100e99190611445565b61029f565b6040516100fb91906114b3565b60405180910390f35b61011e600480360381019061011991906114fa565b610330565b60405161012c9291906115b9565b60405180910390f35b61013d6103e4565b60405161014a91906115f1565b60405180910390f35b61016d60048036038101906101689190611445565b6103f9565b60405161017a91906116ca565b60405180910390f35b61018b6104ee565b005b610195610502565b6040516101a291906114b3565b60405180910390f35b6101c560048036038101906101c09190611445565b61052b565b6040516101d695949392919061177c565b60405180910390f35b6101f960048036038101906101f491906114fa565b610691565b005b61021560048036038101906102109190611802565b61072e565b005b610231600480360381019061022c9190611445565b61082f565b604051610242959493929190611842565b60405180910390f35b610265600480360381019061026091906114fa565b610acd565b005b610281600480360381019061027c919061190f565b610b53565b005b61029d600480360381019061029891906119a4565b610e52565b005b6000600182101580156102b3575060015482105b6102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e990611a56565b60405180910390fd5b6003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008061033b6112b2565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1691509150915091565b6000600180546103f49190611aa5565b905090565b60606001821015801561040d575060015482105b61044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390611a56565b60405180910390fd5b600360008381526020019081526020016000206005018054806020026020016040519081016040528092919081815260200182805480156104e257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610498575b50505050509050919050565b6104f66112b2565b6105006000611339565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360205280600052604060002060009150905080600001549080600101805461055490611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461058090611b08565b80156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050908060020154908060030180546105e890611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461061490611b08565b80156106615780601f1061063657610100808354040283529160200191610661565b820191906000526020600020905b81548152906001019060200180831161064457829003601f168201915b5050505050908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b6106996112b2565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055507f6104c637b94c6924ba582f11d228cf3203eb42d40b94a3ab64e60006032a93d58160405161072391906114b3565b60405180910390a150565b6107366112b2565b604051806040016040528082600381111561075457610753611527565b5b815260200160011515815250600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360038111156107ca576107c9611527565b5b021790555060208201518160000160016101000a81548160ff0219169083151502179055509050507f9d298435d839e75ea5c40e98fc6aa208cc7c2a9ba6ffb5d9703e179bcf1b248e8282604051610823929190611b39565b60405180910390a15050565b606060006060600060606001861015801561084b575060015486105b61088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088190611a56565b60405180910390fd5b60036000878152602001908152602001600020600101600360008881526020019081526020016000206002015460036000898152602001908152602001600020600301600360008a815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008b815260200190815260200160002060050184805461092690611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461095290611b08565b801561099f5780601f106109745761010080835404028352916020019161099f565b820191906000526020600020905b81548152906001019060200180831161098257829003601f168201915b505050505094508280546109b290611b08565b80601f01602080910402602001604051908101604052809291908181526020018280546109de90611b08565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050925080805480602002602001604051908101604052809291908181526020018280548015610ab357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a69575b505050505090509450945094509450945091939590929450565b610ad56112b2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b475760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b3e91906114b3565b60405180910390fd5b610b5081611339565b50565b600033905060011515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590611bae565b60405180910390fd5b60006003811115610c0257610c01611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115610c6457610c63611527565b5b14610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90611c1a565b60405180910390fd5b600060015490508060036000838152602001908152602001600020600001819055508686600360008481526020019081526020016000206001019182610ceb929190611e20565b508460036000838152602001908152602001600020600201819055508383600360008481526020019081526020016000206003019182610d2c929190611e20565b50816003600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000828152602001908152602001600020600501829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001806000828254610e0b9190611ef0565b925050819055507fcc7b4929606ce963ba54b6a998f106f7748e78c03dc7f08fd77aeb28230eb2d381604051610e4191906115f1565b60405180910390a150505050505050565b813373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f1d08eb6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600033905060018410158015610f05575060015484105b610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90611a56565b60405180910390fd5b60011515600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190611f70565b60405180910390fd5b600380811115610fed57610fec611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561104f5761104e611527565b5b0361108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690611fdc565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156110f3576110f2611527565b5b6110fd9190612009565b60ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561116257611161611527565b5b60ff16146111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c9061208a565b60405180910390fd5b826003600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000858152602001908152602001600020600501839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffb1218ff291ccbefa25b58131603cc93001ff09f257940a8896e43c4d36b446e8482856040516112a4939291906120aa565b60405180910390a150505050565b6112ba6113fd565b73ffffffffffffffffffffffffffffffffffffffff166112d8610502565b73ffffffffffffffffffffffffffffffffffffffff1614611337576112fb6113fd565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161132e91906114b3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600080fd5b6000819050919050565b6114228161140f565b811461142d57600080fd5b50565b60008135905061143f81611419565b92915050565b60006020828403121561145b5761145a611405565b5b600061146984828501611430565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061149d82611472565b9050919050565b6114ad81611492565b82525050565b60006020820190506114c860008301846114a4565b92915050565b6114d781611492565b81146114e257600080fd5b50565b6000813590506114f4816114ce565b92915050565b6000602082840312156115105761150f611405565b5b600061151e848285016114e5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061156757611566611527565b5b50565b600081905061157882611556565b919050565b60006115888261156a565b9050919050565b6115988161157d565b82525050565b60008115159050919050565b6115b38161159e565b82525050565b60006040820190506115ce600083018561158f565b6115db60208301846115aa565b9392505050565b6115eb8161140f565b82525050565b600060208201905061160660008301846115e2565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61164181611492565b82525050565b60006116538383611638565b60208301905092915050565b6000602082019050919050565b60006116778261160c565b6116818185611617565b935061168c83611628565b8060005b838110156116bd5781516116a48882611647565b97506116af8361165f565b925050600181019050611690565b5085935050505092915050565b600060208201905081810360008301526116e4818461166c565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561172657808201518184015260208101905061170b565b60008484015250505050565b6000601f19601f8301169050919050565b600061174e826116ec565b61175881856116f7565b9350611768818560208601611708565b61177181611732565b840191505092915050565b600060a08201905061179160008301886115e2565b81810360208301526117a38187611743565b90506117b260408301866115e2565b81810360608301526117c48185611743565b90506117d360808301846114a4565b9695505050505050565b600481106117ea57600080fd5b50565b6000813590506117fc816117dd565b92915050565b6000806040838503121561181957611818611405565b5b6000611827858286016114e5565b9250506020611838858286016117ed565b9150509250929050565b600060a082019050818103600083015261185c8188611743565b905061186b60208301876115e2565b818103604083015261187d8186611743565b905061188c60608301856114a4565b818103608083015261189e818461166c565b90509695505050505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126118cf576118ce6118aa565b5b8235905067ffffffffffffffff8111156118ec576118eb6118af565b5b602083019150836001820283011115611908576119076118b4565b5b9250929050565b60008060008060006060868803121561192b5761192a611405565b5b600086013567ffffffffffffffff8111156119495761194861140a565b5b611955888289016118b9565b9550955050602061196888828901611430565b935050604086013567ffffffffffffffff8111156119895761198861140a565b5b611995888289016118b9565b92509250509295509295909350565b600080604083850312156119bb576119ba611405565b5b60006119c985828601611430565b92505060206119da858286016114e5565b9150509250929050565b7f4173736574204944206d7573742062652077697468696e2076616c696420726160008201527f6e67650000000000000000000000000000000000000000000000000000000000602082015250565b6000611a406023836116f7565b9150611a4b826119e4565b604082019050919050565b60006020820190508181036000830152611a6f81611a33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ab08261140f565b9150611abb8361140f565b9250828203905081811115611ad357611ad2611a76565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2057607f821691505b602082108103611b3357611b32611ad9565b5b50919050565b6000604082019050611b4e60008301856114a4565b611b5b602083018461158f565b9392505050565b7f4163746f72206e6f7420656e61626c6564000000000000000000000000000000600082015250565b6000611b986011836116f7565b9150611ba382611b62565b602082019050919050565b60006020820190508181036000830152611bc781611b8b565b9050919050565b7f4163746f72277320726f6c65206d7573742062652050726f6475636572000000600082015250565b6000611c04601d836116f7565b9150611c0f82611bce565b602082019050919050565b60006020820190508181036000830152611c3381611bf7565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cd67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c99565b611ce08683611c99565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d1d611d18611d138461140f565b611cf8565b61140f565b9050919050565b6000819050919050565b611d3783611d02565b611d4b611d4382611d24565b848454611ca6565b825550505050565b600090565b611d60611d53565b611d6b818484611d2e565b505050565b5b81811015611d8f57611d84600082611d58565b600181019050611d71565b5050565b601f821115611dd457611da581611c74565b611dae84611c89565b81016020851015611dbd578190505b611dd1611dc985611c89565b830182611d70565b50505b505050565b600082821c905092915050565b6000611df760001984600802611dd9565b1980831691505092915050565b6000611e108383611de6565b9150826002028217905092915050565b611e2a8383611c3a565b67ffffffffffffffff811115611e4357611e42611c45565b5b611e4d8254611b08565b611e58828285611d93565b6000601f831160018114611e875760008415611e75578287013590505b611e7f8582611e04565b865550611ee7565b601f198416611e9586611c74565b60005b82811015611ebd57848901358255600182019150602085019450602081019050611e98565b86831015611eda5784890135611ed6601f891682611de6565b8355505b6001600288020188555050505b50505050505050565b6000611efb8261140f565b9150611f068361140f565b9250828201905080821115611f1e57611f1d611a76565b5b92915050565b7f4e657874206f776e6572206973206e6f742076616c6964000000000000000000600082015250565b6000611f5a6017836116f7565b9150611f6582611f24565b602082019050919050565b60006020820190508181036000830152611f8981611f4d565b9050919050565b7f436f6e73756d65722063616e206e6f74207472616e7366657220617373657400600082015250565b6000611fc6601f836116f7565b9150611fd182611f90565b602082019050919050565b60006020820190508181036000830152611ff581611fb9565b9050919050565b600060ff82169050919050565b600061201482611ffc565b915061201f83611ffc565b9250828201905060ff81111561203857612037611a76565b5b92915050565b7f57726f6e67206e657874206f776e657220726f6c650000000000000000000000600082015250565b60006120746015836116f7565b915061207f8261203e565b602082019050919050565b600060208201905081810360008301526120a381612067565b9050919050565b60006060820190506120bf60008301866115e2565b6120cc60208301856114a4565b6120d960408301846114a4565b94935050505056fea264697066735822122004254f201e3063d0071daf387aff10e75d1f05df7863fa056337ae762e1c7e5664736f6c63430008140033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCF35BDD0 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAC8F5B8 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xEAC8F5B8 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0xF742C5B0 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xFA62EE8D EQ PUSH2 0x283 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0xCF35BDD0 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0xD5CBE157 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xDE7AC991 EQ PUSH2 0x1FB JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x26E2D8C EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x4138D167 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x43247D03 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x6446E628 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12C SWAP3 SWAP2 SWAP1 PUSH2 0x15B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x3E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x168 SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17A SWAP2 SWAP1 PUSH2 0x16CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18B PUSH2 0x4EE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x502 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A2 SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C0 SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x177C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x215 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x210 SWAP2 SWAP1 PUSH2 0x1802 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x242 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1842 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x260 SWAP2 SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH2 0xACD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x281 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x27C SWAP2 SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0x19A4 JUMP JUMPDEST PUSH2 0xE52 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 LT ISZERO DUP1 ISZERO PUSH2 0x2B3 JUMPI POP PUSH1 0x1 SLOAD DUP3 LT JUMPDEST PUSH2 0x2F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E9 SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x33B PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD PUSH2 0x3F4 SWAP2 SWAP1 PUSH2 0x1AA5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 LT ISZERO DUP1 ISZERO PUSH2 0x40D JUMPI POP PUSH1 0x1 SLOAD DUP3 LT JUMPDEST PUSH2 0x44C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x443 SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x498 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4F6 PUSH2 0x12B2 JUMP JUMPDEST PUSH2 0x500 PUSH1 0x0 PUSH2 0x1339 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x554 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x580 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5CD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5B0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD DUP1 SLOAD PUSH2 0x5E8 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x614 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x661 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x636 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x661 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x644 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP6 JUMP JUMPDEST PUSH2 0x699 PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x6104C637B94C6924BA582F11D228CF3203EB42D40B94A3AB64E60006032A93D5 DUP2 PUSH1 0x40 MLOAD PUSH2 0x723 SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x736 PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x754 JUMPI PUSH2 0x753 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7CA JUMPI PUSH2 0x7C9 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH32 0x9D298435D839E75EA5C40E98FC6AA208CC7C2A9BA6FFB5D9703E179BCF1B248E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x823 SWAP3 SWAP2 SWAP1 PUSH2 0x1B39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 PUSH1 0x1 DUP7 LT ISZERO DUP1 ISZERO PUSH2 0x84B JUMPI POP PUSH1 0x1 SLOAD DUP7 LT JUMPDEST PUSH2 0x88A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x881 SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x3 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x3 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP5 DUP1 SLOAD PUSH2 0x926 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x952 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x974 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x982 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP5 POP DUP3 DUP1 SLOAD PUSH2 0x9B2 SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x9DE SWAP1 PUSH2 0x1B08 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA2B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA00 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA2B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA0E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP3 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0xAB3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0xA69 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP2 SWAP4 SWAP6 SWAP1 SWAP3 SWAP5 POP JUMP JUMPDEST PUSH2 0xAD5 PUSH2 0x12B2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB47 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB3E SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB50 DUP2 PUSH2 0x1339 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH1 0x1 ISZERO ISZERO PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0xBEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE5 SWAP1 PUSH2 0x1BAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC02 JUMPI PUSH2 0xC01 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xC64 JUMPI PUSH2 0xC63 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST EQ PUSH2 0xCA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC9B SWAP1 PUSH2 0x1C1A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP DUP1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP7 DUP7 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP2 DUP3 PUSH2 0xCEB SWAP3 SWAP2 SWAP1 PUSH2 0x1E20 JUMP JUMPDEST POP DUP5 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP4 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SWAP2 DUP3 PUSH2 0xD2C SWAP3 SWAP2 SWAP1 PUSH2 0x1E20 JUMP JUMPDEST POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP1 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE0B SWAP2 SWAP1 PUSH2 0x1EF0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH32 0xCC7B4929606CE963BA54B6A998F106F7748E78C03DC7F08FD77AEB28230EB2D3 DUP2 PUSH1 0x40 MLOAD PUSH2 0xE41 SWAP2 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xEEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x1D08EB6400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH1 0x1 DUP5 LT ISZERO DUP1 ISZERO PUSH2 0xF05 JUMPI POP PUSH1 0x1 SLOAD DUP5 LT JUMPDEST PUSH2 0xF44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF3B SWAP1 PUSH2 0x1A56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ISZERO ISZERO PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFD1 SWAP1 PUSH2 0x1F70 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFEC PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x104F JUMPI PUSH2 0x104E PUSH2 0x1527 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x108F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1086 SWAP1 PUSH2 0x1FDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x10F3 JUMPI PUSH2 0x10F2 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH2 0x10FD SWAP2 SWAP1 PUSH2 0x2009 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1162 JUMPI PUSH2 0x1161 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST PUSH1 0xFF AND EQ PUSH2 0x11A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x119C SWAP1 PUSH2 0x208A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP4 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xFB1218FF291CCBEFA25B58131603CC93001FF09F257940A8896E43C4D36B446E DUP5 DUP3 DUP6 PUSH1 0x40 MLOAD PUSH2 0x12A4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x12BA PUSH2 0x13FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12D8 PUSH2 0x502 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1337 JUMPI PUSH2 0x12FB PUSH2 0x13FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x132E SWAP2 SWAP1 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1422 DUP2 PUSH2 0x140F JUMP JUMPDEST DUP2 EQ PUSH2 0x142D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x143F DUP2 PUSH2 0x1419 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x145B JUMPI PUSH2 0x145A PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1469 DUP5 DUP3 DUP6 ADD PUSH2 0x1430 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x149D DUP3 PUSH2 0x1472 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14AD DUP2 PUSH2 0x1492 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14C8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x14A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14D7 DUP2 PUSH2 0x1492 JUMP JUMPDEST DUP2 EQ PUSH2 0x14E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x14F4 DUP2 PUSH2 0x14CE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1510 JUMPI PUSH2 0x150F PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP5 DUP3 DUP6 ADD PUSH2 0x14E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x1567 JUMPI PUSH2 0x1566 PUSH2 0x1527 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x1578 DUP3 PUSH2 0x1556 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1588 DUP3 PUSH2 0x156A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1598 DUP2 PUSH2 0x157D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15B3 DUP2 PUSH2 0x159E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x15CE PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x158F JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x15AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x15EB DUP2 PUSH2 0x140F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1606 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x15E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1641 DUP2 PUSH2 0x1492 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1653 DUP4 DUP4 PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1677 DUP3 PUSH2 0x160C JUMP JUMPDEST PUSH2 0x1681 DUP2 DUP6 PUSH2 0x1617 JUMP JUMPDEST SWAP4 POP PUSH2 0x168C DUP4 PUSH2 0x1628 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16BD JUMPI DUP2 MLOAD PUSH2 0x16A4 DUP9 DUP3 PUSH2 0x1647 JUMP JUMPDEST SWAP8 POP PUSH2 0x16AF DUP4 PUSH2 0x165F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1690 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x16E4 DUP2 DUP5 PUSH2 0x166C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1726 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x170B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x174E DUP3 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x1758 DUP2 DUP6 PUSH2 0x16F7 JUMP JUMPDEST SWAP4 POP PUSH2 0x1768 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1708 JUMP JUMPDEST PUSH2 0x1771 DUP2 PUSH2 0x1732 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x1791 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x15E2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x17A3 DUP2 DUP8 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x17B2 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x15E2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x17C4 DUP2 DUP6 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x17D3 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x14A4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x17EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x17FC DUP2 PUSH2 0x17DD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1819 JUMPI PUSH2 0x1818 PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1827 DUP6 DUP3 DUP7 ADD PUSH2 0x14E5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1838 DUP6 DUP3 DUP7 ADD PUSH2 0x17ED JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x185C DUP2 DUP9 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x186B PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x15E2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x187D DUP2 DUP7 PUSH2 0x1743 JUMP JUMPDEST SWAP1 POP PUSH2 0x188C PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x14A4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x189E DUP2 DUP5 PUSH2 0x166C JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x18CF JUMPI PUSH2 0x18CE PUSH2 0x18AA JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18EC JUMPI PUSH2 0x18EB PUSH2 0x18AF JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1908 JUMPI PUSH2 0x1907 PUSH2 0x18B4 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x192B JUMPI PUSH2 0x192A PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1949 JUMPI PUSH2 0x1948 PUSH2 0x140A JUMP JUMPDEST JUMPDEST PUSH2 0x1955 DUP9 DUP3 DUP10 ADD PUSH2 0x18B9 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 PUSH2 0x1968 DUP9 DUP3 DUP10 ADD PUSH2 0x1430 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1989 JUMPI PUSH2 0x1988 PUSH2 0x140A JUMP JUMPDEST JUMPDEST PUSH2 0x1995 DUP9 DUP3 DUP10 ADD PUSH2 0x18B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19BB JUMPI PUSH2 0x19BA PUSH2 0x1405 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x19C9 DUP6 DUP3 DUP7 ADD PUSH2 0x1430 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x19DA DUP6 DUP3 DUP7 ADD PUSH2 0x14E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4173736574204944206D7573742062652077697468696E2076616C6964207261 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E67650000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A40 PUSH1 0x23 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A4B DUP3 PUSH2 0x19E4 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A6F DUP2 PUSH2 0x1A33 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1AB0 DUP3 PUSH2 0x140F JUMP JUMPDEST SWAP2 POP PUSH2 0x1ABB DUP4 PUSH2 0x140F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x1AD3 JUMPI PUSH2 0x1AD2 PUSH2 0x1A76 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1B20 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1B33 JUMPI PUSH2 0x1B32 PUSH2 0x1AD9 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1B4E PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x14A4 JUMP JUMPDEST PUSH2 0x1B5B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x158F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4163746F72206E6F7420656E61626C6564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B98 PUSH1 0x11 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1BA3 DUP3 PUSH2 0x1B62 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BC7 DUP2 PUSH2 0x1B8B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4163746F72277320726F6C65206D7573742062652050726F6475636572000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C04 PUSH1 0x1D DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C0F DUP3 PUSH2 0x1BCE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C33 DUP2 PUSH2 0x1BF7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x1CD6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x1C99 JUMP JUMPDEST PUSH2 0x1CE0 DUP7 DUP4 PUSH2 0x1C99 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D1D PUSH2 0x1D18 PUSH2 0x1D13 DUP5 PUSH2 0x140F JUMP JUMPDEST PUSH2 0x1CF8 JUMP JUMPDEST PUSH2 0x140F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1D37 DUP4 PUSH2 0x1D02 JUMP JUMPDEST PUSH2 0x1D4B PUSH2 0x1D43 DUP3 PUSH2 0x1D24 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x1CA6 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x1D60 PUSH2 0x1D53 JUMP JUMPDEST PUSH2 0x1D6B DUP2 DUP5 DUP5 PUSH2 0x1D2E JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1D8F JUMPI PUSH2 0x1D84 PUSH1 0x0 DUP3 PUSH2 0x1D58 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1D71 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1DD4 JUMPI PUSH2 0x1DA5 DUP2 PUSH2 0x1C74 JUMP JUMPDEST PUSH2 0x1DAE DUP5 PUSH2 0x1C89 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1DBD JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1DD1 PUSH2 0x1DC9 DUP6 PUSH2 0x1C89 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x1D70 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DF7 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1DD9 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E10 DUP4 DUP4 PUSH2 0x1DE6 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1E2A DUP4 DUP4 PUSH2 0x1C3A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E43 JUMPI PUSH2 0x1E42 PUSH2 0x1C45 JUMP JUMPDEST JUMPDEST PUSH2 0x1E4D DUP3 SLOAD PUSH2 0x1B08 JUMP JUMPDEST PUSH2 0x1E58 DUP3 DUP3 DUP6 PUSH2 0x1D93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1E87 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1E75 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x1E7F DUP6 DUP3 PUSH2 0x1E04 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1E95 DUP7 PUSH2 0x1C74 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1EBD JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1E98 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1EDA JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x1ED6 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x1DE6 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EFB DUP3 PUSH2 0x140F JUMP JUMPDEST SWAP2 POP PUSH2 0x1F06 DUP4 PUSH2 0x140F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1F1E JUMPI PUSH2 0x1F1D PUSH2 0x1A76 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E657874206F776E6572206973206E6F742076616C6964000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F5A PUSH1 0x17 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1F65 DUP3 PUSH2 0x1F24 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F89 DUP2 PUSH2 0x1F4D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x436F6E73756D65722063616E206E6F74207472616E7366657220617373657400 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC6 PUSH1 0x1F DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1FD1 DUP3 PUSH2 0x1F90 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FF5 DUP2 PUSH2 0x1FB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2014 DUP3 PUSH2 0x1FFC JUMP JUMPDEST SWAP2 POP PUSH2 0x201F DUP4 PUSH2 0x1FFC JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x2038 JUMPI PUSH2 0x2037 PUSH2 0x1A76 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x57726F6E67206E657874206F776E657220726F6C650000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2074 PUSH1 0x15 DUP4 PUSH2 0x16F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x207F DUP3 PUSH2 0x203E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x20A3 DUP2 PUSH2 0x2067 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x20BF PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x15E2 JUMP JUMPDEST PUSH2 0x20CC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x14A4 JUMP JUMPDEST PUSH2 0x20D9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x14A4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV 0x25 0x4F KECCAK256 0x1E ADDRESS PUSH4 0xD0071DAF CODESIZE PUSH27 0xFF10E75D1F05DF7863FA056337AE762E1C7E5664736F6C63430008 EQ STOP CALLER ","sourceMap":"439:7121:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5994:255;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3648:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5089:114;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6398:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:101:0;;;:::i;:::-;;1638:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1423:36:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;3374:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3074:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5398:447;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;2543:215:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4259:760:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6860:697;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5994:255;6076:7;6115:1;6103:8;:13;;:40;;;;;6131:12;;6120:8;:23;6103:40;6095:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;6206:6;:16;6213:8;6206:16;;;;;;;;;;;:30;;;;;;;;;;;;6190:53;;5994:255;;;:::o;3648:186::-;3734:4;3740;1531:13:0;:11;:13::i;:::-;3772:6:2::1;:14;3779:6;3772:14;;;;;;;;;;;;;;;:19;;;;;;;;;;;;3800:6;:14;3807:6;3800:14;;;;;;;;;;;;;;;:21;;;;;;;;;;;;3756:72;;;;3648:186:::0;;;:::o;5089:114::-;5156:4;5195:1;5180:12;;:16;;;;:::i;:::-;5172:25;;5089:114;:::o;6398:264::-;6480:16;6528:1;6516:8;:13;;:40;;;;;6544:12;;6533:8;:23;6516:40;6508:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;6619:6;:16;6626:8;6619:16;;;;;;;;;;;:30;;6603:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6398:264;;;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1638:85::-;1684:7;1710:6;;;;;;;;;;;1703:13;;1638:85;:::o;1423:36:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3374:146::-;1531:13:0;:11;:13::i;:::-;3476:5:2::1;3452:6;:14;3459:6;3452:14;;;;;;;;;;;;;;;:21;;;:29;;;;;;;;;;;;;;;;;;3493:21;3507:6;3493:21;;;;;;:::i;:::-;;;;;;;;3374:146:::0;:::o;3074:174::-;1531:13:0;:11;:13::i;:::-;3182:18:2::1;;;;;;;;3188:5;3182:18;;;;;;;;:::i;:::-;;;;;;3195:4;3182:18;;;;::::0;3165:6:::1;:14;3172:6;3165:14;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3212:30;3228:6;3236:5;3212:30;;;;;;;:::i;:::-;;;;;;;;3074:174:::0;;:::o;5398:447::-;5467:13;5482:7;5491:13;5506:7;5515:16;5563:1;5551:8;:13;;:40;;;;;5579:12;;5568:8;:23;5551:40;5543:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;5654:6;:16;5661:8;5654:16;;;;;;;;;;;:28;;5691:6;:16;5698:8;5691:16;;;;;;;;;;;:31;;;5731:6;:16;5738:8;5731:16;;;;;;;;;;;:23;;5763:6;:16;5770:8;5763:16;;;;;;;;;;;:30;;;;;;;;;;;;5802:6;:16;5809:8;5802:16;;;;;;;;;;;:30;;5638:201;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5398:447;;;;;;;:::o;2543:215:0:-;1531:13;:11;:13::i;:::-;2647:1:::1;2627:22;;:8;:22;;::::0;2623:91:::1;;2700:1;2672:31;;;;;;;;;;;:::i;:::-;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;4259:760:2:-;4386:14;4403:10;4386:27;;4453:4;4428:29;;:6;:14;4435:6;4428:14;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:29;;;4420:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4517:13;4494:36;;;;;;;;:::i;:::-;;:6;:14;4501:6;4494:14;;;;;;;;;;;;;;;:19;;;;;;;;;;;;:36;;;;;;;;:::i;:::-;;;4486:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;4573:20;4596:12;;4573:35;;4651:15;4615:6;:23;4622:15;4615:23;;;;;;;;;;;:33;;:51;;;;4711:12;;4673:6;:23;4680:15;4673:23;;;;;;;;;;;:35;;:50;;;;;;;:::i;:::-;;4771:15;4730:6;:23;4737:15;4730:23;;;;;;;;;;;:38;;:56;;;;4826:7;;4793:6;:23;4800:15;4793:23;;;;;;;;;;;:30;;:40;;;;;;;:::i;:::-;;4880:6;4840;:23;4847:15;4840:23;;;;;;;;;;;:37;;;:46;;;;;;;;;;;;;;;;;;4893:6;:23;4900:15;4893:23;;;;;;;;;;;:37;;4936:6;4893:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4968:1;4952:12;;:17;;;;;;;:::i;:::-;;;;;;;;4981:32;4997:15;4981:32;;;;;;:::i;:::-;;;;;;;;4379:640;;4259:760;;;;;:::o;6860:697::-;6950:8;2720:10;2686:44;;:6;:16;2693:8;2686:16;;;;;;;;;;;:30;;;;;;;;;;;;:44;;;2682:73;;2739:16;;;;;;;;;;;;;;2682:73;6970:21:::1;6994:10;6970:34;;7031:1;7019:8;:13;;:40;;;;;7047:12;;7036:8;:23;7019:40;7011:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;7143:4;7114:33;;:6;:18;7121:10;7114:18;;;;;;;;;;;;;;;:25;;;;;;;;;;;;:33;;;7106:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7220:13;7190:43:::0;::::1;;;;;;;:::i;:::-;;:6;:21;7197:13;7190:21;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:43;;;;;;;;:::i;:::-;;::::0;7182:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7354:1;7324:6;:21;7331:13;7324:21;;;;;;;;;;;;;;;:26;;;;;;;;;;;;7318:33;;;;;;;;:::i;:::-;;:37;;;;:::i;:::-;7284:71;;7290:6;:18;7297:10;7290:18;;;;;;;;;;;;;;;:23;;;;;;;;;;;;7284:30;;;;;;;;:::i;:::-;;:71;;;7276:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;7423:10;7390:6;:16;7397:8;7390:16;;;;;;;;;;;:30;;;:43;;;;;;;;;;;;;;;;;;7440:6;:16;7447:8;7440:16;;;;;;;;;;;:30;;7476:10;7440:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7499:52;7515:8;7525:13;7540:10;7499:52;;;;;;;;:::i;:::-;;;;;;;;6963:594;6860:697:::0;;;:::o;1796:162:0:-;1866:12;:10;:12::i;:::-;1855:23;;:7;:5;:7::i;:::-;:23;;;1851:101;;1928:12;:10;:12::i;:::-;1901:40;;;;;;;;;;;:::i;:::-;;;;;;;;1851:101;1796:162::o;2912:187::-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;656:96:1:-;709:7;735:10;728:17;;656:96;:::o;88:117:3:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:126::-;1062:7;1102:42;1095:5;1091:54;1080:65;;1025:126;;;:::o;1157:96::-;1194:7;1223:24;1241:5;1223:24;:::i;:::-;1212:35;;1157:96;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:180::-;2267:77;2264:1;2257:88;2364:4;2361:1;2354:15;2388:4;2385:1;2378:15;2405:113;2486:1;2479:5;2476:12;2466:46;;2492:18;;:::i;:::-;2466:46;2405:113;:::o;2524:127::-;2569:7;2598:5;2587:16;;2604:41;2639:5;2604:41;:::i;:::-;2524:127;;;:::o;2657:::-;2713:9;2746:32;2772:5;2746:32;:::i;:::-;2733:45;;2657:127;;;:::o;2790:143::-;2883:43;2920:5;2883:43;:::i;:::-;2878:3;2871:56;2790:143;;:::o;2939:90::-;2973:7;3016:5;3009:13;3002:21;2991:32;;2939:90;;;:::o;3035:109::-;3116:21;3131:5;3116:21;:::i;:::-;3111:3;3104:34;3035:109;;:::o;3150:332::-;3271:4;3309:2;3298:9;3294:18;3286:26;;3322:77;3396:1;3385:9;3381:17;3372:6;3322:77;:::i;:::-;3409:66;3471:2;3460:9;3456:18;3447:6;3409:66;:::i;:::-;3150:332;;;;;:::o;3488:118::-;3575:24;3593:5;3575:24;:::i;:::-;3570:3;3563:37;3488:118;;:::o;3612:222::-;3705:4;3743:2;3732:9;3728:18;3720:26;;3756:71;3824:1;3813:9;3809:17;3800:6;3756:71;:::i;:::-;3612:222;;;;:::o;3840:114::-;3907:6;3941:5;3935:12;3925:22;;3840:114;;;:::o;3960:184::-;4059:11;4093:6;4088:3;4081:19;4133:4;4128:3;4124:14;4109:29;;3960:184;;;;:::o;4150:132::-;4217:4;4240:3;4232:11;;4270:4;4265:3;4261:14;4253:22;;4150:132;;;:::o;4288:108::-;4365:24;4383:5;4365:24;:::i;:::-;4360:3;4353:37;4288:108;;:::o;4402:179::-;4471:10;4492:46;4534:3;4526:6;4492:46;:::i;:::-;4570:4;4565:3;4561:14;4547:28;;4402:179;;;;:::o;4587:113::-;4657:4;4689;4684:3;4680:14;4672:22;;4587:113;;;:::o;4736:732::-;4855:3;4884:54;4932:5;4884:54;:::i;:::-;4954:86;5033:6;5028:3;4954:86;:::i;:::-;4947:93;;5064:56;5114:5;5064:56;:::i;:::-;5143:7;5174:1;5159:284;5184:6;5181:1;5178:13;5159:284;;;5260:6;5254:13;5287:63;5346:3;5331:13;5287:63;:::i;:::-;5280:70;;5373:60;5426:6;5373:60;:::i;:::-;5363:70;;5219:224;5206:1;5203;5199:9;5194:14;;5159:284;;;5163:14;5459:3;5452:10;;4860:608;;;4736:732;;;;:::o;5474:373::-;5617:4;5655:2;5644:9;5640:18;5632:26;;5704:9;5698:4;5694:20;5690:1;5679:9;5675:17;5668:47;5732:108;5835:4;5826:6;5732:108;:::i;:::-;5724:116;;5474:373;;;;:::o;5853:99::-;5905:6;5939:5;5933:12;5923:22;;5853:99;;;:::o;5958:169::-;6042:11;6076:6;6071:3;6064:19;6116:4;6111:3;6107:14;6092:29;;5958:169;;;;:::o;6133:246::-;6214:1;6224:113;6238:6;6235:1;6232:13;6224:113;;;6323:1;6318:3;6314:11;6308:18;6304:1;6299:3;6295:11;6288:39;6260:2;6257:1;6253:10;6248:15;;6224:113;;;6371:1;6362:6;6357:3;6353:16;6346:27;6195:184;6133:246;;;:::o;6385:102::-;6426:6;6477:2;6473:7;6468:2;6461:5;6457:14;6453:28;6443:38;;6385:102;;;:::o;6493:377::-;6581:3;6609:39;6642:5;6609:39;:::i;:::-;6664:71;6728:6;6723:3;6664:71;:::i;:::-;6657:78;;6744:65;6802:6;6797:3;6790:4;6783:5;6779:16;6744:65;:::i;:::-;6834:29;6856:6;6834:29;:::i;:::-;6829:3;6825:39;6818:46;;6585:285;6493:377;;;;:::o;6876:846::-;7121:4;7159:3;7148:9;7144:19;7136:27;;7173:71;7241:1;7230:9;7226:17;7217:6;7173:71;:::i;:::-;7291:9;7285:4;7281:20;7276:2;7265:9;7261:18;7254:48;7319:78;7392:4;7383:6;7319:78;:::i;:::-;7311:86;;7407:72;7475:2;7464:9;7460:18;7451:6;7407:72;:::i;:::-;7526:9;7520:4;7516:20;7511:2;7500:9;7496:18;7489:48;7554:78;7627:4;7618:6;7554:78;:::i;:::-;7546:86;;7642:73;7710:3;7699:9;7695:19;7686:6;7642:73;:::i;:::-;6876:846;;;;;;;;:::o;7728:107::-;7809:1;7802:5;7799:12;7789:40;;7825:1;7822;7815:12;7789:40;7728:107;:::o;7841:155::-;7895:5;7933:6;7920:20;7911:29;;7949:41;7984:5;7949:41;:::i;:::-;7841:155;;;;:::o;8002:490::-;8078:6;8086;8135:2;8123:9;8114:7;8110:23;8106:32;8103:119;;;8141:79;;:::i;:::-;8103:119;8261:1;8286:53;8331:7;8322:6;8311:9;8307:22;8286:53;:::i;:::-;8276:63;;8232:117;8388:2;8414:61;8467:7;8458:6;8447:9;8443:22;8414:61;:::i;:::-;8404:71;;8359:126;8002:490;;;;;:::o;8498:997::-;8793:4;8831:3;8820:9;8816:19;8808:27;;8881:9;8875:4;8871:20;8867:1;8856:9;8852:17;8845:47;8909:78;8982:4;8973:6;8909:78;:::i;:::-;8901:86;;8997:72;9065:2;9054:9;9050:18;9041:6;8997:72;:::i;:::-;9116:9;9110:4;9106:20;9101:2;9090:9;9086:18;9079:48;9144:78;9217:4;9208:6;9144:78;:::i;:::-;9136:86;;9232:72;9300:2;9289:9;9285:18;9276:6;9232:72;:::i;:::-;9352:9;9346:4;9342:20;9336:3;9325:9;9321:19;9314:49;9380:108;9483:4;9474:6;9380:108;:::i;:::-;9372:116;;8498:997;;;;;;;;:::o;9501:117::-;9610:1;9607;9600:12;9624:117;9733:1;9730;9723:12;9747:117;9856:1;9853;9846:12;9884:553;9942:8;9952:6;10002:3;9995:4;9987:6;9983:17;9979:27;9969:122;;10010:79;;:::i;:::-;9969:122;10123:6;10110:20;10100:30;;10153:18;10145:6;10142:30;10139:117;;;10175:79;;:::i;:::-;10139:117;10289:4;10281:6;10277:17;10265:29;;10343:3;10335:4;10327:6;10323:17;10313:8;10309:32;10306:41;10303:128;;;10350:79;;:::i;:::-;10303:128;9884:553;;;;;:::o;10443:1019::-;10544:6;10552;10560;10568;10576;10625:2;10613:9;10604:7;10600:23;10596:32;10593:119;;;10631:79;;:::i;:::-;10593:119;10779:1;10768:9;10764:17;10751:31;10809:18;10801:6;10798:30;10795:117;;;10831:79;;:::i;:::-;10795:117;10944:65;11001:7;10992:6;10981:9;10977:22;10944:65;:::i;:::-;10926:83;;;;10722:297;11058:2;11084:53;11129:7;11120:6;11109:9;11105:22;11084:53;:::i;:::-;11074:63;;11029:118;11214:2;11203:9;11199:18;11186:32;11245:18;11237:6;11234:30;11231:117;;;11267:79;;:::i;:::-;11231:117;11380:65;11437:7;11428:6;11417:9;11413:22;11380:65;:::i;:::-;11362:83;;;;11157:298;10443:1019;;;;;;;;:::o;11468:474::-;11536:6;11544;11593:2;11581:9;11572:7;11568:23;11564:32;11561:119;;;11599:79;;:::i;:::-;11561:119;11719:1;11744:53;11789:7;11780:6;11769:9;11765:22;11744:53;:::i;:::-;11734:63;;11690:117;11846:2;11872:53;11917:7;11908:6;11897:9;11893:22;11872:53;:::i;:::-;11862:63;;11817:118;11468:474;;;;;:::o;11948:222::-;12088:34;12084:1;12076:6;12072:14;12065:58;12157:5;12152:2;12144:6;12140:15;12133:30;11948:222;:::o;12176:366::-;12318:3;12339:67;12403:2;12398:3;12339:67;:::i;:::-;12332:74;;12415:93;12504:3;12415:93;:::i;:::-;12533:2;12528:3;12524:12;12517:19;;12176:366;;;:::o;12548:419::-;12714:4;12752:2;12741:9;12737:18;12729:26;;12801:9;12795:4;12791:20;12787:1;12776:9;12772:17;12765:47;12829:131;12955:4;12829:131;:::i;:::-;12821:139;;12548:419;;;:::o;12973:180::-;13021:77;13018:1;13011:88;13118:4;13115:1;13108:15;13142:4;13139:1;13132:15;13159:194;13199:4;13219:20;13237:1;13219:20;:::i;:::-;13214:25;;13253:20;13271:1;13253:20;:::i;:::-;13248:25;;13297:1;13294;13290:9;13282:17;;13321:1;13315:4;13312:11;13309:37;;;13326:18;;:::i;:::-;13309:37;13159:194;;;;:::o;13359:180::-;13407:77;13404:1;13397:88;13504:4;13501:1;13494:15;13528:4;13525:1;13518:15;13545:320;13589:6;13626:1;13620:4;13616:12;13606:22;;13673:1;13667:4;13663:12;13694:18;13684:81;;13750:4;13742:6;13738:17;13728:27;;13684:81;13812:2;13804:6;13801:14;13781:18;13778:38;13775:84;;13831:18;;:::i;:::-;13775:84;13596:269;13545:320;;;:::o;13871:344::-;13998:4;14036:2;14025:9;14021:18;14013:26;;14049:71;14117:1;14106:9;14102:17;14093:6;14049:71;:::i;:::-;14130:78;14204:2;14193:9;14189:18;14180:6;14130:78;:::i;:::-;13871:344;;;;;:::o;14221:167::-;14361:19;14357:1;14349:6;14345:14;14338:43;14221:167;:::o;14394:366::-;14536:3;14557:67;14621:2;14616:3;14557:67;:::i;:::-;14550:74;;14633:93;14722:3;14633:93;:::i;:::-;14751:2;14746:3;14742:12;14735:19;;14394:366;;;:::o;14766:419::-;14932:4;14970:2;14959:9;14955:18;14947:26;;15019:9;15013:4;15009:20;15005:1;14994:9;14990:17;14983:47;15047:131;15173:4;15047:131;:::i;:::-;15039:139;;14766:419;;;:::o;15191:179::-;15331:31;15327:1;15319:6;15315:14;15308:55;15191:179;:::o;15376:366::-;15518:3;15539:67;15603:2;15598:3;15539:67;:::i;:::-;15532:74;;15615:93;15704:3;15615:93;:::i;:::-;15733:2;15728:3;15724:12;15717:19;;15376:366;;;:::o;15748:419::-;15914:4;15952:2;15941:9;15937:18;15929:26;;16001:9;15995:4;15991:20;15987:1;15976:9;15972:17;15965:47;16029:131;16155:4;16029:131;:::i;:::-;16021:139;;15748:419;;;:::o;16173:97::-;16232:6;16260:3;16250:13;;16173:97;;;;:::o;16276:180::-;16324:77;16321:1;16314:88;16421:4;16418:1;16411:15;16445:4;16442:1;16435:15;16462:141;16511:4;16534:3;16526:11;;16557:3;16554:1;16547:14;16591:4;16588:1;16578:18;16570:26;;16462:141;;;:::o;16609:93::-;16646:6;16693:2;16688;16681:5;16677:14;16673:23;16663:33;;16609:93;;;:::o;16708:107::-;16752:8;16802:5;16796:4;16792:16;16771:37;;16708:107;;;;:::o;16821:393::-;16890:6;16940:1;16928:10;16924:18;16963:97;16993:66;16982:9;16963:97;:::i;:::-;17081:39;17111:8;17100:9;17081:39;:::i;:::-;17069:51;;17153:4;17149:9;17142:5;17138:21;17129:30;;17202:4;17192:8;17188:19;17181:5;17178:30;17168:40;;16897:317;;16821:393;;;;;:::o;17220:60::-;17248:3;17269:5;17262:12;;17220:60;;;:::o;17286:142::-;17336:9;17369:53;17387:34;17396:24;17414:5;17396:24;:::i;:::-;17387:34;:::i;:::-;17369:53;:::i;:::-;17356:66;;17286:142;;;:::o;17434:75::-;17477:3;17498:5;17491:12;;17434:75;;;:::o;17515:269::-;17625:39;17656:7;17625:39;:::i;:::-;17686:91;17735:41;17759:16;17735:41;:::i;:::-;17727:6;17720:4;17714:11;17686:91;:::i;:::-;17680:4;17673:105;17591:193;17515:269;;;:::o;17790:73::-;17835:3;17790:73;:::o;17869:189::-;17946:32;;:::i;:::-;17987:65;18045:6;18037;18031:4;17987:65;:::i;:::-;17922:136;17869:189;;:::o;18064:186::-;18124:120;18141:3;18134:5;18131:14;18124:120;;;18195:39;18232:1;18225:5;18195:39;:::i;:::-;18168:1;18161:5;18157:13;18148:22;;18124:120;;;18064:186;;:::o;18256:543::-;18357:2;18352:3;18349:11;18346:446;;;18391:38;18423:5;18391:38;:::i;:::-;18475:29;18493:10;18475:29;:::i;:::-;18465:8;18461:44;18658:2;18646:10;18643:18;18640:49;;;18679:8;18664:23;;18640:49;18702:80;18758:22;18776:3;18758:22;:::i;:::-;18748:8;18744:37;18731:11;18702:80;:::i;:::-;18361:431;;18346:446;18256:543;;;:::o;18805:117::-;18859:8;18909:5;18903:4;18899:16;18878:37;;18805:117;;;;:::o;18928:169::-;18972:6;19005:51;19053:1;19049:6;19041:5;19038:1;19034:13;19005:51;:::i;:::-;19001:56;19086:4;19080;19076:15;19066:25;;18979:118;18928:169;;;;:::o;19102:295::-;19178:4;19324:29;19349:3;19343:4;19324:29;:::i;:::-;19316:37;;19386:3;19383:1;19379:11;19373:4;19370:21;19362:29;;19102:295;;;;:::o;19402:1403::-;19526:44;19566:3;19561;19526:44;:::i;:::-;19635:18;19627:6;19624:30;19621:56;;;19657:18;;:::i;:::-;19621:56;19701:38;19733:4;19727:11;19701:38;:::i;:::-;19786:67;19846:6;19838;19832:4;19786:67;:::i;:::-;19880:1;19909:2;19901:6;19898:14;19926:1;19921:632;;;;20597:1;20614:6;20611:84;;;20670:9;20665:3;20661:19;20648:33;20639:42;;20611:84;20721:67;20781:6;20774:5;20721:67;:::i;:::-;20715:4;20708:81;20570:229;19891:908;;19921:632;19973:4;19969:9;19961:6;19957:22;20007:37;20039:4;20007:37;:::i;:::-;20066:1;20080:215;20094:7;20091:1;20088:14;20080:215;;;20180:9;20175:3;20171:19;20158:33;20150:6;20143:49;20231:1;20223:6;20219:14;20209:24;;20278:2;20267:9;20263:18;20250:31;;20117:4;20114:1;20110:12;20105:17;;20080:215;;;20323:6;20314:7;20311:19;20308:186;;;20388:9;20383:3;20379:19;20366:33;20431:48;20473:4;20465:6;20461:17;20450:9;20431:48;:::i;:::-;20423:6;20416:64;20331:163;20308:186;20540:1;20536;20528:6;20524:14;20520:22;20514:4;20507:36;19928:625;;;19891:908;;19501:1304;;;19402:1403;;;:::o;20811:191::-;20851:3;20870:20;20888:1;20870:20;:::i;:::-;20865:25;;20904:20;20922:1;20904:20;:::i;:::-;20899:25;;20947:1;20944;20940:9;20933:16;;20968:3;20965:1;20962:10;20959:36;;;20975:18;;:::i;:::-;20959:36;20811:191;;;;:::o;21008:173::-;21148:25;21144:1;21136:6;21132:14;21125:49;21008:173;:::o;21187:366::-;21329:3;21350:67;21414:2;21409:3;21350:67;:::i;:::-;21343:74;;21426:93;21515:3;21426:93;:::i;:::-;21544:2;21539:3;21535:12;21528:19;;21187:366;;;:::o;21559:419::-;21725:4;21763:2;21752:9;21748:18;21740:26;;21812:9;21806:4;21802:20;21798:1;21787:9;21783:17;21776:47;21840:131;21966:4;21840:131;:::i;:::-;21832:139;;21559:419;;;:::o;21984:181::-;22124:33;22120:1;22112:6;22108:14;22101:57;21984:181;:::o;22171:366::-;22313:3;22334:67;22398:2;22393:3;22334:67;:::i;:::-;22327:74;;22410:93;22499:3;22410:93;:::i;:::-;22528:2;22523:3;22519:12;22512:19;;22171:366;;;:::o;22543:419::-;22709:4;22747:2;22736:9;22732:18;22724:26;;22796:9;22790:4;22786:20;22782:1;22771:9;22767:17;22760:47;22824:131;22950:4;22824:131;:::i;:::-;22816:139;;22543:419;;;:::o;22968:86::-;23003:7;23043:4;23036:5;23032:16;23021:27;;22968:86;;;:::o;23060:188::-;23098:3;23117:18;23133:1;23117:18;:::i;:::-;23112:23;;23149:18;23165:1;23149:18;:::i;:::-;23144:23;;23190:1;23187;23183:9;23176:16;;23213:4;23208:3;23205:13;23202:39;;;23221:18;;:::i;:::-;23202:39;23060:188;;;;:::o;23254:171::-;23394:23;23390:1;23382:6;23378:14;23371:47;23254:171;:::o;23431:366::-;23573:3;23594:67;23658:2;23653:3;23594:67;:::i;:::-;23587:74;;23670:93;23759:3;23670:93;:::i;:::-;23788:2;23783:3;23779:12;23772:19;;23431:366;;;:::o;23803:419::-;23969:4;24007:2;23996:9;23992:18;23984:26;;24056:9;24050:4;24046:20;24042:1;24031:9;24027:17;24020:47;24084:131;24210:4;24084:131;:::i;:::-;24076:139;;23803:419;;;:::o;24228:442::-;24377:4;24415:2;24404:9;24400:18;24392:26;;24428:71;24496:1;24485:9;24481:17;24472:6;24428:71;:::i;:::-;24509:72;24577:2;24566:9;24562:18;24553:6;24509:72;:::i;:::-;24591;24659:2;24648:9;24644:18;24635:6;24591:72;:::i;:::-;24228:442;;;;;;:::o"},"methodIdentifiers":{"assets(uint256)":"cf35bdd0","disableActor(address)":"d5cbe157","getActor(address)":"4138d167","getAsset(uint256)":"eac8f5b8","getAssetCurrentHolder(uint256)":"026e2d8c","getAssetHolderHistory(uint256)":"6446e628","getTotalAssetNumber()":"43247d03","owner()":"8da5cb5b","registerActor(address,uint8)":"de7ac991","registerAsset(string,uint256,string)":"f742c5b0","renounceOwnership()":"715018a6","transferAsset(uint256,address)":"fa62ee8d","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"OnlyAssetOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"ActorDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum SupplyChainTracking.Role\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"ActorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"productId\",\"type\":\"uint256\"}],\"name\":\"AssetRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"productId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"AssetTransfered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"assets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"productId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"productType\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"productionDate\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"origin\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"currentHolder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_actor\",\"type\":\"address\"}],\"name\":\"disableActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_actor\",\"type\":\"address\"}],\"name\":\"getActor\",\"outputs\":[{\"internalType\":\"enum SupplyChainTracking.Role\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assetId\",\"type\":\"uint256\"}],\"name\":\"getAsset\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assetId\",\"type\":\"uint256\"}],\"name\":\"getAssetCurrentHolder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assetId\",\"type\":\"uint256\"}],\"name\":\"getAssetHolderHistory\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalAssetNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_actor\",\"type\":\"address\"},{\"internalType\":\"enum SupplyChainTracking.Role\",\"name\":\"_role\",\"type\":\"uint8\"}],\"name\":\"registerActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_productType\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_productionDate\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_origin\",\"type\":\"string\"}],\"name\":\"registerAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"transferAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"raphaelpg\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"disableActor(address)\":{\"params\":{\"_actor\":\"The Ethereum address of the actor being registered\"}},\"getActor(address)\":{\"params\":{\"_actor\":\"The Ethereum address of the actor being retrieved\"}},\"getAsset(uint256)\":{\"params\":{\"_assetId\":\"The ID of the asset being retrieved\"}},\"getAssetCurrentHolder(uint256)\":{\"params\":{\"_assetId\":\"The ID of the asset being retrieved\"}},\"getAssetHolderHistory(uint256)\":{\"params\":{\"_assetId\":\"The ID of the asset being retrieved\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerActor(address,uint8)\":{\"params\":{\"_actor\":\"The Ethereum address of the actor being registered\",\"_role\":\"The role of the actor being registered\"}},\"registerAsset(string,uint256,string)\":{\"params\":{\"_origin\":\"The origing of the new product in a string format, could be implemented as a enum list and retrieved from the producers directly\",\"_productType\":\"The type of the new product in a string format, could be implemented as a enum list optionnaly\",\"_productionDate\":\"The date of production of the new product in a Unix timestamp format\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferAsset(uint256,address)\":{\"params\":{\"_assetId\":\"The ID of the asset being transferred\",\"_newHolder\":\"The ethereum address of the next holder\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"SupplyChainTracking\",\"version\":1},\"userdoc\":{\"errors\":{\"OnlyAssetOwner()\":[{\"notice\":\"Defining specific errors\"}]},\"events\":{\"ActorRegistered(address,uint8)\":{\"notice\":\"List of events emitted by the functions\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Contract initialization. Here we initialized the variables to their starting values Msg.sender is passed as a param to the Ownable Contract to allow ownership functionnalities\"},\"disableActor(address)\":{\"notice\":\"Function to disable an actor\"},\"getActor(address)\":{\"notice\":\"Function to get an actor's data\"},\"getAsset(uint256)\":{\"notice\":\"Function to retrieve an asset's data providing it's ID (simple mapping getter does not return history array)\"},\"getAssetCurrentHolder(uint256)\":{\"notice\":\"Function to retrieve an asset's current holder providing it's ID\"},\"getAssetHolderHistory(uint256)\":{\"notice\":\"Function to retrieve an asset's holder history providing it's ID\"},\"getTotalAssetNumber()\":{\"notice\":\"Function to retrieve total number of assets\"},\"registerActor(address,uint8)\":{\"notice\":\"Function to register an actor Call the function again to modify the role of an already registered actor\"},\"registerAsset(string,uint256,string)\":{\"notice\":\"Function to register an asset\"},\"transferAsset(uint256,address)\":{\"notice\":\"Function to transfer an asset to the next actor\"}},\"notice\":\"Simple Supply Chain Tracking contract Contract inherit from OpenZeppelin Ownable.sol contract to provide ownership functionnalities Visit https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SupplyChainTracking.sol\":\"SupplyChainTracking\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867\",\"dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY\"]},\"contracts/SupplyChainTracking.sol\":{\"keccak256\":\"0xb975d155c284d994c04dbf40997a6e1337d44cec2cd1fb3feb7d8b254264a877\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1a75968b33d22a82bbf109a33b517304a3b21c8312eb0ed91b78ff13d34941e3\",\"dweb:/ipfs/QmYmsWRAXemfbEHtiar6i5kxv9qQb2nLfR9shdxLMu5Mja\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/artifacts/contracts/SupplyChainTracking.sol/SupplyChainTracking.dbg.json b/artifacts/contracts/SupplyChainTracking.sol/SupplyChainTracking.dbg.json new file mode 100644 index 0000000..71c4b34 --- /dev/null +++ b/artifacts/contracts/SupplyChainTracking.sol/SupplyChainTracking.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "..\\..\\build-info\\f54596849a897a67ea2e588cc2693605.json" +} diff --git a/artifacts/contracts/SupplyChainTracking.sol/SupplyChainTracking.json b/artifacts/contracts/SupplyChainTracking.sol/SupplyChainTracking.json new file mode 100644 index 0000000..849c160 --- /dev/null +++ b/artifacts/contracts/SupplyChainTracking.sol/SupplyChainTracking.json @@ -0,0 +1,390 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SupplyChainTracking", + "sourceName": "contracts/SupplyChainTracking.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyAssetOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "actor", + "type": "address" + } + ], + "name": "ActorDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "actor", + "type": "address" + }, + { + "indexed": false, + "internalType": "enum SupplyChainTracking.Role", + "name": "role", + "type": "uint8" + } + ], + "name": "ActorRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "productId", + "type": "uint256" + } + ], + "name": "AssetRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "productId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "AssetTransfered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "assets", + "outputs": [ + { + "internalType": "uint256", + "name": "productId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "productType", + "type": "string" + }, + { + "internalType": "uint256", + "name": "productionDate", + "type": "uint256" + }, + { + "internalType": "string", + "name": "origin", + "type": "string" + }, + { + "internalType": "address", + "name": "currentHolder", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_actor", + "type": "address" + } + ], + "name": "disableActor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_actor", + "type": "address" + } + ], + "name": "getActor", + "outputs": [ + { + "internalType": "enum SupplyChainTracking.Role", + "name": "", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_assetId", + "type": "uint256" + } + ], + "name": "getAsset", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "string", + "name": "", + "type": "string" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_assetId", + "type": "uint256" + } + ], + "name": "getAssetCurrentHolder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_assetId", + "type": "uint256" + } + ], + "name": "getAssetHolderHistory", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalAssetNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_actor", + "type": "address" + }, + { + "internalType": "enum SupplyChainTracking.Role", + "name": "_role", + "type": "uint8" + } + ], + "name": "registerActor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_productType", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_productionDate", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_origin", + "type": "string" + } + ], + "name": "registerAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_assetId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_newHolder", + "type": "address" + } + ], + "name": "transferAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000885760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200007f9190620001b0565b60405180910390fd5b6200009981620000a760201b60201c565b5060018081905550620001cd565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000198826200016b565b9050919050565b620001aa816200018b565b82525050565b6000602082019050620001c760008301846200019f565b92915050565b61211780620001dd6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063cf35bdd01161008c578063eac8f5b811610066578063eac8f5b814610217578063f2fde38b1461024b578063f742c5b014610267578063fa62ee8d14610283576100cf565b8063cf35bdd0146101ab578063d5cbe157146101df578063de7ac991146101fb576100cf565b8063026e2d8c146100d45780634138d1671461010457806343247d03146101355780636446e62814610153578063715018a6146101835780638da5cb5b1461018d575b600080fd5b6100ee60048036038101906100e99190611445565b61029f565b6040516100fb91906114b3565b60405180910390f35b61011e600480360381019061011991906114fa565b610330565b60405161012c9291906115b9565b60405180910390f35b61013d6103e4565b60405161014a91906115f1565b60405180910390f35b61016d60048036038101906101689190611445565b6103f9565b60405161017a91906116ca565b60405180910390f35b61018b6104ee565b005b610195610502565b6040516101a291906114b3565b60405180910390f35b6101c560048036038101906101c09190611445565b61052b565b6040516101d695949392919061177c565b60405180910390f35b6101f960048036038101906101f491906114fa565b610691565b005b61021560048036038101906102109190611802565b61072e565b005b610231600480360381019061022c9190611445565b61082f565b604051610242959493929190611842565b60405180910390f35b610265600480360381019061026091906114fa565b610acd565b005b610281600480360381019061027c919061190f565b610b53565b005b61029d600480360381019061029891906119a4565b610e52565b005b6000600182101580156102b3575060015482105b6102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e990611a56565b60405180910390fd5b6003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008061033b6112b2565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1691509150915091565b6000600180546103f49190611aa5565b905090565b60606001821015801561040d575060015482105b61044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390611a56565b60405180910390fd5b600360008381526020019081526020016000206005018054806020026020016040519081016040528092919081815260200182805480156104e257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610498575b50505050509050919050565b6104f66112b2565b6105006000611339565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360205280600052604060002060009150905080600001549080600101805461055490611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461058090611b08565b80156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050908060020154908060030180546105e890611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461061490611b08565b80156106615780601f1061063657610100808354040283529160200191610661565b820191906000526020600020905b81548152906001019060200180831161064457829003601f168201915b5050505050908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b6106996112b2565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055507f6104c637b94c6924ba582f11d228cf3203eb42d40b94a3ab64e60006032a93d58160405161072391906114b3565b60405180910390a150565b6107366112b2565b604051806040016040528082600381111561075457610753611527565b5b815260200160011515815250600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360038111156107ca576107c9611527565b5b021790555060208201518160000160016101000a81548160ff0219169083151502179055509050507f9d298435d839e75ea5c40e98fc6aa208cc7c2a9ba6ffb5d9703e179bcf1b248e8282604051610823929190611b39565b60405180910390a15050565b606060006060600060606001861015801561084b575060015486105b61088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088190611a56565b60405180910390fd5b60036000878152602001908152602001600020600101600360008881526020019081526020016000206002015460036000898152602001908152602001600020600301600360008a815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008b815260200190815260200160002060050184805461092690611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461095290611b08565b801561099f5780601f106109745761010080835404028352916020019161099f565b820191906000526020600020905b81548152906001019060200180831161098257829003601f168201915b505050505094508280546109b290611b08565b80601f01602080910402602001604051908101604052809291908181526020018280546109de90611b08565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050925080805480602002602001604051908101604052809291908181526020018280548015610ab357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a69575b505050505090509450945094509450945091939590929450565b610ad56112b2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b475760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b3e91906114b3565b60405180910390fd5b610b5081611339565b50565b600033905060011515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590611bae565b60405180910390fd5b60006003811115610c0257610c01611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115610c6457610c63611527565b5b14610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90611c1a565b60405180910390fd5b600060015490508060036000838152602001908152602001600020600001819055508686600360008481526020019081526020016000206001019182610ceb929190611e20565b508460036000838152602001908152602001600020600201819055508383600360008481526020019081526020016000206003019182610d2c929190611e20565b50816003600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000828152602001908152602001600020600501829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001806000828254610e0b9190611ef0565b925050819055507fcc7b4929606ce963ba54b6a998f106f7748e78c03dc7f08fd77aeb28230eb2d381604051610e4191906115f1565b60405180910390a150505050505050565b813373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f1d08eb6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600033905060018410158015610f05575060015484105b610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90611a56565b60405180910390fd5b60011515600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190611f70565b60405180910390fd5b600380811115610fed57610fec611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561104f5761104e611527565b5b0361108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690611fdc565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156110f3576110f2611527565b5b6110fd9190612009565b60ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561116257611161611527565b5b60ff16146111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c9061208a565b60405180910390fd5b826003600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000858152602001908152602001600020600501839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffb1218ff291ccbefa25b58131603cc93001ff09f257940a8896e43c4d36b446e8482856040516112a4939291906120aa565b60405180910390a150505050565b6112ba6113fd565b73ffffffffffffffffffffffffffffffffffffffff166112d8610502565b73ffffffffffffffffffffffffffffffffffffffff1614611337576112fb6113fd565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161132e91906114b3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600080fd5b6000819050919050565b6114228161140f565b811461142d57600080fd5b50565b60008135905061143f81611419565b92915050565b60006020828403121561145b5761145a611405565b5b600061146984828501611430565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061149d82611472565b9050919050565b6114ad81611492565b82525050565b60006020820190506114c860008301846114a4565b92915050565b6114d781611492565b81146114e257600080fd5b50565b6000813590506114f4816114ce565b92915050565b6000602082840312156115105761150f611405565b5b600061151e848285016114e5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061156757611566611527565b5b50565b600081905061157882611556565b919050565b60006115888261156a565b9050919050565b6115988161157d565b82525050565b60008115159050919050565b6115b38161159e565b82525050565b60006040820190506115ce600083018561158f565b6115db60208301846115aa565b9392505050565b6115eb8161140f565b82525050565b600060208201905061160660008301846115e2565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61164181611492565b82525050565b60006116538383611638565b60208301905092915050565b6000602082019050919050565b60006116778261160c565b6116818185611617565b935061168c83611628565b8060005b838110156116bd5781516116a48882611647565b97506116af8361165f565b925050600181019050611690565b5085935050505092915050565b600060208201905081810360008301526116e4818461166c565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561172657808201518184015260208101905061170b565b60008484015250505050565b6000601f19601f8301169050919050565b600061174e826116ec565b61175881856116f7565b9350611768818560208601611708565b61177181611732565b840191505092915050565b600060a08201905061179160008301886115e2565b81810360208301526117a38187611743565b90506117b260408301866115e2565b81810360608301526117c48185611743565b90506117d360808301846114a4565b9695505050505050565b600481106117ea57600080fd5b50565b6000813590506117fc816117dd565b92915050565b6000806040838503121561181957611818611405565b5b6000611827858286016114e5565b9250506020611838858286016117ed565b9150509250929050565b600060a082019050818103600083015261185c8188611743565b905061186b60208301876115e2565b818103604083015261187d8186611743565b905061188c60608301856114a4565b818103608083015261189e818461166c565b90509695505050505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126118cf576118ce6118aa565b5b8235905067ffffffffffffffff8111156118ec576118eb6118af565b5b602083019150836001820283011115611908576119076118b4565b5b9250929050565b60008060008060006060868803121561192b5761192a611405565b5b600086013567ffffffffffffffff8111156119495761194861140a565b5b611955888289016118b9565b9550955050602061196888828901611430565b935050604086013567ffffffffffffffff8111156119895761198861140a565b5b611995888289016118b9565b92509250509295509295909350565b600080604083850312156119bb576119ba611405565b5b60006119c985828601611430565b92505060206119da858286016114e5565b9150509250929050565b7f4173736574204944206d7573742062652077697468696e2076616c696420726160008201527f6e67650000000000000000000000000000000000000000000000000000000000602082015250565b6000611a406023836116f7565b9150611a4b826119e4565b604082019050919050565b60006020820190508181036000830152611a6f81611a33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ab08261140f565b9150611abb8361140f565b9250828203905081811115611ad357611ad2611a76565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2057607f821691505b602082108103611b3357611b32611ad9565b5b50919050565b6000604082019050611b4e60008301856114a4565b611b5b602083018461158f565b9392505050565b7f4163746f72206e6f7420656e61626c6564000000000000000000000000000000600082015250565b6000611b986011836116f7565b9150611ba382611b62565b602082019050919050565b60006020820190508181036000830152611bc781611b8b565b9050919050565b7f4163746f72277320726f6c65206d7573742062652050726f6475636572000000600082015250565b6000611c04601d836116f7565b9150611c0f82611bce565b602082019050919050565b60006020820190508181036000830152611c3381611bf7565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cd67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c99565b611ce08683611c99565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d1d611d18611d138461140f565b611cf8565b61140f565b9050919050565b6000819050919050565b611d3783611d02565b611d4b611d4382611d24565b848454611ca6565b825550505050565b600090565b611d60611d53565b611d6b818484611d2e565b505050565b5b81811015611d8f57611d84600082611d58565b600181019050611d71565b5050565b601f821115611dd457611da581611c74565b611dae84611c89565b81016020851015611dbd578190505b611dd1611dc985611c89565b830182611d70565b50505b505050565b600082821c905092915050565b6000611df760001984600802611dd9565b1980831691505092915050565b6000611e108383611de6565b9150826002028217905092915050565b611e2a8383611c3a565b67ffffffffffffffff811115611e4357611e42611c45565b5b611e4d8254611b08565b611e58828285611d93565b6000601f831160018114611e875760008415611e75578287013590505b611e7f8582611e04565b865550611ee7565b601f198416611e9586611c74565b60005b82811015611ebd57848901358255600182019150602085019450602081019050611e98565b86831015611eda5784890135611ed6601f891682611de6565b8355505b6001600288020188555050505b50505050505050565b6000611efb8261140f565b9150611f068361140f565b9250828201905080821115611f1e57611f1d611a76565b5b92915050565b7f4e657874206f776e6572206973206e6f742076616c6964000000000000000000600082015250565b6000611f5a6017836116f7565b9150611f6582611f24565b602082019050919050565b60006020820190508181036000830152611f8981611f4d565b9050919050565b7f436f6e73756d65722063616e206e6f74207472616e7366657220617373657400600082015250565b6000611fc6601f836116f7565b9150611fd182611f90565b602082019050919050565b60006020820190508181036000830152611ff581611fb9565b9050919050565b600060ff82169050919050565b600061201482611ffc565b915061201f83611ffc565b9250828201905060ff81111561203857612037611a76565b5b92915050565b7f57726f6e67206e657874206f776e657220726f6c650000000000000000000000600082015250565b60006120746015836116f7565b915061207f8261203e565b602082019050919050565b600060208201905081810360008301526120a381612067565b9050919050565b60006060820190506120bf60008301866115e2565b6120cc60208301856114a4565b6120d960408301846114a4565b94935050505056fea264697066735822122004254f201e3063d0071daf387aff10e75d1f05df7863fa056337ae762e1c7e5664736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063cf35bdd01161008c578063eac8f5b811610066578063eac8f5b814610217578063f2fde38b1461024b578063f742c5b014610267578063fa62ee8d14610283576100cf565b8063cf35bdd0146101ab578063d5cbe157146101df578063de7ac991146101fb576100cf565b8063026e2d8c146100d45780634138d1671461010457806343247d03146101355780636446e62814610153578063715018a6146101835780638da5cb5b1461018d575b600080fd5b6100ee60048036038101906100e99190611445565b61029f565b6040516100fb91906114b3565b60405180910390f35b61011e600480360381019061011991906114fa565b610330565b60405161012c9291906115b9565b60405180910390f35b61013d6103e4565b60405161014a91906115f1565b60405180910390f35b61016d60048036038101906101689190611445565b6103f9565b60405161017a91906116ca565b60405180910390f35b61018b6104ee565b005b610195610502565b6040516101a291906114b3565b60405180910390f35b6101c560048036038101906101c09190611445565b61052b565b6040516101d695949392919061177c565b60405180910390f35b6101f960048036038101906101f491906114fa565b610691565b005b61021560048036038101906102109190611802565b61072e565b005b610231600480360381019061022c9190611445565b61082f565b604051610242959493929190611842565b60405180910390f35b610265600480360381019061026091906114fa565b610acd565b005b610281600480360381019061027c919061190f565b610b53565b005b61029d600480360381019061029891906119a4565b610e52565b005b6000600182101580156102b3575060015482105b6102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e990611a56565b60405180910390fd5b6003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008061033b6112b2565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1691509150915091565b6000600180546103f49190611aa5565b905090565b60606001821015801561040d575060015482105b61044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390611a56565b60405180910390fd5b600360008381526020019081526020016000206005018054806020026020016040519081016040528092919081815260200182805480156104e257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610498575b50505050509050919050565b6104f66112b2565b6105006000611339565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360205280600052604060002060009150905080600001549080600101805461055490611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461058090611b08565b80156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050908060020154908060030180546105e890611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461061490611b08565b80156106615780601f1061063657610100808354040283529160200191610661565b820191906000526020600020905b81548152906001019060200180831161064457829003601f168201915b5050505050908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b6106996112b2565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055507f6104c637b94c6924ba582f11d228cf3203eb42d40b94a3ab64e60006032a93d58160405161072391906114b3565b60405180910390a150565b6107366112b2565b604051806040016040528082600381111561075457610753611527565b5b815260200160011515815250600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360038111156107ca576107c9611527565b5b021790555060208201518160000160016101000a81548160ff0219169083151502179055509050507f9d298435d839e75ea5c40e98fc6aa208cc7c2a9ba6ffb5d9703e179bcf1b248e8282604051610823929190611b39565b60405180910390a15050565b606060006060600060606001861015801561084b575060015486105b61088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088190611a56565b60405180910390fd5b60036000878152602001908152602001600020600101600360008881526020019081526020016000206002015460036000898152602001908152602001600020600301600360008a815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008b815260200190815260200160002060050184805461092690611b08565b80601f016020809104026020016040519081016040528092919081815260200182805461095290611b08565b801561099f5780601f106109745761010080835404028352916020019161099f565b820191906000526020600020905b81548152906001019060200180831161098257829003601f168201915b505050505094508280546109b290611b08565b80601f01602080910402602001604051908101604052809291908181526020018280546109de90611b08565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050925080805480602002602001604051908101604052809291908181526020018280548015610ab357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a69575b505050505090509450945094509450945091939590929450565b610ad56112b2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b475760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b3e91906114b3565b60405180910390fd5b610b5081611339565b50565b600033905060011515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590611bae565b60405180910390fd5b60006003811115610c0257610c01611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115610c6457610c63611527565b5b14610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90611c1a565b60405180910390fd5b600060015490508060036000838152602001908152602001600020600001819055508686600360008481526020019081526020016000206001019182610ceb929190611e20565b508460036000838152602001908152602001600020600201819055508383600360008481526020019081526020016000206003019182610d2c929190611e20565b50816003600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000828152602001908152602001600020600501829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001806000828254610e0b9190611ef0565b925050819055507fcc7b4929606ce963ba54b6a998f106f7748e78c03dc7f08fd77aeb28230eb2d381604051610e4191906115f1565b60405180910390a150505050505050565b813373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f1d08eb6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600033905060018410158015610f05575060015484105b610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90611a56565b60405180910390fd5b60011515600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151514610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190611f70565b60405180910390fd5b600380811115610fed57610fec611527565b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561104f5761104e611527565b5b0361108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690611fdc565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156110f3576110f2611527565b5b6110fd9190612009565b60ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561116257611161611527565b5b60ff16146111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c9061208a565b60405180910390fd5b826003600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000858152602001908152602001600020600501839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffb1218ff291ccbefa25b58131603cc93001ff09f257940a8896e43c4d36b446e8482856040516112a4939291906120aa565b60405180910390a150505050565b6112ba6113fd565b73ffffffffffffffffffffffffffffffffffffffff166112d8610502565b73ffffffffffffffffffffffffffffffffffffffff1614611337576112fb6113fd565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161132e91906114b3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600080fd5b6000819050919050565b6114228161140f565b811461142d57600080fd5b50565b60008135905061143f81611419565b92915050565b60006020828403121561145b5761145a611405565b5b600061146984828501611430565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061149d82611472565b9050919050565b6114ad81611492565b82525050565b60006020820190506114c860008301846114a4565b92915050565b6114d781611492565b81146114e257600080fd5b50565b6000813590506114f4816114ce565b92915050565b6000602082840312156115105761150f611405565b5b600061151e848285016114e5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061156757611566611527565b5b50565b600081905061157882611556565b919050565b60006115888261156a565b9050919050565b6115988161157d565b82525050565b60008115159050919050565b6115b38161159e565b82525050565b60006040820190506115ce600083018561158f565b6115db60208301846115aa565b9392505050565b6115eb8161140f565b82525050565b600060208201905061160660008301846115e2565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61164181611492565b82525050565b60006116538383611638565b60208301905092915050565b6000602082019050919050565b60006116778261160c565b6116818185611617565b935061168c83611628565b8060005b838110156116bd5781516116a48882611647565b97506116af8361165f565b925050600181019050611690565b5085935050505092915050565b600060208201905081810360008301526116e4818461166c565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561172657808201518184015260208101905061170b565b60008484015250505050565b6000601f19601f8301169050919050565b600061174e826116ec565b61175881856116f7565b9350611768818560208601611708565b61177181611732565b840191505092915050565b600060a08201905061179160008301886115e2565b81810360208301526117a38187611743565b90506117b260408301866115e2565b81810360608301526117c48185611743565b90506117d360808301846114a4565b9695505050505050565b600481106117ea57600080fd5b50565b6000813590506117fc816117dd565b92915050565b6000806040838503121561181957611818611405565b5b6000611827858286016114e5565b9250506020611838858286016117ed565b9150509250929050565b600060a082019050818103600083015261185c8188611743565b905061186b60208301876115e2565b818103604083015261187d8186611743565b905061188c60608301856114a4565b818103608083015261189e818461166c565b90509695505050505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126118cf576118ce6118aa565b5b8235905067ffffffffffffffff8111156118ec576118eb6118af565b5b602083019150836001820283011115611908576119076118b4565b5b9250929050565b60008060008060006060868803121561192b5761192a611405565b5b600086013567ffffffffffffffff8111156119495761194861140a565b5b611955888289016118b9565b9550955050602061196888828901611430565b935050604086013567ffffffffffffffff8111156119895761198861140a565b5b611995888289016118b9565b92509250509295509295909350565b600080604083850312156119bb576119ba611405565b5b60006119c985828601611430565b92505060206119da858286016114e5565b9150509250929050565b7f4173736574204944206d7573742062652077697468696e2076616c696420726160008201527f6e67650000000000000000000000000000000000000000000000000000000000602082015250565b6000611a406023836116f7565b9150611a4b826119e4565b604082019050919050565b60006020820190508181036000830152611a6f81611a33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ab08261140f565b9150611abb8361140f565b9250828203905081811115611ad357611ad2611a76565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2057607f821691505b602082108103611b3357611b32611ad9565b5b50919050565b6000604082019050611b4e60008301856114a4565b611b5b602083018461158f565b9392505050565b7f4163746f72206e6f7420656e61626c6564000000000000000000000000000000600082015250565b6000611b986011836116f7565b9150611ba382611b62565b602082019050919050565b60006020820190508181036000830152611bc781611b8b565b9050919050565b7f4163746f72277320726f6c65206d7573742062652050726f6475636572000000600082015250565b6000611c04601d836116f7565b9150611c0f82611bce565b602082019050919050565b60006020820190508181036000830152611c3381611bf7565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cd67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c99565b611ce08683611c99565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d1d611d18611d138461140f565b611cf8565b61140f565b9050919050565b6000819050919050565b611d3783611d02565b611d4b611d4382611d24565b848454611ca6565b825550505050565b600090565b611d60611d53565b611d6b818484611d2e565b505050565b5b81811015611d8f57611d84600082611d58565b600181019050611d71565b5050565b601f821115611dd457611da581611c74565b611dae84611c89565b81016020851015611dbd578190505b611dd1611dc985611c89565b830182611d70565b50505b505050565b600082821c905092915050565b6000611df760001984600802611dd9565b1980831691505092915050565b6000611e108383611de6565b9150826002028217905092915050565b611e2a8383611c3a565b67ffffffffffffffff811115611e4357611e42611c45565b5b611e4d8254611b08565b611e58828285611d93565b6000601f831160018114611e875760008415611e75578287013590505b611e7f8582611e04565b865550611ee7565b601f198416611e9586611c74565b60005b82811015611ebd57848901358255600182019150602085019450602081019050611e98565b86831015611eda5784890135611ed6601f891682611de6565b8355505b6001600288020188555050505b50505050505050565b6000611efb8261140f565b9150611f068361140f565b9250828201905080821115611f1e57611f1d611a76565b5b92915050565b7f4e657874206f776e6572206973206e6f742076616c6964000000000000000000600082015250565b6000611f5a6017836116f7565b9150611f6582611f24565b602082019050919050565b60006020820190508181036000830152611f8981611f4d565b9050919050565b7f436f6e73756d65722063616e206e6f74207472616e7366657220617373657400600082015250565b6000611fc6601f836116f7565b9150611fd182611f90565b602082019050919050565b60006020820190508181036000830152611ff581611fb9565b9050919050565b600060ff82169050919050565b600061201482611ffc565b915061201f83611ffc565b9250828201905060ff81111561203857612037611a76565b5b92915050565b7f57726f6e67206e657874206f776e657220726f6c650000000000000000000000600082015250565b60006120746015836116f7565b915061207f8261203e565b602082019050919050565b600060208201905081810360008301526120a381612067565b9050919050565b60006060820190506120bf60008301866115e2565b6120cc60208301856114a4565b6120d960408301846114a4565b94935050505056fea264697066735822122004254f201e3063d0071daf387aff10e75d1f05df7863fa056337ae762e1c7e5664736f6c63430008140033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json new file mode 100644 index 0000000..62110c1 --- /dev/null +++ b/cache/solidity-files-cache.json @@ -0,0 +1,117 @@ +{ + "_format": "hh-sol-cache-2", + "files": { + "C:\\Users\\rapha\\Documents\\IT\\Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge\\contracts\\SupplyChainTracking.sol": { + "lastModificationDate": 1697040296571, + "contentHash": "b2c10a6ba1f1801b87eb223ce20743a0", + "sourceName": "contracts/SupplyChainTracking.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "evmVersion": "paris", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/access/Ownable.sol" + ], + "versionPragmas": [ + "^0.8.2" + ], + "artifacts": [ + "SupplyChainTracking" + ] + }, + "C:\\Users\\rapha\\Documents\\IT\\Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge\\node_modules\\@openzeppelin\\contracts\\access\\Ownable.sol": { + "lastModificationDate": 1697040581955, + "contentHash": "d3c790edc9ccf808a17c5a6cd13614fd", + "sourceName": "@openzeppelin/contracts/access/Ownable.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "evmVersion": "paris", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../utils/Context.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Ownable" + ] + }, + "C:\\Users\\rapha\\Documents\\IT\\Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge\\node_modules\\@openzeppelin\\contracts\\utils\\Context.sol": { + "lastModificationDate": 1697040581818, + "contentHash": "01c847e2af51f468cb66d9ed83bc3cec", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "evmVersion": "paris", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Context" + ] + } + } +} diff --git a/contracts/SupplyChainTracking.sol b/contracts/SupplyChainTracking.sol new file mode 100644 index 0000000..748b2ea --- /dev/null +++ b/contracts/SupplyChainTracking.sol @@ -0,0 +1,247 @@ +//SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.2; + +import "@openzeppelin/contracts/access/Ownable.sol"; + +/** + * @title SupplyChainTracking + * @author raphaelpg + * @notice Simple Supply Chain Tracking contract + * Contract inherit from OpenZeppelin Ownable.sol contract to provide ownership functionnalities + * Visit https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + */ +contract SupplyChainTracking is Ownable { + + /** + * Contract state variables. + */ + uint assetCounter; // asset Id counter, incremented when a new asset is registered + + /** + * Possible roles of the actors + * For example, to set an actor role as a Producer, actor's role must be registered as 0 + */ + enum Role { + Producer, + Carrier, + Retailer, + Consumer + } + + /** + * Defining the struct variables Actor and Asset + * Actor will be using the Role defined above + */ + struct Actor { + Role role; + bool active; + } + + /** + * For simplicity here we define the Type and Origin of a product as a string + */ + struct Asset { + uint productId; + string productType; + uint256 productionDate; // Date in Unix timestamp format + string origin; + address currentHolder; + address[] holderHistory; + } + + /** + * Mappings to store actors and assets + */ + mapping(address => Actor) private actors; + mapping(uint => Asset) public assets; + + /** + * List of events emitted by the functions + */ + event ActorRegistered(address actor, Role role); + event ActorDisabled(address actor); + event AssetRegistered(uint productId); + event AssetTransfered(uint productId, address _from, address _to); + + /** + * Defining specific errors + */ + error OnlyAssetOwner(); + + /** + * Contract initialization. + * Here we initialized the variables to their starting values + * Msg.sender is passed as a param to the Ownable Contract to allow ownership functionnalities + */ + constructor() + Ownable(msg.sender) + { + /** + * We start the asset counter at 1 for clarity purposes and ease security checks: + * First asset ID will start at 1 avoinding possible confusion arround arrays first element + * Assets ids below 1 and above assetCounter won't be returned by the get function + */ + assetCounter = 1; + } + + /** + * Custom modifiers can be created and applied on any functions + * Here we can apply this modifier to restrict the use of the function by the owner of the contract only + * @dev Throws if called by any account other than the owner. + */ + modifier onlyAssetOwner(uint _assetId) { + if (assets[_assetId].currentHolder != msg.sender) revert OnlyAssetOwner(); + _; + } + + /** + * Contract functions. + */ + /** + * Function to register an actor + * Call the function again to modify the role of an already registered actor + * @param _actor The Ethereum address of the actor being registered + * @param _role The role of the actor being registered + */ + function registerActor(address _actor, Role _role) + public + onlyOwner + { + actors[_actor] = Actor(_role, true); + emit ActorRegistered(_actor, _role); + } + + /** + * Function to disable an actor + * @param _actor The Ethereum address of the actor being registered + */ + function disableActor(address _actor) + public + onlyOwner + { + actors[_actor].active = false; + emit ActorDisabled(_actor); + } + + /** + * Function to get an actor's data + * @param _actor The Ethereum address of the actor being retrieved + */ + function getActor(address _actor) + public + view + onlyOwner + returns (Role, bool) + { + return ( + actors[_actor].role, + actors[_actor].active + ); + } + + /** + * Function to register an asset + * @param _productType The type of the new product in a string format, could be implemented as a enum list optionnaly + * @param _productionDate The date of production of the new product in a Unix timestamp format + * @param _origin The origing of the new product in a string format, could be implemented as a enum list and retrieved from the producers directly + */ + function registerAsset(string calldata _productType, uint256 _productionDate, string calldata _origin) + public + { + address _actor = msg.sender; + require(actors[_actor].active == true, "Actor not enabled"); + require(actors[_actor].role == Role.Producer, "Actor's role must be Producer"); + + uint _currentAssetId = assetCounter; + assets[_currentAssetId].productId = _currentAssetId; + assets[_currentAssetId].productType = _productType; + assets[_currentAssetId].productionDate = _productionDate; + assets[_currentAssetId].origin = _origin; + assets[_currentAssetId].currentHolder = _actor; + assets[_currentAssetId].holderHistory.push(_actor); + + assetCounter += 1; + emit AssetRegistered(_currentAssetId); + } + + /** + * Function to retrieve total number of assets + */ + function getTotalAssetNumber() + public + view + returns (uint) + { + return (assetCounter - 1); + } + + + /** + * Function to retrieve an asset's data providing it's ID (simple mapping getter does not return history array) + * @param _assetId The ID of the asset being retrieved + */ + function getAsset(uint _assetId) + public + view + returns (string memory, uint256, string memory, address, address[] memory) + { + require(_assetId >= 1 && _assetId < assetCounter, "Asset ID must be within valid range"); + return ( + assets[_assetId].productType, + assets[_assetId].productionDate, + assets[_assetId].origin, + assets[_assetId].currentHolder, + assets[_assetId].holderHistory + ); + } + + /** + * Function to retrieve an asset's current holder providing it's ID + * @param _assetId The ID of the asset being retrieved + */ + function getAssetCurrentHolder(uint _assetId) + public + view + returns (address) + { + require(_assetId >= 1 && _assetId < assetCounter, "Asset ID must be within valid range"); + return ( + assets[_assetId].currentHolder + ); + } + + /** + * Function to retrieve an asset's holder history providing it's ID + * @param _assetId The ID of the asset being retrieved + */ + function getAssetHolderHistory(uint _assetId) + public + view + returns (address[] memory) + { + require(_assetId >= 1 && _assetId < assetCounter, "Asset ID must be within valid range"); + return ( + assets[_assetId].holderHistory + ); + } + + /** + * Function to transfer an asset to the next actor + * @param _assetId The ID of the asset being transferred + * @param _newHolder The ethereum address of the next holder + */ + function transferAsset(uint _assetId, address _newHolder) + public + onlyAssetOwner(_assetId) + { + address currentHolder = msg.sender; + require(_assetId >= 1 && _assetId < assetCounter, "Asset ID must be within valid range"); + require(actors[_newHolder].active == true, "Next owner is not valid"); + require(actors[currentHolder].role != Role.Consumer, "Consumer can not transfer asset"); + require(uint8(actors[_newHolder].role) == uint8(actors[currentHolder].role) + 1, "Wrong next owner role"); + + assets[_assetId].currentHolder = _newHolder; + assets[_assetId].holderHistory.push(_newHolder); + emit AssetTransfered(_assetId, currentHolder, _newHolder); + } +} \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js new file mode 100644 index 0000000..ea22f59 --- /dev/null +++ b/hardhat.config.js @@ -0,0 +1,6 @@ +require("@nomicfoundation/hardhat-toolbox"); + +/** @type import('hardhat/config').HardhatUserConfig */ +module.exports = { + solidity: "0.8.20", +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..13655b7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7408 @@ +{ + "name": "blockchain-supply-chain-tracking-assets-in-solidity-coding-challenge", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "blockchain-supply-chain-tracking-assets-in-solidity-coding-challenge", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@openzeppelin/contracts": "^5.0.0" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "hardhat": "^2.18.1" + } + }, + "node_modules/@adraffy/ens-normalize": { + "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 + }, + "node_modules/@chainsafe/as-sha256": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", + "dev": true + }, + "node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@chainsafe/ssz": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.4.2", + "case": "^1.6.3" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "peer": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "peer": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "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==", + "dev": true, + "peer": true, + "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", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/json-wallets/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/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", + "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@noble/curves": { + "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.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", + "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", + "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-ethash": "3.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", + "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.2", + "crc-32": "^1.2.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", + "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", + "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", + "dev": true, + "dependencies": { + "@ethersproject/providers": "^5.7.1", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", + "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", + "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", + "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", + "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.9.2", + "@ethersproject/providers": "^5.7.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", + "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.10.0", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", + "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", + "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.5.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", + "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.2.tgz", + "integrity": "sha512-9Wu9mRtkj0U9ohgXYFbB/RQDa+PcEdyBm2suyEtsJf3PqzZEEjLUZgWnMjlFhATMk/fp3BjmnYVPrwl+gr8oEw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "chai": "^4.2.0", + "ethers": "^6.1.0", + "hardhat": "^2.9.4" + } + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.1.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.9.tgz", + "integrity": "sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==", + "dev": true, + "peer": true, + "dependencies": { + "ethereumjs-util": "^7.1.4" + }, + "peerDependencies": { + "hardhat": "^2.9.5" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-3.0.0.tgz", + "integrity": "sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==", + "dev": true, + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-verify": "^1.0.0", + "@typechain/ethers-v6": "^0.4.0", + "@typechain/hardhat": "^8.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=12.0.0", + "chai": "^4.2.0", + "ethers": "^6.4.0", + "hardhat": "^2.11.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": ">=8.0.0", + "typechain": "^8.2.0", + "typescript": ">=4.5.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-1.1.1.tgz", + "integrity": "sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA==", + "dev": true, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.4" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@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==" + }, + "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==", + "dev": true, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "peer": true + }, + "node_modules/@typechain/ethers-v6": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.4.3.tgz", + "integrity": "sha512-TrxBsyb4ryhaY9keP6RzhFCviWYApcLCIRMPyWaKp2cZZrfaM3QBoxXTnw/eO4+DAY3l+8O0brNW0WgeQeOiDA==", + "dev": true, + "peer": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.1", + "typescript": ">=4.7.0" + } + }, + "node_modules/@typechain/hardhat": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-8.0.3.tgz", + "integrity": "sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng==", + "dev": true, + "peer": true, + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@typechain/ethers-v6": "^0.4.3", + "ethers": "^6.1.0", + "hardhat": "^2.9.9", + "typechain": "^8.3.1" + } + }, + "node_modules/@typechain/hardhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typechain/hardhat/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@typechain/hardhat/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-/k+vesl92vMvMygmQrFe9Aimxi6oQXFUX9mA5HanTrKUSAMoLauSi6PNFOdRw0oeqilaW600GNx2vSaT2f8aIQ==", + "dev": true, + "peer": true + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.6.tgz", + "integrity": "sha512-cQLhk8fFarRVZAXUQV1xEnZgMoPxqKojBvRkqPCKPQCzEhpbbSKl1Uu75kDng7k5Ln6LQLUmNBjLlFthCgm1NA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "peer": true + }, + "node_modules/@types/mocha": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.2.tgz", + "integrity": "sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==", + "dev": true, + "peer": true + }, + "node_modules/@types/node": { + "version": "20.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz", + "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "peer": true + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true, + "peer": true + }, + "node_modules/@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-oN0PFsYxDZnX/qSJ5S5OwaEDTYfekhvaM5vqui2bu1AA39pKofmgL104Q29KiOXizXS2yLjSzc5YdTyMKdcy4A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true, + "peer": true + }, + "node_modules/abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true, + "peer": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true, + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "peer": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "peer": true + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "peer": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "peer": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dev": true, + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "node_modules/bigint-crypto-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "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/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "peer": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/case": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", + "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "peer": true + }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "peer": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "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, + "peer": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "peer": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "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, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/classic-level": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", + "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "peer": true, + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "peer": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "peer": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "peer": true + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true, + "peer": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "peer": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "peer": true, + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "peer": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "peer": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/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/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "peer": true, + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eth-gas-reporter": { + "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, + "peer": true, + "dependencies": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } + } + }, + "node_modules/eth-gas-reporter/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "peer": true, + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethers": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.8.0.tgz", + "integrity": "sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@noble/hashes": { + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true, + "peer": true + }, + "node_modules/ethers/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true, + "peer": true + }, + "node_modules/ethers/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "peer": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "peer": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "peer": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "peer": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "peer": 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==", + "dev": true, + "peer": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "peer": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "peer": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hardhat": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.18.1.tgz", + "integrity": "sha512-b55rW7Ka+fvJeg6oWuBTXoYQEUurevCCankjGNTwczwD3GnkhV9GEei7KUT+9IKmWx3lC+zyxlFxeDbg0gUoHw==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.2", + "@nomicfoundation/ethereumjs-blockchain": "7.0.2", + "@nomicfoundation/ethereumjs-common": "4.0.2", + "@nomicfoundation/ethereumjs-evm": "2.0.2", + "@nomicfoundation/ethereumjs-rlp": "5.0.2", + "@nomicfoundation/ethereumjs-statemanager": "2.0.2", + "@nomicfoundation/ethereumjs-trie": "6.0.2", + "@nomicfoundation/ethereumjs-tx": "5.0.2", + "@nomicfoundation/ethereumjs-util": "9.0.2", + "@nomicfoundation/ethereumjs-vm": "7.0.2", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-gas-reporter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", + "dev": true, + "peer": true, + "dependencies": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "peer": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "peer": true, + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "peer": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "peer": true + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "peer": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "peer": true + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/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, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "dev": true, + "dependencies": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/level" + } + }, + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "peer": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true, + "peer": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "peer": true + }, + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true, + "peer": true + }, + "node_modules/mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true, + "peer": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "peer": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "peer": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "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==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "peer": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "peer": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "peer": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "peer": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true, + "peer": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true, + "peer": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "peer": true + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "peer": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "peer": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "peer": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "peer": true, + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "peer": true, + "dependencies": { + "req-from": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "peer": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "peer": true, + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "peer": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true, + "peer": true + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "peer": true, + "dependencies": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-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/slice-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/slice-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/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solidity-coverage": { + "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, + "peer": true, + "dependencies": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.16.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "detect-port": "^1.3.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "mocha": "10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" + } + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "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", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "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, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "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==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "peer": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "peer": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "peer": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "peer": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "peer": true, + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "peer": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "peer": true + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-command-line-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/ts-command-line-args/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-command-line-args/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/ts-command-line-args/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-command-line-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typechain": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.1.tgz", + "integrity": "sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "peer": true + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.0.tgz", + "integrity": "sha512-MLqGMyaJk2ubSl7FrmWuV7ZOsYWmdF7gcBHDRxm4AR8NoodQhgy3vO/D1god79HoetxR0uAeVNB65yj2lNRQnQ==", + "dev": true, + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true, + "peer": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "peer": true + }, + "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==", + "dev": true, + "peer": true, + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "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==", + "dev": true, + "peer": true, + "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", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "peer": true + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "peer": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..83ee40b --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "blockchain-supply-chain-tracking-assets-in-solidity-coding-challenge", + "version": "1.0.0", + "description": "Answer to CELO Academy coding challenge ", + "main": "index.js", + "scripts": { + "test": "npx hardhat test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/raphaelpg/Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge.git" + }, + "author": "raphaelpg", + "license": "ISC", + "bugs": { + "url": "https://github.com/raphaelpg/Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge/issues" + }, + "homepage": "https://github.com/raphaelpg/Blockchain-Supply-Chain-Tracking-Assets-in-Solidity-Coding-Challenge#readme", + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "hardhat": "^2.18.1" + }, + "dependencies": { + "@openzeppelin/contracts": "^5.0.0" + } +} diff --git a/test/SupplyChainTrackingTests_01Deployment.js b/test/SupplyChainTrackingTests_01Deployment.js new file mode 100644 index 0000000..e078956 --- /dev/null +++ b/test/SupplyChainTrackingTests_01Deployment.js @@ -0,0 +1,25 @@ +const { expect } = require("chai"); + +const { loadFixture } = require("@nomicfoundation/hardhat-toolbox/network-helpers"); + +describe("SupplyChainTracking tests", function () { + + // Deploy contract and return the contract instance and accounts + async function deploySupplyChainTrackingFixture() { + const [owner, addr1, addr2] = await ethers.getSigners(); + + const supplyChainTracking = await ethers.deployContract("SupplyChainTracking"); + + await supplyChainTracking.waitForDeployment(); + + return { owner, addr1, addr2, supplyChainTracking }; + } + + describe("Test deployment", async function () { + it("Should deploy SupplyChainTracking", async function () { + const { supplyChainTracking, owner } = await loadFixture(deploySupplyChainTrackingFixture); + + expect(await supplyChainTracking.owner()).to.equal(owner.address); + }); + }); +}); \ No newline at end of file diff --git a/test/SupplyChainTrackingTests_02Actors.js b/test/SupplyChainTrackingTests_02Actors.js new file mode 100644 index 0000000..e4219db --- /dev/null +++ b/test/SupplyChainTrackingTests_02Actors.js @@ -0,0 +1,74 @@ +const { expect } = require("chai"); + +const { loadFixture } = require("@nomicfoundation/hardhat-toolbox/network-helpers"); + +describe("SupplyChainTracking tests", function () { + + // Deploy contract and return the contract instance and accounts + async function deploySupplyChainTrackingFixture() { + const [owner, addr1, addr2] = await ethers.getSigners(); + + const supplyChainTracking = await ethers.deployContract("SupplyChainTracking"); + + await supplyChainTracking.waitForDeployment(); + + return { owner, addr1, addr2, supplyChainTracking }; + } + + describe("Test Actors functions", async function () { + it("Should add an actor", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + + const result = await supplyChainTracking.registerActor(addr1.address, 1); + expect(result).to.emit(supplyChainTracking, 'ActorRegistered'); + }) + + it("Should disable an actor", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + + await supplyChainTracking.registerActor(addr1.address, 1); + expect(await supplyChainTracking.disableActor(addr1.address)).to.emit(supplyChainTracking, 'ActorDisabled'); + }) + + it("Should not allow unauthorized address to register an actor", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + + const unauthorizedRegistration = supplyChainTracking.connect(addr1).registerActor(addr1.address, 1); + await expect(unauthorizedRegistration).to.be.revertedWithCustomError(supplyChainTracking, "OwnableUnauthorizedAccount"); + }) + + it("Should not allow unauthorized address to disable an actor", async function () { + const { supplyChainTracking, addr1, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + + await supplyChainTracking.registerActor(addr1.address, 1); + const unauthorizedDisabling = supplyChainTracking.connect(addr2).disableActor(addr1.address); + await expect(unauthorizedDisabling).to.be.revertedWithCustomError(supplyChainTracking, "OwnableUnauthorizedAccount"); + }) + + it("Should get an actor's data", async function () { + const { supplyChainTracking, addr1, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + + const actor = addr1.address; + const role = 1; + + await supplyChainTracking.registerActor(actor, role); + + const [returnedRole, returnedStatus] = await supplyChainTracking.getActor(actor); + + expect(returnedRole.toString()).to.equal("1"); + expect(returnedStatus).to.equal(true); + }) + + it("Should not allow unauthorized address get an actor's data", async function () { + const { supplyChainTracking, addr1, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + + const actor = addr1.address; + const role = 1; + + await supplyChainTracking.registerActor(actor, role); + + const actorAdata = supplyChainTracking.connect(addr2).getActor(actor); + await expect(actorAdata).to.be.revertedWithCustomError(supplyChainTracking, "OwnableUnauthorizedAccount"); + }) + }); +}); \ No newline at end of file diff --git a/test/SupplyChainTrackingTests_03Assets.js b/test/SupplyChainTrackingTests_03Assets.js new file mode 100644 index 0000000..885593b --- /dev/null +++ b/test/SupplyChainTrackingTests_03Assets.js @@ -0,0 +1,93 @@ +const { expect } = require("chai"); + +const { loadFixture } = require("@nomicfoundation/hardhat-toolbox/network-helpers"); + +describe("SupplyChainTracking tests", function () { + + // Deploy contract and return the contract instance and accounts + async function deploySupplyChainTrackingFixture() { + const [owner, addr1, addr2] = await ethers.getSigners(); + + const supplyChainTracking = await ethers.deployContract("SupplyChainTracking"); + + await supplyChainTracking.waitForDeployment(); + + return { owner, addr1, addr2, supplyChainTracking }; + } + + describe("Test Product functions", async function () { + it("Should allow a Producer to register a new asset", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + await supplyChainTracking.registerActor(addr1.address, 0); + const currentTimestamp = Date.now().toString(); + + const result = await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + await expect(result).to.emit(supplyChainTracking, 'AssetRegistered'); + }) + + it("Should not allow an unregistered Producer to register a new asset", async function () { + const { supplyChainTracking, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + const currentTimestamp = Date.now().toString(); + + const result = supplyChainTracking.connect(addr2).registerAsset("Battery", currentTimestamp, "Curitiba"); + await expect(result).to.be.revertedWith("Actor not enabled"); + }) + + it("Should not allow an actor without Producer role to register a new asset", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + await supplyChainTracking.registerActor(addr1.address, 1); + const currentTimestamp = Date.now().toString(); + + const result = supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + await expect(result).to.be.revertedWith("Actor's role must be Producer"); + }) + + it("Should return the total number of assets", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + expect(await supplyChainTracking.getTotalAssetNumber()).to.equal(0); + + await supplyChainTracking.registerActor(addr1.address, 0); + const currentTimestamp = Date.now().toString(); + + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + await supplyChainTracking.connect(addr1).registerAsset("Screen", currentTimestamp, "Santiago"); + expect(await supplyChainTracking.getTotalAssetNumber()).to.equal(2); + }) + + it("Should return an asset's data providing it's id", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + await supplyChainTracking.registerActor(addr1.address, 0); + + const assetType = "Tyre"; + const assetProductionDate = Date.now().toString(); + const assetOrigin = "Buenos Aires"; + const assetData = [assetType, BigInt(assetProductionDate), assetOrigin, addr1.address, [addr1.address]]; + + await supplyChainTracking.connect(addr1).registerAsset(assetType, assetProductionDate, assetOrigin); + + const result = await supplyChainTracking.getAsset(1); + expect(result).to.deep.equal(assetData); + }) + + it("Should revert data retrieval if asset does not exists", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + await supplyChainTracking.registerActor(addr1.address, 0) + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + const resultInf = supplyChainTracking.getAsset(0); + await expect(resultInf).to.be.revertedWith("Asset ID must be within valid range") + const resultSup = supplyChainTracking.getAsset(2); + await expect(resultSup).to.be.revertedWith("Asset ID must be within valid range") + }) + + it("Should revert data retrieval if asset list is empty", async function () { + const { supplyChainTracking, addr1 } = await loadFixture(deploySupplyChainTrackingFixture); + await supplyChainTracking.registerActor(addr1.address, 0); + + const result = supplyChainTracking.getAsset(1); + await expect(result).to.be.revertedWith("Asset ID must be within valid range") + }) + + }); +}); \ No newline at end of file diff --git a/test/SupplyChainTrackingTests_04AssetTransfers.js b/test/SupplyChainTrackingTests_04AssetTransfers.js new file mode 100644 index 0000000..2918b36 --- /dev/null +++ b/test/SupplyChainTrackingTests_04AssetTransfers.js @@ -0,0 +1,174 @@ +const { expect } = require("chai"); + +const { loadFixture } = require("@nomicfoundation/hardhat-toolbox/network-helpers"); + +describe("SupplyChainTracking tests", function () { + + // Deploy contract and return the contract instance and accounts + async function deploySupplyChainTrackingFixture() { + const [owner, addr1, addr2, addr3, addr4, addr5] = await ethers.getSigners(); + + const supplyChainTracking = await ethers.deployContract("SupplyChainTracking"); + + await supplyChainTracking.waitForDeployment(); + + return { supplyChainTracking, owner, addr1, addr2, addr3, addr4, addr5 }; + } + + describe("Test Asset Transfer functions", async function () { + it("Should allow an actor to transfer an asset", async function () { + const { supplyChainTracking, addr1, addr2, addr3, addr4 } = await loadFixture(deploySupplyChainTrackingFixture); + // Registering Producer + await supplyChainTracking.registerActor(addr1.address, 0); + // Registering Carrier + await supplyChainTracking.registerActor(addr2.address, 1); + // Registering Retailer + await supplyChainTracking.registerActor(addr3.address, 2); + // Registering Consumer + await supplyChainTracking.registerActor(addr4.address, 3); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + // Perform transfers + expect(await supplyChainTracking.connect(addr1).transferAsset(1, addr2.address)).to.emit(supplyChainTracking, 'AssetTransfered'); + expect(await supplyChainTracking.connect(addr2).transferAsset(1, addr3.address)).to.emit(supplyChainTracking, 'AssetTransfered'); + expect(await supplyChainTracking.connect(addr3).transferAsset(1, addr4.address)).to.emit(supplyChainTracking, 'AssetTransfered'); + }) + + it("Should allow anyone to check an asset's current holder by querying the asset's unique ID", async function () { + const { supplyChainTracking, addr1, addr2, addr3, addr4 } = await loadFixture(deploySupplyChainTrackingFixture); + // Registering Actors + await supplyChainTracking.registerActor(addr1.address, 0); + await supplyChainTracking.registerActor(addr2.address, 1); + await supplyChainTracking.registerActor(addr3.address, 2); + await supplyChainTracking.registerActor(addr4.address, 3); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + // Perform transfers + await supplyChainTracking.connect(addr1).transferAsset(1, addr2.address); + await supplyChainTracking.connect(addr2).transferAsset(1, addr3.address); + await supplyChainTracking.connect(addr3).transferAsset(1, addr4.address); + + // Querying asset current holder + const currentHolder = supplyChainTracking.getAssetCurrentHolder(1); + expect(await currentHolder).to.equal(addr4.address); + }) + + it("Should allow anyone to check an asset's holder history by querying the asset's unique ID", async function () { + const { supplyChainTracking, addr1, addr2, addr3, addr4 } = await loadFixture(deploySupplyChainTrackingFixture); + // Registering Actors + await supplyChainTracking.registerActor(addr1.address, 0); + await supplyChainTracking.registerActor(addr2.address, 1); + await supplyChainTracking.registerActor(addr3.address, 2); + await supplyChainTracking.registerActor(addr4.address, 3); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + // Perform transfers + await supplyChainTracking.connect(addr1).transferAsset(1, addr2.address); + await supplyChainTracking.connect(addr2).transferAsset(1, addr3.address); + await supplyChainTracking.connect(addr3).transferAsset(1, addr4.address); + + const realHolders = [ + addr1.address, + addr2.address, + addr3.address, + addr4.address + ] + + // Querying asset holder history + const holderHistory = supplyChainTracking.getAssetHolderHistory(1); + expect(await holderHistory).to.deep.equal(realHolders); + }) + + it("Should revert if last actor transfers an asset", async function () { + const { supplyChainTracking, owner, addr1, addr2, addr3, addr4, addr5 } = await loadFixture(deploySupplyChainTrackingFixture); + // Registering Producer + await supplyChainTracking.registerActor(addr1.address, 0); + // Registering Carrier + await supplyChainTracking.registerActor(addr2.address, 1); + // Registering Retailer + await supplyChainTracking.registerActor(addr3.address, 2); + // Registering Consumer + await supplyChainTracking.registerActor(addr4.address, 3); + await supplyChainTracking.registerActor(addr5.address, 3); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + // Perform transfers + await supplyChainTracking.connect(addr1).transferAsset(1, addr2.address); + await supplyChainTracking.connect(addr2).transferAsset(1, addr3.address); + await supplyChainTracking.connect(addr3).transferAsset(1, addr4.address); + + // Try transfer back to Retailer + await expect(supplyChainTracking.connect(addr4).transferAsset(1, addr3.address)).to.be.revertedWith('Consumer can not transfer asset'); + // Try transfer to another Consumer + await expect(supplyChainTracking.connect(addr4).transferAsset(1, addr5.address)).to.be.revertedWith('Consumer can not transfer asset'); + }) + + it("Should revert if next actor is not valid", async function () { + const { supplyChainTracking, owner, addr1, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + await supplyChainTracking.registerActor(addr1.address, 0); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + await expect(supplyChainTracking.connect(addr1).transferAsset(1, addr2.address)).to.be.revertedWith('Next owner is not valid'); + }) + + it("Should revert if next actor has incorrect role", async function () { + const { supplyChainTracking, addr1, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + // Registering Producers + await supplyChainTracking.registerActor(addr1.address, 0); + await supplyChainTracking.registerActor(addr2.address, 0); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + await expect(supplyChainTracking.connect(addr1).transferAsset(1, addr2.address)).to.be.revertedWith('Wrong next owner role'); + }) + + it("Should revert if asset ID is incorret", async function () { + const { supplyChainTracking, addr1, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + // Registering Producers + await supplyChainTracking.registerActor(addr1.address, 0); + // Registering Carrier + await supplyChainTracking.registerActor(addr2.address, 1); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + const transfer = supplyChainTracking.connect(addr1).transferAsset(2, addr2.address); + const transfer0 = supplyChainTracking.connect(addr1).transferAsset(2, addr2.address); + await expect(transfer).to.be.revertedWithCustomError(supplyChainTracking, 'OnlyAssetOwner'); + await expect(transfer0).to.be.revertedWithCustomError(supplyChainTracking, 'OnlyAssetOwner'); + }) + + it("Should revert if new owner tries to transfer back", async function () { + const { supplyChainTracking, addr1, addr2 } = await loadFixture(deploySupplyChainTrackingFixture); + // Registering Producers + await supplyChainTracking.registerActor(addr1.address, 0); + // Registering Carrier + await supplyChainTracking.registerActor(addr2.address, 1); + + // Creating new asset + const currentTimestamp = Date.now().toString(); + await supplyChainTracking.connect(addr1).registerAsset("Battery", currentTimestamp, "Curitiba"); + + await supplyChainTracking.connect(addr1).transferAsset(1, addr2.address); + await expect(supplyChainTracking.connect(addr2).transferAsset(1, addr1.address)).to.be.revertedWith('Wrong next owner role'); + }) + }); +}); \ No newline at end of file