diff --git a/creating-erc20-token/.gitignore b/creating-erc20-token/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/creating-erc20-token/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/creating-erc20-token/README.md b/creating-erc20-token/README.md new file mode 100644 index 0000000..28b9df7 --- /dev/null +++ b/creating-erc20-token/README.md @@ -0,0 +1,27 @@ +# How to creating ERC20 token + +In recent years, the ERC20 token specification has become the defacto standard for Ethereum tokens. In other words, most Ethereum contracts out there today are ERC20-compliant. In this example you will learn how you can create your own Ethereum token by using [Truffle](https://www.trufflesuite.com/), [Ganache](https://www.trufflesuite.com/ganache) and [Openzeppelin](https://openzeppelin.com/) library. + +
+ +### Step 1: Step The Project Directory +First of all we'll create a new project directory. Inside the root directory run the following commands: +```sh +npm init -y +``` +```sh +npm i -g truffle +``` +```sh +npm i @openzeppelin/contracts +``` + +and then install [Ganache](https://www.trufflesuite.com/ganache) UI tool. + +
+ +### Step 2: Initialize a Truffle Project +```sh +truffle init +``` + diff --git a/creating-erc20-token/build/contracts/Context.json b/creating-erc20-token/build/contracts/Context.json new file mode 100644 index 0000000..0f1c41c --- /dev/null +++ b/creating-erc20-token/build/contracts/Context.json @@ -0,0 +1,506 @@ +{ + "contractName": "Context", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"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\":{\"project:/node_modules/@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "generatedSources": [], + "deployedGeneratedSources": [], + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\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", + "sourcePath": "D:\\Block-Chain\\defi-dapps-solidity-smart-contracts\\creating-erc20-token\\node_modules\\@openzeppelin\\contracts\\utils\\Context.sol", + "ast": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 695 + ] + }, + "id": 696, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 675, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:4" + }, + { + "abstract": true, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 676, + "nodeType": "StructuredDocumentation", + "src": "58:496:4", + "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": 695, + "linearizedBaseContracts": [ + 695 + ], + "name": "Context", + "nameLocation": "573:7:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 684, + "nodeType": "Block", + "src": "649:34:4", + "statements": [ + { + "expression": { + "expression": { + "id": 681, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "666:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "666:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 680, + "id": 683, + "nodeType": "Return", + "src": "659:17:4" + } + ] + }, + "id": 685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "596:10:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [], + "src": "606:2:4" + }, + "returnParameters": { + "id": 680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 679, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "640:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "640:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "639:9:4" + }, + "scope": 695, + "src": "587:96:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 693, + "nodeType": "Block", + "src": "756:32:4", + "statements": [ + { + "expression": { + "expression": { + "id": 690, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "773:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "src": "773:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 689, + "id": 692, + "nodeType": "Return", + "src": "766:15:4" + } + ] + }, + "id": 694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "698:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 686, + "nodeType": "ParameterList", + "parameters": [], + "src": "706:2:4" + }, + "returnParameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "740:14:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 687, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "740:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "739:16:4" + }, + "scope": 695, + "src": "689:99:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 696, + "src": "555:235:4", + "usedErrors": [] + } + ], + "src": "33:758:4" + }, + "legacyAST": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 695 + ] + }, + "id": 696, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 675, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:4" + }, + { + "abstract": true, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 676, + "nodeType": "StructuredDocumentation", + "src": "58:496:4", + "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": 695, + "linearizedBaseContracts": [ + 695 + ], + "name": "Context", + "nameLocation": "573:7:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 684, + "nodeType": "Block", + "src": "649:34:4", + "statements": [ + { + "expression": { + "expression": { + "id": 681, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "666:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "666:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 680, + "id": 683, + "nodeType": "Return", + "src": "659:17:4" + } + ] + }, + "id": 685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "596:10:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [], + "src": "606:2:4" + }, + "returnParameters": { + "id": 680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 679, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "640:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "640:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "639:9:4" + }, + "scope": 695, + "src": "587:96:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 693, + "nodeType": "Block", + "src": "756:32:4", + "statements": [ + { + "expression": { + "expression": { + "id": 690, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "773:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "src": "773:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 689, + "id": 692, + "nodeType": "Return", + "src": "766:15:4" + } + ] + }, + "id": 694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "698:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 686, + "nodeType": "ParameterList", + "parameters": [], + "src": "706:2:4" + }, + "returnParameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "740:14:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 687, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "740:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "739:16:4" + }, + "scope": 695, + "src": "689:99:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 696, + "src": "555:235:4", + "usedErrors": [] + } + ], + "src": "33:758:4" + }, + "compiler": { + "name": "solc", + "version": "0.8.7+commit.e28d00a7.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.3", + "updatedAt": "2021-09-26T18:37:54.263Z", + "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 + } +} \ No newline at end of file diff --git a/creating-erc20-token/build/contracts/ERC20.json b/creating-erc20-token/build/contracts/ERC20.json new file mode 100644 index 0000000..4386260 --- /dev/null +++ b/creating-erc20-token/build/contracts/ERC20.json @@ -0,0 +1,22637 @@ +{ + "contractName": "ERC20", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34655953d18ba3a45b762fb6bdbb6549af69a27435e10ece178742bf70baf45\",\"dweb:/ipfs/QmcqjUoFLLMyx7dbwSHUnDBH6aphkVHXWQvQRRev5EAWEh\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620017623803806200176283398181016040528101906200003791906200019f565b81600390805190602001906200004f92919062000071565b5080600490805190602001906200006892919062000071565b505050620003a8565b8280546200007f90620002b9565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b60006200013862000132846200024d565b62000224565b90508281526020810184848401111562000157576200015662000388565b5b6200016484828562000283565b509392505050565b600082601f83011262000184576200018362000383565b5b81516200019684826020860162000121565b91505092915050565b60008060408385031215620001b957620001b862000392565b5b600083015167ffffffffffffffff811115620001da57620001d96200038d565b5b620001e8858286016200016c565b925050602083015167ffffffffffffffff8111156200020c576200020b6200038d565b5b6200021a858286016200016c565b9150509250929050565b60006200023062000243565b90506200023e8282620002ef565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026b576200026a62000354565b5b620002768262000397565b9050602081019050919050565b60005b83811015620002a357808201518184015260208101905062000286565b83811115620002b3576000848401525b50505050565b60006002820490506001821680620002d257607f821691505b60208210811415620002e957620002e862000325565b5b50919050565b620002fa8262000397565b810181811067ffffffffffffffff821117156200031c576200031b62000354565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6113aa80620003b86000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610e45565b60405180910390f35b6100e660048036038101906100e19190610c8f565b610308565b6040516100f39190610e2a565b60405180910390f35b610104610326565b6040516101119190610f47565b60405180910390f35b610134600480360381019061012f9190610c3c565b610330565b6040516101419190610e2a565b60405180910390f35b610152610428565b60405161015f9190610f62565b60405180910390f35b610182600480360381019061017d9190610c8f565b610431565b60405161018f9190610e2a565b60405180910390f35b6101b260048036038101906101ad9190610bcf565b6104dd565b6040516101bf9190610f47565b60405180910390f35b6101d0610525565b6040516101dd9190610e45565b60405180910390f35b61020060048036038101906101fb9190610c8f565b6105b7565b60405161020d9190610e2a565b60405180910390f35b610230600480360381019061022b9190610c8f565b6106a2565b60405161023d9190610e2a565b60405180910390f35b610260600480360381019061025b9190610bfc565b6106c0565b60405161026d9190610f47565b60405180910390f35b60606003805461028590611077565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190611077565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610747565b848461074f565b6001905092915050565b6000600254905090565b600061033d84848461091a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff90610ec7565b60405180910390fd5b61041c85610414610747565b85840361074f565b60019150509392505050565b60006012905090565b60006104d361043e610747565b84846001600061044c610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ce9190610f99565b61074f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053490611077565b80601f016020809104026020016040519081016040528092919081815260200182805461056090611077565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b600080600160006105c6610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90610f27565b60405180910390fd5b61069761068e610747565b8585840361074f565b600191505092915050565b60006106b66106af610747565b848461091a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b690610f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690610e87565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090d9190610f47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190610ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610e67565b60405180910390fd5b610a05838383610b9b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290610ea7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1e9190610f99565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b829190610f47565b60405180910390a3610b95848484610ba0565b50505050565b505050565b505050565b600081359050610bb481611346565b92915050565b600081359050610bc98161135d565b92915050565b600060208284031215610be557610be4611107565b5b6000610bf384828501610ba5565b91505092915050565b60008060408385031215610c1357610c12611107565b5b6000610c2185828601610ba5565b9250506020610c3285828601610ba5565b9150509250929050565b600080600060608486031215610c5557610c54611107565b5b6000610c6386828701610ba5565b9350506020610c7486828701610ba5565b9250506040610c8586828701610bba565b9150509250925092565b60008060408385031215610ca657610ca5611107565b5b6000610cb485828601610ba5565b9250506020610cc585828601610bba565b9150509250929050565b610cd881611001565b82525050565b6000610ce982610f7d565b610cf38185610f88565b9350610d03818560208601611044565b610d0c8161110c565b840191505092915050565b6000610d24602383610f88565b9150610d2f8261111d565b604082019050919050565b6000610d47602283610f88565b9150610d528261116c565b604082019050919050565b6000610d6a602683610f88565b9150610d75826111bb565b604082019050919050565b6000610d8d602883610f88565b9150610d988261120a565b604082019050919050565b6000610db0602583610f88565b9150610dbb82611259565b604082019050919050565b6000610dd3602483610f88565b9150610dde826112a8565b604082019050919050565b6000610df6602583610f88565b9150610e01826112f7565b604082019050919050565b610e158161102d565b82525050565b610e2481611037565b82525050565b6000602082019050610e3f6000830184610ccf565b92915050565b60006020820190508181036000830152610e5f8184610cde565b905092915050565b60006020820190508181036000830152610e8081610d17565b9050919050565b60006020820190508181036000830152610ea081610d3a565b9050919050565b60006020820190508181036000830152610ec081610d5d565b9050919050565b60006020820190508181036000830152610ee081610d80565b9050919050565b60006020820190508181036000830152610f0081610da3565b9050919050565b60006020820190508181036000830152610f2081610dc6565b9050919050565b60006020820190508181036000830152610f4081610de9565b9050919050565b6000602082019050610f5c6000830184610e0c565b92915050565b6000602082019050610f776000830184610e1b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610fa48261102d565b9150610faf8361102d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fe457610fe36110a9565b5b828201905092915050565b6000610ffa8261100d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611062578082015181840152602081019050611047565b83811115611071576000848401525b50505050565b6000600282049050600182168061108f57607f821691505b602082108114156110a3576110a26110d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61134f81610fef565b811461135a57600080fd5b50565b6113668161102d565b811461137157600080fd5b5056fea2646970667358221220a4631fdfda9374a0a87dfaee4212d61409aa886446052af256eee38b624fb94764736f6c63430008070033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610e45565b60405180910390f35b6100e660048036038101906100e19190610c8f565b610308565b6040516100f39190610e2a565b60405180910390f35b610104610326565b6040516101119190610f47565b60405180910390f35b610134600480360381019061012f9190610c3c565b610330565b6040516101419190610e2a565b60405180910390f35b610152610428565b60405161015f9190610f62565b60405180910390f35b610182600480360381019061017d9190610c8f565b610431565b60405161018f9190610e2a565b60405180910390f35b6101b260048036038101906101ad9190610bcf565b6104dd565b6040516101bf9190610f47565b60405180910390f35b6101d0610525565b6040516101dd9190610e45565b60405180910390f35b61020060048036038101906101fb9190610c8f565b6105b7565b60405161020d9190610e2a565b60405180910390f35b610230600480360381019061022b9190610c8f565b6106a2565b60405161023d9190610e2a565b60405180910390f35b610260600480360381019061025b9190610bfc565b6106c0565b60405161026d9190610f47565b60405180910390f35b60606003805461028590611077565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190611077565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610747565b848461074f565b6001905092915050565b6000600254905090565b600061033d84848461091a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff90610ec7565b60405180910390fd5b61041c85610414610747565b85840361074f565b60019150509392505050565b60006012905090565b60006104d361043e610747565b84846001600061044c610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ce9190610f99565b61074f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053490611077565b80601f016020809104026020016040519081016040528092919081815260200182805461056090611077565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b600080600160006105c6610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90610f27565b60405180910390fd5b61069761068e610747565b8585840361074f565b600191505092915050565b60006106b66106af610747565b848461091a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b690610f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690610e87565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090d9190610f47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190610ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610e67565b60405180910390fd5b610a05838383610b9b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290610ea7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1e9190610f99565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b829190610f47565b60405180910390a3610b95848484610ba0565b50505050565b505050565b505050565b600081359050610bb481611346565b92915050565b600081359050610bc98161135d565b92915050565b600060208284031215610be557610be4611107565b5b6000610bf384828501610ba5565b91505092915050565b60008060408385031215610c1357610c12611107565b5b6000610c2185828601610ba5565b9250506020610c3285828601610ba5565b9150509250929050565b600080600060608486031215610c5557610c54611107565b5b6000610c6386828701610ba5565b9350506020610c7486828701610ba5565b9250506040610c8586828701610bba565b9150509250925092565b60008060408385031215610ca657610ca5611107565b5b6000610cb485828601610ba5565b9250506020610cc585828601610bba565b9150509250929050565b610cd881611001565b82525050565b6000610ce982610f7d565b610cf38185610f88565b9350610d03818560208601611044565b610d0c8161110c565b840191505092915050565b6000610d24602383610f88565b9150610d2f8261111d565b604082019050919050565b6000610d47602283610f88565b9150610d528261116c565b604082019050919050565b6000610d6a602683610f88565b9150610d75826111bb565b604082019050919050565b6000610d8d602883610f88565b9150610d988261120a565b604082019050919050565b6000610db0602583610f88565b9150610dbb82611259565b604082019050919050565b6000610dd3602483610f88565b9150610dde826112a8565b604082019050919050565b6000610df6602583610f88565b9150610e01826112f7565b604082019050919050565b610e158161102d565b82525050565b610e2481611037565b82525050565b6000602082019050610e3f6000830184610ccf565b92915050565b60006020820190508181036000830152610e5f8184610cde565b905092915050565b60006020820190508181036000830152610e8081610d17565b9050919050565b60006020820190508181036000830152610ea081610d3a565b9050919050565b60006020820190508181036000830152610ec081610d5d565b9050919050565b60006020820190508181036000830152610ee081610d80565b9050919050565b60006020820190508181036000830152610f0081610da3565b9050919050565b60006020820190508181036000830152610f2081610dc6565b9050919050565b60006020820190508181036000830152610f4081610de9565b9050919050565b6000602082019050610f5c6000830184610e0c565b92915050565b6000602082019050610f776000830184610e1b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610fa48261102d565b9150610faf8361102d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fe457610fe36110a9565b5b828201905092915050565b6000610ffa8261100d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611062578082015181840152602081019050611047565b83811115611071576000848401525b50505050565b6000600282049050600182168061108f57607f821691505b602082108114156110a3576110a26110d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61134f81610fef565b811461135a57600080fd5b50565b6113668161102d565b811461137157600080fd5b5056fea2646970667358221220a4631fdfda9374a0a87dfaee4212d61409aa886446052af256eee38b624fb94764736f6c63430008070033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:4093:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "102:326:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "112:75:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "179:6:5" + } + ], + "functionName": { + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "137:41:5" + }, + "nodeType": "YulFunctionCall", + "src": "137:49:5" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "121:15:5" + }, + "nodeType": "YulFunctionCall", + "src": "121:66:5" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "112:5:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "203:5:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "210:6:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "196:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "196:21:5" + }, + "nodeType": "YulExpressionStatement", + "src": "196:21:5" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "226:27:5", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "241:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "248:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "237:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "237:16:5" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "230:3:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "291:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulIdentifier", + "src": "293:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "293:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "293:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "272:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "277:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "268:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "268:16:5" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "286:3:5" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "265:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "265:25:5" + }, + "nodeType": "YulIf", + "src": "262:112:5" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "405:3:5" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "410:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "415:6:5" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "383:21:5" + }, + "nodeType": "YulFunctionCall", + "src": "383:39:5" + }, + "nodeType": "YulExpressionStatement", + "src": "383:39:5" + } + ] + }, + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "75:3:5", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "80:6:5", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "88:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "96:5:5", + "type": "" + } + ], + "src": "7:421:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "521:282:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "570:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "572:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "572:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "572:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "549:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "557:4:5", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "545:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "545:17:5" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "564:3:5" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "541:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "541:27:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "534:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "534:35:5" + }, + "nodeType": "YulIf", + "src": "531:122:5" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "662:27:5", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "682:6:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "676:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "676:13:5" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "666:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "698:99:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "770:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "778:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "766:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "766:17:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "785:6:5" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "793:3:5" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "707:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "707:90:5" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "698:5:5" + } + ] + } + ] + }, + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "499:6:5", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "507:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "515:5:5", + "type": "" + } + ], + "src": "448:355:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "923:739:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "969:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "971:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "971:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "971:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "944:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "953:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "940:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "940:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "965:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "936:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "936:32:5" + }, + "nodeType": "YulIf", + "src": "933:119:5" + }, + { + "nodeType": "YulBlock", + "src": "1062:291:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1077:38:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1101:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1112:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1097:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1097:17:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1091:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "1091:24:5" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1081:6:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1162:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "1164:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "1164:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1164:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1134:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1142:18:5", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1131:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "1131:30:5" + }, + "nodeType": "YulIf", + "src": "1128:117:5" + }, + { + "nodeType": "YulAssignment", + "src": "1259:84:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1315:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1326:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1311:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1311:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1335:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "1269:41:5" + }, + "nodeType": "YulFunctionCall", + "src": "1269:74:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1259:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1363:292:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1378:39:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1402:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1413:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1398:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1398:18:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1392:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "1392:25:5" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1382:6:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1464:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "1466:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "1466:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1466:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1436:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1444:18:5", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1433:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "1433:30:5" + }, + "nodeType": "YulIf", + "src": "1430:117:5" + }, + { + "nodeType": "YulAssignment", + "src": "1561:84:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1617:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1628:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1613:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1613:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1637:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "1571:41:5" + }, + "nodeType": "YulFunctionCall", + "src": "1571:74:5" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1561:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "885:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "896:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "908:6:5", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "916:6:5", + "type": "" + } + ], + "src": "809:853:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1709:88:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1719:30:5", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1729:18:5" + }, + "nodeType": "YulFunctionCall", + "src": "1729:20:5" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1719:6:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1778:6:5" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1786:4:5" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1758:19:5" + }, + "nodeType": "YulFunctionCall", + "src": "1758:33:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1758:33:5" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1693:4:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1702:6:5", + "type": "" + } + ], + "src": "1668:129:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1843:35:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1853:19:5", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1869:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1863:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "1863:9:5" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1853:6:5" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1836:6:5", + "type": "" + } + ], + "src": "1803:75:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1951:241:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2056:22:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2058:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "2058:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2058:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2028:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2036:18:5", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2025:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "2025:30:5" + }, + "nodeType": "YulIf", + "src": "2022:56:5" + }, + { + "nodeType": "YulAssignment", + "src": "2088:37:5", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2118:6:5" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2096:21:5" + }, + "nodeType": "YulFunctionCall", + "src": "2096:29:5" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2088:4:5" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2162:23:5", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2174:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2180:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2170:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2170:15:5" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2162:4:5" + } + ] + } + ] + }, + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1935:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1946:4:5", + "type": "" + } + ], + "src": "1884:308:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2247:258:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2257:10:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2266:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "2261:1:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2326:63:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2351:3:5" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2356:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2347:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2347:11:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2370:3:5" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2375:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2366:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2366:11:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2360:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "2360:18:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2340:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2340:39:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2340:39:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2287:1:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2290:6:5" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2284:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "2284:13:5" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2298:19:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2300:15:5", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2309:1:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2312:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2305:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2305:10:5" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2300:1:5" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2280:3:5", + "statements": [] + }, + "src": "2276:113:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2423:76:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2473:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2478:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2469:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2469:16:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2487:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2462:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2462:27:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2462:27:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2404:1:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2407:6:5" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2401:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "2401:13:5" + }, + "nodeType": "YulIf", + "src": "2398:101:5" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2229:3:5", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2234:3:5", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2239:6:5", + "type": "" + } + ], + "src": "2198:307:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2562:269:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2572:22:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2586:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2592:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "2582:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2582:12:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2572:6:5" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2603:38:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2633:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2639:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2629:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2629:12:5" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "2607:18:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2680:51:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2694:27:5", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2708:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2716:4:5", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2704:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2704:17:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2694:6:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "2660:18:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2653:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2653:26:5" + }, + "nodeType": "YulIf", + "src": "2650:81:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2783:42:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "2797:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "2797:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2797:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "2747:18:5" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2770:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2778:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2767:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "2767:14:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2744:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "2744:38:5" + }, + "nodeType": "YulIf", + "src": "2741:84:5" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "2546:4:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2555:6:5", + "type": "" + } + ], + "src": "2511:320:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2880:238:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2890:58:5", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2912:6:5" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2942:4:5" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2920:21:5" + }, + "nodeType": "YulFunctionCall", + "src": "2920:27:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2908:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2908:40:5" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2894:10:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3059:22:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3061:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "3061:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3061:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3002:10:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3014:18:5", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2999:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "2999:34:5" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3038:10:5" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3050:6:5" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3035:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "3035:22:5" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2996:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "2996:62:5" + }, + "nodeType": "YulIf", + "src": "2993:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3097:2:5", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3101:10:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3090:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3090:22:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3090:22:5" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2866:6:5", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2874:4:5", + "type": "" + } + ], + "src": "2837:281:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3152:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3169:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3172:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3162:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3162:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3162:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3266:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3269:4:5", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3259:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3259:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3259:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3290:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3293:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3283:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3283:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3283:15:5" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "3124:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3338:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3355:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3358:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3348:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3348:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3348:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3452:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3455:4:5", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3445:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3445:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3445:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3476:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3479:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3469:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3469:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3469:15:5" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "3310:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3585:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3602:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3605:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3595:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3595:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3595:12:5" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "3496:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3708:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3725:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3728:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3718:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3718:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3718:12:5" + } + ] + }, + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulFunctionDefinition", + "src": "3619:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3831:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3848:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3851:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3841:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3841:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3841:12:5" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "3742:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3954:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3971:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3974:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3964:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "3964:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3964:12:5" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "3865:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4036:54:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4046:38:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4064:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4071:2:5", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4060:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4060:14:5" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4080:2:5", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "4076:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4076:7:5" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4056:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4056:28:5" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4046:6:5" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4019:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "4029:6:5", + "type": "" + } + ], + "src": "3988:102:5" + } + ] + }, + "contents": "{\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\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 finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n}\n", + "id": 5, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:13909:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "59:87:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "69:29:5", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "91:6:5" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "78:12:5" + }, + "nodeType": "YulFunctionCall", + "src": "78:20:5" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "69:5:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "134:5:5" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "107:26:5" + }, + "nodeType": "YulFunctionCall", + "src": "107:33:5" + }, + "nodeType": "YulExpressionStatement", + "src": "107:33:5" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "37:6:5", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "45:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:5", + "type": "" + } + ], + "src": "7:139:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "204:87:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "214:29:5", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "236:6:5" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "223:12:5" + }, + "nodeType": "YulFunctionCall", + "src": "223:20:5" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "214:5:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "279:5:5" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "252:26:5" + }, + "nodeType": "YulFunctionCall", + "src": "252:33:5" + }, + "nodeType": "YulExpressionStatement", + "src": "252:33:5" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "182:6:5", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "190:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "198:5:5", + "type": "" + } + ], + "src": "152:139:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "363:263:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "409:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "411:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "411:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "411:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "384:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "393:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "380:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "380:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "405:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "376:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "376:32:5" + }, + "nodeType": "YulIf", + "src": "373:119:5" + }, + { + "nodeType": "YulBlock", + "src": "502:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "517:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "531:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "521:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "546:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "581:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "592:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "577:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "577:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "601:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "556:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "556:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "546:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "333:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "344:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "356:6:5", + "type": "" + } + ], + "src": "297:329:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "715:391:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "761:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "763:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "763:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "763:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "736:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "745:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "732:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "732:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "757:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "728:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "728:32:5" + }, + "nodeType": "YulIf", + "src": "725:119:5" + }, + { + "nodeType": "YulBlock", + "src": "854:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "869:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "883:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "873:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "898:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "933:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "944:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "929:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "929:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "953:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "908:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "908:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "898:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "981:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "996:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1010:2:5", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1000:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1026:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1061:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1072:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1057:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1057:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1081:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1036:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1036:53:5" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1026:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "677:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "688:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "700:6:5", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "708:6:5", + "type": "" + } + ], + "src": "632:474:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1212:519:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1258:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1260:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "1260:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1260:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1233:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1242:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1229:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1229:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1254:2:5", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1225:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1225:32:5" + }, + "nodeType": "YulIf", + "src": "1222:119:5" + }, + { + "nodeType": "YulBlock", + "src": "1351:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1366:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1380:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1370:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1395:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1430:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1441:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1426:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1426:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1450:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1405:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1405:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1395:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1478:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1493:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1507:2:5", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1497:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1523:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1558:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1569:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1554:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1554:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1578:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1533:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1533:53:5" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1523:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1606:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1621:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1635:2:5", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1625:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1651:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1686:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1697:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1682:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1682:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1706:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1661:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1661:53:5" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1651:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1166:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1177:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1189:6:5", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1197:6:5", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1205:6:5", + "type": "" + } + ], + "src": "1112:619:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1820:391:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1866:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1868:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "1868:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1868:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1841:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1850:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1837:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1837:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1862:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1833:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1833:32:5" + }, + "nodeType": "YulIf", + "src": "1830:119:5" + }, + { + "nodeType": "YulBlock", + "src": "1959:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1974:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1988:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1978:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2003:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2038:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2049:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2034:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2034:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2058:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "2013:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "2013:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2003:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "2086:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2101:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2115:2:5", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2105:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2131:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2166:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2177:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2162:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2162:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2186:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "2141:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "2141:53:5" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2131:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1782:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1793:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1805:6:5", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1813:6:5", + "type": "" + } + ], + "src": "1737:474:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2276:50:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2293:3:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2313:5:5" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "2298:14:5" + }, + "nodeType": "YulFunctionCall", + "src": "2298:21:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2286:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2286:34:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2286:34:5" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2264:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2271:3:5", + "type": "" + } + ], + "src": "2217:109:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2424:272:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2434:53:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2481:5:5" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2448:32:5" + }, + "nodeType": "YulFunctionCall", + "src": "2448:39:5" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2438:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2496:78:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2562:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2567:6:5" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2503:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "2503:71:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2496:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2609:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2616:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2605:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2605:16:5" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2623:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2628:6:5" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "2583:21:5" + }, + "nodeType": "YulFunctionCall", + "src": "2583:52:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2583:52:5" + }, + { + "nodeType": "YulAssignment", + "src": "2644:46:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2655:3:5" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2682:6:5" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2660:21:5" + }, + "nodeType": "YulFunctionCall", + "src": "2660:29:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2651:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2651:39:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2644:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2405:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2412:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2420:3:5", + "type": "" + } + ], + "src": "2332:364:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2848:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2858:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2924:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2929:2:5", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2865:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "2865:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2858:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3030:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "nodeType": "YulIdentifier", + "src": "2941:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "2941:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2941:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "3043:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3054:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3059:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3050:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "3050:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3043:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2836:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2844:3:5", + "type": "" + } + ], + "src": "2702:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3220:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3230:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3296:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3301:2:5", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3237:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "3237:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3230:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3402:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "nodeType": "YulIdentifier", + "src": "3313:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "3313:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3313:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "3415:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3426:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3431:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3422:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "3422:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3415:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3208:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3216:3:5", + "type": "" + } + ], + "src": "3074:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3592:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3602:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3668:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3673:2:5", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3609:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "3609:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3602:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3774:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "nodeType": "YulIdentifier", + "src": "3685:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "3685:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3685:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "3787:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3798:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3803:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3794:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "3794:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3787:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3580:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3588:3:5", + "type": "" + } + ], + "src": "3446:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3964:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3974:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4040:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4045:2:5", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3981:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "3981:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3974:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4146:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "nodeType": "YulIdentifier", + "src": "4057:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "4057:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "4057:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "4159:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4170:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4175:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4166:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4166:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4159:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3952:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3960:3:5", + "type": "" + } + ], + "src": "3818:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4336:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4346:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4412:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4417:2:5", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4353:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "4353:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4346:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4518:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "nodeType": "YulIdentifier", + "src": "4429:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "4429:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "4429:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "4531:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4542:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4547:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4538:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4538:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4531:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4324:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4332:3:5", + "type": "" + } + ], + "src": "4190:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4708:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4718:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4784:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4789:2:5", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4725:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "4725:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4718:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4890:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "nodeType": "YulIdentifier", + "src": "4801:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "4801:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "4801:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "4903:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4914:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4919:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4910:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4910:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4903:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4696:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4704:3:5", + "type": "" + } + ], + "src": "4562:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5080:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5090:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5156:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5161:2:5", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5097:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "5097:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5090:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5262:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "nodeType": "YulIdentifier", + "src": "5173:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "5173:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5173:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "5275:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5286:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5291:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5282:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5282:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5275:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5068:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5076:3:5", + "type": "" + } + ], + "src": "4934:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5371:53:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5388:3:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5411:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "5393:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "5393:24:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5381:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "5381:37:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5381:37:5" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5359:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5366:3:5", + "type": "" + } + ], + "src": "5306:118:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5491:51:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5508:3:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5529:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "5513:15:5" + }, + "nodeType": "YulFunctionCall", + "src": "5513:22:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5501:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "5501:35:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5501:35:5" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5479:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5486:3:5", + "type": "" + } + ], + "src": "5430:112:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5640:118:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5650:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5662:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5673:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5658:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5658:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5650:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5724:6:5" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5737:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5748:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5733:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5733:17:5" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "5686:37:5" + }, + "nodeType": "YulFunctionCall", + "src": "5686:65:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5686:65:5" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5612:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5624:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5635:4:5", + "type": "" + } + ], + "src": "5548:210:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5882:195:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5892:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5904:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5915:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5900:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5900:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5892:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5939:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5950:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5935:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5935:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5958:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5964:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5954:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5954:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5928:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "5928:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5928:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "5984:86:5", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6056:6:5" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6065:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5992:63:5" + }, + "nodeType": "YulFunctionCall", + "src": "5992:78:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5984:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5854:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5866:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5877:4:5", + "type": "" + } + ], + "src": "5764:313:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6254:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6264:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6276:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6287:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6272:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6272:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6264:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6311:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6322:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6307:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6307:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6330:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6336:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6326:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6326:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6300:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "6300:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "6300:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "6356:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6490:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6364:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "6364:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6356:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6234:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6249:4:5", + "type": "" + } + ], + "src": "6083:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6679:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6689:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6701:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6712:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6697:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6697:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6689:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6736:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6747:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6732:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6732:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6755:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6761:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6751:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6751:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6725:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "6725:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "6725:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "6781:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6915:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6789:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "6789:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6781:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6659:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6674:4:5", + "type": "" + } + ], + "src": "6508:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7104:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7114:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7126:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7137:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7122:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7122:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7114:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7161:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7172:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7157:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7157:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7180:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7186:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7176:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7176:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7150:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "7150:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "7150:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "7206:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7340:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7214:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "7214:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7206:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7084:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7099:4:5", + "type": "" + } + ], + "src": "6933:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7529:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7539:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7551:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7562:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7547:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7547:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7539:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7586:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7597:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7582:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7582:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7605:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7611:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7601:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7601:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7575:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "7575:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "7575:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "7631:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7765:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7639:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "7639:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7631:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7509:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7524:4:5", + "type": "" + } + ], + "src": "7358:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7954:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7964:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7976:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7987:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7972:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7972:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7964:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8011:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8022:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8007:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8007:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8030:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8036:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8026:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8026:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8000:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "8000:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "8000:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "8056:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8190:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8064:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "8064:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8056:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7934:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7949:4:5", + "type": "" + } + ], + "src": "7783:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8379:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8389:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8401:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8412:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8397:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8397:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8389:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8436:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8447:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8432:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8432:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8455:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8461:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8451:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8451:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8425:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "8425:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "8425:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "8481:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8615:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8489:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "8489:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8481:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8359:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8374:4:5", + "type": "" + } + ], + "src": "8208:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8804:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8814:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8826:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8837:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8822:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8822:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8814:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8861:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8872:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8857:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8857:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8880:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8886:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8876:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8876:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8850:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "8850:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "8850:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "8906:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9040:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8914:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "8914:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8906:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8784:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8799:4:5", + "type": "" + } + ], + "src": "8633:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9156:124:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9166:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9178:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9189:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9174:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9174:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9166:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9246:6:5" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9259:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9270:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9255:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9255:17:5" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "9202:43:5" + }, + "nodeType": "YulFunctionCall", + "src": "9202:71:5" + }, + "nodeType": "YulExpressionStatement", + "src": "9202:71:5" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9128:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9140:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9151:4:5", + "type": "" + } + ], + "src": "9058:222:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9380:120:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9390:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9402:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9413:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9398:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9398:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9390:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9466:6:5" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9479:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9490:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9475:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9475:17:5" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "9426:39:5" + }, + "nodeType": "YulFunctionCall", + "src": "9426:67:5" + }, + "nodeType": "YulExpressionStatement", + "src": "9426:67:5" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9352:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9364:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9375:4:5", + "type": "" + } + ], + "src": "9286:214:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9546:35:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9556:19:5", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9572:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9566:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "9566:9:5" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9556:6:5" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "9539:6:5", + "type": "" + } + ], + "src": "9506:75:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9646:40:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9657:22:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9673:5:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9667:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "9667:12:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9657:6:5" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9629:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9639:6:5", + "type": "" + } + ], + "src": "9587:99:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9788:73:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9805:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9810:6:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9798:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "9798:19:5" + }, + "nodeType": "YulExpressionStatement", + "src": "9798:19:5" + }, + { + "nodeType": "YulAssignment", + "src": "9826:29:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9845:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9850:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9841:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9841:14:5" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "9826:11:5" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9760:3:5", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9765:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "9776:11:5", + "type": "" + } + ], + "src": "9692:169:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9911:261:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9921:25:5", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9944:1:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9926:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "9926:20:5" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9921:1:5" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9955:25:5", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9978:1:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9960:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "9960:20:5" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9955:1:5" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10118:22:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "10120:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "10120:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "10120:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10039:1:5" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10046:66:5", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10114:1:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10042:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10042:74:5" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10036:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "10036:81:5" + }, + "nodeType": "YulIf", + "src": "10033:107:5" + }, + { + "nodeType": "YulAssignment", + "src": "10150:16:5", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10161:1:5" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10164:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10157:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10157:9:5" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "10150:3:5" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "9898:1:5", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "9901:1:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "9907:3:5", + "type": "" + } + ], + "src": "9867:305:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10223:51:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10233:35:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10262:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "10244:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "10244:24:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10233:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10205:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10215:7:5", + "type": "" + } + ], + "src": "10178:96:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10322:48:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10332:32:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10357:5:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10350:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10350:13:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10343:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10343:21:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10332:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10304:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10314:7:5", + "type": "" + } + ], + "src": "10280:90:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10421:81:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10431:65:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10446:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10453:42:5", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10442:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10442:54:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10431:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10403:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10413:7:5", + "type": "" + } + ], + "src": "10376:126:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10553:32:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10563:16:5", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10574:5:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10563:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10535:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10545:7:5", + "type": "" + } + ], + "src": "10508:77:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10634:43:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10644:27:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10659:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10666:4:5", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10655:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10655:16:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10644:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10616:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10626:7:5", + "type": "" + } + ], + "src": "10591:86:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10732:258:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10742:10:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10751:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "10746:1:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10811:63:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "10836:3:5" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10841:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10832:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10832:11:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "10855:3:5" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10860:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10851:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10851:11:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10845:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "10845:18:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10825:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10825:39:5" + }, + "nodeType": "YulExpressionStatement", + "src": "10825:39:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10772:1:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10775:6:5" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10769:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "10769:13:5" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "10783:19:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10785:15:5", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10794:1:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10797:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10790:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10790:10:5" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10785:1:5" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "10765:3:5", + "statements": [] + }, + "src": "10761:113:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10908:76:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "10958:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10963:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10954:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10954:16:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10972:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10947:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10947:27:5" + }, + "nodeType": "YulExpressionStatement", + "src": "10947:27:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10889:1:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10892:6:5" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10886:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "10886:13:5" + }, + "nodeType": "YulIf", + "src": "10883:101:5" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "10714:3:5", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "10719:3:5", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10724:6:5", + "type": "" + } + ], + "src": "10683:307:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11047:269:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11057:22:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11071:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11077:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11067:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "11067:12:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11057:6:5" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11088:38:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11118:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11124:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11114:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "11114:12:5" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "11092:18:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11165:51:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11179:27:5", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11193:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11201:4:5", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11189:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "11189:17:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11179:6:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "11145:18:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11138:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11138:26:5" + }, + "nodeType": "YulIf", + "src": "11135:81:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11268:42:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "11282:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "11282:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11282:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "11232:18:5" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11255:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11263:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "11252:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "11252:14:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "11229:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "11229:38:5" + }, + "nodeType": "YulIf", + "src": "11226:84:5" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "11031:4:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11040:6:5", + "type": "" + } + ], + "src": "10996:320:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11350:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11367:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11370:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11360:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11360:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11360:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11464:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11467:4:5", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11457:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11457:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11457:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11488:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11491:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11481:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11481:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11481:15:5" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "11322:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11536:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11553:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11556:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11546:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11546:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11546:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11650:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11653:4:5", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11643:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11643:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11643:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11674:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11677:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11667:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11667:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11667:15:5" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "11508:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11783:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11800:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11803:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11793:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11793:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11793:12:5" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "11694:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11906:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11923:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11926:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11916:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11916:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11916:12:5" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "11817:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11988:54:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11998:38:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12016:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12023:2:5", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12012:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12012:14:5" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12032:2:5", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "12028:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12028:7:5" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12008:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12008:28:5" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "11998:6:5" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11971:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "11981:6:5", + "type": "" + } + ], + "src": "11940:102:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12154:116:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12176:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12184:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12172:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12172:14:5" + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12188:34:5", + "type": "", + "value": "ERC20: transfer to the zero addr" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12165:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12165:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12165:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12244:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12252:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12240:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12240:15:5" + }, + { + "hexValue": "657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12257:5:5", + "type": "", + "value": "ess" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12233:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12233:30:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12233:30:5" + } + ] + }, + "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12146:6:5", + "type": "" + } + ], + "src": "12048:222:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12382:115:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12404:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12412:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12400:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12400:14:5" + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12416:34:5", + "type": "", + "value": "ERC20: approve to the zero addre" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12393:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12393:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12393:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12472:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12480:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12468:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12468:15:5" + }, + { + "hexValue": "7373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12485:4:5", + "type": "", + "value": "ss" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12461:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12461:29:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12461:29:5" + } + ] + }, + "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12374:6:5", + "type": "" + } + ], + "src": "12276:221:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12609:119:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12631:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12639:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12627:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12627:14:5" + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12643:34:5", + "type": "", + "value": "ERC20: transfer amount exceeds b" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12620:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12620:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12620:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12699:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12707:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12695:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12695:15:5" + }, + { + "hexValue": "616c616e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12712:8:5", + "type": "", + "value": "alance" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12688:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12688:33:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12688:33:5" + } + ] + }, + "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12601:6:5", + "type": "" + } + ], + "src": "12503:225:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12840:121:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12862:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12870:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12858:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12858:14:5" + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12874:34:5", + "type": "", + "value": "ERC20: transfer amount exceeds a" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12851:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12851:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12851:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12930:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12938:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12926:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12926:15:5" + }, + { + "hexValue": "6c6c6f77616e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12943:10:5", + "type": "", + "value": "llowance" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12919:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12919:35:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12919:35:5" + } + ] + }, + "name": "store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12832:6:5", + "type": "" + } + ], + "src": "12734:227:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13073:118:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13095:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13103:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13091:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13091:14:5" + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13107:34:5", + "type": "", + "value": "ERC20: transfer from the zero ad" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13084:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13084:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13084:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13163:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13171:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13159:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13159:15:5" + }, + { + "hexValue": "6472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13176:7:5", + "type": "", + "value": "dress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13152:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13152:32:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13152:32:5" + } + ] + }, + "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "13065:6:5", + "type": "" + } + ], + "src": "12967:224:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13303:117:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13325:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13333:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13321:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13321:14:5" + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13337:34:5", + "type": "", + "value": "ERC20: approve from the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13314:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13314:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13314:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13393:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13401:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13389:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13389:15:5" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13406:6:5", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13382:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13382:31:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13382:31:5" + } + ] + }, + "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "13295:6:5", + "type": "" + } + ], + "src": "13197:223:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13532:118:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13554:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13562:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13550:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13550:14:5" + }, + { + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13566:34:5", + "type": "", + "value": "ERC20: decreased allowance below" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13543:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13543:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13543:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13622:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13630:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13618:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13618:15:5" + }, + { + "hexValue": "207a65726f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13635:7:5", + "type": "", + "value": " zero" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13611:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13611:32:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13611:32:5" + } + ] + }, + "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "13524:6:5", + "type": "" + } + ], + "src": "13426:224:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13699:79:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13756:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13765:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13768:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13758:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13758:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13758:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13722:5:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13747:5:5" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "13729:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "13729:24:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "13719:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "13719:35:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13712:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13712:43:5" + }, + "nodeType": "YulIf", + "src": "13709:63:5" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13692:5:5", + "type": "" + } + ], + "src": "13656:122:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13827:79:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13884:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13893:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13896:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13886:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13886:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13886:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13850:5:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13875:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "13857:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "13857:24:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "13847:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "13847:35:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13840:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13840:43:5" + }, + "nodeType": "YulIf", + "src": "13837:63:5" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13820:5:5", + "type": "" + } + ], + "src": "13784:122:5" + } + ] + }, + "contents": "{\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_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(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 abi_decode_tuple_t_addresst_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_address(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 abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(pos)\n end := add(pos, 64)\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_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_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_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__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_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__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_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__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_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__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_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__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_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__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_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__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_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\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 abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\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 checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function copy_memory_to_memory(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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 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 store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer to the zero addr\")\n\n mstore(add(memPtr, 32), \"ess\")\n\n }\n\n function store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve to the zero addre\")\n\n mstore(add(memPtr, 32), \"ss\")\n\n }\n\n function store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds b\")\n\n mstore(add(memPtr, 32), \"alance\")\n\n }\n\n function store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds a\")\n\n mstore(add(memPtr, 32), \"llowance\")\n\n }\n\n function store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer from the zero ad\")\n\n mstore(add(memPtr, 32), \"dress\")\n\n }\n\n function store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve from the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: decreased allowance below\")\n\n mstore(add(memPtr, 32), \" zero\")\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 validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n", + "id": 5, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "1331:10416:1:-:0;;;1906:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1980:5;1972;:13;;;;;;;;;;;;:::i;:::-;;2005:7;1995;:17;;;;;;;;;;;;:::i;:::-;;1906:113;;1331:10416;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:421:5:-;96:5;121:66;137:49;179:6;137:49;:::i;:::-;121:66;:::i;:::-;112:75;;210:6;203:5;196:21;248:4;241:5;237:16;286:3;277:6;272:3;268:16;265:25;262:112;;;293:79;;:::i;:::-;262:112;383:39;415:6;410:3;405;383:39;:::i;:::-;102:326;7:421;;;;;:::o;448:355::-;515:5;564:3;557:4;549:6;545:17;541:27;531:122;;572:79;;:::i;:::-;531:122;682:6;676:13;707:90;793:3;785:6;778:4;770:6;766:17;707:90;:::i;:::-;698:99;;521:282;448:355;;;;:::o;809:853::-;908:6;916;965:2;953:9;944:7;940:23;936:32;933:119;;;971:79;;:::i;:::-;933:119;1112:1;1101:9;1097:17;1091:24;1142:18;1134:6;1131:30;1128:117;;;1164:79;;:::i;:::-;1128:117;1269:74;1335:7;1326:6;1315:9;1311:22;1269:74;:::i;:::-;1259:84;;1062:291;1413:2;1402:9;1398:18;1392:25;1444:18;1436:6;1433:30;1430:117;;;1466:79;;:::i;:::-;1430:117;1571:74;1637:7;1628:6;1617:9;1613:22;1571:74;:::i;:::-;1561:84;;1363:292;809:853;;;;;:::o;1668:129::-;1702:6;1729:20;;:::i;:::-;1719:30;;1758:33;1786:4;1778:6;1758:33;:::i;:::-;1668:129;;;:::o;1803:75::-;1836:6;1869:2;1863:9;1853:19;;1803:75;:::o;1884:308::-;1946:4;2036:18;2028:6;2025:30;2022:56;;;2058:18;;:::i;:::-;2022:56;2096:29;2118:6;2096:29;:::i;:::-;2088:37;;2180:4;2174;2170:15;2162:23;;1884:308;;;:::o;2198:307::-;2266:1;2276:113;2290:6;2287:1;2284:13;2276:113;;;2375:1;2370:3;2366:11;2360:18;2356:1;2351:3;2347:11;2340:39;2312:2;2309:1;2305:10;2300:15;;2276:113;;;2407:6;2404:1;2401:13;2398:101;;;2487:1;2478:6;2473:3;2469:16;2462:27;2398:101;2247:258;2198:307;;;:::o;2511:320::-;2555:6;2592:1;2586:4;2582:12;2572:22;;2639:1;2633:4;2629:12;2660:18;2650:81;;2716:4;2708:6;2704:17;2694:27;;2650:81;2778:2;2770:6;2767:14;2747:18;2744:38;2741:84;;;2797:18;;:::i;:::-;2741:84;2562:269;2511:320;;;:::o;2837:281::-;2920:27;2942:4;2920:27;:::i;:::-;2912:6;2908:40;3050:6;3038:10;3035:22;3014:18;3002:10;2999:34;2996:62;2993:88;;;3061:18;;:::i;:::-;2993:88;3101:10;3097:2;3090:22;2880:238;2837:281;;:::o;3124:180::-;3172:77;3169:1;3162:88;3269:4;3266:1;3259:15;3293:4;3290:1;3283:15;3310:180;3358:77;3355:1;3348:88;3455:4;3452:1;3445:15;3479:4;3476:1;3469:15;3496:117;3605:1;3602;3595:12;3619:117;3728:1;3725;3718:12;3742:117;3851:1;3848;3841:12;3865:117;3974:1;3971;3964:12;3988:102;4029:6;4080:2;4076:7;4071:2;4064:5;4060:14;4056:28;4046:38;;3988:102;;;:::o;1331:10416:1:-;;;;;;;", + "deployedSourceMap": "1331:10416:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4814:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3021:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5687:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3336:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2295:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6386:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3894:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2084:98;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;4289:12;:10;:12::i;:::-;4303:7;4312:6;4280:8;:39::i;:::-;4336:4;4329:11;;4181:166;;;;:::o;3172:106::-;3233:7;3259:12;;3252:19;;3172:106;:::o;4814:478::-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5013:24;5040:11;:19;5052:6;5040:19;;;;;;;;;;;;;;;:33;5060:12;:10;:12::i;:::-;5040:33;;;;;;;;;;;;;;;;5013:60;;5111:6;5091:16;:26;;5083:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5196:57;5205:6;5213:12;:10;:12::i;:::-;5246:6;5227:16;:25;5196:8;:57::i;:::-;5281:4;5274:11;;;4814:478;;;;;:::o;3021:91::-;3079:5;3103:2;3096:9;;3021:91;:::o;5687:212::-;5775:4;5791:80;5800:12;:10;:12::i;:::-;5814:7;5860:10;5823:11;:25;5835:12;:10;:12::i;:::-;5823:25;;;;;;;;;;;;;;;:34;5849:7;5823:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5791:8;:80::i;:::-;5888:4;5881:11;;5687:212;;;;:::o;3336:125::-;3410:7;3436:9;:18;3446:7;3436:18;;;;;;;;;;;;;;;;3429:25;;3336:125;;;:::o;2295:102::-;2351:13;2383:7;2376:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:102;:::o;6386:405::-;6479:4;6495:24;6522:11;:25;6534:12;:10;:12::i;:::-;6522:25;;;;;;;;;;;;;;;:34;6548:7;6522:34;;;;;;;;;;;;;;;;6495:61;;6594:15;6574:16;:35;;6566:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6685:67;6694:12;:10;:12::i;:::-;6708:7;6736:15;6717:16;:34;6685:8;:67::i;:::-;6780:4;6773:11;;;6386:405;;;;:::o;3664:172::-;3750:4;3766:42;3776:12;:10;:12::i;:::-;3790:9;3801:6;3766:9;:42::i;:::-;3825:4;3818:11;;3664:172;;;;:::o;3894:149::-;3983:7;4009:11;:18;4021:5;4009:18;;;;;;;;;;;;;;;:27;4028:7;4009:27;;;;;;;;;;;;;;;;4002:34;;3894:149;;;;:::o;587:96:4:-;640:7;666:10;659:17;;587:96;:::o;9962:370:1:-;10110:1;10093:19;;:5;:19;;;;10085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10190:1;10171:21;;:7;:21;;;;10163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10272:6;10242:11;:18;10254:5;10242:18;;;;;;;;;;;;;;;:27;10261:7;10242:27;;;;;;;;;;;;;;;:36;;;;10309:7;10293:32;;10302:5;10293:32;;;10318:6;10293:32;;;;;;:::i;:::-;;;;;;;;9962:370;;;:::o;7265:713::-;7418:1;7400:20;;:6;:20;;;;7392:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:1;7480:23;;:9;:23;;;;7472:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7554:47;7575:6;7583:9;7594:6;7554:20;:47::i;:::-;7612:21;7636:9;:17;7646:6;7636:17;;;;;;;;;;;;;;;;7612:41;;7688:6;7671:13;:23;;7663:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7807:6;7791:13;:22;7771:9;:17;7781:6;7771:17;;;;;;;;;;;;;;;:42;;;;7857:6;7833:9;:20;7843:9;7833:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;;;:::i;:::-;;;;;;;;7925:46;7945:6;7953:9;7964:6;7925:19;:46::i;:::-;7382:596;7265:713;;;:::o;10916:121::-;;;;:::o;11625:120::-;;;;:::o;7:139:5:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:119;;;411:79;;:::i;:::-;373:119;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;297:329;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:119;;;763:79;;:::i;:::-;725:119;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;632:474;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:119;;;1260:79;;:::i;:::-;1222:119;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1112:619;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:119;;;1868:79;;:::i;:::-;1830:119;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1737:474;;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2217:109;;:::o;2332:364::-;2420:3;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;2332:364;;;;:::o;2702:366::-;2844:3;2865:67;2929:2;2924:3;2865:67;:::i;:::-;2858:74;;2941:93;3030:3;2941:93;:::i;:::-;3059:2;3054:3;3050:12;3043:19;;2702:366;;;:::o;3074:::-;3216:3;3237:67;3301:2;3296:3;3237:67;:::i;:::-;3230:74;;3313:93;3402:3;3313:93;:::i;:::-;3431:2;3426:3;3422:12;3415:19;;3074:366;;;:::o;3446:::-;3588:3;3609:67;3673:2;3668:3;3609:67;:::i;:::-;3602:74;;3685:93;3774:3;3685:93;:::i;:::-;3803:2;3798:3;3794:12;3787:19;;3446:366;;;:::o;3818:::-;3960:3;3981:67;4045:2;4040:3;3981:67;:::i;:::-;3974:74;;4057:93;4146:3;4057:93;:::i;:::-;4175:2;4170:3;4166:12;4159:19;;3818:366;;;:::o;4190:::-;4332:3;4353:67;4417:2;4412:3;4353:67;:::i;:::-;4346:74;;4429:93;4518:3;4429:93;:::i;:::-;4547:2;4542:3;4538:12;4531:19;;4190:366;;;:::o;4562:::-;4704:3;4725:67;4789:2;4784:3;4725:67;:::i;:::-;4718:74;;4801:93;4890:3;4801:93;:::i;:::-;4919:2;4914:3;4910:12;4903:19;;4562:366;;;:::o;4934:::-;5076:3;5097:67;5161:2;5156:3;5097:67;:::i;:::-;5090:74;;5173:93;5262:3;5173:93;:::i;:::-;5291:2;5286:3;5282:12;5275:19;;4934:366;;;:::o;5306:118::-;5393:24;5411:5;5393:24;:::i;:::-;5388:3;5381:37;5306:118;;:::o;5430:112::-;5513:22;5529:5;5513:22;:::i;:::-;5508:3;5501:35;5430:112;;:::o;5548:210::-;5635:4;5673:2;5662:9;5658:18;5650:26;;5686:65;5748:1;5737:9;5733:17;5724:6;5686:65;:::i;:::-;5548:210;;;;:::o;5764:313::-;5877:4;5915:2;5904:9;5900:18;5892:26;;5964:9;5958:4;5954:20;5950:1;5939:9;5935:17;5928:47;5992:78;6065:4;6056:6;5992:78;:::i;:::-;5984:86;;5764:313;;;;:::o;6083:419::-;6249:4;6287:2;6276:9;6272:18;6264:26;;6336:9;6330:4;6326:20;6322:1;6311:9;6307:17;6300:47;6364:131;6490:4;6364:131;:::i;:::-;6356:139;;6083:419;;;:::o;6508:::-;6674:4;6712:2;6701:9;6697:18;6689:26;;6761:9;6755:4;6751:20;6747:1;6736:9;6732:17;6725:47;6789:131;6915:4;6789:131;:::i;:::-;6781:139;;6508:419;;;:::o;6933:::-;7099:4;7137:2;7126:9;7122:18;7114:26;;7186:9;7180:4;7176:20;7172:1;7161:9;7157:17;7150:47;7214:131;7340:4;7214:131;:::i;:::-;7206:139;;6933:419;;;:::o;7358:::-;7524:4;7562:2;7551:9;7547:18;7539:26;;7611:9;7605:4;7601:20;7597:1;7586:9;7582:17;7575:47;7639:131;7765:4;7639:131;:::i;:::-;7631:139;;7358:419;;;:::o;7783:::-;7949:4;7987:2;7976:9;7972:18;7964:26;;8036:9;8030:4;8026:20;8022:1;8011:9;8007:17;8000:47;8064:131;8190:4;8064:131;:::i;:::-;8056:139;;7783:419;;;:::o;8208:::-;8374:4;8412:2;8401:9;8397:18;8389:26;;8461:9;8455:4;8451:20;8447:1;8436:9;8432:17;8425:47;8489:131;8615:4;8489:131;:::i;:::-;8481:139;;8208:419;;;:::o;8633:::-;8799:4;8837:2;8826:9;8822:18;8814:26;;8886:9;8880:4;8876:20;8872:1;8861:9;8857:17;8850:47;8914:131;9040:4;8914:131;:::i;:::-;8906:139;;8633:419;;;:::o;9058:222::-;9151:4;9189:2;9178:9;9174:18;9166:26;;9202:71;9270:1;9259:9;9255:17;9246:6;9202:71;:::i;:::-;9058:222;;;;:::o;9286:214::-;9375:4;9413:2;9402:9;9398:18;9390:26;;9426:67;9490:1;9479:9;9475:17;9466:6;9426:67;:::i;:::-;9286:214;;;;:::o;9587:99::-;9639:6;9673:5;9667:12;9657:22;;9587:99;;;:::o;9692:169::-;9776:11;9810:6;9805:3;9798:19;9850:4;9845:3;9841:14;9826:29;;9692:169;;;;:::o;9867:305::-;9907:3;9926:20;9944:1;9926:20;:::i;:::-;9921:25;;9960:20;9978:1;9960:20;:::i;:::-;9955:25;;10114:1;10046:66;10042:74;10039:1;10036:81;10033:107;;;10120:18;;:::i;:::-;10033:107;10164:1;10161;10157:9;10150:16;;9867:305;;;;:::o;10178:96::-;10215:7;10244:24;10262:5;10244:24;:::i;:::-;10233:35;;10178:96;;;:::o;10280:90::-;10314:7;10357:5;10350:13;10343:21;10332:32;;10280:90;;;:::o;10376:126::-;10413:7;10453:42;10446:5;10442:54;10431:65;;10376:126;;;:::o;10508:77::-;10545:7;10574:5;10563:16;;10508:77;;;:::o;10591:86::-;10626:7;10666:4;10659:5;10655:16;10644:27;;10591:86;;;:::o;10683:307::-;10751:1;10761:113;10775:6;10772:1;10769:13;10761:113;;;10860:1;10855:3;10851:11;10845:18;10841:1;10836:3;10832:11;10825:39;10797:2;10794:1;10790:10;10785:15;;10761:113;;;10892:6;10889:1;10886:13;10883:101;;;10972:1;10963:6;10958:3;10954:16;10947:27;10883:101;10732:258;10683:307;;;:::o;10996:320::-;11040:6;11077:1;11071:4;11067:12;11057:22;;11124:1;11118:4;11114:12;11145:18;11135:81;;11201:4;11193:6;11189:17;11179:27;;11135:81;11263:2;11255:6;11252:14;11232:18;11229:38;11226:84;;;11282:18;;:::i;:::-;11226:84;11047:269;10996:320;;;:::o;11322:180::-;11370:77;11367:1;11360:88;11467:4;11464:1;11457:15;11491:4;11488:1;11481:15;11508:180;11556:77;11553:1;11546:88;11653:4;11650:1;11643:15;11677:4;11674:1;11667:15;11817:117;11926:1;11923;11916:12;11940:102;11981:6;12032:2;12028:7;12023:2;12016:5;12012:14;12008:28;11998:38;;11940:102;;;:::o;12048:222::-;12188:34;12184:1;12176:6;12172:14;12165:58;12257:5;12252:2;12244:6;12240:15;12233:30;12048:222;:::o;12276:221::-;12416:34;12412:1;12404:6;12400:14;12393:58;12485:4;12480:2;12472:6;12468:15;12461:29;12276:221;:::o;12503:225::-;12643:34;12639:1;12631:6;12627:14;12620:58;12712:8;12707:2;12699:6;12695:15;12688:33;12503:225;:::o;12734:227::-;12874:34;12870:1;12862:6;12858:14;12851:58;12943:10;12938:2;12930:6;12926:15;12919:35;12734:227;:::o;12967:224::-;13107:34;13103:1;13095:6;13091:14;13084:58;13176:7;13171:2;13163:6;13159:15;13152:32;12967:224;:::o;13197:223::-;13337:34;13333:1;13325:6;13321:14;13314:58;13406:6;13401:2;13393:6;13389:15;13382:31;13197:223;:::o;13426:224::-;13566:34;13562:1;13554:6;13550:14;13543:58;13635:7;13630:2;13622:6;13618:15;13611:32;13426:224;:::o;13656:122::-;13729:24;13747:5;13729:24;:::i;:::-;13722:5;13719:35;13709:63;;13768:1;13765;13758:12;13709:63;13656:122;:::o;13784:::-;13857:24;13875:5;13857:24;:::i;:::-;13850:5;13847:35;13837:63;;13896:1;13893;13886:12;13837:63;13784:122;:::o", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * The default value of {decimals} is 18. To select a different value for\n * {decimals} you should overload it.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\n * overridden;\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * Requirements:\n *\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n\n uint256 currentAllowance = _allowances[sender][_msgSender()];\n require(currentAllowance >= amount, \"ERC20: transfer amount exceeds allowance\");\n unchecked {\n _approve(sender, _msgSender(), currentAllowance - amount);\n }\n\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n uint256 currentAllowance = _allowances[_msgSender()][spender];\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(_msgSender(), spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `sender` to `recipient`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal virtual {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n uint256 senderBalance = _balances[sender];\n require(senderBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[sender] = senderBalance - amount;\n }\n _balances[recipient] += amount;\n\n emit Transfer(sender, recipient, amount);\n\n _afterTokenTransfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n _balances[account] += amount;\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n }\n _totalSupply -= amount;\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n}\n", + "sourcePath": "D:\\Block-Chain\\defi-dapps-solidity-smart-contracts\\creating-erc20-token\\node_modules\\@openzeppelin\\contracts\\token\\ERC20\\ERC20.sol", + "ast": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "Context": [ + 695 + ], + "ERC20": [ + 570 + ], + "IERC20": [ + 648 + ], + "IERC20Metadata": [ + 673 + ] + }, + "id": 571, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 26, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:1" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 27, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 571, + "sourceUnit": 649, + "src": "58:22:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "file": "./extensions/IERC20Metadata.sol", + "id": 28, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 571, + "sourceUnit": 674, + "src": "81:41:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 29, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 571, + "sourceUnit": 696, + "src": "123:33:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 31, + "name": "Context", + "nodeType": "IdentifierPath", + "referencedDeclaration": 695, + "src": "1349:7:1" + }, + "id": 32, + "nodeType": "InheritanceSpecifier", + "src": "1349:7:1" + }, + { + "baseName": { + "id": 33, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 648, + "src": "1358:6:1" + }, + "id": 34, + "nodeType": "InheritanceSpecifier", + "src": "1358:6:1" + }, + { + "baseName": { + "id": 35, + "name": "IERC20Metadata", + "nodeType": "IdentifierPath", + "referencedDeclaration": 673, + "src": "1366:14:1" + }, + "id": 36, + "nodeType": "InheritanceSpecifier", + "src": "1366:14:1" + } + ], + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 30, + "nodeType": "StructuredDocumentation", + "src": "158:1172:1", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." + }, + "fullyImplemented": true, + "id": 570, + "linearizedBaseContracts": [ + 570, + 673, + 648, + 695 + ], + "name": "ERC20", + "nameLocation": "1340:5:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1423:9:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1387:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 39, + "keyType": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1395:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1387:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 38, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1406:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 46, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1495:11:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1439:67:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 45, + "keyType": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1447:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1439:47:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 44, + "keyType": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1466:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1458:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 43, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1477:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 48, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1529:12:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1513:28:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 47, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1563:5:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1548:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 49, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1548:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 52, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1589:7:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1574:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 51, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1574:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "1962:57:1", + "statements": [ + { + "expression": { + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 60, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "1972:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 61, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "1980:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1972:13:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 63, + "nodeType": "ExpressionStatement", + "src": "1972:13:1" + }, + { + "expression": { + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 64, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "1995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 65, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "2005:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1995:17:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 67, + "nodeType": "ExpressionStatement", + "src": "1995:17:1" + } + ] + }, + "documentation": { + "id": 53, + "nodeType": "StructuredDocumentation", + "src": "1603:298:1", + "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction." + }, + "id": 69, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "name_", + "nameLocation": "1932:5:1", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1918:19:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 54, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1918:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "1953:7:1", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1939:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 56, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1939:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1917:44:1" + }, + "returnParameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [], + "src": "1962:0:1" + }, + "scope": 570, + "src": "1906:113:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 660 + ], + "body": { + "id": 78, + "nodeType": "Block", + "src": "2153:29:1", + "statements": [ + { + "expression": { + "id": 76, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "2170:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 75, + "id": 77, + "nodeType": "Return", + "src": "2163:12:1" + } + ] + }, + "documentation": { + "id": 70, + "nodeType": "StructuredDocumentation", + "src": "2025:54:1", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 79, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "2093:4:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 72, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2120:8:1" + }, + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [], + "src": "2097:2:1" + }, + "returnParameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 79, + "src": "2138:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 73, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2138:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2137:15:1" + }, + "scope": 570, + "src": "2084:98:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 666 + ], + "body": { + "id": 88, + "nodeType": "Block", + "src": "2366:31:1", + "statements": [ + { + "expression": { + "id": 86, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "2383:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 85, + "id": 87, + "nodeType": "Return", + "src": "2376:14:1" + } + ] + }, + "documentation": { + "id": 80, + "nodeType": "StructuredDocumentation", + "src": "2188:102:1", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 89, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "2304:6:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 82, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2333:8:1" + }, + "parameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [], + "src": "2310:2:1" + }, + "returnParameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 84, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 89, + "src": "2351:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 83, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2351:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2350:15:1" + }, + "scope": 570, + "src": "2295:102:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 672 + ], + "body": { + "id": 98, + "nodeType": "Block", + "src": "3086:26:1", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3103:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 95, + "id": 97, + "nodeType": "Return", + "src": "3096:9:1" + } + ] + }, + "documentation": { + "id": 90, + "nodeType": "StructuredDocumentation", + "src": "2403:613:1", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 99, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "3030:8:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 92, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3061:8:1" + }, + "parameters": { + "id": 91, + "nodeType": "ParameterList", + "parameters": [], + "src": "3038:2:1" + }, + "returnParameters": { + "id": 95, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "3079:5:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 93, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3079:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3078:7:1" + }, + "scope": 570, + "src": "3021:91:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 579 + ], + "body": { + "id": 108, + "nodeType": "Block", + "src": "3242:36:1", + "statements": [ + { + "expression": { + "id": 106, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "3259:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 105, + "id": 107, + "nodeType": "Return", + "src": "3252:19:1" + } + ] + }, + "documentation": { + "id": 100, + "nodeType": "StructuredDocumentation", + "src": "3118:49:1", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 109, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "3181:11:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 102, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3215:8:1" + }, + "parameters": { + "id": 101, + "nodeType": "ParameterList", + "parameters": [], + "src": "3192:2:1" + }, + "returnParameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 109, + "src": "3233:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3233:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3232:9:1" + }, + "scope": 570, + "src": "3172:106:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 587 + ], + "body": { + "id": 122, + "nodeType": "Block", + "src": "3419:42:1", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 118, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "3436:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 120, + "indexExpression": { + "id": 119, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "3446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3436:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 117, + "id": 121, + "nodeType": "Return", + "src": "3429:25:1" + } + ] + }, + "documentation": { + "id": 110, + "nodeType": "StructuredDocumentation", + "src": "3284:47:1", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 123, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3345:9:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 114, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3392:8:1" + }, + "parameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 112, + "mutability": "mutable", + "name": "account", + "nameLocation": "3363:7:1", + "nodeType": "VariableDeclaration", + "scope": 123, + "src": "3355:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3355:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3354:17:1" + }, + "returnParameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 116, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 123, + "src": "3410:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3410:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3409:9:1" + }, + "scope": 570, + "src": "3336:125:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 597 + ], + "body": { + "id": 143, + "nodeType": "Block", + "src": "3756:80:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 135, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "3776:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3776:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 137, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3790:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 138, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "3801:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 134, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 374, + "src": "3766:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3766:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 140, + "nodeType": "ExpressionStatement", + "src": "3766:42:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3825:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 133, + "id": 142, + "nodeType": "Return", + "src": "3818:11:1" + } + ] + }, + "documentation": { + "id": 124, + "nodeType": "StructuredDocumentation", + "src": "3467:192:1", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "functionSelector": "a9059cbb", + "id": 144, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "3673:8:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 130, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3732:8:1" + }, + "parameters": { + "id": 129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 126, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "3690:9:1", + "nodeType": "VariableDeclaration", + "scope": 144, + "src": "3682:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3682:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 128, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3709:6:1", + "nodeType": "VariableDeclaration", + "scope": 144, + "src": "3701:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3701:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3681:35:1" + }, + "returnParameters": { + "id": 133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 144, + "src": "3750:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 131, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3750:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3749:6:1" + }, + "scope": 570, + "src": "3664:172:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 607 + ], + "body": { + "id": 161, + "nodeType": "Block", + "src": "3992:51:1", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 155, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "4009:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 157, + "indexExpression": { + "id": 156, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "4021:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4009:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 159, + "indexExpression": { + "id": 158, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "4028:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4009:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 154, + "id": 160, + "nodeType": "Return", + "src": "4002:34:1" + } + ] + }, + "documentation": { + "id": 145, + "nodeType": "StructuredDocumentation", + "src": "3842:47:1", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 162, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3903:9:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 151, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3965:8:1" + }, + "parameters": { + "id": 150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 147, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3921:5:1", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "3913:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 146, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3913:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3936:7:1", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "3928:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3928:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3912:32:1" + }, + "returnParameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "3983:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3983:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3982:9:1" + }, + "scope": 570, + "src": "3894:149:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 617 + ], + "body": { + "id": 182, + "nodeType": "Block", + "src": "4270:77:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 174, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "4289:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4289:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 176, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "4303:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 177, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "4312:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 173, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "4280:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4280:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 179, + "nodeType": "ExpressionStatement", + "src": "4280:39:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4336:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 172, + "id": 181, + "nodeType": "Return", + "src": "4329:11:1" + } + ] + }, + "documentation": { + "id": 163, + "nodeType": "StructuredDocumentation", + "src": "4049:127:1", + "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 183, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4190:7:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 169, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4246:8:1" + }, + "parameters": { + "id": 168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4206:7:1", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "4198:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4198:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4223:6:1", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "4215:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4215:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4197:33:1" + }, + "returnParameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 171, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "4264:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 170, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4264:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4263:6:1" + }, + "scope": 570, + "src": "4181:166:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 629 + ], + "body": { + "id": 230, + "nodeType": "Block", + "src": "4956:336:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 197, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "4976:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 198, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4984:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 199, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 190, + "src": "4995:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 196, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 374, + "src": "4966:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4966:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 201, + "nodeType": "ExpressionStatement", + "src": "4966:36:1" + }, + { + "assignments": [ + 203 + ], + "declarations": [ + { + "constant": false, + "id": 203, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "5021:16:1", + "nodeType": "VariableDeclaration", + "scope": 230, + "src": "5013:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5013:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 210, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 204, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "5040:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 206, + "indexExpression": { + "id": 205, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "5052:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5040:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 209, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 207, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5060:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5060:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5040:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5013:60:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 212, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5091:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 213, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 190, + "src": "5111:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5091:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5119:42:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + }, + "value": "ERC20: transfer amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "id": 211, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "5083:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5083:79:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 217, + "nodeType": "ExpressionStatement", + "src": "5083:79:1" + }, + { + "id": 227, + "nodeType": "UncheckedBlock", + "src": "5172:92:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 219, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "5205:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 220, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5213:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5213:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 222, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5227:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 223, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 190, + "src": "5246:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5227:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 218, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "5196:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5196:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 226, + "nodeType": "ExpressionStatement", + "src": "5196:57:1" + } + ] + }, + { + "expression": { + "hexValue": "74727565", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5281:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 195, + "id": 229, + "nodeType": "Return", + "src": "5274:11:1" + } + ] + }, + "documentation": { + "id": 184, + "nodeType": "StructuredDocumentation", + "src": "4353:456:1", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." + }, + "functionSelector": "23b872dd", + "id": 231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "4823:12:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 192, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4932:8:1" + }, + "parameters": { + "id": 191, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 186, + "mutability": "mutable", + "name": "sender", + "nameLocation": "4853:6:1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4845:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4845:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 188, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "4877:9:1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4869:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4869:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 190, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4904:6:1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4896:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4896:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4835:81:1" + }, + "returnParameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 194, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4950:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 193, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4950:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4949:6:1" + }, + "scope": 570, + "src": "4814:478:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 257, + "nodeType": "Block", + "src": "5781:118:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 242, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5800:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5800:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 244, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 234, + "src": "5814:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "baseExpression": { + "id": 245, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "5823:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 248, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 246, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5835:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5835:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5823:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 250, + "indexExpression": { + "id": 249, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 234, + "src": "5849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5823:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 251, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 236, + "src": "5860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5823:47:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 241, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "5791:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5791:80:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 254, + "nodeType": "ExpressionStatement", + "src": "5791:80:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5888:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 240, + "id": 256, + "nodeType": "Return", + "src": "5881:11:1" + } + ] + }, + "documentation": { + "id": 232, + "nodeType": "StructuredDocumentation", + "src": "5298:384:1", + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "39509351", + "id": 258, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nameLocation": "5696:17:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 234, + "mutability": "mutable", + "name": "spender", + "nameLocation": "5722:7:1", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "5714:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5714:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 236, + "mutability": "mutable", + "name": "addedValue", + "nameLocation": "5739:10:1", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "5731:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5713:37:1" + }, + "returnParameters": { + "id": 240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 239, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "5775:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 238, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5775:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5774:6:1" + }, + "scope": 570, + "src": "5687:212:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 296, + "nodeType": "Block", + "src": "6485:306:1", + "statements": [ + { + "assignments": [ + 269 + ], + "declarations": [ + { + "constant": false, + "id": 269, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "6503:16:1", + "nodeType": "VariableDeclaration", + "scope": 296, + "src": "6495:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 268, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6495:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 276, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 270, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "6522:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 273, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 271, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "6534:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6534:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6522:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 275, + "indexExpression": { + "id": 274, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "6548:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6522:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6495:61:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 278, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 269, + "src": "6574:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 279, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "6594:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6574:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6611:39:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "id": 277, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6566:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6566:85:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 283, + "nodeType": "ExpressionStatement", + "src": "6566:85:1" + }, + { + "id": 293, + "nodeType": "UncheckedBlock", + "src": "6661:102:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 285, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "6694:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6694:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 287, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "6708:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 288, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 269, + "src": "6717:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 289, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "6736:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6717:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 284, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "6685:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6685:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "6685:67:1" + } + ] + }, + { + "expression": { + "hexValue": "74727565", + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6780:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 267, + "id": 295, + "nodeType": "Return", + "src": "6773:11:1" + } + ] + }, + "documentation": { + "id": 259, + "nodeType": "StructuredDocumentation", + "src": "5905:476:1", + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "functionSelector": "a457c2d7", + "id": 297, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nameLocation": "6395:17:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "spender", + "nameLocation": "6421:7:1", + "nodeType": "VariableDeclaration", + "scope": 297, + "src": "6413:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6413:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "mutability": "mutable", + "name": "subtractedValue", + "nameLocation": "6438:15:1", + "nodeType": "VariableDeclaration", + "scope": 297, + "src": "6430:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6430:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6412:42:1" + }, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 266, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 297, + "src": "6479:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6479:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6478:6:1" + }, + "scope": 570, + "src": "6386:405:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 373, + "nodeType": "Block", + "src": "7382:596:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 308, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7400:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7418:1:1", + "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": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7410:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7410:7:1", + "typeDescriptions": {} + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7410:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7400:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7422:39:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "id": 307, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7392:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7392:70:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "ExpressionStatement", + "src": "7392:70:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 318, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7480:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7501:1:1", + "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": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7493:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7493:7:1", + "typeDescriptions": {} + } + }, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7493:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7480:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7505:37:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "id": 317, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7472:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7472:71:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 326, + "nodeType": "ExpressionStatement", + "src": "7472:71:1" + }, + { + "expression": { + "arguments": [ + { + "id": 328, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7575:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 329, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7583:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 330, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7594:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 327, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "7554:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7554:47:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "7554:47:1" + }, + { + "assignments": [ + 334 + ], + "declarations": [ + { + "constant": false, + "id": 334, + "mutability": "mutable", + "name": "senderBalance", + "nameLocation": "7620:13:1", + "nodeType": "VariableDeclaration", + "scope": 373, + "src": "7612:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7612:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 338, + "initialValue": { + "baseExpression": { + "id": 335, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "7636:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 337, + "indexExpression": { + "id": 336, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7646:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7636:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7612:41:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 340, + "name": "senderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7671:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 341, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7688:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7671:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7696:40:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "id": 339, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7663:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7663:74:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "7663:74:1" + }, + { + "id": 354, + "nodeType": "UncheckedBlock", + "src": "7747:77:1", + "statements": [ + { + "expression": { + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 346, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "7771:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 348, + "indexExpression": { + "id": 347, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7781:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7771:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 349, + "name": "senderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7791:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 350, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7807:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7791:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7771:42:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 353, + "nodeType": "ExpressionStatement", + "src": "7771:42:1" + } + ] + }, + { + "expression": { + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 355, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "7833:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 357, + "indexExpression": { + "id": 356, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7843:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7833:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 358, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7857:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7833:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 360, + "nodeType": "ExpressionStatement", + "src": "7833:30:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 362, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7888:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 363, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7896:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 364, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7907:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 361, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "7879:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7879:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 366, + "nodeType": "EmitStatement", + "src": "7874:40:1" + }, + { + "expression": { + "arguments": [ + { + "id": 368, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7945:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 369, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7953:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 370, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7964:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 367, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "7925:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7925:46:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 372, + "nodeType": "ExpressionStatement", + "src": "7925:46:1" + } + ] + }, + "documentation": { + "id": 298, + "nodeType": "StructuredDocumentation", + "src": "6797:463:1", + "text": " @dev Moves `amount` of tokens from `sender` to `recipient`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." + }, + "id": 374, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "7274:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 300, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7301:6:1", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "7293:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 299, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7293:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 302, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "7325:9:1", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "7317:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7317:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7352:6:1", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "7344:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7344:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7283:81:1" + }, + "returnParameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [], + "src": "7382:0:1" + }, + "scope": 570, + "src": "7265:713:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 429, + "nodeType": "Block", + "src": "8319:324:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 383, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8337:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8356:1:1", + "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": 385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8348:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8348:7:1", + "typeDescriptions": {} + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8348:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8337:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8360:33:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "id": 382, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "8329:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8329:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 391, + "nodeType": "ExpressionStatement", + "src": "8329:65:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8434:1:1", + "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": 394, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8426:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8426:7:1", + "typeDescriptions": {} + } + }, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8426:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 397, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8438:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 398, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8447:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 392, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "8405:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8405:49:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 400, + "nodeType": "ExpressionStatement", + "src": "8405:49:1" + }, + { + "expression": { + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 401, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "8465:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 402, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8481:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8465:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 404, + "nodeType": "ExpressionStatement", + "src": "8465:22:1" + }, + { + "expression": { + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 405, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "8497:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 407, + "indexExpression": { + "id": 406, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8507:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8497:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 408, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8519:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8497:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 410, + "nodeType": "ExpressionStatement", + "src": "8497:28:1" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8557:1:1", + "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": 413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8549:7:1", + "typeDescriptions": {} + } + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8549:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 416, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8561:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 417, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8570:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 411, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "8540:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8540:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 419, + "nodeType": "EmitStatement", + "src": "8535:42:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8616:1:1", + "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": 422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8608:7:1", + "typeDescriptions": {} + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8608:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 425, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8620:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 426, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8629:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 420, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "8588:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8588:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 428, + "nodeType": "ExpressionStatement", + "src": "8588:48:1" + } + ] + }, + "documentation": { + "id": 375, + "nodeType": "StructuredDocumentation", + "src": "7984:265:1", + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address." + }, + "id": 430, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "8263:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 377, + "mutability": "mutable", + "name": "account", + "nameLocation": "8277:7:1", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "8269:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8269:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 379, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8294:6:1", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "8286:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8286:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8268:33:1" + }, + "returnParameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [], + "src": "8319:0:1" + }, + "scope": 570, + "src": "8254:389:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 501, + "nodeType": "Block", + "src": "9028:511:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 439, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9046:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9065:1:1", + "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": 441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9057:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9057:7:1", + "typeDescriptions": {} + } + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9057:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9046:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:35:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "id": 438, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "9038:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9038:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 447, + "nodeType": "ExpressionStatement", + "src": "9038:67:1" + }, + { + "expression": { + "arguments": [ + { + "id": 449, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9137:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9154:1:1", + "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": 451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9146:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9146:7:1", + "typeDescriptions": {} + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9146:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 454, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9158:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 448, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "9116:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9116:49:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 456, + "nodeType": "ExpressionStatement", + "src": "9116:49:1" + }, + { + "assignments": [ + 458 + ], + "declarations": [ + { + "constant": false, + "id": 458, + "mutability": "mutable", + "name": "accountBalance", + "nameLocation": "9184:14:1", + "nodeType": "VariableDeclaration", + "scope": 501, + "src": "9176:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9176:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 462, + "initialValue": { + "baseExpression": { + "id": 459, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "9201:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 461, + "indexExpression": { + "id": 460, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9201:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9176:43:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 464, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "9237:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 465, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9255:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9237:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9263:36:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "id": 463, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "9229:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9229:71:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 469, + "nodeType": "ExpressionStatement", + "src": "9229:71:1" + }, + { + "id": 478, + "nodeType": "UncheckedBlock", + "src": "9310:79:1", + "statements": [ + { + "expression": { + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 470, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "9334:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 472, + "indexExpression": { + "id": 471, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9344:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9334:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 473, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "9355:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 474, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9372:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9355:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9334:44:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "9334:44:1" + } + ] + }, + { + "expression": { + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 479, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "9398:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 480, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9414:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9398:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 482, + "nodeType": "ExpressionStatement", + "src": "9398:22:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 484, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9445:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9462:1:1", + "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": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9454:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9454:7:1", + "typeDescriptions": {} + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9454:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 489, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9466:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 483, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "9436:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9436:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 491, + "nodeType": "EmitStatement", + "src": "9431:42:1" + }, + { + "expression": { + "arguments": [ + { + "id": 493, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9504:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9521:1:1", + "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": 495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9513:7:1", + "typeDescriptions": {} + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9513:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 498, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9525:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 492, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "9484:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9484:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 500, + "nodeType": "ExpressionStatement", + "src": "9484:48:1" + } + ] + }, + "documentation": { + "id": 431, + "nodeType": "StructuredDocumentation", + "src": "8649:309:1", + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 502, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "8972:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 433, + "mutability": "mutable", + "name": "account", + "nameLocation": "8986:7:1", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "8978:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8978:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9003:6:1", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "8995:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8977:33:1" + }, + "returnParameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [], + "src": "9028:0:1" + }, + "scope": 570, + "src": "8963:576:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 546, + "nodeType": "Block", + "src": "10075:257:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 513, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "10093:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10110:1:1", + "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": 515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10102:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10102:7:1", + "typeDescriptions": {} + } + }, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10102:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10093:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10114:38:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "id": 512, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "10085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10085:68:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 521, + "nodeType": "ExpressionStatement", + "src": "10085:68:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 523, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "10171:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10190:1:1", + "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": 525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10182:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10182:7:1", + "typeDescriptions": {} + } + }, + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10182:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10171:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10194:36:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "id": 522, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "10163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10163:68:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 531, + "nodeType": "ExpressionStatement", + "src": "10163:68:1" + }, + { + "expression": { + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 532, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "10242:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 535, + "indexExpression": { + "id": 533, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "10254:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10242:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 536, + "indexExpression": { + "id": 534, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "10261:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10242:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 537, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "10272:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10242:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 539, + "nodeType": "ExpressionStatement", + "src": "10242:36:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 541, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "10302:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 542, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "10309:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 543, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "10318:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 540, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "10293:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10293:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 545, + "nodeType": "EmitStatement", + "src": "10288:37:1" + } + ] + }, + "documentation": { + "id": 503, + "nodeType": "StructuredDocumentation", + "src": "9545:412:1", + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 547, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "9971:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 505, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9997:5:1", + "nodeType": "VariableDeclaration", + "scope": 547, + "src": "9989:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9989:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 507, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10020:7:1", + "nodeType": "VariableDeclaration", + "scope": 547, + "src": "10012:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10012:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 509, + "mutability": "mutable", + "name": "amount", + "nameLocation": "10045:6:1", + "nodeType": "VariableDeclaration", + "scope": 547, + "src": "10037:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10037:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9979:78:1" + }, + "returnParameters": { + "id": 511, + "nodeType": "ParameterList", + "parameters": [], + "src": "10075:0:1" + }, + "scope": 570, + "src": "9962:370:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 557, + "nodeType": "Block", + "src": "11035:2:1", + "statements": [] + }, + "documentation": { + "id": 548, + "nodeType": "StructuredDocumentation", + "src": "10338:573:1", + "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nameLocation": "10925:20:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 550, + "mutability": "mutable", + "name": "from", + "nameLocation": "10963:4:1", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "10955:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 549, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10955:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 552, + "mutability": "mutable", + "name": "to", + "nameLocation": "10985:2:1", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "10977:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10977:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 554, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11005:6:1", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "10997:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10997:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10945:72:1" + }, + "returnParameters": { + "id": 556, + "nodeType": "ParameterList", + "parameters": [], + "src": "11035:0:1" + }, + "scope": 570, + "src": "10916:121:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 568, + "nodeType": "Block", + "src": "11743:2:1", + "statements": [] + }, + "documentation": { + "id": 559, + "nodeType": "StructuredDocumentation", + "src": "11043:577:1", + "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_afterTokenTransfer", + "nameLocation": "11634:19:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 561, + "mutability": "mutable", + "name": "from", + "nameLocation": "11671:4:1", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "11663:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11663:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 563, + "mutability": "mutable", + "name": "to", + "nameLocation": "11693:2:1", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "11685:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11685:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 565, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11713:6:1", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "11705:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11705:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11653:72:1" + }, + "returnParameters": { + "id": 567, + "nodeType": "ParameterList", + "parameters": [], + "src": "11743:0:1" + }, + "scope": 570, + "src": "11625:120:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 571, + "src": "1331:10416:1", + "usedErrors": [] + } + ], + "src": "33:11715:1" + }, + "legacyAST": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "Context": [ + 695 + ], + "ERC20": [ + 570 + ], + "IERC20": [ + 648 + ], + "IERC20Metadata": [ + 673 + ] + }, + "id": 571, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 26, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:1" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 27, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 571, + "sourceUnit": 649, + "src": "58:22:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "file": "./extensions/IERC20Metadata.sol", + "id": 28, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 571, + "sourceUnit": 674, + "src": "81:41:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 29, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 571, + "sourceUnit": 696, + "src": "123:33:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 31, + "name": "Context", + "nodeType": "IdentifierPath", + "referencedDeclaration": 695, + "src": "1349:7:1" + }, + "id": 32, + "nodeType": "InheritanceSpecifier", + "src": "1349:7:1" + }, + { + "baseName": { + "id": 33, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 648, + "src": "1358:6:1" + }, + "id": 34, + "nodeType": "InheritanceSpecifier", + "src": "1358:6:1" + }, + { + "baseName": { + "id": 35, + "name": "IERC20Metadata", + "nodeType": "IdentifierPath", + "referencedDeclaration": 673, + "src": "1366:14:1" + }, + "id": 36, + "nodeType": "InheritanceSpecifier", + "src": "1366:14:1" + } + ], + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 30, + "nodeType": "StructuredDocumentation", + "src": "158:1172:1", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." + }, + "fullyImplemented": true, + "id": 570, + "linearizedBaseContracts": [ + 570, + 673, + 648, + 695 + ], + "name": "ERC20", + "nameLocation": "1340:5:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1423:9:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1387:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 39, + "keyType": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1395:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1387:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 38, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1406:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 46, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1495:11:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1439:67:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 45, + "keyType": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1447:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1439:47:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 44, + "keyType": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1466:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1458:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 43, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1477:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 48, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1529:12:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1513:28:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 47, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1563:5:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1548:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 49, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1548:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 52, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1589:7:1", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "1574:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 51, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1574:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "1962:57:1", + "statements": [ + { + "expression": { + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 60, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "1972:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 61, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "1980:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1972:13:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 63, + "nodeType": "ExpressionStatement", + "src": "1972:13:1" + }, + { + "expression": { + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 64, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "1995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 65, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "2005:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1995:17:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 67, + "nodeType": "ExpressionStatement", + "src": "1995:17:1" + } + ] + }, + "documentation": { + "id": 53, + "nodeType": "StructuredDocumentation", + "src": "1603:298:1", + "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction." + }, + "id": 69, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "name_", + "nameLocation": "1932:5:1", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1918:19:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 54, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1918:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "1953:7:1", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1939:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 56, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1939:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1917:44:1" + }, + "returnParameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [], + "src": "1962:0:1" + }, + "scope": 570, + "src": "1906:113:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 660 + ], + "body": { + "id": 78, + "nodeType": "Block", + "src": "2153:29:1", + "statements": [ + { + "expression": { + "id": 76, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "2170:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 75, + "id": 77, + "nodeType": "Return", + "src": "2163:12:1" + } + ] + }, + "documentation": { + "id": 70, + "nodeType": "StructuredDocumentation", + "src": "2025:54:1", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 79, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "2093:4:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 72, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2120:8:1" + }, + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [], + "src": "2097:2:1" + }, + "returnParameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 79, + "src": "2138:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 73, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2138:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2137:15:1" + }, + "scope": 570, + "src": "2084:98:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 666 + ], + "body": { + "id": 88, + "nodeType": "Block", + "src": "2366:31:1", + "statements": [ + { + "expression": { + "id": 86, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "2383:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 85, + "id": 87, + "nodeType": "Return", + "src": "2376:14:1" + } + ] + }, + "documentation": { + "id": 80, + "nodeType": "StructuredDocumentation", + "src": "2188:102:1", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 89, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "2304:6:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 82, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2333:8:1" + }, + "parameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [], + "src": "2310:2:1" + }, + "returnParameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 84, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 89, + "src": "2351:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 83, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2351:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2350:15:1" + }, + "scope": 570, + "src": "2295:102:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 672 + ], + "body": { + "id": 98, + "nodeType": "Block", + "src": "3086:26:1", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3103:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 95, + "id": 97, + "nodeType": "Return", + "src": "3096:9:1" + } + ] + }, + "documentation": { + "id": 90, + "nodeType": "StructuredDocumentation", + "src": "2403:613:1", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 99, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "3030:8:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 92, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3061:8:1" + }, + "parameters": { + "id": 91, + "nodeType": "ParameterList", + "parameters": [], + "src": "3038:2:1" + }, + "returnParameters": { + "id": 95, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "3079:5:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 93, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3079:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3078:7:1" + }, + "scope": 570, + "src": "3021:91:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 579 + ], + "body": { + "id": 108, + "nodeType": "Block", + "src": "3242:36:1", + "statements": [ + { + "expression": { + "id": 106, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "3259:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 105, + "id": 107, + "nodeType": "Return", + "src": "3252:19:1" + } + ] + }, + "documentation": { + "id": 100, + "nodeType": "StructuredDocumentation", + "src": "3118:49:1", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 109, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "3181:11:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 102, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3215:8:1" + }, + "parameters": { + "id": 101, + "nodeType": "ParameterList", + "parameters": [], + "src": "3192:2:1" + }, + "returnParameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 109, + "src": "3233:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3233:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3232:9:1" + }, + "scope": 570, + "src": "3172:106:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 587 + ], + "body": { + "id": 122, + "nodeType": "Block", + "src": "3419:42:1", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 118, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "3436:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 120, + "indexExpression": { + "id": 119, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "3446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3436:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 117, + "id": 121, + "nodeType": "Return", + "src": "3429:25:1" + } + ] + }, + "documentation": { + "id": 110, + "nodeType": "StructuredDocumentation", + "src": "3284:47:1", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 123, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3345:9:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 114, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3392:8:1" + }, + "parameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 112, + "mutability": "mutable", + "name": "account", + "nameLocation": "3363:7:1", + "nodeType": "VariableDeclaration", + "scope": 123, + "src": "3355:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3355:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3354:17:1" + }, + "returnParameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 116, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 123, + "src": "3410:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3410:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3409:9:1" + }, + "scope": 570, + "src": "3336:125:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 597 + ], + "body": { + "id": 143, + "nodeType": "Block", + "src": "3756:80:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 135, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "3776:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3776:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 137, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3790:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 138, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "3801:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 134, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 374, + "src": "3766:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3766:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 140, + "nodeType": "ExpressionStatement", + "src": "3766:42:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3825:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 133, + "id": 142, + "nodeType": "Return", + "src": "3818:11:1" + } + ] + }, + "documentation": { + "id": 124, + "nodeType": "StructuredDocumentation", + "src": "3467:192:1", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "functionSelector": "a9059cbb", + "id": 144, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "3673:8:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 130, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3732:8:1" + }, + "parameters": { + "id": 129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 126, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "3690:9:1", + "nodeType": "VariableDeclaration", + "scope": 144, + "src": "3682:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3682:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 128, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3709:6:1", + "nodeType": "VariableDeclaration", + "scope": 144, + "src": "3701:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3701:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3681:35:1" + }, + "returnParameters": { + "id": 133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 144, + "src": "3750:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 131, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3750:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3749:6:1" + }, + "scope": 570, + "src": "3664:172:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 607 + ], + "body": { + "id": 161, + "nodeType": "Block", + "src": "3992:51:1", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 155, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "4009:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 157, + "indexExpression": { + "id": 156, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "4021:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4009:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 159, + "indexExpression": { + "id": 158, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "4028:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4009:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 154, + "id": 160, + "nodeType": "Return", + "src": "4002:34:1" + } + ] + }, + "documentation": { + "id": 145, + "nodeType": "StructuredDocumentation", + "src": "3842:47:1", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 162, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3903:9:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 151, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3965:8:1" + }, + "parameters": { + "id": 150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 147, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3921:5:1", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "3913:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 146, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3913:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3936:7:1", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "3928:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3928:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3912:32:1" + }, + "returnParameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "3983:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3983:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3982:9:1" + }, + "scope": 570, + "src": "3894:149:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 617 + ], + "body": { + "id": 182, + "nodeType": "Block", + "src": "4270:77:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 174, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "4289:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4289:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 176, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "4303:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 177, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "4312:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 173, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "4280:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4280:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 179, + "nodeType": "ExpressionStatement", + "src": "4280:39:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4336:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 172, + "id": 181, + "nodeType": "Return", + "src": "4329:11:1" + } + ] + }, + "documentation": { + "id": 163, + "nodeType": "StructuredDocumentation", + "src": "4049:127:1", + "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 183, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4190:7:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 169, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4246:8:1" + }, + "parameters": { + "id": 168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4206:7:1", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "4198:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4198:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4223:6:1", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "4215:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4215:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4197:33:1" + }, + "returnParameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 171, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "4264:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 170, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4264:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4263:6:1" + }, + "scope": 570, + "src": "4181:166:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 629 + ], + "body": { + "id": 230, + "nodeType": "Block", + "src": "4956:336:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 197, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "4976:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 198, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4984:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 199, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 190, + "src": "4995:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 196, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 374, + "src": "4966:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4966:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 201, + "nodeType": "ExpressionStatement", + "src": "4966:36:1" + }, + { + "assignments": [ + 203 + ], + "declarations": [ + { + "constant": false, + "id": 203, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "5021:16:1", + "nodeType": "VariableDeclaration", + "scope": 230, + "src": "5013:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5013:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 210, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 204, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "5040:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 206, + "indexExpression": { + "id": 205, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "5052:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5040:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 209, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 207, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5060:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5060:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5040:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5013:60:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 212, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5091:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 213, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 190, + "src": "5111:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5091:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5119:42:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + }, + "value": "ERC20: transfer amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "id": 211, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "5083:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5083:79:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 217, + "nodeType": "ExpressionStatement", + "src": "5083:79:1" + }, + { + "id": 227, + "nodeType": "UncheckedBlock", + "src": "5172:92:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 219, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "5205:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 220, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5213:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5213:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 222, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5227:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 223, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 190, + "src": "5246:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5227:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 218, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "5196:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5196:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 226, + "nodeType": "ExpressionStatement", + "src": "5196:57:1" + } + ] + }, + { + "expression": { + "hexValue": "74727565", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5281:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 195, + "id": 229, + "nodeType": "Return", + "src": "5274:11:1" + } + ] + }, + "documentation": { + "id": 184, + "nodeType": "StructuredDocumentation", + "src": "4353:456:1", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." + }, + "functionSelector": "23b872dd", + "id": 231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "4823:12:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 192, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4932:8:1" + }, + "parameters": { + "id": 191, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 186, + "mutability": "mutable", + "name": "sender", + "nameLocation": "4853:6:1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4845:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4845:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 188, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "4877:9:1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4869:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4869:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 190, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4904:6:1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4896:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4896:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4835:81:1" + }, + "returnParameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 194, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "4950:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 193, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4950:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4949:6:1" + }, + "scope": 570, + "src": "4814:478:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 257, + "nodeType": "Block", + "src": "5781:118:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 242, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5800:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5800:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 244, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 234, + "src": "5814:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "baseExpression": { + "id": 245, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "5823:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 248, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 246, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "5835:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5835:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5823:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 250, + "indexExpression": { + "id": 249, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 234, + "src": "5849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5823:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 251, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 236, + "src": "5860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5823:47:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 241, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "5791:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5791:80:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 254, + "nodeType": "ExpressionStatement", + "src": "5791:80:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5888:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 240, + "id": 256, + "nodeType": "Return", + "src": "5881:11:1" + } + ] + }, + "documentation": { + "id": 232, + "nodeType": "StructuredDocumentation", + "src": "5298:384:1", + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "39509351", + "id": 258, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nameLocation": "5696:17:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 234, + "mutability": "mutable", + "name": "spender", + "nameLocation": "5722:7:1", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "5714:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5714:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 236, + "mutability": "mutable", + "name": "addedValue", + "nameLocation": "5739:10:1", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "5731:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5713:37:1" + }, + "returnParameters": { + "id": 240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 239, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "5775:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 238, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5775:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5774:6:1" + }, + "scope": 570, + "src": "5687:212:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 296, + "nodeType": "Block", + "src": "6485:306:1", + "statements": [ + { + "assignments": [ + 269 + ], + "declarations": [ + { + "constant": false, + "id": 269, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "6503:16:1", + "nodeType": "VariableDeclaration", + "scope": 296, + "src": "6495:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 268, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6495:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 276, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 270, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "6522:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 273, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 271, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "6534:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6534:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6522:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 275, + "indexExpression": { + "id": 274, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "6548:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6522:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6495:61:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 278, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 269, + "src": "6574:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 279, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "6594:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6574:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6611:39:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "id": 277, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6566:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6566:85:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 283, + "nodeType": "ExpressionStatement", + "src": "6566:85:1" + }, + { + "id": 293, + "nodeType": "UncheckedBlock", + "src": "6661:102:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 285, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "6694:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6694:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 287, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "6708:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 288, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 269, + "src": "6717:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 289, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "6736:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6717:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 284, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "6685:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6685:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "6685:67:1" + } + ] + }, + { + "expression": { + "hexValue": "74727565", + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6780:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 267, + "id": 295, + "nodeType": "Return", + "src": "6773:11:1" + } + ] + }, + "documentation": { + "id": 259, + "nodeType": "StructuredDocumentation", + "src": "5905:476:1", + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "functionSelector": "a457c2d7", + "id": 297, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nameLocation": "6395:17:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "spender", + "nameLocation": "6421:7:1", + "nodeType": "VariableDeclaration", + "scope": 297, + "src": "6413:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6413:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "mutability": "mutable", + "name": "subtractedValue", + "nameLocation": "6438:15:1", + "nodeType": "VariableDeclaration", + "scope": 297, + "src": "6430:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6430:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6412:42:1" + }, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 266, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 297, + "src": "6479:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6479:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6478:6:1" + }, + "scope": 570, + "src": "6386:405:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 373, + "nodeType": "Block", + "src": "7382:596:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 308, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7400:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7418:1:1", + "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": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7410:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7410:7:1", + "typeDescriptions": {} + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7410:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7400:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7422:39:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "id": 307, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7392:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7392:70:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "ExpressionStatement", + "src": "7392:70:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 318, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7480:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7501:1:1", + "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": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7493:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7493:7:1", + "typeDescriptions": {} + } + }, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7493:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7480:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7505:37:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "id": 317, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7472:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7472:71:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 326, + "nodeType": "ExpressionStatement", + "src": "7472:71:1" + }, + { + "expression": { + "arguments": [ + { + "id": 328, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7575:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 329, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7583:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 330, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7594:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 327, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "7554:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7554:47:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "7554:47:1" + }, + { + "assignments": [ + 334 + ], + "declarations": [ + { + "constant": false, + "id": 334, + "mutability": "mutable", + "name": "senderBalance", + "nameLocation": "7620:13:1", + "nodeType": "VariableDeclaration", + "scope": 373, + "src": "7612:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7612:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 338, + "initialValue": { + "baseExpression": { + "id": 335, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "7636:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 337, + "indexExpression": { + "id": 336, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7646:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7636:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7612:41:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 340, + "name": "senderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7671:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 341, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7688:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7671:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7696:40:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "id": 339, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7663:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7663:74:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "7663:74:1" + }, + { + "id": 354, + "nodeType": "UncheckedBlock", + "src": "7747:77:1", + "statements": [ + { + "expression": { + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 346, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "7771:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 348, + "indexExpression": { + "id": 347, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7781:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7771:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 349, + "name": "senderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7791:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 350, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7807:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7791:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7771:42:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 353, + "nodeType": "ExpressionStatement", + "src": "7771:42:1" + } + ] + }, + { + "expression": { + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 355, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "7833:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 357, + "indexExpression": { + "id": 356, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7843:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7833:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 358, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7857:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7833:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 360, + "nodeType": "ExpressionStatement", + "src": "7833:30:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 362, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7888:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 363, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7896:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 364, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7907:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 361, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "7879:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7879:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 366, + "nodeType": "EmitStatement", + "src": "7874:40:1" + }, + { + "expression": { + "arguments": [ + { + "id": 368, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "7945:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 369, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "7953:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 370, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "7964:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 367, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "7925:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7925:46:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 372, + "nodeType": "ExpressionStatement", + "src": "7925:46:1" + } + ] + }, + "documentation": { + "id": 298, + "nodeType": "StructuredDocumentation", + "src": "6797:463:1", + "text": " @dev Moves `amount` of tokens from `sender` to `recipient`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." + }, + "id": 374, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "7274:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 300, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7301:6:1", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "7293:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 299, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7293:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 302, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "7325:9:1", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "7317:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7317:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7352:6:1", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "7344:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7344:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7283:81:1" + }, + "returnParameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [], + "src": "7382:0:1" + }, + "scope": 570, + "src": "7265:713:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 429, + "nodeType": "Block", + "src": "8319:324:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 383, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8337:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8356:1:1", + "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": 385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8348:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8348:7:1", + "typeDescriptions": {} + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8348:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8337:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8360:33:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "id": 382, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "8329:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8329:65:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 391, + "nodeType": "ExpressionStatement", + "src": "8329:65:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8434:1:1", + "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": 394, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8426:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8426:7:1", + "typeDescriptions": {} + } + }, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8426:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 397, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8438:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 398, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8447:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 392, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "8405:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8405:49:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 400, + "nodeType": "ExpressionStatement", + "src": "8405:49:1" + }, + { + "expression": { + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 401, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "8465:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 402, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8481:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8465:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 404, + "nodeType": "ExpressionStatement", + "src": "8465:22:1" + }, + { + "expression": { + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 405, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "8497:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 407, + "indexExpression": { + "id": 406, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8507:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8497:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 408, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8519:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8497:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 410, + "nodeType": "ExpressionStatement", + "src": "8497:28:1" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8557:1:1", + "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": 413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8549:7:1", + "typeDescriptions": {} + } + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8549:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 416, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8561:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 417, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8570:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 411, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "8540:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8540:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 419, + "nodeType": "EmitStatement", + "src": "8535:42:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8616:1:1", + "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": 422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8608:7:1", + "typeDescriptions": {} + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8608:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 425, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "8620:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 426, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "8629:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 420, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "8588:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8588:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 428, + "nodeType": "ExpressionStatement", + "src": "8588:48:1" + } + ] + }, + "documentation": { + "id": 375, + "nodeType": "StructuredDocumentation", + "src": "7984:265:1", + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address." + }, + "id": 430, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "8263:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 377, + "mutability": "mutable", + "name": "account", + "nameLocation": "8277:7:1", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "8269:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8269:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 379, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8294:6:1", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "8286:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8286:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8268:33:1" + }, + "returnParameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [], + "src": "8319:0:1" + }, + "scope": 570, + "src": "8254:389:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 501, + "nodeType": "Block", + "src": "9028:511:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 439, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9046:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9065:1:1", + "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": 441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9057:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9057:7:1", + "typeDescriptions": {} + } + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9057:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9046:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:35:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "id": 438, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "9038:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9038:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 447, + "nodeType": "ExpressionStatement", + "src": "9038:67:1" + }, + { + "expression": { + "arguments": [ + { + "id": 449, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9137:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9154:1:1", + "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": 451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9146:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9146:7:1", + "typeDescriptions": {} + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9146:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 454, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9158:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 448, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "9116:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9116:49:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 456, + "nodeType": "ExpressionStatement", + "src": "9116:49:1" + }, + { + "assignments": [ + 458 + ], + "declarations": [ + { + "constant": false, + "id": 458, + "mutability": "mutable", + "name": "accountBalance", + "nameLocation": "9184:14:1", + "nodeType": "VariableDeclaration", + "scope": 501, + "src": "9176:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9176:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 462, + "initialValue": { + "baseExpression": { + "id": 459, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "9201:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 461, + "indexExpression": { + "id": 460, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9201:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9176:43:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 464, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "9237:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 465, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9255:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9237:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9263:36:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "id": 463, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "9229:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9229:71:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 469, + "nodeType": "ExpressionStatement", + "src": "9229:71:1" + }, + { + "id": 478, + "nodeType": "UncheckedBlock", + "src": "9310:79:1", + "statements": [ + { + "expression": { + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 470, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "9334:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 472, + "indexExpression": { + "id": 471, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9344:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9334:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 473, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "9355:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 474, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9372:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9355:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9334:44:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "9334:44:1" + } + ] + }, + { + "expression": { + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 479, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "9398:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 480, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9414:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9398:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 482, + "nodeType": "ExpressionStatement", + "src": "9398:22:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 484, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9445:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9462:1:1", + "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": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9454:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9454:7:1", + "typeDescriptions": {} + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9454:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 489, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9466:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 483, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "9436:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9436:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 491, + "nodeType": "EmitStatement", + "src": "9431:42:1" + }, + { + "expression": { + "arguments": [ + { + "id": 493, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "9504:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9521:1:1", + "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": 495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9513:7:1", + "typeDescriptions": {} + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9513:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 498, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "9525:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 492, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "9484:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9484:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 500, + "nodeType": "ExpressionStatement", + "src": "9484:48:1" + } + ] + }, + "documentation": { + "id": 431, + "nodeType": "StructuredDocumentation", + "src": "8649:309:1", + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 502, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "8972:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 433, + "mutability": "mutable", + "name": "account", + "nameLocation": "8986:7:1", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "8978:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8978:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9003:6:1", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "8995:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8977:33:1" + }, + "returnParameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [], + "src": "9028:0:1" + }, + "scope": 570, + "src": "8963:576:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 546, + "nodeType": "Block", + "src": "10075:257:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 513, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "10093:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10110:1:1", + "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": 515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10102:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10102:7:1", + "typeDescriptions": {} + } + }, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10102:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10093:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10114:38:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "id": 512, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "10085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10085:68:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 521, + "nodeType": "ExpressionStatement", + "src": "10085:68:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 523, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "10171:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10190:1:1", + "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": 525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10182:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10182:7:1", + "typeDescriptions": {} + } + }, + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10182:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10171:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10194:36:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "id": 522, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "10163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10163:68:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 531, + "nodeType": "ExpressionStatement", + "src": "10163:68:1" + }, + { + "expression": { + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 532, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "10242:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 535, + "indexExpression": { + "id": 533, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "10254:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10242:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 536, + "indexExpression": { + "id": 534, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "10261:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10242:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 537, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "10272:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10242:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 539, + "nodeType": "ExpressionStatement", + "src": "10242:36:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 541, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "10302:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 542, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "10309:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 543, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "10318:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 540, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "10293:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10293:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 545, + "nodeType": "EmitStatement", + "src": "10288:37:1" + } + ] + }, + "documentation": { + "id": 503, + "nodeType": "StructuredDocumentation", + "src": "9545:412:1", + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 547, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "9971:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 505, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9997:5:1", + "nodeType": "VariableDeclaration", + "scope": 547, + "src": "9989:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9989:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 507, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10020:7:1", + "nodeType": "VariableDeclaration", + "scope": 547, + "src": "10012:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10012:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 509, + "mutability": "mutable", + "name": "amount", + "nameLocation": "10045:6:1", + "nodeType": "VariableDeclaration", + "scope": 547, + "src": "10037:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10037:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9979:78:1" + }, + "returnParameters": { + "id": 511, + "nodeType": "ParameterList", + "parameters": [], + "src": "10075:0:1" + }, + "scope": 570, + "src": "9962:370:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 557, + "nodeType": "Block", + "src": "11035:2:1", + "statements": [] + }, + "documentation": { + "id": 548, + "nodeType": "StructuredDocumentation", + "src": "10338:573:1", + "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nameLocation": "10925:20:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 550, + "mutability": "mutable", + "name": "from", + "nameLocation": "10963:4:1", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "10955:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 549, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10955:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 552, + "mutability": "mutable", + "name": "to", + "nameLocation": "10985:2:1", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "10977:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10977:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 554, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11005:6:1", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "10997:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10997:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10945:72:1" + }, + "returnParameters": { + "id": 556, + "nodeType": "ParameterList", + "parameters": [], + "src": "11035:0:1" + }, + "scope": 570, + "src": "10916:121:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 568, + "nodeType": "Block", + "src": "11743:2:1", + "statements": [] + }, + "documentation": { + "id": 559, + "nodeType": "StructuredDocumentation", + "src": "11043:577:1", + "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_afterTokenTransfer", + "nameLocation": "11634:19:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 561, + "mutability": "mutable", + "name": "from", + "nameLocation": "11671:4:1", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "11663:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11663:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 563, + "mutability": "mutable", + "name": "to", + "nameLocation": "11693:2:1", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "11685:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11685:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 565, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11713:6:1", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "11705:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11705:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11653:72:1" + }, + "returnParameters": { + "id": 567, + "nodeType": "ParameterList", + "parameters": [], + "src": "11743:0:1" + }, + "scope": 570, + "src": "11625:120:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 571, + "src": "1331:10416:1", + "usedErrors": [] + } + ], + "src": "33:11715:1" + }, + "compiler": { + "name": "solc", + "version": "0.8.7+commit.e28d00a7.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.3", + "updatedAt": "2021-09-26T18:37:54.234Z", + "devdoc": { + "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.", + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "constructor": { + "details": "Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/creating-erc20-token/build/contracts/IERC20.json b/creating-erc20-token/build/contracts/IERC20.json new file mode 100644 index 0000000..80999e4 --- /dev/null +++ b/creating-erc20-token/build/contracts/IERC20.json @@ -0,0 +1,2067 @@ +{ + "contractName": "IERC20", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "generatedSources": [], + "deployedGeneratedSources": [], + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n", + "sourcePath": "D:\\Block-Chain\\defi-dapps-solidity-smart-contracts\\creating-erc20-token\\node_modules\\@openzeppelin\\contracts\\token\\ERC20\\IERC20.sol", + "ast": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 648 + ] + }, + "id": 649, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 572, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:2" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 573, + "nodeType": "StructuredDocumentation", + "src": "58:70:2", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 648, + "linearizedBaseContracts": [ + 648 + ], + "name": "IERC20", + "nameLocation": "139:6:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 574, + "nodeType": "StructuredDocumentation", + "src": "152:66:2", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 579, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "232:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 575, + "nodeType": "ParameterList", + "parameters": [], + "src": "243:2:2" + }, + "returnParameters": { + "id": 578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 577, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 579, + "src": "269:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "269:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "268:9:2" + }, + "scope": 648, + "src": "223:55:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 580, + "nodeType": "StructuredDocumentation", + "src": "284:72:2", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 587, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "370:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 582, + "mutability": "mutable", + "name": "account", + "nameLocation": "388:7:2", + "nodeType": "VariableDeclaration", + "scope": 587, + "src": "380:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "380:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "379:17:2" + }, + "returnParameters": { + "id": 586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 585, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 587, + "src": "420:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "420:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "419:9:2" + }, + "scope": 648, + "src": "361:68:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 588, + "nodeType": "StructuredDocumentation", + "src": "435:209:2", + "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 597, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "658:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 590, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "675:9:2", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "667:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "667:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 592, + "mutability": "mutable", + "name": "amount", + "nameLocation": "694:6:2", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "686:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "686:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "666:35:2" + }, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 595, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "720:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 594, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "720:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "719:6:2" + }, + "scope": 648, + "src": "649:77:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 598, + "nodeType": "StructuredDocumentation", + "src": "732:264:2", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 607, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1010:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 600, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1028:5:2", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1020:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1020:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 602, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1043:7:2", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1035:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1035:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1019:32:2" + }, + "returnParameters": { + "id": 606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1075:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1075:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1074:9:2" + }, + "scope": 648, + "src": "1001:83:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 608, + "nodeType": "StructuredDocumentation", + "src": "1090:642:2", + "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 617, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "1746:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 610, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1762:7:2", + "nodeType": "VariableDeclaration", + "scope": 617, + "src": "1754:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1754:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 612, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1779:6:2", + "nodeType": "VariableDeclaration", + "scope": 617, + "src": "1771:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 611, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1771:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1753:33:2" + }, + "returnParameters": { + "id": 616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 615, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 617, + "src": "1805:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 614, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1805:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1804:6:2" + }, + "scope": 648, + "src": "1737:74:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 618, + "nodeType": "StructuredDocumentation", + "src": "1817:296:2", + "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 629, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2127:12:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 620, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2157:6:2", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2149:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2149:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 622, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "2181:9:2", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2173:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2173:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 624, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2208:6:2", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2200:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2200:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2139:81:2" + }, + "returnParameters": { + "id": 628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 627, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2239:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 626, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2239:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2238:6:2" + }, + "scope": 648, + "src": "2118:127:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 630, + "nodeType": "StructuredDocumentation", + "src": "2251:158:2", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "id": 638, + "name": "Transfer", + "nameLocation": "2420:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 632, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "2445:4:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "2429:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2429:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 634, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "2467:2:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "2451:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2451:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 636, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "2479:5:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "2471:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2471:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2428:57:2" + }, + "src": "2414:72:2" + }, + { + "anonymous": false, + "documentation": { + "id": 639, + "nodeType": "StructuredDocumentation", + "src": "2492:148:2", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "id": 647, + "name": "Approval", + "nameLocation": "2651:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 641, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2676:5:2", + "nodeType": "VariableDeclaration", + "scope": 647, + "src": "2660:21:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2660:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 643, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2699:7:2", + "nodeType": "VariableDeclaration", + "scope": 647, + "src": "2683:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2683:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 645, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "2716:5:2", + "nodeType": "VariableDeclaration", + "scope": 647, + "src": "2708:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2708:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2659:63:2" + }, + "src": "2645:78:2" + } + ], + "scope": 649, + "src": "129:2596:2", + "usedErrors": [] + } + ], + "src": "33:2693:2" + }, + "legacyAST": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 648 + ] + }, + "id": 649, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 572, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:2" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 573, + "nodeType": "StructuredDocumentation", + "src": "58:70:2", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 648, + "linearizedBaseContracts": [ + 648 + ], + "name": "IERC20", + "nameLocation": "139:6:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 574, + "nodeType": "StructuredDocumentation", + "src": "152:66:2", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 579, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "232:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 575, + "nodeType": "ParameterList", + "parameters": [], + "src": "243:2:2" + }, + "returnParameters": { + "id": 578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 577, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 579, + "src": "269:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "269:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "268:9:2" + }, + "scope": 648, + "src": "223:55:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 580, + "nodeType": "StructuredDocumentation", + "src": "284:72:2", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 587, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "370:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 582, + "mutability": "mutable", + "name": "account", + "nameLocation": "388:7:2", + "nodeType": "VariableDeclaration", + "scope": 587, + "src": "380:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "380:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "379:17:2" + }, + "returnParameters": { + "id": 586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 585, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 587, + "src": "420:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "420:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "419:9:2" + }, + "scope": 648, + "src": "361:68:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 588, + "nodeType": "StructuredDocumentation", + "src": "435:209:2", + "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 597, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "658:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 590, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "675:9:2", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "667:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "667:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 592, + "mutability": "mutable", + "name": "amount", + "nameLocation": "694:6:2", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "686:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "686:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "666:35:2" + }, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 595, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "720:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 594, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "720:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "719:6:2" + }, + "scope": 648, + "src": "649:77:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 598, + "nodeType": "StructuredDocumentation", + "src": "732:264:2", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 607, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1010:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 600, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1028:5:2", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1020:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1020:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 602, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1043:7:2", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1035:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1035:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1019:32:2" + }, + "returnParameters": { + "id": 606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1075:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1075:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1074:9:2" + }, + "scope": 648, + "src": "1001:83:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 608, + "nodeType": "StructuredDocumentation", + "src": "1090:642:2", + "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 617, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "1746:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 610, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1762:7:2", + "nodeType": "VariableDeclaration", + "scope": 617, + "src": "1754:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1754:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 612, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1779:6:2", + "nodeType": "VariableDeclaration", + "scope": 617, + "src": "1771:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 611, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1771:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1753:33:2" + }, + "returnParameters": { + "id": 616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 615, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 617, + "src": "1805:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 614, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1805:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1804:6:2" + }, + "scope": 648, + "src": "1737:74:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 618, + "nodeType": "StructuredDocumentation", + "src": "1817:296:2", + "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 629, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2127:12:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 620, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2157:6:2", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2149:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2149:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 622, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "2181:9:2", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2173:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2173:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 624, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2208:6:2", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2200:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2200:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2139:81:2" + }, + "returnParameters": { + "id": 628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 627, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2239:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 626, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2239:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2238:6:2" + }, + "scope": 648, + "src": "2118:127:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 630, + "nodeType": "StructuredDocumentation", + "src": "2251:158:2", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "id": 638, + "name": "Transfer", + "nameLocation": "2420:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 632, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "2445:4:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "2429:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2429:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 634, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "2467:2:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "2451:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2451:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 636, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "2479:5:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "2471:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2471:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2428:57:2" + }, + "src": "2414:72:2" + }, + { + "anonymous": false, + "documentation": { + "id": 639, + "nodeType": "StructuredDocumentation", + "src": "2492:148:2", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "id": 647, + "name": "Approval", + "nameLocation": "2651:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 641, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2676:5:2", + "nodeType": "VariableDeclaration", + "scope": 647, + "src": "2660:21:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2660:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 643, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2699:7:2", + "nodeType": "VariableDeclaration", + "scope": 647, + "src": "2683:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2683:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 645, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "2716:5:2", + "nodeType": "VariableDeclaration", + "scope": 647, + "src": "2708:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2708:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2659:63:2" + }, + "src": "2645:78:2" + } + ], + "scope": 649, + "src": "129:2596:2", + "usedErrors": [] + } + ], + "src": "33:2693:2" + }, + "compiler": { + "name": "solc", + "version": "0.8.7+commit.e28d00a7.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.3", + "updatedAt": "2021-09-26T18:37:54.244Z", + "devdoc": { + "details": "Interface of the ERC20 standard as defined in the EIP.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the amount of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the amount of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/creating-erc20-token/build/contracts/IERC20Metadata.json b/creating-erc20-token/build/contracts/IERC20Metadata.json new file mode 100644 index 0000000..9e6c3f6 --- /dev/null +++ b/creating-erc20-token/build/contracts/IERC20Metadata.json @@ -0,0 +1,807 @@ +{ + "contractName": "IERC20Metadata", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "generatedSources": [], + "deployedGeneratedSources": [], + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n", + "sourcePath": "D:\\Block-Chain\\defi-dapps-solidity-smart-contracts\\creating-erc20-token\\node_modules\\@openzeppelin\\contracts\\token\\ERC20\\extensions\\IERC20Metadata.sol", + "ast": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "exportedSymbols": { + "IERC20": [ + 648 + ], + "IERC20Metadata": [ + 673 + ] + }, + "id": 674, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 650, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:3" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 651, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 674, + "sourceUnit": 649, + "src": "58:23:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 653, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 648, + "src": "228:6:3" + }, + "id": 654, + "nodeType": "InheritanceSpecifier", + "src": "228:6:3" + } + ], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 652, + "nodeType": "StructuredDocumentation", + "src": "83:116:3", + "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._" + }, + "fullyImplemented": false, + "id": 673, + "linearizedBaseContracts": [ + 673, + 648 + ], + "name": "IERC20Metadata", + "nameLocation": "210:14:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 655, + "nodeType": "StructuredDocumentation", + "src": "241:54:3", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 660, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "309:4:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 656, + "nodeType": "ParameterList", + "parameters": [], + "src": "313:2:3" + }, + "returnParameters": { + "id": 659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 658, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 660, + "src": "339:13:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 657, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "339:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "338:15:3" + }, + "scope": 673, + "src": "300:54:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 661, + "nodeType": "StructuredDocumentation", + "src": "360:56:3", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 666, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "430:6:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 662, + "nodeType": "ParameterList", + "parameters": [], + "src": "436:2:3" + }, + "returnParameters": { + "id": 665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 664, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "462:13:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 663, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "462:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "461:15:3" + }, + "scope": 673, + "src": "421:56:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 667, + "nodeType": "StructuredDocumentation", + "src": "483:65:3", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 672, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "562:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 668, + "nodeType": "ParameterList", + "parameters": [], + "src": "570:2:3" + }, + "returnParameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 670, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 672, + "src": "596:5:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 669, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "596:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "595:7:3" + }, + "scope": 673, + "src": "553:50:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 674, + "src": "200:405:3", + "usedErrors": [] + } + ], + "src": "33:573:3" + }, + "legacyAST": { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "exportedSymbols": { + "IERC20": [ + 648 + ], + "IERC20Metadata": [ + 673 + ] + }, + "id": 674, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 650, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:3" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 651, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 674, + "sourceUnit": 649, + "src": "58:23:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 653, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 648, + "src": "228:6:3" + }, + "id": 654, + "nodeType": "InheritanceSpecifier", + "src": "228:6:3" + } + ], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 652, + "nodeType": "StructuredDocumentation", + "src": "83:116:3", + "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._" + }, + "fullyImplemented": false, + "id": 673, + "linearizedBaseContracts": [ + 673, + 648 + ], + "name": "IERC20Metadata", + "nameLocation": "210:14:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 655, + "nodeType": "StructuredDocumentation", + "src": "241:54:3", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 660, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "309:4:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 656, + "nodeType": "ParameterList", + "parameters": [], + "src": "313:2:3" + }, + "returnParameters": { + "id": 659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 658, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 660, + "src": "339:13:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 657, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "339:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "338:15:3" + }, + "scope": 673, + "src": "300:54:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 661, + "nodeType": "StructuredDocumentation", + "src": "360:56:3", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 666, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "430:6:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 662, + "nodeType": "ParameterList", + "parameters": [], + "src": "436:2:3" + }, + "returnParameters": { + "id": 665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 664, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "462:13:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 663, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "462:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "461:15:3" + }, + "scope": 673, + "src": "421:56:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 667, + "nodeType": "StructuredDocumentation", + "src": "483:65:3", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 672, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "562:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 668, + "nodeType": "ParameterList", + "parameters": [], + "src": "570:2:3" + }, + "returnParameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 670, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 672, + "src": "596:5:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 669, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "596:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "595:7:3" + }, + "scope": 673, + "src": "553:50:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 674, + "src": "200:405:3", + "usedErrors": [] + } + ], + "src": "33:573:3" + }, + "compiler": { + "name": "solc", + "version": "0.8.7+commit.e28d00a7.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.3", + "updatedAt": "2021-09-26T18:37:54.262Z", + "devdoc": { + "details": "Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._", + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the amount of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the decimals places of the token." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token." + }, + "totalSupply()": { + "details": "Returns the amount of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/creating-erc20-token/build/contracts/MyERC20.json b/creating-erc20-token/build/contracts/MyERC20.json new file mode 100644 index 0000000..afe25f3 --- /dev/null +++ b/creating-erc20-token/build/contracts/MyERC20.json @@ -0,0 +1,8560 @@ +{ + "contractName": "MyERC20", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/MyERC20.sol\":\"MyERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/MyERC20.sol\":{\"keccak256\":\"0x461396e93ff7cd6b6fcf71692a14e2275d002066854e602bf2860fb57f0f8816\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4883306d8473b295ab03253b9518579956b70e8b4b5c513dbfea7a092497250\",\"dweb:/ipfs/QmTbbQY9Qj1ZkspFzry7UrreL5gicUgAF9ng4omM2EAkPT\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34655953d18ba3a45b762fb6bdbb6549af69a27435e10ece178742bf70baf45\",\"dweb:/ipfs/QmcqjUoFLLMyx7dbwSHUnDBH6aphkVHXWQvQRRev5EAWEh\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4d794552433230000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d5945524300000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000256565b508060049080519060200190620000af92919062000256565b5050506000620f42409050620000cc3382620000d360201b60201c565b50620004b2565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d906200033e565b60405180910390fd5b6200015a600083836200024c60201b60201c565b80600260008282546200016e91906200038e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001c591906200038e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200022c919062000360565b60405180910390a362000248600083836200025160201b60201c565b5050565b505050565b505050565b8280546200026490620003f5565b90600052602060002090601f016020900481019282620002885760008555620002d4565b82601f10620002a357805160ff1916838001178555620002d4565b82800160010185558215620002d4579182015b82811115620002d3578251825591602001919060010190620002b6565b5b509050620002e39190620002e7565b5090565b5b8082111562000302576000816000905550600101620002e8565b5090565b600062000315601f836200037d565b9150620003228262000489565b602082019050919050565b6200033881620003eb565b82525050565b60006020820190508181036000830152620003598162000306565b9050919050565b60006020820190506200037760008301846200032d565b92915050565b600082825260208201905092915050565b60006200039b82620003eb565b9150620003a883620003eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620003e057620003df6200042b565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200040e57607f821691505b602082108114156200042557620004246200045a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113aa80620004c26000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610e45565b60405180910390f35b6100e660048036038101906100e19190610c8f565b610308565b6040516100f39190610e2a565b60405180910390f35b610104610326565b6040516101119190610f47565b60405180910390f35b610134600480360381019061012f9190610c3c565b610330565b6040516101419190610e2a565b60405180910390f35b610152610428565b60405161015f9190610f62565b60405180910390f35b610182600480360381019061017d9190610c8f565b610431565b60405161018f9190610e2a565b60405180910390f35b6101b260048036038101906101ad9190610bcf565b6104dd565b6040516101bf9190610f47565b60405180910390f35b6101d0610525565b6040516101dd9190610e45565b60405180910390f35b61020060048036038101906101fb9190610c8f565b6105b7565b60405161020d9190610e2a565b60405180910390f35b610230600480360381019061022b9190610c8f565b6106a2565b60405161023d9190610e2a565b60405180910390f35b610260600480360381019061025b9190610bfc565b6106c0565b60405161026d9190610f47565b60405180910390f35b60606003805461028590611077565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190611077565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610747565b848461074f565b6001905092915050565b6000600254905090565b600061033d84848461091a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff90610ec7565b60405180910390fd5b61041c85610414610747565b85840361074f565b60019150509392505050565b60006012905090565b60006104d361043e610747565b84846001600061044c610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ce9190610f99565b61074f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053490611077565b80601f016020809104026020016040519081016040528092919081815260200182805461056090611077565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b600080600160006105c6610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90610f27565b60405180910390fd5b61069761068e610747565b8585840361074f565b600191505092915050565b60006106b66106af610747565b848461091a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b690610f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690610e87565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090d9190610f47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190610ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610e67565b60405180910390fd5b610a05838383610b9b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290610ea7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1e9190610f99565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b829190610f47565b60405180910390a3610b95848484610ba0565b50505050565b505050565b505050565b600081359050610bb481611346565b92915050565b600081359050610bc98161135d565b92915050565b600060208284031215610be557610be4611107565b5b6000610bf384828501610ba5565b91505092915050565b60008060408385031215610c1357610c12611107565b5b6000610c2185828601610ba5565b9250506020610c3285828601610ba5565b9150509250929050565b600080600060608486031215610c5557610c54611107565b5b6000610c6386828701610ba5565b9350506020610c7486828701610ba5565b9250506040610c8586828701610bba565b9150509250925092565b60008060408385031215610ca657610ca5611107565b5b6000610cb485828601610ba5565b9250506020610cc585828601610bba565b9150509250929050565b610cd881611001565b82525050565b6000610ce982610f7d565b610cf38185610f88565b9350610d03818560208601611044565b610d0c8161110c565b840191505092915050565b6000610d24602383610f88565b9150610d2f8261111d565b604082019050919050565b6000610d47602283610f88565b9150610d528261116c565b604082019050919050565b6000610d6a602683610f88565b9150610d75826111bb565b604082019050919050565b6000610d8d602883610f88565b9150610d988261120a565b604082019050919050565b6000610db0602583610f88565b9150610dbb82611259565b604082019050919050565b6000610dd3602483610f88565b9150610dde826112a8565b604082019050919050565b6000610df6602583610f88565b9150610e01826112f7565b604082019050919050565b610e158161102d565b82525050565b610e2481611037565b82525050565b6000602082019050610e3f6000830184610ccf565b92915050565b60006020820190508181036000830152610e5f8184610cde565b905092915050565b60006020820190508181036000830152610e8081610d17565b9050919050565b60006020820190508181036000830152610ea081610d3a565b9050919050565b60006020820190508181036000830152610ec081610d5d565b9050919050565b60006020820190508181036000830152610ee081610d80565b9050919050565b60006020820190508181036000830152610f0081610da3565b9050919050565b60006020820190508181036000830152610f2081610dc6565b9050919050565b60006020820190508181036000830152610f4081610de9565b9050919050565b6000602082019050610f5c6000830184610e0c565b92915050565b6000602082019050610f776000830184610e1b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610fa48261102d565b9150610faf8361102d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fe457610fe36110a9565b5b828201905092915050565b6000610ffa8261100d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611062578082015181840152602081019050611047565b83811115611071576000848401525b50505050565b6000600282049050600182168061108f57607f821691505b602082108114156110a3576110a26110d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61134f81610fef565b811461135a57600080fd5b50565b6113668161102d565b811461137157600080fd5b5056fea26469706673582212202c6197128eaea6db659b78b379510f4f71c47fc33bc26b1750eca2c3c321587764736f6c63430008070033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610e45565b60405180910390f35b6100e660048036038101906100e19190610c8f565b610308565b6040516100f39190610e2a565b60405180910390f35b610104610326565b6040516101119190610f47565b60405180910390f35b610134600480360381019061012f9190610c3c565b610330565b6040516101419190610e2a565b60405180910390f35b610152610428565b60405161015f9190610f62565b60405180910390f35b610182600480360381019061017d9190610c8f565b610431565b60405161018f9190610e2a565b60405180910390f35b6101b260048036038101906101ad9190610bcf565b6104dd565b6040516101bf9190610f47565b60405180910390f35b6101d0610525565b6040516101dd9190610e45565b60405180910390f35b61020060048036038101906101fb9190610c8f565b6105b7565b60405161020d9190610e2a565b60405180910390f35b610230600480360381019061022b9190610c8f565b6106a2565b60405161023d9190610e2a565b60405180910390f35b610260600480360381019061025b9190610bfc565b6106c0565b60405161026d9190610f47565b60405180910390f35b60606003805461028590611077565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190611077565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610747565b848461074f565b6001905092915050565b6000600254905090565b600061033d84848461091a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff90610ec7565b60405180910390fd5b61041c85610414610747565b85840361074f565b60019150509392505050565b60006012905090565b60006104d361043e610747565b84846001600061044c610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ce9190610f99565b61074f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053490611077565b80601f016020809104026020016040519081016040528092919081815260200182805461056090611077565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b600080600160006105c6610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90610f27565b60405180910390fd5b61069761068e610747565b8585840361074f565b600191505092915050565b60006106b66106af610747565b848461091a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b690610f07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690610e87565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090d9190610f47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190610ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610e67565b60405180910390fd5b610a05838383610b9b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290610ea7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1e9190610f99565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b829190610f47565b60405180910390a3610b95848484610ba0565b50505050565b505050565b505050565b600081359050610bb481611346565b92915050565b600081359050610bc98161135d565b92915050565b600060208284031215610be557610be4611107565b5b6000610bf384828501610ba5565b91505092915050565b60008060408385031215610c1357610c12611107565b5b6000610c2185828601610ba5565b9250506020610c3285828601610ba5565b9150509250929050565b600080600060608486031215610c5557610c54611107565b5b6000610c6386828701610ba5565b9350506020610c7486828701610ba5565b9250506040610c8586828701610bba565b9150509250925092565b60008060408385031215610ca657610ca5611107565b5b6000610cb485828601610ba5565b9250506020610cc585828601610bba565b9150509250929050565b610cd881611001565b82525050565b6000610ce982610f7d565b610cf38185610f88565b9350610d03818560208601611044565b610d0c8161110c565b840191505092915050565b6000610d24602383610f88565b9150610d2f8261111d565b604082019050919050565b6000610d47602283610f88565b9150610d528261116c565b604082019050919050565b6000610d6a602683610f88565b9150610d75826111bb565b604082019050919050565b6000610d8d602883610f88565b9150610d988261120a565b604082019050919050565b6000610db0602583610f88565b9150610dbb82611259565b604082019050919050565b6000610dd3602483610f88565b9150610dde826112a8565b604082019050919050565b6000610df6602583610f88565b9150610e01826112f7565b604082019050919050565b610e158161102d565b82525050565b610e2481611037565b82525050565b6000602082019050610e3f6000830184610ccf565b92915050565b60006020820190508181036000830152610e5f8184610cde565b905092915050565b60006020820190508181036000830152610e8081610d17565b9050919050565b60006020820190508181036000830152610ea081610d3a565b9050919050565b60006020820190508181036000830152610ec081610d5d565b9050919050565b60006020820190508181036000830152610ee081610d80565b9050919050565b60006020820190508181036000830152610f0081610da3565b9050919050565b60006020820190508181036000830152610f2081610dc6565b9050919050565b60006020820190508181036000830152610f4081610de9565b9050919050565b6000602082019050610f5c6000830184610e0c565b92915050565b6000602082019050610f776000830184610e1b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610fa48261102d565b9150610faf8361102d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fe457610fe36110a9565b5b828201905092915050565b6000610ffa8261100d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611062578082015181840152602081019050611047565b83811115611071576000848401525b50505050565b6000600282049050600182168061108f57607f821691505b602082108114156110a3576110a26110d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61134f81610fef565b811461135a57600080fd5b50565b6113668161102d565b811461137157600080fd5b5056fea26469706673582212202c6197128eaea6db659b78b379510f4f71c47fc33bc26b1750eca2c3c321587764736f6c63430008070033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2607:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "153:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "163:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "229:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "234:2:5", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "170:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "170:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "163:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "335:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "nodeType": "YulIdentifier", + "src": "246:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "246:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "246:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "348:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "359:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "364:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "355:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "355:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "348:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "141:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "149:3:5", + "type": "" + } + ], + "src": "7:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "444:53:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "461:3:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "484:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "466:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "466:24:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "454:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "454:37:5" + }, + "nodeType": "YulExpressionStatement", + "src": "454:37:5" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "432:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "439:3:5", + "type": "" + } + ], + "src": "379:118:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "674:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "684:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "696:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "707:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "692:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "692:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "684:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "731:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "742:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "727:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "727:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "750:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "756:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "746:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "746:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "720:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "720:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "720:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "776:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "910:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "784:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "784:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "776:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "654:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "669:4:5", + "type": "" + } + ], + "src": "503:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1026:124:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1036:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1048:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1059:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1044:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1044:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1036:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1116:6:5" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1129:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1140:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1125:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1125:17:5" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "1072:43:5" + }, + "nodeType": "YulFunctionCall", + "src": "1072:71:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1072:71:5" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "998:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1010:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1021:4:5", + "type": "" + } + ], + "src": "928:222:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1252:73:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1269:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1274:6:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1262:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "1262:19:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1262:19:5" + }, + { + "nodeType": "YulAssignment", + "src": "1290:29:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1309:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1314:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1305:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1305:14:5" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "1290:11:5" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1224:3:5", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1229:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "1240:11:5", + "type": "" + } + ], + "src": "1156:169:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1375:261:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1385:25:5", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1408:1:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1390:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "1390:20:5" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1385:1:5" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1419:25:5", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1442:1:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1424:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "1424:20:5" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1419:1:5" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1582:22:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1584:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "1584:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1584:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1503:1:5" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1510:66:5", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1578:1:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1506:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1506:74:5" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1500:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "1500:81:5" + }, + "nodeType": "YulIf", + "src": "1497:107:5" + }, + { + "nodeType": "YulAssignment", + "src": "1614:16:5", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1625:1:5" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1628:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1621:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1621:9:5" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "1614:3:5" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1362:1:5", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1365:1:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "1371:3:5", + "type": "" + } + ], + "src": "1331:305:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1687:32:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1697:16:5", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1708:5:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1697:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1669:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1679:7:5", + "type": "" + } + ], + "src": "1642:77:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1776:269:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1786:22:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1800:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1806:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "1796:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1796:12:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1786:6:5" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1817:38:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1847:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1853:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1843:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1843:12:5" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "1821:18:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1894:51:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1908:27:5", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1922:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1930:4:5", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1918:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1918:17:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1908:6:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1874:18:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1867:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "1867:26:5" + }, + "nodeType": "YulIf", + "src": "1864:81:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1997:42:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "2011:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "2011:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2011:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1961:18:5" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1984:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1992:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1981:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "1981:14:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1958:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "1958:38:5" + }, + "nodeType": "YulIf", + "src": "1955:84:5" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "1760:4:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1769:6:5", + "type": "" + } + ], + "src": "1725:320:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2079:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2096:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2099:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2089:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2089:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2089:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2193:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2196:4:5", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2186:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2186:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2186:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2217:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2220:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2210:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2210:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2210:15:5" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "2051:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2265:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2282:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2285:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2275:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2275:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2275:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2379:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2382:4:5", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2372:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2372:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2372:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2403:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2406:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2396:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2396:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2396:15:5" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "2237:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2529:75:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2551:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2559:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2547:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2547:14:5" + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2563:33:5", + "type": "", + "value": "ERC20: mint to the zero address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2540:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2540:57:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2540:57:5" + } + ] + }, + "name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2521:6:5", + "type": "" + } + ], + "src": "2423:181:5" + } + ] + }, + "contents": "{\n\n function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(pos)\n end := add(pos, 32)\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_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__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_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\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_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: mint to the zero address\")\n\n }\n\n}\n", + "id": 5, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:13909:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "59:87:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "69:29:5", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "91:6:5" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "78:12:5" + }, + "nodeType": "YulFunctionCall", + "src": "78:20:5" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "69:5:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "134:5:5" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "107:26:5" + }, + "nodeType": "YulFunctionCall", + "src": "107:33:5" + }, + "nodeType": "YulExpressionStatement", + "src": "107:33:5" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "37:6:5", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "45:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:5", + "type": "" + } + ], + "src": "7:139:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "204:87:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "214:29:5", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "236:6:5" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "223:12:5" + }, + "nodeType": "YulFunctionCall", + "src": "223:20:5" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "214:5:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "279:5:5" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "252:26:5" + }, + "nodeType": "YulFunctionCall", + "src": "252:33:5" + }, + "nodeType": "YulExpressionStatement", + "src": "252:33:5" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "182:6:5", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "190:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "198:5:5", + "type": "" + } + ], + "src": "152:139:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "363:263:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "409:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "411:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "411:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "411:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "384:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "393:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "380:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "380:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "405:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "376:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "376:32:5" + }, + "nodeType": "YulIf", + "src": "373:119:5" + }, + { + "nodeType": "YulBlock", + "src": "502:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "517:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "531:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "521:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "546:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "581:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "592:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "577:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "577:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "601:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "556:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "556:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "546:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "333:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "344:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "356:6:5", + "type": "" + } + ], + "src": "297:329:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "715:391:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "761:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "763:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "763:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "763:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "736:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "745:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "732:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "732:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "757:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "728:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "728:32:5" + }, + "nodeType": "YulIf", + "src": "725:119:5" + }, + { + "nodeType": "YulBlock", + "src": "854:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "869:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "883:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "873:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "898:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "933:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "944:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "929:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "929:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "953:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "908:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "908:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "898:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "981:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "996:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1010:2:5", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1000:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1026:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1061:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1072:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1057:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1057:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1081:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1036:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1036:53:5" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1026:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "677:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "688:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "700:6:5", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "708:6:5", + "type": "" + } + ], + "src": "632:474:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1212:519:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1258:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1260:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "1260:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1260:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1233:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1242:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1229:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1229:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1254:2:5", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1225:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1225:32:5" + }, + "nodeType": "YulIf", + "src": "1222:119:5" + }, + { + "nodeType": "YulBlock", + "src": "1351:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1366:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1380:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1370:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1395:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1430:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1441:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1426:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1426:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1450:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1405:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1405:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1395:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1478:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1493:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1507:2:5", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1497:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1523:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1558:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1569:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1554:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1554:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1578:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1533:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1533:53:5" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1523:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1606:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1621:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1635:2:5", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1625:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1651:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1686:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1697:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1682:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1682:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1706:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1661:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "1661:53:5" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1651:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1166:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1177:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1189:6:5", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1197:6:5", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1205:6:5", + "type": "" + } + ], + "src": "1112:619:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1820:391:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1866:83:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1868:77:5" + }, + "nodeType": "YulFunctionCall", + "src": "1868:79:5" + }, + "nodeType": "YulExpressionStatement", + "src": "1868:79:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1841:7:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1850:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1837:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1837:23:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1862:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1833:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "1833:32:5" + }, + "nodeType": "YulIf", + "src": "1830:119:5" + }, + { + "nodeType": "YulBlock", + "src": "1959:117:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1974:15:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1988:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1978:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2003:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2038:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2049:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2034:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2034:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2058:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "2013:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "2013:53:5" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2003:6:5" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "2086:118:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2101:16:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2115:2:5", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2105:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2131:63:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2166:9:5" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2177:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2162:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2162:22:5" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2186:7:5" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "2141:20:5" + }, + "nodeType": "YulFunctionCall", + "src": "2141:53:5" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2131:6:5" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1782:9:5", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1793:7:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1805:6:5", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1813:6:5", + "type": "" + } + ], + "src": "1737:474:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2276:50:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2293:3:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2313:5:5" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "2298:14:5" + }, + "nodeType": "YulFunctionCall", + "src": "2298:21:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2286:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "2286:34:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2286:34:5" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2264:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2271:3:5", + "type": "" + } + ], + "src": "2217:109:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2424:272:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2434:53:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2481:5:5" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2448:32:5" + }, + "nodeType": "YulFunctionCall", + "src": "2448:39:5" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2438:6:5", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2496:78:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2562:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2567:6:5" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2503:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "2503:71:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2496:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2609:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2616:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2605:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2605:16:5" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2623:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2628:6:5" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "2583:21:5" + }, + "nodeType": "YulFunctionCall", + "src": "2583:52:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2583:52:5" + }, + { + "nodeType": "YulAssignment", + "src": "2644:46:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2655:3:5" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2682:6:5" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2660:21:5" + }, + "nodeType": "YulFunctionCall", + "src": "2660:29:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2651:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "2651:39:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2644:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2405:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2412:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2420:3:5", + "type": "" + } + ], + "src": "2332:364:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2848:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2858:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2924:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2929:2:5", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2865:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "2865:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2858:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3030:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "nodeType": "YulIdentifier", + "src": "2941:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "2941:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "2941:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "3043:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3054:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3059:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3050:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "3050:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3043:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2836:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2844:3:5", + "type": "" + } + ], + "src": "2702:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3220:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3230:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3296:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3301:2:5", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3237:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "3237:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3230:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3402:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "nodeType": "YulIdentifier", + "src": "3313:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "3313:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3313:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "3415:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3426:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3431:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3422:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "3422:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3415:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3208:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3216:3:5", + "type": "" + } + ], + "src": "3074:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3592:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3602:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3668:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3673:2:5", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3609:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "3609:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3602:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3774:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "nodeType": "YulIdentifier", + "src": "3685:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "3685:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "3685:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "3787:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3798:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3803:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3794:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "3794:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3787:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3580:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3588:3:5", + "type": "" + } + ], + "src": "3446:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3964:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3974:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4040:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4045:2:5", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3981:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "3981:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3974:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4146:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "nodeType": "YulIdentifier", + "src": "4057:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "4057:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "4057:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "4159:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4170:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4175:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4166:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4166:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4159:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3952:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3960:3:5", + "type": "" + } + ], + "src": "3818:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4336:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4346:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4412:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4417:2:5", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4353:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "4353:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4346:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4518:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "nodeType": "YulIdentifier", + "src": "4429:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "4429:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "4429:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "4531:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4542:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4547:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4538:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4538:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4531:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4324:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4332:3:5", + "type": "" + } + ], + "src": "4190:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4708:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4718:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4784:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4789:2:5", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4725:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "4725:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4718:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4890:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "nodeType": "YulIdentifier", + "src": "4801:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "4801:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "4801:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "4903:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4914:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4919:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4910:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "4910:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4903:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4696:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4704:3:5", + "type": "" + } + ], + "src": "4562:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5080:220:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5090:74:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5156:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5161:2:5", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5097:58:5" + }, + "nodeType": "YulFunctionCall", + "src": "5097:67:5" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5090:3:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5262:3:5" + } + ], + "functionName": { + "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "nodeType": "YulIdentifier", + "src": "5173:88:5" + }, + "nodeType": "YulFunctionCall", + "src": "5173:93:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5173:93:5" + }, + { + "nodeType": "YulAssignment", + "src": "5275:19:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5286:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5291:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5282:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5282:12:5" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5275:3:5" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5068:3:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5076:3:5", + "type": "" + } + ], + "src": "4934:366:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5371:53:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5388:3:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5411:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "5393:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "5393:24:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5381:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "5381:37:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5381:37:5" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5359:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5366:3:5", + "type": "" + } + ], + "src": "5306:118:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5491:51:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5508:3:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5529:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "5513:15:5" + }, + "nodeType": "YulFunctionCall", + "src": "5513:22:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5501:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "5501:35:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5501:35:5" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5479:5:5", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5486:3:5", + "type": "" + } + ], + "src": "5430:112:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5640:118:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5650:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5662:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5673:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5658:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5658:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5650:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5724:6:5" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5737:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5748:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5733:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5733:17:5" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "5686:37:5" + }, + "nodeType": "YulFunctionCall", + "src": "5686:65:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5686:65:5" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5612:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5624:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5635:4:5", + "type": "" + } + ], + "src": "5548:210:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5882:195:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5892:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5904:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5915:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5900:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5900:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5892:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5939:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5950:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5935:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5935:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5958:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5964:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5954:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "5954:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5928:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "5928:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "5928:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "5984:86:5", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6056:6:5" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6065:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5992:63:5" + }, + "nodeType": "YulFunctionCall", + "src": "5992:78:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5984:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5854:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5866:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5877:4:5", + "type": "" + } + ], + "src": "5764:313:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6254:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6264:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6276:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6287:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6272:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6272:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6264:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6311:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6322:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6307:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6307:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6330:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6336:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6326:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6326:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6300:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "6300:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "6300:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "6356:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6490:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6364:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "6364:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6356:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6234:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6249:4:5", + "type": "" + } + ], + "src": "6083:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6679:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6689:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6701:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6712:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6697:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6697:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6689:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6736:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6747:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6732:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6732:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6755:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6761:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6751:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "6751:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6725:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "6725:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "6725:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "6781:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6915:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6789:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "6789:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6781:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6659:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6674:4:5", + "type": "" + } + ], + "src": "6508:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7104:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7114:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7126:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7137:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7122:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7122:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7114:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7161:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7172:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7157:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7157:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7180:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7186:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7176:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7176:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7150:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "7150:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "7150:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "7206:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7340:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7214:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "7214:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7206:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7084:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7099:4:5", + "type": "" + } + ], + "src": "6933:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7529:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7539:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7551:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7562:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7547:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7547:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7539:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7586:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7597:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7582:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7582:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7605:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7611:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7601:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7601:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7575:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "7575:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "7575:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "7631:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7765:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7639:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "7639:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7631:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7509:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7524:4:5", + "type": "" + } + ], + "src": "7358:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7954:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7964:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7976:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7987:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7972:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "7972:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7964:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8011:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8022:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8007:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8007:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8030:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8036:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8026:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8026:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8000:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "8000:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "8000:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "8056:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8190:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8064:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "8064:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8056:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7934:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7949:4:5", + "type": "" + } + ], + "src": "7783:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8379:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8389:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8401:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8412:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8397:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8397:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8389:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8436:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8447:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8432:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8432:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8455:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8461:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8451:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8451:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8425:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "8425:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "8425:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "8481:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8615:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8489:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "8489:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8481:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8359:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8374:4:5", + "type": "" + } + ], + "src": "8208:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8804:248:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8814:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8826:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8837:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8822:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8822:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8814:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8861:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8872:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8857:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8857:17:5" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8880:4:5" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8886:9:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8876:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "8876:20:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8850:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "8850:47:5" + }, + "nodeType": "YulExpressionStatement", + "src": "8850:47:5" + }, + { + "nodeType": "YulAssignment", + "src": "8906:139:5", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9040:4:5" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8914:124:5" + }, + "nodeType": "YulFunctionCall", + "src": "8914:131:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8906:4:5" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8784:9:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8799:4:5", + "type": "" + } + ], + "src": "8633:419:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9156:124:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9166:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9178:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9189:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9174:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9174:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9166:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9246:6:5" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9259:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9270:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9255:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9255:17:5" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "9202:43:5" + }, + "nodeType": "YulFunctionCall", + "src": "9202:71:5" + }, + "nodeType": "YulExpressionStatement", + "src": "9202:71:5" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9128:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9140:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9151:4:5", + "type": "" + } + ], + "src": "9058:222:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9380:120:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9390:26:5", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9402:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9413:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9398:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9398:18:5" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9390:4:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9466:6:5" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9479:9:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9490:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9475:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9475:17:5" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "9426:39:5" + }, + "nodeType": "YulFunctionCall", + "src": "9426:67:5" + }, + "nodeType": "YulExpressionStatement", + "src": "9426:67:5" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9352:9:5", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9364:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9375:4:5", + "type": "" + } + ], + "src": "9286:214:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9546:35:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9556:19:5", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9572:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9566:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "9566:9:5" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9556:6:5" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "9539:6:5", + "type": "" + } + ], + "src": "9506:75:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9646:40:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9657:22:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9673:5:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9667:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "9667:12:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9657:6:5" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9629:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9639:6:5", + "type": "" + } + ], + "src": "9587:99:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9788:73:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9805:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9810:6:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9798:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "9798:19:5" + }, + "nodeType": "YulExpressionStatement", + "src": "9798:19:5" + }, + { + "nodeType": "YulAssignment", + "src": "9826:29:5", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9845:3:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9850:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9841:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "9841:14:5" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "9826:11:5" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9760:3:5", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9765:6:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "9776:11:5", + "type": "" + } + ], + "src": "9692:169:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9911:261:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9921:25:5", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9944:1:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9926:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "9926:20:5" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9921:1:5" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9955:25:5", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9978:1:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9960:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "9960:20:5" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9955:1:5" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10118:22:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "10120:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "10120:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "10120:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10039:1:5" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10046:66:5", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10114:1:5" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10042:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10042:74:5" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10036:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "10036:81:5" + }, + "nodeType": "YulIf", + "src": "10033:107:5" + }, + { + "nodeType": "YulAssignment", + "src": "10150:16:5", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10161:1:5" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10164:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10157:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10157:9:5" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "10150:3:5" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "9898:1:5", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "9901:1:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "9907:3:5", + "type": "" + } + ], + "src": "9867:305:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10223:51:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10233:35:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10262:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "10244:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "10244:24:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10233:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10205:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10215:7:5", + "type": "" + } + ], + "src": "10178:96:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10322:48:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10332:32:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10357:5:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10350:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10350:13:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10343:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10343:21:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10332:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10304:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10314:7:5", + "type": "" + } + ], + "src": "10280:90:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10421:81:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10431:65:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10446:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10453:42:5", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10442:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10442:54:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10431:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10403:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10413:7:5", + "type": "" + } + ], + "src": "10376:126:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10553:32:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10563:16:5", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10574:5:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10563:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10535:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10545:7:5", + "type": "" + } + ], + "src": "10508:77:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10634:43:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10644:27:5", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10659:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10666:4:5", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10655:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10655:16:5" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "10644:7:5" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10616:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "10626:7:5", + "type": "" + } + ], + "src": "10591:86:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10732:258:5", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10742:10:5", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10751:1:5", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "10746:1:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10811:63:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "10836:3:5" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10841:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10832:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10832:11:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "10855:3:5" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10860:1:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10851:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10851:11:5" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10845:5:5" + }, + "nodeType": "YulFunctionCall", + "src": "10845:18:5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10825:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10825:39:5" + }, + "nodeType": "YulExpressionStatement", + "src": "10825:39:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10772:1:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10775:6:5" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10769:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "10769:13:5" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "10783:19:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10785:15:5", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10794:1:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10797:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10790:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10790:10:5" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10785:1:5" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "10765:3:5", + "statements": [] + }, + "src": "10761:113:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10908:76:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "10958:3:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10963:6:5" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10954:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "10954:16:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10972:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10947:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "10947:27:5" + }, + "nodeType": "YulExpressionStatement", + "src": "10947:27:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10889:1:5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10892:6:5" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10886:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "10886:13:5" + }, + "nodeType": "YulIf", + "src": "10883:101:5" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "10714:3:5", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "10719:3:5", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10724:6:5", + "type": "" + } + ], + "src": "10683:307:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11047:269:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11057:22:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11071:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11077:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11067:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "11067:12:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11057:6:5" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11088:38:5", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11118:4:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11124:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11114:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "11114:12:5" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "11092:18:5", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11165:51:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11179:27:5", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11193:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11201:4:5", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11189:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "11189:17:5" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11179:6:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "11145:18:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11138:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11138:26:5" + }, + "nodeType": "YulIf", + "src": "11135:81:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11268:42:5", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "11282:16:5" + }, + "nodeType": "YulFunctionCall", + "src": "11282:18:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11282:18:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "11232:18:5" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11255:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11263:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "11252:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "11252:14:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "11229:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "11229:38:5" + }, + "nodeType": "YulIf", + "src": "11226:84:5" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "11031:4:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11040:6:5", + "type": "" + } + ], + "src": "10996:320:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11350:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11367:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11370:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11360:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11360:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11360:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11464:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11467:4:5", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11457:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11457:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11457:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11488:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11491:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11481:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11481:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11481:15:5" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "11322:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11536:152:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11553:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11556:77:5", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11546:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11546:88:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11546:88:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11650:1:5", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11653:4:5", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11643:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11643:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11643:15:5" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11674:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11677:4:5", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11667:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11667:15:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11667:15:5" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "11508:180:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11783:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11800:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11803:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11793:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11793:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11793:12:5" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "11694:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11906:28:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11923:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11926:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11916:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "11916:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "11916:12:5" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "11817:117:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11988:54:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11998:38:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12016:5:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12023:2:5", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12012:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12012:14:5" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12032:2:5", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "12028:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12028:7:5" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12008:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12008:28:5" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "11998:6:5" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11971:5:5", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "11981:6:5", + "type": "" + } + ], + "src": "11940:102:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12154:116:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12176:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12184:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12172:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12172:14:5" + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12188:34:5", + "type": "", + "value": "ERC20: transfer to the zero addr" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12165:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12165:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12165:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12244:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12252:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12240:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12240:15:5" + }, + { + "hexValue": "657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12257:5:5", + "type": "", + "value": "ess" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12233:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12233:30:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12233:30:5" + } + ] + }, + "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12146:6:5", + "type": "" + } + ], + "src": "12048:222:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12382:115:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12404:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12412:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12400:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12400:14:5" + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12416:34:5", + "type": "", + "value": "ERC20: approve to the zero addre" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12393:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12393:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12393:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12472:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12480:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12468:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12468:15:5" + }, + { + "hexValue": "7373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12485:4:5", + "type": "", + "value": "ss" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12461:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12461:29:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12461:29:5" + } + ] + }, + "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12374:6:5", + "type": "" + } + ], + "src": "12276:221:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12609:119:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12631:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12639:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12627:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12627:14:5" + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12643:34:5", + "type": "", + "value": "ERC20: transfer amount exceeds b" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12620:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12620:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12620:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12699:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12707:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12695:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12695:15:5" + }, + { + "hexValue": "616c616e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12712:8:5", + "type": "", + "value": "alance" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12688:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12688:33:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12688:33:5" + } + ] + }, + "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12601:6:5", + "type": "" + } + ], + "src": "12503:225:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12840:121:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12862:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12870:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12858:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12858:14:5" + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12874:34:5", + "type": "", + "value": "ERC20: transfer amount exceeds a" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12851:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12851:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12851:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12930:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12938:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12926:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "12926:15:5" + }, + { + "hexValue": "6c6c6f77616e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12943:10:5", + "type": "", + "value": "llowance" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12919:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "12919:35:5" + }, + "nodeType": "YulExpressionStatement", + "src": "12919:35:5" + } + ] + }, + "name": "store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12832:6:5", + "type": "" + } + ], + "src": "12734:227:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13073:118:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13095:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13103:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13091:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13091:14:5" + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13107:34:5", + "type": "", + "value": "ERC20: transfer from the zero ad" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13084:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13084:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13084:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13163:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13171:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13159:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13159:15:5" + }, + { + "hexValue": "6472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13176:7:5", + "type": "", + "value": "dress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13152:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13152:32:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13152:32:5" + } + ] + }, + "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "13065:6:5", + "type": "" + } + ], + "src": "12967:224:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13303:117:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13325:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13333:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13321:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13321:14:5" + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13337:34:5", + "type": "", + "value": "ERC20: approve from the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13314:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13314:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13314:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13393:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13401:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13389:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13389:15:5" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13406:6:5", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13382:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13382:31:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13382:31:5" + } + ] + }, + "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "13295:6:5", + "type": "" + } + ], + "src": "13197:223:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13532:118:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13554:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13562:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13550:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13550:14:5" + }, + { + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13566:34:5", + "type": "", + "value": "ERC20: decreased allowance below" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13543:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13543:58:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13543:58:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13622:6:5" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13630:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13618:3:5" + }, + "nodeType": "YulFunctionCall", + "src": "13618:15:5" + }, + { + "hexValue": "207a65726f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13635:7:5", + "type": "", + "value": " zero" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13611:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13611:32:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13611:32:5" + } + ] + }, + "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "13524:6:5", + "type": "" + } + ], + "src": "13426:224:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13699:79:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13756:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13765:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13768:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13758:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13758:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13758:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13722:5:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13747:5:5" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "13729:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "13729:24:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "13719:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "13719:35:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13712:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13712:43:5" + }, + "nodeType": "YulIf", + "src": "13709:63:5" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13692:5:5", + "type": "" + } + ], + "src": "13656:122:5" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13827:79:5", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13884:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13893:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13896:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13886:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13886:12:5" + }, + "nodeType": "YulExpressionStatement", + "src": "13886:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13850:5:5" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13875:5:5" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "13857:17:5" + }, + "nodeType": "YulFunctionCall", + "src": "13857:24:5" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "13847:2:5" + }, + "nodeType": "YulFunctionCall", + "src": "13847:35:5" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13840:6:5" + }, + "nodeType": "YulFunctionCall", + "src": "13840:43:5" + }, + "nodeType": "YulIf", + "src": "13837:63:5" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13820:5:5", + "type": "" + } + ], + "src": "13784:122:5" + } + ] + }, + "contents": "{\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_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(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 abi_decode_tuple_t_addresst_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_address(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 abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(pos)\n end := add(pos, 64)\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_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_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_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__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_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__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_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__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_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__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_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__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_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__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_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__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_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\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 abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\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 checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function copy_memory_to_memory(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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 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 store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer to the zero addr\")\n\n mstore(add(memPtr, 32), \"ess\")\n\n }\n\n function store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve to the zero addre\")\n\n mstore(add(memPtr, 32), \"ss\")\n\n }\n\n function store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds b\")\n\n mstore(add(memPtr, 32), \"alance\")\n\n }\n\n function store_literal_in_memory_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds a\")\n\n mstore(add(memPtr, 32), \"llowance\")\n\n }\n\n function store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer from the zero ad\")\n\n mstore(add(memPtr, 32), \"dress\")\n\n }\n\n function store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve from the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: decreased allowance below\")\n\n mstore(add(memPtr, 32), \" zero\")\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 validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n", + "id": 5, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "152:181:0:-:0;;;185:145;;;;;;;;;;1906:113:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1980:5;1972;:13;;;;;;;;;;;;:::i;:::-;;2005:7;1995;:17;;;;;;;;;;;;:::i;:::-;;1906:113;;234:22:0::1;259:9;234:34;;289:33;295:10;307:14;289:5;;;:33;;:::i;:::-;226:104;152:181:::0;;8254:389:1;8356:1;8337:21;;:7;:21;;;;8329:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8405:49;8434:1;8438:7;8447:6;8405:20;;;:49;;:::i;:::-;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;;;;;8519:6;8497:9;:18;8507:7;8497:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;8561:7;8540:37;;8557:1;8540:37;;;8570:6;8540:37;;;;;;:::i;:::-;;;;;;;;8588:48;8616:1;8620:7;8629:6;8588:19;;;:48;;:::i;:::-;8254:389;;:::o;10916:121::-;;;;:::o;11625:120::-;;;;:::o;152:181:0:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:366:5:-;149:3;170:67;234:2;229:3;170:67;:::i;:::-;163:74;;246:93;335:3;246:93;:::i;:::-;364:2;359:3;355:12;348:19;;7:366;;;:::o;379:118::-;466:24;484:5;466:24;:::i;:::-;461:3;454:37;379:118;;:::o;503:419::-;669:4;707:2;696:9;692:18;684:26;;756:9;750:4;746:20;742:1;731:9;727:17;720:47;784:131;910:4;784:131;:::i;:::-;776:139;;503:419;;;:::o;928:222::-;1021:4;1059:2;1048:9;1044:18;1036:26;;1072:71;1140:1;1129:9;1125:17;1116:6;1072:71;:::i;:::-;928:222;;;;:::o;1156:169::-;1240:11;1274:6;1269:3;1262:19;1314:4;1309:3;1305:14;1290:29;;1156:169;;;;:::o;1331:305::-;1371:3;1390:20;1408:1;1390:20;:::i;:::-;1385:25;;1424:20;1442:1;1424:20;:::i;:::-;1419:25;;1578:1;1510:66;1506:74;1503:1;1500:81;1497:107;;;1584:18;;:::i;:::-;1497:107;1628:1;1625;1621:9;1614:16;;1331:305;;;;:::o;1642:77::-;1679:7;1708:5;1697:16;;1642:77;;;:::o;1725:320::-;1769:6;1806:1;1800:4;1796:12;1786:22;;1853:1;1847:4;1843:12;1874:18;1864:81;;1930:4;1922:6;1918:17;1908:27;;1864:81;1992:2;1984:6;1981:14;1961:18;1958:38;1955:84;;;2011:18;;:::i;:::-;1955:84;1776:269;1725:320;;;:::o;2051:180::-;2099:77;2096:1;2089:88;2196:4;2193:1;2186:15;2220:4;2217:1;2210:15;2237:180;2285:77;2282:1;2275:88;2382:4;2379:1;2372:15;2406:4;2403:1;2396:15;2423:181;2563:33;2559:1;2551:6;2547:14;2540:57;2423:181;:::o;152::0:-;;;;;;;", + "deployedSourceMap": "152:181:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4814:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3021:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5687:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3336:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2295:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6386:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3894:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2084:98;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;4289:12;:10;:12::i;:::-;4303:7;4312:6;4280:8;:39::i;:::-;4336:4;4329:11;;4181:166;;;;:::o;3172:106::-;3233:7;3259:12;;3252:19;;3172:106;:::o;4814:478::-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5013:24;5040:11;:19;5052:6;5040:19;;;;;;;;;;;;;;;:33;5060:12;:10;:12::i;:::-;5040:33;;;;;;;;;;;;;;;;5013:60;;5111:6;5091:16;:26;;5083:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5196:57;5205:6;5213:12;:10;:12::i;:::-;5246:6;5227:16;:25;5196:8;:57::i;:::-;5281:4;5274:11;;;4814:478;;;;;:::o;3021:91::-;3079:5;3103:2;3096:9;;3021:91;:::o;5687:212::-;5775:4;5791:80;5800:12;:10;:12::i;:::-;5814:7;5860:10;5823:11;:25;5835:12;:10;:12::i;:::-;5823:25;;;;;;;;;;;;;;;:34;5849:7;5823:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5791:8;:80::i;:::-;5888:4;5881:11;;5687:212;;;;:::o;3336:125::-;3410:7;3436:9;:18;3446:7;3436:18;;;;;;;;;;;;;;;;3429:25;;3336:125;;;:::o;2295:102::-;2351:13;2383:7;2376:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:102;:::o;6386:405::-;6479:4;6495:24;6522:11;:25;6534:12;:10;:12::i;:::-;6522:25;;;;;;;;;;;;;;;:34;6548:7;6522:34;;;;;;;;;;;;;;;;6495:61;;6594:15;6574:16;:35;;6566:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6685:67;6694:12;:10;:12::i;:::-;6708:7;6736:15;6717:16;:34;6685:8;:67::i;:::-;6780:4;6773:11;;;6386:405;;;;:::o;3664:172::-;3750:4;3766:42;3776:12;:10;:12::i;:::-;3790:9;3801:6;3766:9;:42::i;:::-;3825:4;3818:11;;3664:172;;;;:::o;3894:149::-;3983:7;4009:11;:18;4021:5;4009:18;;;;;;;;;;;;;;;:27;4028:7;4009:27;;;;;;;;;;;;;;;;4002:34;;3894:149;;;;:::o;587:96:4:-;640:7;666:10;659:17;;587:96;:::o;9962:370:1:-;10110:1;10093:19;;:5;:19;;;;10085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10190:1;10171:21;;:7;:21;;;;10163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10272:6;10242:11;:18;10254:5;10242:18;;;;;;;;;;;;;;;:27;10261:7;10242:27;;;;;;;;;;;;;;;:36;;;;10309:7;10293:32;;10302:5;10293:32;;;10318:6;10293:32;;;;;;:::i;:::-;;;;;;;;9962:370;;;:::o;7265:713::-;7418:1;7400:20;;:6;:20;;;;7392:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:1;7480:23;;:9;:23;;;;7472:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7554:47;7575:6;7583:9;7594:6;7554:20;:47::i;:::-;7612:21;7636:9;:17;7646:6;7636:17;;;;;;;;;;;;;;;;7612:41;;7688:6;7671:13;:23;;7663:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7807:6;7791:13;:22;7771:9;:17;7781:6;7771:17;;;;;;;;;;;;;;;:42;;;;7857:6;7833:9;:20;7843:9;7833:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;;;:::i;:::-;;;;;;;;7925:46;7945:6;7953:9;7964:6;7925:19;:46::i;:::-;7382:596;7265:713;;;:::o;10916:121::-;;;;:::o;11625:120::-;;;;:::o;7:139:5:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:119;;;411:79;;:::i;:::-;373:119;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;297:329;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:119;;;763:79;;:::i;:::-;725:119;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;632:474;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:119;;;1260:79;;:::i;:::-;1222:119;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1112:619;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:119;;;1868:79;;:::i;:::-;1830:119;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1737:474;;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2217:109;;:::o;2332:364::-;2420:3;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;2332:364;;;;:::o;2702:366::-;2844:3;2865:67;2929:2;2924:3;2865:67;:::i;:::-;2858:74;;2941:93;3030:3;2941:93;:::i;:::-;3059:2;3054:3;3050:12;3043:19;;2702:366;;;:::o;3074:::-;3216:3;3237:67;3301:2;3296:3;3237:67;:::i;:::-;3230:74;;3313:93;3402:3;3313:93;:::i;:::-;3431:2;3426:3;3422:12;3415:19;;3074:366;;;:::o;3446:::-;3588:3;3609:67;3673:2;3668:3;3609:67;:::i;:::-;3602:74;;3685:93;3774:3;3685:93;:::i;:::-;3803:2;3798:3;3794:12;3787:19;;3446:366;;;:::o;3818:::-;3960:3;3981:67;4045:2;4040:3;3981:67;:::i;:::-;3974:74;;4057:93;4146:3;4057:93;:::i;:::-;4175:2;4170:3;4166:12;4159:19;;3818:366;;;:::o;4190:::-;4332:3;4353:67;4417:2;4412:3;4353:67;:::i;:::-;4346:74;;4429:93;4518:3;4429:93;:::i;:::-;4547:2;4542:3;4538:12;4531:19;;4190:366;;;:::o;4562:::-;4704:3;4725:67;4789:2;4784:3;4725:67;:::i;:::-;4718:74;;4801:93;4890:3;4801:93;:::i;:::-;4919:2;4914:3;4910:12;4903:19;;4562:366;;;:::o;4934:::-;5076:3;5097:67;5161:2;5156:3;5097:67;:::i;:::-;5090:74;;5173:93;5262:3;5173:93;:::i;:::-;5291:2;5286:3;5282:12;5275:19;;4934:366;;;:::o;5306:118::-;5393:24;5411:5;5393:24;:::i;:::-;5388:3;5381:37;5306:118;;:::o;5430:112::-;5513:22;5529:5;5513:22;:::i;:::-;5508:3;5501:35;5430:112;;:::o;5548:210::-;5635:4;5673:2;5662:9;5658:18;5650:26;;5686:65;5748:1;5737:9;5733:17;5724:6;5686:65;:::i;:::-;5548:210;;;;:::o;5764:313::-;5877:4;5915:2;5904:9;5900:18;5892:26;;5964:9;5958:4;5954:20;5950:1;5939:9;5935:17;5928:47;5992:78;6065:4;6056:6;5992:78;:::i;:::-;5984:86;;5764:313;;;;:::o;6083:419::-;6249:4;6287:2;6276:9;6272:18;6264:26;;6336:9;6330:4;6326:20;6322:1;6311:9;6307:17;6300:47;6364:131;6490:4;6364:131;:::i;:::-;6356:139;;6083:419;;;:::o;6508:::-;6674:4;6712:2;6701:9;6697:18;6689:26;;6761:9;6755:4;6751:20;6747:1;6736:9;6732:17;6725:47;6789:131;6915:4;6789:131;:::i;:::-;6781:139;;6508:419;;;:::o;6933:::-;7099:4;7137:2;7126:9;7122:18;7114:26;;7186:9;7180:4;7176:20;7172:1;7161:9;7157:17;7150:47;7214:131;7340:4;7214:131;:::i;:::-;7206:139;;6933:419;;;:::o;7358:::-;7524:4;7562:2;7551:9;7547:18;7539:26;;7611:9;7605:4;7601:20;7597:1;7586:9;7582:17;7575:47;7639:131;7765:4;7639:131;:::i;:::-;7631:139;;7358:419;;;:::o;7783:::-;7949:4;7987:2;7976:9;7972:18;7964:26;;8036:9;8030:4;8026:20;8022:1;8011:9;8007:17;8000:47;8064:131;8190:4;8064:131;:::i;:::-;8056:139;;7783:419;;;:::o;8208:::-;8374:4;8412:2;8401:9;8397:18;8389:26;;8461:9;8455:4;8451:20;8447:1;8436:9;8432:17;8425:47;8489:131;8615:4;8489:131;:::i;:::-;8481:139;;8208:419;;;:::o;8633:::-;8799:4;8837:2;8826:9;8822:18;8814:26;;8886:9;8880:4;8876:20;8872:1;8861:9;8857:17;8850:47;8914:131;9040:4;8914:131;:::i;:::-;8906:139;;8633:419;;;:::o;9058:222::-;9151:4;9189:2;9178:9;9174:18;9166:26;;9202:71;9270:1;9259:9;9255:17;9246:6;9202:71;:::i;:::-;9058:222;;;;:::o;9286:214::-;9375:4;9413:2;9402:9;9398:18;9390:26;;9426:67;9490:1;9479:9;9475:17;9466:6;9426:67;:::i;:::-;9286:214;;;;:::o;9587:99::-;9639:6;9673:5;9667:12;9657:22;;9587:99;;;:::o;9692:169::-;9776:11;9810:6;9805:3;9798:19;9850:4;9845:3;9841:14;9826:29;;9692:169;;;;:::o;9867:305::-;9907:3;9926:20;9944:1;9926:20;:::i;:::-;9921:25;;9960:20;9978:1;9960:20;:::i;:::-;9955:25;;10114:1;10046:66;10042:74;10039:1;10036:81;10033:107;;;10120:18;;:::i;:::-;10033:107;10164:1;10161;10157:9;10150:16;;9867:305;;;;:::o;10178:96::-;10215:7;10244:24;10262:5;10244:24;:::i;:::-;10233:35;;10178:96;;;:::o;10280:90::-;10314:7;10357:5;10350:13;10343:21;10332:32;;10280:90;;;:::o;10376:126::-;10413:7;10453:42;10446:5;10442:54;10431:65;;10376:126;;;:::o;10508:77::-;10545:7;10574:5;10563:16;;10508:77;;;:::o;10591:86::-;10626:7;10666:4;10659:5;10655:16;10644:27;;10591:86;;;:::o;10683:307::-;10751:1;10761:113;10775:6;10772:1;10769:13;10761:113;;;10860:1;10855:3;10851:11;10845:18;10841:1;10836:3;10832:11;10825:39;10797:2;10794:1;10790:10;10785:15;;10761:113;;;10892:6;10889:1;10886:13;10883:101;;;10972:1;10963:6;10958:3;10954:16;10947:27;10883:101;10732:258;10683:307;;;:::o;10996:320::-;11040:6;11077:1;11071:4;11067:12;11057:22;;11124:1;11118:4;11114:12;11145:18;11135:81;;11201:4;11193:6;11189:17;11179:27;;11135:81;11263:2;11255:6;11252:14;11232:18;11229:38;11226:84;;;11282:18;;:::i;:::-;11226:84;11047:269;10996:320;;;:::o;11322:180::-;11370:77;11367:1;11360:88;11467:4;11464:1;11457:15;11491:4;11488:1;11481:15;11508:180;11556:77;11553:1;11546:88;11653:4;11650:1;11643:15;11677:4;11674:1;11667:15;11817:117;11926:1;11923;11916:12;11940:102;11981:6;12032:2;12028:7;12023:2;12016:5;12012:14;12008:28;11998:38;;11940:102;;;:::o;12048:222::-;12188:34;12184:1;12176:6;12172:14;12165:58;12257:5;12252:2;12244:6;12240:15;12233:30;12048:222;:::o;12276:221::-;12416:34;12412:1;12404:6;12400:14;12393:58;12485:4;12480:2;12472:6;12468:15;12461:29;12276:221;:::o;12503:225::-;12643:34;12639:1;12631:6;12627:14;12620:58;12712:8;12707:2;12699:6;12695:15;12688:33;12503:225;:::o;12734:227::-;12874:34;12870:1;12862:6;12858:14;12851:58;12943:10;12938:2;12930:6;12926:15;12919:35;12734:227;:::o;12967:224::-;13107:34;13103:1;13095:6;13091:14;13084:58;13176:7;13171:2;13163:6;13159:15;13152:32;12967:224;:::o;13197:223::-;13337:34;13333:1;13325:6;13321:14;13314:58;13406:6;13401:2;13393:6;13389:15;13382:31;13197:223;:::o;13426:224::-;13566:34;13562:1;13554:6;13550:14;13543:58;13635:7;13630:2;13622:6;13618:15;13611:32;13426:224;:::o;13656:122::-;13729:24;13747:5;13729:24;:::i;:::-;13722:5;13719:35;13709:63;;13768:1;13765;13758:12;13709:63;13656:122;:::o;13784:::-;13857:24;13875:5;13857:24;:::i;:::-;13850:5;13847:35;13837:63;;13896:1;13893;13886:12;13837:63;13784:122;:::o", + "source": "// SPDX-License-Identifier: MIT\npragma solidity >=0.4.22 <0.9.0;\n\nimport {ERC20} from \"../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MyERC20 is ERC20 {\n\n constructor () ERC20(\"MyERC20\", \"MYERC\") {\n uint256 _initialSupply = 1_000_000; // 1 million\n _mint(msg.sender, _initialSupply); \n }\n\n}\n", + "sourcePath": "D:\\Block-Chain\\defi-dapps-solidity-smart-contracts\\creating-erc20-token\\contracts\\MyERC20.sol", + "ast": { + "absolutePath": "project:/contracts/MyERC20.sol", + "exportedSymbols": { + "ERC20": [ + 570 + ], + "MyERC20": [ + 24 + ] + }, + "id": 25, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.4", + ".22", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:32:0" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 25, + "sourceUnit": 571, + "src": "66:84:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "src": "74:5:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4, + "name": "ERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 570, + "src": "172:5:0" + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "172:5:0" + } + ], + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 24, + "linearizedBaseContracts": [ + 24, + 570, + 673, + 648, + 695 + ], + "name": "MyERC20", + "nameLocation": "161:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 22, + "nodeType": "Block", + "src": "226:104:0", + "statements": [ + { + "assignments": [ + 13 + ], + "declarations": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "_initialSupply", + "nameLocation": "242:14:0", + "nodeType": "VariableDeclaration", + "scope": 22, + "src": "234:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "234:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 15, + "initialValue": { + "hexValue": "315f3030305f303030", + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "259:9:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1_000_000" + }, + "nodeType": "VariableDeclarationStatement", + "src": "234:34:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 17, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "295:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "295:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 19, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "307:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 16, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "289:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "289:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 21, + "nodeType": "ExpressionStatement", + "src": "289:33:0" + } + ] + }, + "id": 23, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "4d794552433230", + "id": 8, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "206:9:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c9735432a94c01a25d6df614a93e9a68ab72969b11f8d9a1b07706aa466c54ec", + "typeString": "literal_string \"MyERC20\"" + }, + "value": "MyERC20" + }, + { + "hexValue": "4d59455243", + "id": 9, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "217:7:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e2d34778e0d04650b6ae143cc680fa1bba4b51e09e430547721d79ccfe2b1527", + "typeString": "literal_string \"MYERC\"" + }, + "value": "MYERC" + } + ], + "id": 10, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 7, + "name": "ERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 570, + "src": "200:5:0" + }, + "nodeType": "ModifierInvocation", + "src": "200:25:0" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [], + "src": "197:2:0" + }, + "returnParameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [], + "src": "226:0:0" + }, + "scope": 24, + "src": "185:145:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 25, + "src": "152:181:0", + "usedErrors": [] + } + ], + "src": "32:302:0" + }, + "legacyAST": { + "absolutePath": "project:/contracts/MyERC20.sol", + "exportedSymbols": { + "ERC20": [ + 570 + ], + "MyERC20": [ + 24 + ] + }, + "id": 25, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.4", + ".22", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:32:0" + }, + { + "absolutePath": "project:/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 25, + "sourceUnit": 571, + "src": "66:84:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "src": "74:5:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4, + "name": "ERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 570, + "src": "172:5:0" + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "172:5:0" + } + ], + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 24, + "linearizedBaseContracts": [ + 24, + 570, + 673, + 648, + 695 + ], + "name": "MyERC20", + "nameLocation": "161:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 22, + "nodeType": "Block", + "src": "226:104:0", + "statements": [ + { + "assignments": [ + 13 + ], + "declarations": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "_initialSupply", + "nameLocation": "242:14:0", + "nodeType": "VariableDeclaration", + "scope": 22, + "src": "234:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "234:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 15, + "initialValue": { + "hexValue": "315f3030305f303030", + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "259:9:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1_000_000" + }, + "nodeType": "VariableDeclarationStatement", + "src": "234:34:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 17, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "295:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "295:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 19, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "307:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 16, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "289:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "289:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 21, + "nodeType": "ExpressionStatement", + "src": "289:33:0" + } + ] + }, + "id": 23, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "4d794552433230", + "id": 8, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "206:9:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c9735432a94c01a25d6df614a93e9a68ab72969b11f8d9a1b07706aa466c54ec", + "typeString": "literal_string \"MyERC20\"" + }, + "value": "MyERC20" + }, + { + "hexValue": "4d59455243", + "id": 9, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "217:7:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e2d34778e0d04650b6ae143cc680fa1bba4b51e09e430547721d79ccfe2b1527", + "typeString": "literal_string \"MYERC\"" + }, + "value": "MYERC" + } + ], + "id": 10, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 7, + "name": "ERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 570, + "src": "200:5:0" + }, + "nodeType": "ModifierInvocation", + "src": "200:25:0" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [], + "src": "197:2:0" + }, + "returnParameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [], + "src": "226:0:0" + }, + "scope": 24, + "src": "185:145:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 25, + "src": "152:181:0", + "usedErrors": [] + } + ], + "src": "32:302:0" + }, + "compiler": { + "name": "solc", + "version": "0.8.7+commit.e28d00a7.Emscripten.clang" + }, + "networks": { + "5777": { + "events": {}, + "links": {}, + "address": "0xA260f3b1Fc013B45B8C63C838D57B66895133b09", + "transactionHash": "0x5811ff5ce8a5658bb6d28c646f80ffd65d54004782277cda935931e043d06e9f" + } + }, + "schemaVersion": "3.4.3", + "updatedAt": "2021-09-26T18:38:07.818Z", + "networkType": "ethereum", + "devdoc": { + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/creating-erc20-token/contracts/MyERC20.sol b/creating-erc20-token/contracts/MyERC20.sol new file mode 100644 index 0000000..0500a39 --- /dev/null +++ b/creating-erc20-token/contracts/MyERC20.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.4.22 <0.9.0; + +import {ERC20} from "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract MyERC20 is ERC20 { + + constructor () ERC20("MyERC20", "MYERC") { + uint256 _initialSupply = 1_000_000; // 1 million + _mint(msg.sender, _initialSupply); + } + +} diff --git a/creating-erc20-token/migrations/1_deploy_contracts.js b/creating-erc20-token/migrations/1_deploy_contracts.js new file mode 100644 index 0000000..c8dd46f --- /dev/null +++ b/creating-erc20-token/migrations/1_deploy_contracts.js @@ -0,0 +1,5 @@ +const MyERC20 = artifacts.require("MyERC20"); + +module.exports = function (deployer) { + deployer.deploy(MyERC20); +}; diff --git a/creating-erc20-token/package-lock.json b/creating-erc20-token/package-lock.json new file mode 100644 index 0000000..368e929 --- /dev/null +++ b/creating-erc20-token/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "creating-erc20-token", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@openzeppelin/contracts": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.2.tgz", + "integrity": "sha512-AybF1cesONZStg5kWf6ao9OlqTZuPqddvprc0ky7lrUVOjXeKpmQ2Y9FK+6ygxasb+4aic4O5pneFBfwVsRRRg==" + } + } +} diff --git a/creating-erc20-token/package.json b/creating-erc20-token/package.json new file mode 100644 index 0000000..45fc993 --- /dev/null +++ b/creating-erc20-token/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@openzeppelin/contracts": "^4.3.2" + } +} \ No newline at end of file diff --git a/creating-erc20-token/test/.gitkeep b/creating-erc20-token/test/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/creating-erc20-token/test/MyERC20.test.js b/creating-erc20-token/test/MyERC20.test.js new file mode 100644 index 0000000..e06cc84 --- /dev/null +++ b/creating-erc20-token/test/MyERC20.test.js @@ -0,0 +1,15 @@ +const MyERC20 = artifacts.require("MyERC20"); + +contract("MyERC20", ()=> { + it("Should have 1million tokens in totalsupply", async () => { + const contract = await MyERC20.new(); + const data = await contract.totalSupply(); + assert(data.toString() === "1000000"); + }); + // it("Should Return a Block Number", async () => { + // const contract = await LearningSolidity.new(); + // const data = await contract.getBlockNumber(); + // assert(Number.isInteger(data.toNumber())); + // }); + +}); \ No newline at end of file diff --git a/creating-erc20-token/truffle-config.js b/creating-erc20-token/truffle-config.js new file mode 100644 index 0000000..697de5a --- /dev/null +++ b/creating-erc20-token/truffle-config.js @@ -0,0 +1,16 @@ +module.exports = { + networks: { + development: { + host: "127.0.0.1", // Localhost (default: none) + port: 8545, // Standard Ethereum port (default: none) + network_id: "*", // Any network (default: none) + }, + }, + + // Configure your compilers + compilers: { + solc: { + version: ">=0.4.22 <0.9.0", + } + }, +};