@venusprotocol/oracle 2.5.0-dev.8 → 2.5.0-dev.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"id":"10f6720a09b0c0628cc72a5dfb092652","_format":"hh-sol-build-info-1","solcVersion":"0.5.16","solcLongVersion":"0.5.16+commit.9c3226ce","input":{"language":"Solidity","sources":{"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see <http://www.gnu.org/licenses/>.\n\npragma solidity ^0.5.16;\n\ncontract LibNote {\n event LogNote(\n bytes4 indexed sig,\n address indexed usr,\n bytes32 indexed arg1,\n bytes32 indexed arg2,\n bytes data\n ) anonymous;\n\n modifier note() {\n _;\n assembly {\n // log an 'anonymous' event with a constant 6 words of calldata\n // and four indexed topics: selector, caller, arg1 and arg2\n let mark := msize() // end of memory ensures zero\n mstore(0x40, add(mark, 288)) // update free memory pointer\n mstore(mark, 0x20) // bytes type data offset\n mstore(add(mark, 0x20), 224) // bytes size (padded)\n calldatacopy(add(mark, 0x40), 0, 224) // bytes payload\n log4(\n mark,\n 288, // calldata\n shl(224, shr(224, calldataload(0))), // msg.sig\n caller(), // msg.sender\n calldataload(4), // arg1\n calldataload(36) // arg2\n )\n }\n }\n}\n"},"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n// Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\n\npragma solidity ^0.5.16;\n\nimport \"./lib.sol\";\n\ncontract VAI is LibNote {\n // --- Auth ---\n mapping(address => uint256) public wards;\n\n function rely(address guy) external note auth {\n wards[guy] = 1;\n }\n\n function deny(address guy) external note auth {\n wards[guy] = 0;\n }\n\n modifier auth() {\n require(wards[msg.sender] == 1, \"VAI/not-authorized\");\n _;\n }\n\n // --- BEP20 Data ---\n string public constant name = \"VAI Stablecoin\";\n string public constant symbol = \"VAI\";\n string public constant version = \"1\";\n uint8 public constant decimals = 18;\n uint256 public totalSupply;\n\n mapping(address => uint256) public balanceOf;\n mapping(address => mapping(address => uint256)) public allowance;\n mapping(address => uint256) public nonces;\n\n event Approval(address indexed src, address indexed guy, uint256 wad);\n event Transfer(address indexed src, address indexed dst, uint256 wad);\n\n // --- Math ---\n function add(uint256 x, uint256 y) internal pure returns (uint256 z) {\n require((z = x + y) >= x, \"VAI math error\");\n }\n\n function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {\n require((z = x - y) <= x, \"VAI math error\");\n }\n\n // --- EIP712 niceties ---\n bytes32 public DOMAIN_SEPARATOR;\n // bytes32 public constant PERMIT_TYPEHASH = keccak256(\"Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)\");\n bytes32 public constant PERMIT_TYPEHASH = 0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb;\n\n constructor(uint256 chainId_) public {\n wards[msg.sender] = 1;\n DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name)),\n keccak256(bytes(version)),\n chainId_,\n address(this)\n )\n );\n }\n\n // --- Token ---\n function transfer(address dst, uint256 wad) external returns (bool) {\n return transferFrom(msg.sender, dst, wad);\n }\n\n function transferFrom(address src, address dst, uint256 wad) public returns (bool) {\n require(balanceOf[src] >= wad, \"VAI/insufficient-balance\");\n if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\n require(allowance[src][msg.sender] >= wad, \"VAI/insufficient-allowance\");\n allowance[src][msg.sender] = sub(allowance[src][msg.sender], wad);\n }\n balanceOf[src] = sub(balanceOf[src], wad);\n balanceOf[dst] = add(balanceOf[dst], wad);\n emit Transfer(src, dst, wad);\n return true;\n }\n\n function mint(address usr, uint256 wad) external auth {\n balanceOf[usr] = add(balanceOf[usr], wad);\n totalSupply = add(totalSupply, wad);\n emit Transfer(address(0), usr, wad);\n }\n\n function burn(address usr, uint256 wad) external {\n require(balanceOf[usr] >= wad, \"VAI/insufficient-balance\");\n if (usr != msg.sender && allowance[usr][msg.sender] != uint256(-1)) {\n require(allowance[usr][msg.sender] >= wad, \"VAI/insufficient-allowance\");\n allowance[usr][msg.sender] = sub(allowance[usr][msg.sender], wad);\n }\n balanceOf[usr] = sub(balanceOf[usr], wad);\n totalSupply = sub(totalSupply, wad);\n emit Transfer(usr, address(0), wad);\n }\n\n function approve(address usr, uint256 wad) external returns (bool) {\n allowance[msg.sender][usr] = wad;\n emit Approval(msg.sender, usr, wad);\n return true;\n }\n\n // --- Alias ---\n function push(address usr, uint256 wad) external {\n transferFrom(msg.sender, usr, wad);\n }\n\n function pull(address usr, uint256 wad) external {\n transferFrom(usr, msg.sender, wad);\n }\n\n function move(address src, address dst, uint256 wad) external {\n transferFrom(src, dst, wad);\n }\n\n // --- Approve by signature ---\n function permit(\n address holder,\n address spender,\n uint256 nonce,\n uint256 expiry,\n bool allowed,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external {\n bytes32 digest = keccak256(\n abi.encodePacked(\n \"\\x19\\x01\",\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(PERMIT_TYPEHASH, holder, spender, nonce, expiry, allowed))\n )\n );\n\n require(holder != address(0), \"VAI/invalid-address-0\");\n require(holder == ecrecover(digest, v, r, s), \"VAI/invalid-permit\");\n require(expiry == 0 || now <= expiry, \"VAI/permit-expired\");\n require(nonce == nonces[holder]++, \"VAI/invalid-nonce\");\n uint256 wad = allowed ? uint256(-1) : 0;\n allowance[holder][spender] = wad;\n emit Approval(holder, spender, wad);\n }\n}\n"},"contracts/test/VAI.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.5.16;\nimport \"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol\";\n\ncontract VAIScenario is VAI {\n constructor(uint256 chainId) public VAI(chainId) {}\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"*":["storageLayout","abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol","exportedSymbols":{"VAI":[608]},"id":609,"nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"773:24:0"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol","file":"./lib.sol","id":2,"nodeType":"ImportDirective","scope":609,"sourceUnit":629,"src":"799:19:0","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":3,"name":"LibNote","nodeType":"UserDefinedTypeName","referencedDeclaration":628,"src":"836:7:0","typeDescriptions":{"typeIdentifier":"t_contract$_LibNote_$628","typeString":"contract LibNote"}},"id":4,"nodeType":"InheritanceSpecifier","src":"836:7:0"}],"contractDependencies":[628],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":608,"linearizedBaseContracts":[608,628],"name":"VAI","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8,"name":"wards","nodeType":"VariableDeclaration","scope":608,"src":"870:40:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7,"keyType":{"id":5,"name":"address","nodeType":"ElementaryTypeName","src":"878:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"870:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"body":{"id":23,"nodeType":"Block","src":"963:31:0","statements":[{"expression":{"argumentTypes":null,"id":21,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":17,"name":"wards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"973:5:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":19,"indexExpression":{"argumentTypes":null,"id":18,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"979:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"973:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":20,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"986:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"973:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22,"nodeType":"ExpressionStatement","src":"973:14:0"}]},"documentation":null,"id":24,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":13,"modifierName":{"argumentTypes":null,"id":12,"name":"note","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"953:4:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"953:4:0"},{"arguments":null,"id":15,"modifierName":{"argumentTypes":null,"id":14,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"958:4:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"958:4:0"}],"name":"rely","nodeType":"FunctionDefinition","parameters":{"id":11,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"name":"guy","nodeType":"VariableDeclaration","scope":24,"src":"931:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"930:13:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"963:0:0"},"scope":608,"src":"917:77:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":39,"nodeType":"Block","src":"1046:31:0","statements":[{"expression":{"argumentTypes":null,"id":37,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":33,"name":"wards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"1056:5:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":35,"indexExpression":{"argumentTypes":null,"id":34,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"1062:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1056:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":36,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1069:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1056:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38,"nodeType":"ExpressionStatement","src":"1056:14:0"}]},"documentation":null,"id":40,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":29,"modifierName":{"argumentTypes":null,"id":28,"name":"note","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"1036:4:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1036:4:0"},{"arguments":null,"id":31,"modifierName":{"argumentTypes":null,"id":30,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1041:4:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1041:4:0"}],"name":"deny","nodeType":"FunctionDefinition","parameters":{"id":27,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26,"name":"guy","nodeType":"VariableDeclaration","scope":40,"src":"1014:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25,"name":"address","nodeType":"ElementaryTypeName","src":"1014:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1013:13:0"},"returnParameters":{"id":32,"nodeType":"ParameterList","parameters":[],"src":"1046:0:0"},"scope":608,"src":"1000:77:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":53,"nodeType":"Block","src":"1099:81:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":43,"name":"wards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"1117:5:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":46,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":44,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"1123:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":45,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1123:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1117:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"31","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1117:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f6e6f742d617574686f72697a6564","id":49,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1141:20:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f6ce616d99c6e8b950ed8eb53a02540dcf6942bc19bd027bac3e805fb6ec95dd","typeString":"literal_string \"VAI/not-authorized\""},"value":"VAI/not-authorized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce616d99c6e8b950ed8eb53a02540dcf6942bc19bd027bac3e805fb6ec95dd","typeString":"literal_string \"VAI/not-authorized\""}],"id":42,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"1109:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1109:53:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51,"nodeType":"ExpressionStatement","src":"1109:53:0"},{"id":52,"nodeType":"PlaceholderStatement","src":"1172:1:0"}]},"documentation":null,"id":54,"name":"auth","nodeType":"ModifierDefinition","parameters":{"id":41,"nodeType":"ParameterList","parameters":[],"src":"1096:2:0"},"src":"1083:97:0","visibility":"internal"},{"constant":true,"id":57,"name":"name","nodeType":"VariableDeclaration","scope":608,"src":"1212:46:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":55,"name":"string","nodeType":"ElementaryTypeName","src":"1212:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"56414920537461626c65636f696e","id":56,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1242:16:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_dd18a44c5a898a5e53e119eaa2f28613c9f2172cf68c0fb769cbcdd3e3296b05","typeString":"literal_string \"VAI Stablecoin\""},"value":"VAI Stablecoin"},"visibility":"public"},{"constant":true,"id":60,"name":"symbol","nodeType":"VariableDeclaration","scope":608,"src":"1264:37:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":58,"name":"string","nodeType":"ElementaryTypeName","src":"1264:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"564149","id":59,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1296:5:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_adf3868d8f122e26e993422d6505d4e0e44686fe215e8775cc9318d1d388a9a0","typeString":"literal_string \"VAI\""},"value":"VAI"},"visibility":"public"},{"constant":true,"id":63,"name":"version","nodeType":"VariableDeclaration","scope":608,"src":"1307:36:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":61,"name":"string","nodeType":"ElementaryTypeName","src":"1307:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"31","id":62,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1340:3:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"},"visibility":"public"},{"constant":true,"id":66,"name":"decimals","nodeType":"VariableDeclaration","scope":608,"src":"1349:35:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":64,"name":"uint8","nodeType":"ElementaryTypeName","src":"1349:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"argumentTypes":null,"hexValue":"3138","id":65,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1382:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"constant":false,"id":68,"name":"totalSupply","nodeType":"VariableDeclaration","scope":608,"src":"1390:26:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67,"name":"uint256","nodeType":"ElementaryTypeName","src":"1390:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":72,"name":"balanceOf","nodeType":"VariableDeclaration","scope":608,"src":"1423:44:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":71,"keyType":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"1431:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1423:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":70,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":78,"name":"allowance","nodeType":"VariableDeclaration","scope":608,"src":"1473:64:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":77,"keyType":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"1481:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1473:47:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":76,"keyType":{"id":74,"name":"address","nodeType":"ElementaryTypeName","src":"1500:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1492:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"1511:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"public"},{"constant":false,"id":82,"name":"nonces","nodeType":"VariableDeclaration","scope":608,"src":"1543:41:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":81,"keyType":{"id":79,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1543:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":80,"name":"uint256","nodeType":"ElementaryTypeName","src":"1562:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":null,"id":90,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":89,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84,"indexed":true,"name":"src","nodeType":"VariableDeclaration","scope":90,"src":"1606:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83,"name":"address","nodeType":"ElementaryTypeName","src":"1606:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":86,"indexed":true,"name":"guy","nodeType":"VariableDeclaration","scope":90,"src":"1627:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"1627:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":88,"indexed":false,"name":"wad","nodeType":"VariableDeclaration","scope":90,"src":"1648:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1605:55:0"},"src":"1591:70:0"},{"anonymous":false,"documentation":null,"id":98,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"indexed":true,"name":"src","nodeType":"VariableDeclaration","scope":98,"src":"1681:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"1681:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":94,"indexed":true,"name":"dst","nodeType":"VariableDeclaration","scope":98,"src":"1702:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"1702:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":96,"indexed":false,"name":"wad","nodeType":"VariableDeclaration","scope":98,"src":"1723:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":95,"name":"uint256","nodeType":"ElementaryTypeName","src":"1723:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1680:55:0"},"src":"1666:70:0"},{"body":{"id":119,"nodeType":"Block","src":"1831:60:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":108,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"1850:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":109,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"1854:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":110,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":102,"src":"1858:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1854:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1850:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1849:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":114,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"1864:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1849:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"564149206d617468206572726f72","id":116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1867:16:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1732a35f3ab9f74cfa0d3e4021b3e9f6caa9fbed0f2df0e4c652517c66f1dd32","typeString":"literal_string \"VAI math error\""},"value":"VAI math error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1732a35f3ab9f74cfa0d3e4021b3e9f6caa9fbed0f2df0e4c652517c66f1dd32","typeString":"literal_string \"VAI math error\""}],"id":107,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"1841:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1841:43:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":118,"nodeType":"ExpressionStatement","src":"1841:43:0"}]},"documentation":null,"id":120,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"name":"x","nodeType":"VariableDeclaration","scope":120,"src":"1775:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":99,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":102,"name":"y","nodeType":"VariableDeclaration","scope":120,"src":"1786:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":101,"name":"uint256","nodeType":"ElementaryTypeName","src":"1786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1774:22:0"},"returnParameters":{"id":106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":105,"name":"z","nodeType":"VariableDeclaration","scope":120,"src":"1820:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1820:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1819:11:0"},"scope":608,"src":"1762:129:0","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":141,"nodeType":"Block","src":"1966:60:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":130,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"1985:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":131,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"1989:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":132,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"1993:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1989:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1985:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":135,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1984:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":136,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"1999:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1984:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"564149206d617468206572726f72","id":138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2002:16:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1732a35f3ab9f74cfa0d3e4021b3e9f6caa9fbed0f2df0e4c652517c66f1dd32","typeString":"literal_string \"VAI math error\""},"value":"VAI math error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1732a35f3ab9f74cfa0d3e4021b3e9f6caa9fbed0f2df0e4c652517c66f1dd32","typeString":"literal_string \"VAI math error\""}],"id":129,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"1976:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1976:43:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":140,"nodeType":"ExpressionStatement","src":"1976:43:0"}]},"documentation":null,"id":142,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":122,"name":"x","nodeType":"VariableDeclaration","scope":142,"src":"1910:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121,"name":"uint256","nodeType":"ElementaryTypeName","src":"1910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":124,"name":"y","nodeType":"VariableDeclaration","scope":142,"src":"1921:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1909:22:0"},"returnParameters":{"id":128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"name":"z","nodeType":"VariableDeclaration","scope":142,"src":"1955:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":126,"name":"uint256","nodeType":"ElementaryTypeName","src":"1955:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1954:11:0"},"scope":608,"src":"1897:129:0","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"constant":false,"id":144,"name":"DOMAIN_SEPARATOR","nodeType":"VariableDeclaration","scope":608,"src":"2063:31:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":143,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2063:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"public"},{"constant":true,"id":147,"name":"PERMIT_TYPEHASH","nodeType":"VariableDeclaration","scope":608,"src":"2244:108:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":145,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2244:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"hexValue":"307865613261613061316265313161303765643836643735356339333436376634663832333632623435323337316431626139346431373135313233353131616362","id":146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2286:66:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_105916522785188513640362517802612480037966763957092682311465172263008277174987_by_1","typeString":"int_const 1059...(70 digits omitted)...4987"},"value":"0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb"},"visibility":"public"},{"body":{"id":184,"nodeType":"Block","src":"2396:377:0","statements":[{"expression":{"argumentTypes":null,"id":157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":152,"name":"wards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"2406:5:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":155,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":153,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"2412:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2412:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2406:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2426:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2406:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":158,"nodeType":"ExpressionStatement","src":"2406:21:0"},{"expression":{"argumentTypes":null,"id":182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":159,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":144,"src":"2437:16:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2517:84:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":163,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"2507:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2507:95:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":168,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"2636:4:0","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"}],"id":167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2630:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2630:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":166,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"2620:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2620:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":173,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"}],"id":172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2670:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2670:14:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":171,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"2660:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2660:25:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":176,"name":"chainId_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":149,"src":"2703:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":178,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"2737:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_VAI_$608","typeString":"contract VAI"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VAI_$608","typeString":"contract VAI"}],"id":177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2729:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2729:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":161,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"2479:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2479:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2479:277:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":160,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"2456:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:310:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2437:329:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":183,"nodeType":"ExpressionStatement","src":"2437:329:0"}]},"documentation":null,"id":185,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":149,"name":"chainId_","nodeType":"VariableDeclaration","scope":185,"src":"2371:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2371:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2370:18:0"},"returnParameters":{"id":151,"nodeType":"ParameterList","parameters":[],"src":"2396:0:0"},"scope":608,"src":"2359:414:0","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":201,"nodeType":"Block","src":"2868:58:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":195,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"2898:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2898:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":197,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"2910:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":198,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"2915:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":194,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"2885:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2885:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":193,"id":200,"nodeType":"Return","src":"2878:41:0"}]},"documentation":null,"id":202,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":187,"name":"dst","nodeType":"VariableDeclaration","scope":202,"src":"2818:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":186,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":189,"name":"wad","nodeType":"VariableDeclaration","scope":202,"src":"2831:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":188,"name":"uint256","nodeType":"ElementaryTypeName","src":"2831:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2817:26:0"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"name":"","nodeType":"VariableDeclaration","scope":202,"src":"2862:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":191,"name":"bool","nodeType":"ElementaryTypeName","src":"2862:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2861:6:0"},"scope":608,"src":"2800:126:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":299,"nodeType":"Block","src":"3015:489:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":214,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3033:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":216,"indexExpression":{"argumentTypes":null,"id":215,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3043:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3033:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":217,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"3051:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3033:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f696e73756666696369656e742d62616c616e6365","id":219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3056:26:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_37643c280d364132e62734397966740ff1cd14eda9279e254f683a487ce5175b","typeString":"literal_string \"VAI/insufficient-balance\""},"value":"VAI/insufficient-balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37643c280d364132e62734397966740ff1cd14eda9279e254f683a487ce5175b","typeString":"literal_string \"VAI/insufficient-balance\""}],"id":213,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"3025:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3025:58:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":221,"nodeType":"ExpressionStatement","src":"3025:58:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":222,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3097:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":223,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3104:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3104:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3097:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":226,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"3118:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":228,"indexExpression":{"argumentTypes":null,"id":227,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3128:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3118:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":231,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":229,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3133:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3133:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3118:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3156:2:0","subExpression":{"argumentTypes":null,"hexValue":"31","id":233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3157:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3148:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint256"},"id":235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3148:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3118:41:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3097:62:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":268,"nodeType":"IfStatement","src":"3093:244:0","trueBody":{"id":267,"nodeType":"Block","src":"3161:176:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":239,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"3183:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":241,"indexExpression":{"argumentTypes":null,"id":240,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3193:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3183:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":244,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":242,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3198:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3198:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3183:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":245,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"3213:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3183:33:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f696e73756666696369656e742d616c6c6f77616e6365","id":247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3218:28:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b27daaa94c7208f73d9f455dd498c8d39e60862a8fb30014c2b2cf3fa40a35c2","typeString":"literal_string \"VAI/insufficient-allowance\""},"value":"VAI/insufficient-allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b27daaa94c7208f73d9f455dd498c8d39e60862a8fb30014c2b2cf3fa40a35c2","typeString":"literal_string \"VAI/insufficient-allowance\""}],"id":238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"3175:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3175:72:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":249,"nodeType":"ExpressionStatement","src":"3175:72:0"},{"expression":{"argumentTypes":null,"id":265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":250,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"3261:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":254,"indexExpression":{"argumentTypes":null,"id":251,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3271:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3261:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":255,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":252,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3276:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3276:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3261:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":257,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"3294:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":259,"indexExpression":{"argumentTypes":null,"id":258,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3304:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3294:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":262,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":260,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3309:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3309:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3294:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":263,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"3322:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":256,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":142,"src":"3290:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3290:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3261:65:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":266,"nodeType":"ExpressionStatement","src":"3261:65:0"}]}},{"expression":{"argumentTypes":null,"id":278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":269,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3346:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":271,"indexExpression":{"argumentTypes":null,"id":270,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3356:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3346:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":273,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3367:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":275,"indexExpression":{"argumentTypes":null,"id":274,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3377:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3367:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":276,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"3383:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":272,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":142,"src":"3363:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3363:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3346:41:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":279,"nodeType":"ExpressionStatement","src":"3346:41:0"},{"expression":{"argumentTypes":null,"id":289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":280,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":282,"indexExpression":{"argumentTypes":null,"id":281,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"3407:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3397:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":284,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3418:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":286,"indexExpression":{"argumentTypes":null,"id":285,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"3428:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3418:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":287,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"3434:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":283,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"3414:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3414:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3397:41:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":290,"nodeType":"ExpressionStatement","src":"3397:41:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":292,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"3462:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":293,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"3467:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":294,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"3472:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":291,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"3453:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3453:23:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":296,"nodeType":"EmitStatement","src":"3448:28:0"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3493:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":212,"id":298,"nodeType":"Return","src":"3486:11:0"}]},"documentation":null,"id":300,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"name":"src","nodeType":"VariableDeclaration","scope":300,"src":"2954:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"2954:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":206,"name":"dst","nodeType":"VariableDeclaration","scope":300,"src":"2967:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"2967:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":208,"name":"wad","nodeType":"VariableDeclaration","scope":300,"src":"2980:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":207,"name":"uint256","nodeType":"ElementaryTypeName","src":"2980:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2953:39:0"},"returnParameters":{"id":212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":211,"name":"","nodeType":"VariableDeclaration","scope":300,"src":"3009:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":210,"name":"bool","nodeType":"ElementaryTypeName","src":"3009:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"3008:6:0"},"scope":608,"src":"2932:572:0","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":335,"nodeType":"Block","src":"3564:148:0","statements":[{"expression":{"argumentTypes":null,"id":318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":309,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3574:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":311,"indexExpression":{"argumentTypes":null,"id":310,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3584:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3574:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":313,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3595:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":315,"indexExpression":{"argumentTypes":null,"id":314,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3605:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3595:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":316,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3611:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":312,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"3591:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3591:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3574:41:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":319,"nodeType":"ExpressionStatement","src":"3574:41:0"},{"expression":{"argumentTypes":null,"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":320,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"3625:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":322,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"3643:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":323,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3656:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":321,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"3639:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3639:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3625:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":326,"nodeType":"ExpressionStatement","src":"3625:35:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3692:1:0","subdenomination":null,"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":328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3684:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3684:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":331,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3696:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":332,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3701:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":327,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"3675:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3675:30:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":334,"nodeType":"EmitStatement","src":"3670:35:0"}]},"documentation":null,"id":336,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":307,"modifierName":{"argumentTypes":null,"id":306,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"3559:4:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3559:4:0"}],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"name":"usr","nodeType":"VariableDeclaration","scope":336,"src":"3524:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":301,"name":"address","nodeType":"ElementaryTypeName","src":"3524:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":304,"name":"wad","nodeType":"VariableDeclaration","scope":336,"src":"3537:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":303,"name":"uint256","nodeType":"ElementaryTypeName","src":"3537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3523:26:0"},"returnParameters":{"id":308,"nodeType":"ParameterList","parameters":[],"src":"3564:0:0"},"scope":608,"src":"3510:202:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":425,"nodeType":"Block","src":"3767:469:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":344,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3785:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":346,"indexExpression":{"argumentTypes":null,"id":345,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"3795:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3785:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":347,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"3803:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3785:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f696e73756666696369656e742d62616c616e6365","id":349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3808:26:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_37643c280d364132e62734397966740ff1cd14eda9279e254f683a487ce5175b","typeString":"literal_string \"VAI/insufficient-balance\""},"value":"VAI/insufficient-balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37643c280d364132e62734397966740ff1cd14eda9279e254f683a487ce5175b","typeString":"literal_string \"VAI/insufficient-balance\""}],"id":343,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"3777:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3777:58:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":351,"nodeType":"ExpressionStatement","src":"3777:58:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":352,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"3849:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":353,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3856:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3856:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3849:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":356,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"3870:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":358,"indexExpression":{"argumentTypes":null,"id":357,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"3880:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3870:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":361,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":359,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3885:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3885:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3870:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3908:2:0","subExpression":{"argumentTypes":null,"hexValue":"31","id":363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3909:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3900:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint256"},"id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3900:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3870:41:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3849:62:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":398,"nodeType":"IfStatement","src":"3845:244:0","trueBody":{"id":397,"nodeType":"Block","src":"3913:176:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":369,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"3935:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":371,"indexExpression":{"argumentTypes":null,"id":370,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"3945:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3935:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":374,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":372,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"3950:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3950:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3935:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":375,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"3965:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3935:33:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f696e73756666696369656e742d616c6c6f77616e6365","id":377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3970:28:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b27daaa94c7208f73d9f455dd498c8d39e60862a8fb30014c2b2cf3fa40a35c2","typeString":"literal_string \"VAI/insufficient-allowance\""},"value":"VAI/insufficient-allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b27daaa94c7208f73d9f455dd498c8d39e60862a8fb30014c2b2cf3fa40a35c2","typeString":"literal_string \"VAI/insufficient-allowance\""}],"id":368,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"3927:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3927:72:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":379,"nodeType":"ExpressionStatement","src":"3927:72:0"},{"expression":{"argumentTypes":null,"id":395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":380,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"4013:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":384,"indexExpression":{"argumentTypes":null,"id":381,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"4023:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4013:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":385,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":382,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"4028:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4028:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4013:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":387,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"4046:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":389,"indexExpression":{"argumentTypes":null,"id":388,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"4056:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":392,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"4061:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4061:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4046:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":393,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"4074:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":386,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":142,"src":"4042:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4042:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4013:65:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":396,"nodeType":"ExpressionStatement","src":"4013:65:0"}]}},{"expression":{"argumentTypes":null,"id":408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":399,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"4098:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":401,"indexExpression":{"argumentTypes":null,"id":400,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"4108:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4098:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":403,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"4119:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":405,"indexExpression":{"argumentTypes":null,"id":404,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"4129:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4119:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":406,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"4135:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":402,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":142,"src":"4115:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4115:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4098:41:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":409,"nodeType":"ExpressionStatement","src":"4098:41:0"},{"expression":{"argumentTypes":null,"id":415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":410,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"4149:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":412,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"4167:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":413,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"4180:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":411,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":142,"src":"4163:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4163:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4149:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":416,"nodeType":"ExpressionStatement","src":"4149:35:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":418,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"4208:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4221:1:0","subdenomination":null,"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":419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4213:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4213:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":422,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"4225:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":417,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"4199:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4199:30:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":424,"nodeType":"EmitStatement","src":"4194:35:0"}]},"documentation":null,"id":426,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"name":"usr","nodeType":"VariableDeclaration","scope":426,"src":"3732:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"3732:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":340,"name":"wad","nodeType":"VariableDeclaration","scope":426,"src":"3745:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":339,"name":"uint256","nodeType":"ElementaryTypeName","src":"3745:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3731:26:0"},"returnParameters":{"id":342,"nodeType":"ParameterList","parameters":[],"src":"3767:0:0"},"scope":608,"src":"3718:518:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":453,"nodeType":"Block","src":"4309:115:0","statements":[{"expression":{"argumentTypes":null,"id":442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":435,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"4319:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":439,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":436,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"4329:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4329:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4319:21:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":440,"indexExpression":{"argumentTypes":null,"id":438,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":428,"src":"4341:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4319:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":441,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"4348:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4319:32:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":443,"nodeType":"ExpressionStatement","src":"4319:32:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":445,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"4375:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4375:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":447,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":428,"src":"4387:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":448,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"4392:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":444,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90,"src":"4366:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4366:30:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":450,"nodeType":"EmitStatement","src":"4361:35:0"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4413:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":434,"id":452,"nodeType":"Return","src":"4406:11:0"}]},"documentation":null,"id":454,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"name":"usr","nodeType":"VariableDeclaration","scope":454,"src":"4259:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":427,"name":"address","nodeType":"ElementaryTypeName","src":"4259:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":430,"name":"wad","nodeType":"VariableDeclaration","scope":454,"src":"4272:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":429,"name":"uint256","nodeType":"ElementaryTypeName","src":"4272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4258:26:0"},"returnParameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"name":"","nodeType":"VariableDeclaration","scope":454,"src":"4303:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":432,"name":"bool","nodeType":"ElementaryTypeName","src":"4303:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4302:6:0"},"scope":608,"src":"4242:182:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":468,"nodeType":"Block","src":"4500:51:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":462,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"4523:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4523:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":464,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"4535:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":465,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"4540:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":461,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"4510:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4510:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":467,"nodeType":"ExpressionStatement","src":"4510:34:0"}]},"documentation":null,"id":469,"implemented":true,"kind":"function","modifiers":[],"name":"push","nodeType":"FunctionDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"name":"usr","nodeType":"VariableDeclaration","scope":469,"src":"4465:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"4465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":458,"name":"wad","nodeType":"VariableDeclaration","scope":469,"src":"4478:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":457,"name":"uint256","nodeType":"ElementaryTypeName","src":"4478:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4464:26:0"},"returnParameters":{"id":460,"nodeType":"ParameterList","parameters":[],"src":"4500:0:0"},"scope":608,"src":"4451:100:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":483,"nodeType":"Block","src":"4606:51:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":477,"name":"usr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":471,"src":"4629:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":478,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"4634:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4634:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":480,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"4646:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":476,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"4616:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4616:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":482,"nodeType":"ExpressionStatement","src":"4616:34:0"}]},"documentation":null,"id":484,"implemented":true,"kind":"function","modifiers":[],"name":"pull","nodeType":"FunctionDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"name":"usr","nodeType":"VariableDeclaration","scope":484,"src":"4571:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"4571:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":473,"name":"wad","nodeType":"VariableDeclaration","scope":484,"src":"4584:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":472,"name":"uint256","nodeType":"ElementaryTypeName","src":"4584:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4570:26:0"},"returnParameters":{"id":475,"nodeType":"ParameterList","parameters":[],"src":"4606:0:0"},"scope":608,"src":"4557:100:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":499,"nodeType":"Block","src":"4725:44:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":494,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"4748:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":495,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"4753:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":496,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"4758:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":493,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"4735:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4735:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":498,"nodeType":"ExpressionStatement","src":"4735:27:0"}]},"documentation":null,"id":500,"implemented":true,"kind":"function","modifiers":[],"name":"move","nodeType":"FunctionDefinition","parameters":{"id":491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":486,"name":"src","nodeType":"VariableDeclaration","scope":500,"src":"4677:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":485,"name":"address","nodeType":"ElementaryTypeName","src":"4677:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":488,"name":"dst","nodeType":"VariableDeclaration","scope":500,"src":"4690:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":487,"name":"address","nodeType":"ElementaryTypeName","src":"4690:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":490,"name":"wad","nodeType":"VariableDeclaration","scope":500,"src":"4703:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":489,"name":"uint256","nodeType":"ElementaryTypeName","src":"4703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4676:39:0"},"returnParameters":{"id":492,"nodeType":"ParameterList","parameters":[],"src":"4725:0:0"},"scope":608,"src":"4663:106:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":606,"nodeType":"Block","src":"5015:668:0","statements":[{"assignments":[520],"declarations":[{"constant":false,"id":520,"name":"digest","nodeType":"VariableDeclaration","scope":606,"src":"5025:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":519,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5025:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":539,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"1901","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5099:10:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"argumentTypes":null,"id":525,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":144,"src":"5127:16:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":529,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":147,"src":"5182:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":530,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"5199:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":531,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"5207:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":532,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"5216:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":533,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"5223:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":534,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"5231:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":null,"id":527,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"5171:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5171:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5171:68:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"5161:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5161:79:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":522,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"5065:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5065:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5065:189:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":521,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"5042:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5042:222:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5025:239:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":541,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"5283:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5301:1:0","subdenomination":null,"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":542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5293:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5293:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5283:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f696e76616c69642d616464726573732d30","id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5305:23:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_41b798d1ea1cf6acf29dc3262f3b36b326604b12b9dd7f7066bc961f3a00b644","typeString":"literal_string \"VAI/invalid-address-0\""},"value":"VAI/invalid-address-0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_41b798d1ea1cf6acf29dc3262f3b36b326604b12b9dd7f7066bc961f3a00b644","typeString":"literal_string \"VAI/invalid-address-0\""}],"id":540,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"5275:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5275:54:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":548,"nodeType":"ExpressionStatement","src":"5275:54:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":550,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"5347:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":552,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"5367:6:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":553,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":512,"src":"5375:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":554,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"5378:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":555,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"5381:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":551,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"5357:9:0","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5357:26:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5347:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f696e76616c69642d7065726d6974","id":558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5385:20:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ee7bb1fc4d3284c52dab0a4904e031198d76301a03d9f4da729f215a75d1b3e6","typeString":"literal_string \"VAI/invalid-permit\""},"value":"VAI/invalid-permit"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ee7bb1fc4d3284c52dab0a4904e031198d76301a03d9f4da729f215a75d1b3e6","typeString":"literal_string \"VAI/invalid-permit\""}],"id":549,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"5339:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5339:67:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":560,"nodeType":"ExpressionStatement","src":"5339:67:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":562,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"5424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5434:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5424:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":565,"name":"now","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":660,"src":"5439:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":566,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"5446:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5439:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5424:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f7065726d69742d65787069726564","id":569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5454:20:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e1843929e249c0c186641ae998ab516cc7f91a2c230d102262a8d9761ed07a32","typeString":"literal_string \"VAI/permit-expired\""},"value":"VAI/permit-expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e1843929e249c0c186641ae998ab516cc7f91a2c230d102262a8d9761ed07a32","typeString":"literal_string \"VAI/permit-expired\""}],"id":561,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"5416:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5416:59:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":571,"nodeType":"ExpressionStatement","src":"5416:59:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":573,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"5493:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5502:16:0","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":574,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"5502:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":576,"indexExpression":{"argumentTypes":null,"id":575,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"5509:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5502:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5493:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5641492f696e76616c69642d6e6f6e6365","id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5520:19:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5d625041aca7f6c7f6918dd0f5a7da5eb321afbff323dc5fea673b824a643ed2","typeString":"literal_string \"VAI/invalid-nonce\""},"value":"VAI/invalid-nonce"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d625041aca7f6c7f6918dd0f5a7da5eb321afbff323dc5fea673b824a643ed2","typeString":"literal_string \"VAI/invalid-nonce\""}],"id":572,"name":"require","nodeType":"Identifier","overloadedDeclarations":[661,662],"referencedDeclaration":662,"src":"5485:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5485:55:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":581,"nodeType":"ExpressionStatement","src":"5485:55:0"},{"assignments":[583],"declarations":[{"constant":false,"id":583,"name":"wad","nodeType":"VariableDeclaration","scope":606,"src":"5550:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":582,"name":"uint256","nodeType":"ElementaryTypeName","src":"5550:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":591,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":584,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"5564:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5588:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5564:25:0","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5582:2:0","subExpression":{"argumentTypes":null,"hexValue":"31","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5583:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5574:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint256"},"id":588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5574:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5550:39:0"},{"expression":{"argumentTypes":null,"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":592,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"5599:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":595,"indexExpression":{"argumentTypes":null,"id":593,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"5609:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5599:17:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":596,"indexExpression":{"argumentTypes":null,"id":594,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"5617:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5599:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":597,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":583,"src":"5628:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5599:32:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":599,"nodeType":"ExpressionStatement","src":"5599:32:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":601,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"5655:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":602,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"5663:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":603,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":583,"src":"5672:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":600,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90,"src":"5646:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5646:30:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":605,"nodeType":"EmitStatement","src":"5641:35:0"}]},"documentation":null,"id":607,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":502,"name":"holder","nodeType":"VariableDeclaration","scope":607,"src":"4836:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":501,"name":"address","nodeType":"ElementaryTypeName","src":"4836:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":504,"name":"spender","nodeType":"VariableDeclaration","scope":607,"src":"4860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":503,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":506,"name":"nonce","nodeType":"VariableDeclaration","scope":607,"src":"4885:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"4885:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":508,"name":"expiry","nodeType":"VariableDeclaration","scope":607,"src":"4908:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"4908:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":510,"name":"allowed","nodeType":"VariableDeclaration","scope":607,"src":"4932:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":509,"name":"bool","nodeType":"ElementaryTypeName","src":"4932:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":512,"name":"v","nodeType":"VariableDeclaration","scope":607,"src":"4954:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":511,"name":"uint8","nodeType":"ElementaryTypeName","src":"4954:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":514,"name":"r","nodeType":"VariableDeclaration","scope":607,"src":"4971:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4971:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":516,"name":"s","nodeType":"VariableDeclaration","scope":607,"src":"4990:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4990:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"4826:179:0"},"returnParameters":{"id":518,"nodeType":"ParameterList","parameters":[],"src":"5015:0:0"},"scope":608,"src":"4811:872:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":609,"src":"820:4865:0"}],"src":"773:4913:0"},"id":0},"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol","exportedSymbols":{"LibNote":[628]},"id":629,"nodeType":"SourceUnit","nodes":[{"id":610,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"690:24:1"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":628,"linearizedBaseContracts":[628],"name":"LibNote","nodeType":"ContractDefinition","nodes":[{"anonymous":true,"documentation":null,"id":622,"name":"LogNote","nodeType":"EventDefinition","parameters":{"id":621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":612,"indexed":true,"name":"sig","nodeType":"VariableDeclaration","scope":622,"src":"762:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":611,"name":"bytes4","nodeType":"ElementaryTypeName","src":"762:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":null,"visibility":"internal"},{"constant":false,"id":614,"indexed":true,"name":"usr","nodeType":"VariableDeclaration","scope":622,"src":"790:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"790:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":616,"indexed":true,"name":"arg1","nodeType":"VariableDeclaration","scope":622,"src":"819:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"819:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":618,"indexed":true,"name":"arg2","nodeType":"VariableDeclaration","scope":622,"src":"849:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":617,"name":"bytes32","nodeType":"ElementaryTypeName","src":"849:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":620,"indexed":false,"name":"data","nodeType":"VariableDeclaration","scope":622,"src":"879:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":619,"name":"bytes","nodeType":"ElementaryTypeName","src":"879:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"752:143:1"},"src":"739:167:1"},{"body":{"id":626,"nodeType":"Block","src":"928:789:1","statements":[{"id":624,"nodeType":"PlaceholderStatement","src":"938:1:1"},{"externalReferences":[],"id":625,"nodeType":"InlineAssembly","operations":"{\n let mark := msize()\n mstore(0x40, add(mark, 288))\n mstore(mark, 0x20)\n mstore(add(mark, 0x20), 224)\n calldatacopy(add(mark, 0x40), 0, 224)\n log4(mark, 288, shl(224, shr(224, calldataload(0))), caller(), calldataload(4), calldataload(36))\n}","src":"949:762:1"}]},"documentation":null,"id":627,"name":"note","nodeType":"ModifierDefinition","parameters":{"id":623,"nodeType":"ParameterList","parameters":[],"src":"925:2:1"},"src":"912:805:1","visibility":"internal"}],"scope":629,"src":"716:1003:1"}],"src":"690:1030:1"},"id":1},"contracts/test/VAI.sol":{"ast":{"absolutePath":"contracts/test/VAI.sol","exportedSymbols":{"VAIScenario":[643]},"id":644,"nodeType":"SourceUnit","nodes":[{"id":630,"literals":["solidity","0.5",".16"],"nodeType":"PragmaDirective","src":"41:23:2"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol","file":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol","id":631,"nodeType":"ImportDirective","scope":644,"sourceUnit":609,"src":"65:68:2","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":632,"name":"VAI","nodeType":"UserDefinedTypeName","referencedDeclaration":608,"src":"159:3:2","typeDescriptions":{"typeIdentifier":"t_contract$_VAI_$608","typeString":"contract VAI"}},"id":633,"nodeType":"InheritanceSpecifier","src":"159:3:2"}],"contractDependencies":[608,628],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":643,"linearizedBaseContracts":[643,608,628],"name":"VAIScenario","nodeType":"ContractDefinition","nodes":[{"body":{"id":641,"nodeType":"Block","src":"218:2:2","statements":[]},"documentation":null,"id":642,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"argumentTypes":null,"id":638,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"209:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":639,"modifierName":{"argumentTypes":null,"id":637,"name":"VAI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"205:3:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VAI_$608_$","typeString":"type(contract VAI)"}},"nodeType":"ModifierInvocation","src":"205:12:2"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":635,"name":"chainId","nodeType":"VariableDeclaration","scope":642,"src":"181:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":634,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"180:17:2"},"returnParameters":{"id":640,"nodeType":"ParameterList","parameters":[],"src":"218:0:2"},"scope":643,"src":"169:51:2","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":644,"src":"135:87:2"}],"src":"41:182:2"},"id":2}},"contracts":{"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol":{"VAI":{"abi":[{"inputs":[{"internalType":"uint256","name":"chainId_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"guy","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"pull","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"push","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516112923803806112928339818101604052602081101561003357600080fd5b5051336000908152602081905260409081902060019055518060526112408239604080519182900360520182208282018252600e83526d2b20a49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152603160f81b908401528151808401919091527fdd18a44c5a898a5e53e119eaa2f28613c9f2172cf68c0fb769cbcdd3e3296b05818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060055550611119806101276000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063a9059cbb1161007c578063a9059cbb146103e0578063b753a98c1461040c578063bb35783b14610438578063bf353dbb1461046e578063dd62ed3e14610494578063f2d5d56b146104c257610142565b80637ecebe00146103065780638fcbaf0c1461032c57806395d89b41146103865780639c52a7f11461038e5780639dc29fac146103b457610142565b8063313ce5671161010a578063313ce5671461025e5780633644e5151461027c57806340c10f191461028457806354fd4d50146102b257806365fae35e146102ba57806370a08231146102e057610142565b806306fdde0314610147578063095ea7b3146101c657806318160ddd1461020657806323b872dd1461022057806330adf81f14610256575b600080fd5b61014f6104ee565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018b578082015183820152602001610173565b50505050905090810190601f1680156101b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b038135169060200135610516565b604051901515815260200160405180910390f35b61020e610588565b60405190815260200160405180910390f35b6101f26004803603606081101561023657600080fd5b506001600160a01b0381358116916020810135909116906040013561058e565b61020e6107db565b6102666107ff565b60405160ff909116815260200160405180910390f35b61020e610804565b6102b06004803603604081101561029a57600080fd5b506001600160a01b03813516906020013561080a565b005b61014f6108f1565b6102b0600480360360208110156102d057600080fd5b50356001600160a01b031661090c565b61020e600480360360208110156102f657600080fd5b50356001600160a01b03166109ba565b61020e6004803603602081101561031c57600080fd5b50356001600160a01b03166109ce565b6102b0600480360361010081101561034357600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e001356109e2565b61014f610cfc565b6102b0600480360360208110156103a457600080fd5b50356001600160a01b0316610d19565b6102b0600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610dc4565b6101f2600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610fde565b6102b06004803603604081101561042257600080fd5b506001600160a01b038135169060200135610ff2565b6102b06004803603606081101561044e57600080fd5b506001600160a01b03813581169160208101359091169060400135611002565b61020e6004803603602081101561048457600080fd5b50356001600160a01b0316611013565b61020e600480360360408110156104aa57600080fd5b506001600160a01b0381358116916020013516611027565b6102b0600480360360408110156104d857600080fd5b506001600160a01b038135169060200135611049565b60405160408082019052600e81526d2b20a49029ba30b13632b1b7b4b760911b602082015281565b336000908152600360205281604082206001600160a01b038516600090815260209190915260409020556001600160a01b038316337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405190815260200160405180910390a35060015b92915050565b60015481565b6001600160a01b0383166000908152600260205281604082205410156105f55760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b038416331480159061063957506001600160a01b038416600090815260036020526000199060409020336000908152602091909152604090205414155b15610718576001600160a01b03841660009081526003602052829060409020336000908152602091909152604090205410156106bb5760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b038416600090815260036020526106ee9060409020336000908152602091909152604090205483611054565b6001600160a01b038516600090815260036020526040902033600090815260209190915260409020555b6001600160a01b0384166000908152600260205261073b90604090205483611054565b6001600160a01b0385166000908152600260205260409020556001600160a01b038316600090815260026020526107779060409020548361109c565b6001600160a01b0384166000908152600260205260409020556001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019392505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb81565b601281565b60055481565b336000908152602081905260409020546001146108625760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b038216600090815260026020526108859060409020548261109c565b6001600160a01b0383166000908152600260205260409020556001546108ab908261109c565b6001556001600160a01b03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6040516040808201905260018152603160f81b602082015281565b336000908152602081905260409020546001146109645760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260019060409020555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b600260205280600052604060002054905081565b600460205280600052604060002054905081565b6005546000907fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8a8a8a8a8a60405160208101969096526001600160a01b03948516604080880191909152939094166060860152608085019190915260a084015290151560c083015260e090910190516020818303038152906040528051906020012060405161190160f01b6020820152602281019290925260428201526062016040516020818303038152906040528051906020012090506001600160a01b038916610aed5760405162461bcd60e51b815260206004820152601560248201527405641492f696e76616c69642d616464726573732d3605c1b604482015260640160405180910390fd5b60018185858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b4a573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614610bad5760405162461bcd60e51b81526020600482015260126024820152711590524bda5b9d985b1a590b5c195c9b5a5d60721b604482015260640160405180910390fd5b851580610bba5750854211155b610bff5760405162461bcd60e51b81526020600482015260126024820152711590524bdc195c9b5a5d0b595e1c1a5c995960721b604482015260640160405180910390fd5b6001600160a01b03891660009081526004602052604090208054600181019091558714610c665760405162461bcd60e51b81526020600482015260116024820152705641492f696e76616c69642d6e6f6e636560781b604482015260640160405180910390fd5b600085610c74576000610c78565b6000195b6001600160a01b038b16600090815260036020529091508190604090206001600160a01b038b16600090815260209190915260409020556001600160a01b03808a16908b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a350505050505050505050565b60405160408082019052600381526256414960e81b602082015281565b33600090815260208190526040902054600114610d715760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260408120555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b6001600160a01b03821660009081526002602052819060409020541015610e2c5760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b0382163314801590610e7057506001600160a01b038216600090815260036020526000199060409020336000908152602091909152604090205414155b15610f4f576001600160a01b0382166000908152600360205281906040902033600090815260209190915260409020541015610ef25760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b03821660009081526003602052610f259060409020336000908152602091909152604090205482611054565b6001600160a01b038316600090815260036020526040902033600090815260209190915260409020555b6001600160a01b03821660009081526002602052610f7290604090205482611054565b6001600160a01b038316600090815260026020526040902055600154610f989082611054565b60015560006001600160a01b0383167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6000610feb33848461058e565b9392505050565b610ffd33838361058e565b505050565b61100d83838361058e565b50505050565b600060205280600052604060002054905081565b6003602052816000526040600020602052806000526040600020549150829050565b610ffd82338361058e565b808203828111156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fd5b808201828110156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fdfea265627a7a72315820c94fe64b1d863c217144ce0b117d40c5417ec8b10ce73e8d2c0fc09a5dcaa4c164736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1292 CODESIZE SUB DUP1 PUSH2 0x1292 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 SSTORE MLOAD DUP1 PUSH1 0x52 PUSH2 0x1240 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP4 MSTORE PUSH14 0x2B20A49029BA30B13632B1B7B4B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xDD18A44C5A898A5E53E119EAA2F28613C9F2172CF68C0FB769CBCDD3E3296B05 DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP5 ADD SWAP1 MSTORE DUP3 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SSTORE POP PUSH2 0x1119 DUP1 PUSH2 0x127 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xB753A98C EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xBB35783B EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xBF353DBB EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xF2D5D56B EQ PUSH2 0x4C2 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x8FCBAF0C EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x9C52A7F1 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x3B4 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x65FAE35E EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2E0 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x256 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 DUP2 ADD DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B JUMPI DUP1 DUP3 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x173 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x516 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x58E JUMP JUMPDEST PUSH2 0x20E PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x266 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x804 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x80A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x90C JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9CE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD19 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1049 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2B20A49029BA30B13632B1B7B4B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 SLOAD LT ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x639 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP3 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x6EE SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x73B SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x777 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP6 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x862 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x885 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0x8AB SWAP1 DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x964 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x40 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP2 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0xAED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x5641492F696E76616C69642D616464726573732D3 PUSH1 0x5C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xBAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDA5B9D985B1A590B5C195C9B5A5D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 ISZERO DUP1 PUSH2 0xBBA JUMPI POP DUP6 TIMESTAMP GT ISZERO JUMPDEST PUSH2 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDC195C9B5A5D0B595E1C1A5C9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP8 EQ PUSH2 0xC66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x5641492F696E76616C69642D6E6F6E6365 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH2 0xC74 JUMPI PUSH1 0x0 PUSH2 0xC78 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE SWAP1 SWAP2 POP DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP1 DUP12 AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x564149 PUSH1 0xE8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0xD71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0xE70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xF4F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0xF25 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0xF72 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0xF98 SWAP1 DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFEB CALLER DUP5 DUP5 PUSH2 0x58E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFD CALLER DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100D DUP4 DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xFFD DUP3 CALLER DUP4 PUSH2 0x58E JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC9 0x4F 0xE6 0x4B SAR DUP7 EXTCODECOPY 0x21 PUSH18 0x44CE0B117D40C5417EC8B10CE73E8D2C0FC0 SWAP11 0x5D 0xCA LOG4 0xC1 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ","sourceMap":"820:4865:0:-;;;2359:414;8:9:-1;5:2;;;30:1;27;20:12;5:2;2359:414:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2359:414:0;2412:10;2406:5;:17;;;2359:414;2406:17;;;;;;;;2426:1;2406:21;;2507:95;;;;;;;;;;;;;;;;;2636:4;;;;;;;;-1:-1:-1;;;2636:4:0;;;;;2676:7;;;;;;;;;;-1:-1:-1;;;2676:7:0;;;;2479:277;;;;;;;;;2620:22;2479:277;;;;2660:25;2479:277;;;;;;;;;;;2737:4;2479:277;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2479:277:0;;;;;;2456:310;;;;;;;;2437:16;:329;-1:-1:-1;820:4865:0;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063a9059cbb1161007c578063a9059cbb146103e0578063b753a98c1461040c578063bb35783b14610438578063bf353dbb1461046e578063dd62ed3e14610494578063f2d5d56b146104c257610142565b80637ecebe00146103065780638fcbaf0c1461032c57806395d89b41146103865780639c52a7f11461038e5780639dc29fac146103b457610142565b8063313ce5671161010a578063313ce5671461025e5780633644e5151461027c57806340c10f191461028457806354fd4d50146102b257806365fae35e146102ba57806370a08231146102e057610142565b806306fdde0314610147578063095ea7b3146101c657806318160ddd1461020657806323b872dd1461022057806330adf81f14610256575b600080fd5b61014f6104ee565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018b578082015183820152602001610173565b50505050905090810190601f1680156101b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b038135169060200135610516565b604051901515815260200160405180910390f35b61020e610588565b60405190815260200160405180910390f35b6101f26004803603606081101561023657600080fd5b506001600160a01b0381358116916020810135909116906040013561058e565b61020e6107db565b6102666107ff565b60405160ff909116815260200160405180910390f35b61020e610804565b6102b06004803603604081101561029a57600080fd5b506001600160a01b03813516906020013561080a565b005b61014f6108f1565b6102b0600480360360208110156102d057600080fd5b50356001600160a01b031661090c565b61020e600480360360208110156102f657600080fd5b50356001600160a01b03166109ba565b61020e6004803603602081101561031c57600080fd5b50356001600160a01b03166109ce565b6102b0600480360361010081101561034357600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e001356109e2565b61014f610cfc565b6102b0600480360360208110156103a457600080fd5b50356001600160a01b0316610d19565b6102b0600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610dc4565b6101f2600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610fde565b6102b06004803603604081101561042257600080fd5b506001600160a01b038135169060200135610ff2565b6102b06004803603606081101561044e57600080fd5b506001600160a01b03813581169160208101359091169060400135611002565b61020e6004803603602081101561048457600080fd5b50356001600160a01b0316611013565b61020e600480360360408110156104aa57600080fd5b506001600160a01b0381358116916020013516611027565b6102b0600480360360408110156104d857600080fd5b506001600160a01b038135169060200135611049565b60405160408082019052600e81526d2b20a49029ba30b13632b1b7b4b760911b602082015281565b336000908152600360205281604082206001600160a01b038516600090815260209190915260409020556001600160a01b038316337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405190815260200160405180910390a35060015b92915050565b60015481565b6001600160a01b0383166000908152600260205281604082205410156105f55760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b038416331480159061063957506001600160a01b038416600090815260036020526000199060409020336000908152602091909152604090205414155b15610718576001600160a01b03841660009081526003602052829060409020336000908152602091909152604090205410156106bb5760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b038416600090815260036020526106ee9060409020336000908152602091909152604090205483611054565b6001600160a01b038516600090815260036020526040902033600090815260209190915260409020555b6001600160a01b0384166000908152600260205261073b90604090205483611054565b6001600160a01b0385166000908152600260205260409020556001600160a01b038316600090815260026020526107779060409020548361109c565b6001600160a01b0384166000908152600260205260409020556001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019392505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb81565b601281565b60055481565b336000908152602081905260409020546001146108625760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b038216600090815260026020526108859060409020548261109c565b6001600160a01b0383166000908152600260205260409020556001546108ab908261109c565b6001556001600160a01b03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6040516040808201905260018152603160f81b602082015281565b336000908152602081905260409020546001146109645760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260019060409020555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b600260205280600052604060002054905081565b600460205280600052604060002054905081565b6005546000907fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8a8a8a8a8a60405160208101969096526001600160a01b03948516604080880191909152939094166060860152608085019190915260a084015290151560c083015260e090910190516020818303038152906040528051906020012060405161190160f01b6020820152602281019290925260428201526062016040516020818303038152906040528051906020012090506001600160a01b038916610aed5760405162461bcd60e51b815260206004820152601560248201527405641492f696e76616c69642d616464726573732d3605c1b604482015260640160405180910390fd5b60018185858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b4a573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614610bad5760405162461bcd60e51b81526020600482015260126024820152711590524bda5b9d985b1a590b5c195c9b5a5d60721b604482015260640160405180910390fd5b851580610bba5750854211155b610bff5760405162461bcd60e51b81526020600482015260126024820152711590524bdc195c9b5a5d0b595e1c1a5c995960721b604482015260640160405180910390fd5b6001600160a01b03891660009081526004602052604090208054600181019091558714610c665760405162461bcd60e51b81526020600482015260116024820152705641492f696e76616c69642d6e6f6e636560781b604482015260640160405180910390fd5b600085610c74576000610c78565b6000195b6001600160a01b038b16600090815260036020529091508190604090206001600160a01b038b16600090815260209190915260409020556001600160a01b03808a16908b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a350505050505050505050565b60405160408082019052600381526256414960e81b602082015281565b33600090815260208190526040902054600114610d715760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260408120555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b6001600160a01b03821660009081526002602052819060409020541015610e2c5760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b0382163314801590610e7057506001600160a01b038216600090815260036020526000199060409020336000908152602091909152604090205414155b15610f4f576001600160a01b0382166000908152600360205281906040902033600090815260209190915260409020541015610ef25760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b03821660009081526003602052610f259060409020336000908152602091909152604090205482611054565b6001600160a01b038316600090815260036020526040902033600090815260209190915260409020555b6001600160a01b03821660009081526002602052610f7290604090205482611054565b6001600160a01b038316600090815260026020526040902055600154610f989082611054565b60015560006001600160a01b0383167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6000610feb33848461058e565b9392505050565b610ffd33838361058e565b505050565b61100d83838361058e565b50505050565b600060205280600052604060002054905081565b6003602052816000526040600020602052806000526040600020549150829050565b610ffd82338361058e565b808203828111156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fd5b808201828110156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fdfea265627a7a72315820c94fe64b1d863c217144ce0b117d40c5417ec8b10ce73e8d2c0fc09a5dcaa4c164736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xB753A98C EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xBB35783B EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xBF353DBB EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xF2D5D56B EQ PUSH2 0x4C2 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x8FCBAF0C EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x9C52A7F1 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x3B4 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x65FAE35E EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2E0 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x256 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 DUP2 ADD DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B JUMPI DUP1 DUP3 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x173 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x516 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x58E JUMP JUMPDEST PUSH2 0x20E PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x266 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x804 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x80A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x90C JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9CE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD19 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1049 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2B20A49029BA30B13632B1B7B4B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 SLOAD LT ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x639 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP3 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x6EE SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x73B SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x777 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP6 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x862 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x885 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0x8AB SWAP1 DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x964 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x40 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP2 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0xAED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x5641492F696E76616C69642D616464726573732D3 PUSH1 0x5C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xBAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDA5B9D985B1A590B5C195C9B5A5D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 ISZERO DUP1 PUSH2 0xBBA JUMPI POP DUP6 TIMESTAMP GT ISZERO JUMPDEST PUSH2 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDC195C9B5A5D0B595E1C1A5C9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP8 EQ PUSH2 0xC66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x5641492F696E76616C69642D6E6F6E6365 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH2 0xC74 JUMPI PUSH1 0x0 PUSH2 0xC78 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE SWAP1 SWAP2 POP DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP1 DUP12 AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x564149 PUSH1 0xE8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0xD71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0xE70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xF4F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0xF25 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0xF72 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0xF98 SWAP1 DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFEB CALLER DUP5 DUP5 PUSH2 0x58E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFD CALLER DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100D DUP4 DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xFFD DUP3 CALLER DUP4 PUSH2 0x58E JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC9 0x4F 0xE6 0x4B SAR DUP7 EXTCODECOPY 0x21 PUSH18 0x44CE0B117D40C5417EC8B10CE73E8D2C0FC0 SWAP11 0x5D 0xCA LOG4 0xC1 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ","sourceMap":"820:4865:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:4865:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1212:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1212:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4242:182;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4242:182:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1390:26;;;:::i;:::-;;;;;;;;;;;;;;;2932:572;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2932:572:0;;;;;;;;;;;;;;;;;:::i;2244:108::-;;;:::i;1349:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;2063:31;;;:::i;3510:202::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3510:202:0;;;;;;;;:::i;:::-;;1307:36;;;:::i;917:77::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:77:0;-1:-1:-1;;;;;917:77:0;;:::i;1423:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1423:44:0;-1:-1:-1;;;;;1423:44:0;;:::i;1543:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1543:41:0;-1:-1:-1;;;;;1543:41:0;;:::i;4811:872::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4811:872:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1264:37::-;;;:::i;1000:77::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1000:77:0;-1:-1:-1;;;;;1000:77:0;;:::i;3718:518::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3718:518:0;;;;;;;;:::i;2800:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2800:126:0;;;;;;;;:::i;4451:100::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4451:100:0;;;;;;;;:::i;4663:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4663:106:0;;;;;;;;;;;;;;;;;:::i;870:40::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;870:40:0;-1:-1:-1;;;;;870:40:0;;:::i;1473:64::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1473:64:0;;;;;;;;;;:::i;4557:100::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4557:100:0;;;;;;;;:::i;1212:46::-;;;;;;;;;;;;-1:-1:-1;;;1212:46:0;;;;;:::o;4242:182::-;4329:10;4303:4;4319:21;;;:9;:21;;4348:3;4319:21;4303:4;4319:21;-1:-1:-1;;;;;4319:26:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;4366:30:0;;4375:10;4366:30;4392:3;4366:30;;;;;;;;;;;;;;-1:-1:-1;4413:4:0;4242:182;;;;;:::o;1390:26::-;;;;:::o;2932:572::-;-1:-1:-1;;;;;3033:14:0;;3009:4;3033:14;;;:9;:14;;3051:3;3033:14;3009:4;3033:14;;:21;;3025:58;;;;-1:-1:-1;;;3025:58:0;;;;;;;;;;;;-1:-1:-1;;;3025:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3097:17:0;;3104:10;3097:17;;;;:62;;-1:-1:-1;;;;;;3118:14:0;;;;;;:9;:14;;-1:-1:-1;;3156:2:0;3118:14;;;3133:10;3118:26;;;;;;;;;;;;;:41;;3097:62;3093:244;;;-1:-1:-1;;;;;3183:14:0;;;;;;:9;:14;;3213:3;;3183:14;;;3198:10;3183:26;;;;;;;;;;;;;:33;;3175:72;;;;-1:-1:-1;;;3175:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3294:14:0;;;;;;:9;:14;;3290:36;;3294:14;;;3309:10;3294:26;;;;;;;;;;;;;3322:3;3290;:36::i;:::-;-1:-1:-1;;;;;3261:14:0;;;;;;:9;:14;;;;;3276:10;3261:26;;;;;;;;;;;;:65;3093:244;-1:-1:-1;;;;;3367:14:0;;;;;;:9;:14;;3363:24;;3367:14;;;;3383:3;3363;:24::i;:::-;-1:-1:-1;;;;;3346:14:0;;;;;;:9;:14;;;;;:41;-1:-1:-1;;;;;3418:14:0;;;;;;:9;:14;;3414:24;;3418:14;;;;3434:3;3414;:24::i;:::-;-1:-1:-1;;;;;3397:14:0;;;;;;:9;:14;;;;;:41;-1:-1:-1;;;;;3453:23:0;;;;;;;3472:3;3453:23;;;;;;;;;;;;;;-1:-1:-1;3493:4:0;2932:572;;;;;:::o;2244:108::-;2286:66;2244:108;:::o;1349:35::-;1382:2;1349:35;:::o;2063:31::-;;;;:::o;3510:202::-;1123:10;1117:5;:17;;;;;;;;;;;1138:1;1117:22;1109:53;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3595:14:0;;;;;;:9;:14;;3591:24;;3595:14;;;;3611:3;3591;:24::i;:::-;-1:-1:-1;;;;;3574:14:0;;;;;;:9;:14;;;;;:41;3643:11;;3639:21;;3656:3;3639;:21::i;:::-;3625:11;:35;-1:-1:-1;;;;;3675:30:0;;3692:1;3675:30;3701:3;3675:30;;;;;;;;;;;;;;3510:202;;:::o;1307:36::-;;;;;;;;;;;;-1:-1:-1;;;1307:36:0;;;;;:::o;917:77::-;1123:10;1117:5;:17;;;;;;;;;;;1138:1;1117:22;1109:53;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;973:10:0;;:5;:10;;;;;;;986:1;;973:10;;;:14;1132:7:1;1205:3;1199:4;1195:14;1189:4;1182:28;1266:4;1260;1253:18;1334:3;1327:4;1321;1317:15;1310:28;1407:3;1404:1;1397:4;1391;1387:15;1374:37;1676:2;1663:16;1635:1;1622:15;1582:8;-1:-1:-1;;;;;;1549:1:1;1536:15;1518:35;1485:3;1463:4;1441:260;958:753;;:::o;1423:44:0:-;;;;;;;;;;;;-1:-1:-1;1423:44:0;:::o;1543:41::-;;;;;;;;;;;;-1:-1:-1;1543:41:0;:::o;4811:872::-;5127:16;;5025:14;;2286:66;5199:6;5207:7;5216:5;5223:6;5231:7;5171:68;;;;;;;;;-1:-1:-1;;;;;5171:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5171:68:0;;;5161:79;;;;;;5065:189;;-1:-1:-1;;;5065:189:0;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5065:189:0;;;5042:222;;;;;;5025:239;-1:-1:-1;;;;;;5283:20:0;;5275:54;;;;-1:-1:-1;;;5275:54:0;;;;;;;;;;;;-1:-1:-1;;;5275:54:0;;;;;;;;;;;;;;5357:26;5367:6;5375:1;5378;5381;5357:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5357:26:0;;;;;;;;-1:-1:-1;;;;;5347:36:0;:6;-1:-1:-1;;;;;5347:36:0;;5339:67;;;;-1:-1:-1;;;5339:67:0;;;;;;;;;;;;-1:-1:-1;;;5339:67:0;;;;;;;;;;;;;;5424:11;;;:28;;;5446:6;5439:3;:13;;5424:28;5416:59;;;;-1:-1:-1;;;5416:59:0;;;;;;;;;;;;-1:-1:-1;;;5416:59:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5502:14:0;;;;;;:6;:14;;;;;:16;;;;;;;;5493:25;;5485:55;;;;-1:-1:-1;;;5485:55:0;;;;;;;;;;;;-1:-1:-1;;;5485:55:0;;;;;;;;;;;;;;5550:11;5564:7;:25;;5588:1;5564:25;;;-1:-1:-1;;5564:25:0;-1:-1:-1;;;;;5599:17:0;;;;;;:9;:17;;5550:39;;-1:-1:-1;5550:39:0;;5599:17;;;-1:-1:-1;;;;;5599:26:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;5646:30:0;;;;;;;5672:3;5646:30;;;;;;;;;;;;;;4811:872;;;;;;;;;;:::o;1264:37::-;;;;;;;;;;;;-1:-1:-1;;;1264:37:0;;;;;:::o;1000:77::-;1123:10;1117:5;:17;;;;;;;;;;;1138:1;1117:22;1109:53;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;1056:10:0;;1069:1;1056:10;;;;;;;;1069:1;1056:10;:14;1132:7:1;1205:3;1199:4;1195:14;1189:4;1182:28;1266:4;1260;1253:18;1334:3;1327:4;1321;1317:15;1310:28;1407:3;1404:1;1397:4;1391;1387:15;1374:37;1676:2;1663:16;1635:1;1622:15;1582:8;-1:-1:-1;;;;;;1549:1:1;1536:15;1518:35;1485:3;1463:4;1441:260;958:753;;:::o;3718:518:0:-;-1:-1:-1;;;;;3785:14:0;;;;;;:9;:14;;3803:3;;3785:14;;;;:21;;3777:58;;;;-1:-1:-1;;;3777:58:0;;;;;;;;;;;;-1:-1:-1;;;3777:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3849:17:0;;3856:10;3849:17;;;;:62;;-1:-1:-1;;;;;;3870:14:0;;;;;;:9;:14;;-1:-1:-1;;3908:2:0;3870:14;;;3885:10;3870:26;;;;;;;;;;;;;:41;;3849:62;3845:244;;;-1:-1:-1;;;;;3935:14:0;;;;;;:9;:14;;3965:3;;3935:14;;;3950:10;3935:26;;;;;;;;;;;;;:33;;3927:72;;;;-1:-1:-1;;;3927:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4046:14:0;;;;;;:9;:14;;4042:36;;4046:14;;;4061:10;4046:26;;;;;;;;;;;;;4074:3;4042;:36::i;:::-;-1:-1:-1;;;;;4013:14:0;;;;;;:9;:14;;;;;4028:10;4013:26;;;;;;;;;;;;:65;3845:244;-1:-1:-1;;;;;4119:14:0;;;;;;:9;:14;;4115:24;;4119:14;;;;4135:3;4115;:24::i;:::-;-1:-1:-1;;;;;4098:14:0;;;;;;:9;:14;;;;;:41;4167:11;;4163:21;;4180:3;4163;:21::i;:::-;4149:11;:35;4221:1;-1:-1:-1;;;;;4199:30:0;;;4225:3;4199:30;;;;;;;;;;;;;;3718:518;;:::o;2800:126::-;2862:4;2885:34;2898:10;2910:3;2915;2885:12;:34::i;:::-;2878:41;2800:126;-1:-1:-1;;;2800:126:0:o;4451:100::-;4510:34;4523:10;4535:3;4540;4510:12;:34::i;:::-;;4451:100;;:::o;4663:106::-;4735:27;4748:3;4753;4758;4735:12;:27::i;:::-;;4663:106;;;:::o;870:40::-;;;;;;;;;;;;-1:-1:-1;870:40:0;:::o;1473:64::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1473:64:0;;-1:-1:-1;1473:64:0:o;4557:100::-;4616:34;4629:3;4634:10;4646:3;4616:12;:34::i;1897:129::-;1989:5;;;1984:16;;;;1976:43;;;;-1:-1:-1;;;1976:43:0;;;;;;;;;;;;-1:-1:-1;;;1976:43:0;;;;;;;;;;;;;1762:129;1854:5;;;1849:16;;;;1841:43;;;;-1:-1:-1;;;1841:43:0;;;;;;;;;;;;-1:-1:-1;;;1841:43:0;;;;;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"875400","executionCost":"infinite","totalCost":"infinite"},"external":{"DOMAIN_SEPARATOR()":"1040","PERMIT_TYPEHASH()":"307","allowance(address,address)":"1322","approve(address,uint256)":"22326","balanceOf(address)":"1256","burn(address,uint256)":"infinite","decimals()":"227","deny(address)":"infinite","mint(address,uint256)":"infinite","move(address,address,uint256)":"infinite","name()":"infinite","nonces(address)":"1146","permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"infinite","pull(address,uint256)":"infinite","push(address,uint256)":"infinite","rely(address)":"infinite","symbol()":"infinite","totalSupply()":"1063","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","version()":"infinite","wards(address)":"1211"},"internal":{"add(uint256,uint256)":"infinite","sub(uint256,uint256)":"infinite"}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","deny(address)":"9c52a7f1","mint(address,uint256)":"40c10f19","move(address,address,uint256)":"bb35783b","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c","pull(address,uint256)":"f2d5d56b","push(address,uint256)":"b753a98c","rely(address)":"65fae35e","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","version()":"54fd4d50","wards(address)":"bf353dbb"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"arg1\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"arg2\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"}],\"name\":\"deny\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"pull\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"push\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"}],\"name\":\"rely\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol\":\"VAI\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n// Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico\\n\\n// This program is free software: you can redistribute it and/or modify\\n// it under the terms of the GNU Affero General Public License as published by\\n// the Free Software Foundation, either version 3 of the License, or\\n// (at your option) any later version.\\n//\\n// This program is distributed in the hope that it will be useful,\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n// GNU Affero General Public License for more details.\\n//\\n// You should have received a copy of the GNU Affero General Public License\\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\\n\\npragma solidity ^0.5.16;\\n\\nimport \\\"./lib.sol\\\";\\n\\ncontract VAI is LibNote {\\n // --- Auth ---\\n mapping(address => uint256) public wards;\\n\\n function rely(address guy) external note auth {\\n wards[guy] = 1;\\n }\\n\\n function deny(address guy) external note auth {\\n wards[guy] = 0;\\n }\\n\\n modifier auth() {\\n require(wards[msg.sender] == 1, \\\"VAI/not-authorized\\\");\\n _;\\n }\\n\\n // --- BEP20 Data ---\\n string public constant name = \\\"VAI Stablecoin\\\";\\n string public constant symbol = \\\"VAI\\\";\\n string public constant version = \\\"1\\\";\\n uint8 public constant decimals = 18;\\n uint256 public totalSupply;\\n\\n mapping(address => uint256) public balanceOf;\\n mapping(address => mapping(address => uint256)) public allowance;\\n mapping(address => uint256) public nonces;\\n\\n event Approval(address indexed src, address indexed guy, uint256 wad);\\n event Transfer(address indexed src, address indexed dst, uint256 wad);\\n\\n // --- Math ---\\n function add(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n require((z = x + y) >= x, \\\"VAI math error\\\");\\n }\\n\\n function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n require((z = x - y) <= x, \\\"VAI math error\\\");\\n }\\n\\n // --- EIP712 niceties ---\\n bytes32 public DOMAIN_SEPARATOR;\\n // bytes32 public constant PERMIT_TYPEHASH = keccak256(\\\"Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)\\\");\\n bytes32 public constant PERMIT_TYPEHASH = 0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb;\\n\\n constructor(uint256 chainId_) public {\\n wards[msg.sender] = 1;\\n DOMAIN_SEPARATOR = keccak256(\\n abi.encode(\\n keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n keccak256(bytes(name)),\\n keccak256(bytes(version)),\\n chainId_,\\n address(this)\\n )\\n );\\n }\\n\\n // --- Token ---\\n function transfer(address dst, uint256 wad) external returns (bool) {\\n return transferFrom(msg.sender, dst, wad);\\n }\\n\\n function transferFrom(address src, address dst, uint256 wad) public returns (bool) {\\n require(balanceOf[src] >= wad, \\\"VAI/insufficient-balance\\\");\\n if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\\n require(allowance[src][msg.sender] >= wad, \\\"VAI/insufficient-allowance\\\");\\n allowance[src][msg.sender] = sub(allowance[src][msg.sender], wad);\\n }\\n balanceOf[src] = sub(balanceOf[src], wad);\\n balanceOf[dst] = add(balanceOf[dst], wad);\\n emit Transfer(src, dst, wad);\\n return true;\\n }\\n\\n function mint(address usr, uint256 wad) external auth {\\n balanceOf[usr] = add(balanceOf[usr], wad);\\n totalSupply = add(totalSupply, wad);\\n emit Transfer(address(0), usr, wad);\\n }\\n\\n function burn(address usr, uint256 wad) external {\\n require(balanceOf[usr] >= wad, \\\"VAI/insufficient-balance\\\");\\n if (usr != msg.sender && allowance[usr][msg.sender] != uint256(-1)) {\\n require(allowance[usr][msg.sender] >= wad, \\\"VAI/insufficient-allowance\\\");\\n allowance[usr][msg.sender] = sub(allowance[usr][msg.sender], wad);\\n }\\n balanceOf[usr] = sub(balanceOf[usr], wad);\\n totalSupply = sub(totalSupply, wad);\\n emit Transfer(usr, address(0), wad);\\n }\\n\\n function approve(address usr, uint256 wad) external returns (bool) {\\n allowance[msg.sender][usr] = wad;\\n emit Approval(msg.sender, usr, wad);\\n return true;\\n }\\n\\n // --- Alias ---\\n function push(address usr, uint256 wad) external {\\n transferFrom(msg.sender, usr, wad);\\n }\\n\\n function pull(address usr, uint256 wad) external {\\n transferFrom(usr, msg.sender, wad);\\n }\\n\\n function move(address src, address dst, uint256 wad) external {\\n transferFrom(src, dst, wad);\\n }\\n\\n // --- Approve by signature ---\\n function permit(\\n address holder,\\n address spender,\\n uint256 nonce,\\n uint256 expiry,\\n bool allowed,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external {\\n bytes32 digest = keccak256(\\n abi.encodePacked(\\n \\\"\\\\x19\\\\x01\\\",\\n DOMAIN_SEPARATOR,\\n keccak256(abi.encode(PERMIT_TYPEHASH, holder, spender, nonce, expiry, allowed))\\n )\\n );\\n\\n require(holder != address(0), \\\"VAI/invalid-address-0\\\");\\n require(holder == ecrecover(digest, v, r, s), \\\"VAI/invalid-permit\\\");\\n require(expiry == 0 || now <= expiry, \\\"VAI/permit-expired\\\");\\n require(nonce == nonces[holder]++, \\\"VAI/invalid-nonce\\\");\\n uint256 wad = allowed ? uint256(-1) : 0;\\n allowance[holder][spender] = wad;\\n emit Approval(holder, spender, wad);\\n }\\n}\\n\",\"keccak256\":\"0x375461c43acbc72bdb71baad0d14b0f58409794115a29416ad7cfa6fb2c65457\"},\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n// This program is free software: you can redistribute it and/or modify\\n// it under the terms of the GNU General Public License as published by\\n// the Free Software Foundation, either version 3 of the License, or\\n// (at your option) any later version.\\n\\n// This program is distributed in the hope that it will be useful,\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n// GNU General Public License for more details.\\n\\n// You should have received a copy of the GNU General Public License\\n// along with this program. If not, see <http://www.gnu.org/licenses/>.\\n\\npragma solidity ^0.5.16;\\n\\ncontract LibNote {\\n event LogNote(\\n bytes4 indexed sig,\\n address indexed usr,\\n bytes32 indexed arg1,\\n bytes32 indexed arg2,\\n bytes data\\n ) anonymous;\\n\\n modifier note() {\\n _;\\n assembly {\\n // log an 'anonymous' event with a constant 6 words of calldata\\n // and four indexed topics: selector, caller, arg1 and arg2\\n let mark := msize() // end of memory ensures zero\\n mstore(0x40, add(mark, 288)) // update free memory pointer\\n mstore(mark, 0x20) // bytes type data offset\\n mstore(add(mark, 0x20), 224) // bytes size (padded)\\n calldatacopy(add(mark, 0x40), 0, 224) // bytes payload\\n log4(\\n mark,\\n 288, // calldata\\n shl(224, shr(224, calldataload(0))), // msg.sig\\n caller(), // msg.sender\\n calldataload(4), // arg1\\n calldataload(36) // arg2\\n )\\n }\\n }\\n}\\n\",\"keccak256\":\"0x63dceabe7331a78e04306883f77921e20bca79930e92468779bfe81cbe239c68\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol:VAI","label":"wards","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":68,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol:VAI","label":"totalSupply","offset":0,"slot":"1","type":"t_uint256"},{"astId":72,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol:VAI","label":"balanceOf","offset":0,"slot":"2","type":"t_mapping(t_address,t_uint256)"},{"astId":78,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol:VAI","label":"allowance","offset":0,"slot":"3","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":82,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol:VAI","label":"nonces","offset":0,"slot":"4","type":"t_mapping(t_address,t_uint256)"},{"astId":144,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol:VAI","label":"DOMAIN_SEPARATOR","offset":0,"slot":"5","type":"t_bytes32"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"methods":{}}}},"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol":{"LibNote":{"abi":[{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820d26637c8075255db52c7c70e0fff07dbee202da2ce3368066a0278f1203d34ef64736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xD2 PUSH7 0x37C8075255DB52 0xC7 0xC7 0xE 0xF SELFDESTRUCT SMOD 0xDB 0xEE KECCAK256 0x2D LOG2 0xCE CALLER PUSH9 0x66A0278F1203D34EF PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ","sourceMap":"716:1003:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;716:1003:1;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a72315820d26637c8075255db52c7c70e0fff07dbee202da2ce3368066a0278f1203d34ef64736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xD2 PUSH7 0x37C8075255DB52 0xC7 0xC7 0xE 0xF SELFDESTRUCT SMOD 0xDB 0xEE KECCAK256 0x2D LOG2 0xCE CALLER PUSH9 0x66A0278F1203D34EF PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ","sourceMap":"716:1003:1:-;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"66","totalCost":"12466"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"arg1\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"arg2\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol\":\"LibNote\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n// This program is free software: you can redistribute it and/or modify\\n// it under the terms of the GNU General Public License as published by\\n// the Free Software Foundation, either version 3 of the License, or\\n// (at your option) any later version.\\n\\n// This program is distributed in the hope that it will be useful,\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n// GNU General Public License for more details.\\n\\n// You should have received a copy of the GNU General Public License\\n// along with this program. If not, see <http://www.gnu.org/licenses/>.\\n\\npragma solidity ^0.5.16;\\n\\ncontract LibNote {\\n event LogNote(\\n bytes4 indexed sig,\\n address indexed usr,\\n bytes32 indexed arg1,\\n bytes32 indexed arg2,\\n bytes data\\n ) anonymous;\\n\\n modifier note() {\\n _;\\n assembly {\\n // log an 'anonymous' event with a constant 6 words of calldata\\n // and four indexed topics: selector, caller, arg1 and arg2\\n let mark := msize() // end of memory ensures zero\\n mstore(0x40, add(mark, 288)) // update free memory pointer\\n mstore(mark, 0x20) // bytes type data offset\\n mstore(add(mark, 0x20), 224) // bytes size (padded)\\n calldatacopy(add(mark, 0x40), 0, 224) // bytes payload\\n log4(\\n mark,\\n 288, // calldata\\n shl(224, shr(224, calldataload(0))), // msg.sig\\n caller(), // msg.sender\\n calldataload(4), // arg1\\n calldataload(36) // arg2\\n )\\n }\\n }\\n}\\n\",\"keccak256\":\"0x63dceabe7331a78e04306883f77921e20bca79930e92468779bfe81cbe239c68\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"methods":{}}}},"contracts/test/VAI.sol":{"VAIScenario":{"abi":[{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"guy","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes4","name":"sig","type":"bytes4"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"arg1","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"arg2","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"LogNote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"deny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"pull","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"push","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"rely","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516112953803806112958339818101604052602081101561003357600080fd5b50513360009081526020819052604090819020600190555181908060526112438239604080519182900360520182208282018252600e83526d2b20a49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152603160f81b908401528151808401919091527fdd18a44c5a898a5e53e119eaa2f28613c9f2172cf68c0fb769cbcdd3e3296b05818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060055550506111198061012a6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063a9059cbb1161007c578063a9059cbb146103e0578063b753a98c1461040c578063bb35783b14610438578063bf353dbb1461046e578063dd62ed3e14610494578063f2d5d56b146104c257610142565b80637ecebe00146103065780638fcbaf0c1461032c57806395d89b41146103865780639c52a7f11461038e5780639dc29fac146103b457610142565b8063313ce5671161010a578063313ce5671461025e5780633644e5151461027c57806340c10f191461028457806354fd4d50146102b257806365fae35e146102ba57806370a08231146102e057610142565b806306fdde0314610147578063095ea7b3146101c657806318160ddd1461020657806323b872dd1461022057806330adf81f14610256575b600080fd5b61014f6104ee565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018b578082015183820152602001610173565b50505050905090810190601f1680156101b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b038135169060200135610516565b604051901515815260200160405180910390f35b61020e610588565b60405190815260200160405180910390f35b6101f26004803603606081101561023657600080fd5b506001600160a01b0381358116916020810135909116906040013561058e565b61020e6107db565b6102666107ff565b60405160ff909116815260200160405180910390f35b61020e610804565b6102b06004803603604081101561029a57600080fd5b506001600160a01b03813516906020013561080a565b005b61014f6108f1565b6102b0600480360360208110156102d057600080fd5b50356001600160a01b031661090c565b61020e600480360360208110156102f657600080fd5b50356001600160a01b03166109ba565b61020e6004803603602081101561031c57600080fd5b50356001600160a01b03166109ce565b6102b0600480360361010081101561034357600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e001356109e2565b61014f610cfc565b6102b0600480360360208110156103a457600080fd5b50356001600160a01b0316610d19565b6102b0600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610dc4565b6101f2600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610fde565b6102b06004803603604081101561042257600080fd5b506001600160a01b038135169060200135610ff2565b6102b06004803603606081101561044e57600080fd5b506001600160a01b03813581169160208101359091169060400135611002565b61020e6004803603602081101561048457600080fd5b50356001600160a01b0316611013565b61020e600480360360408110156104aa57600080fd5b506001600160a01b0381358116916020013516611027565b6102b0600480360360408110156104d857600080fd5b506001600160a01b038135169060200135611049565b60405160408082019052600e81526d2b20a49029ba30b13632b1b7b4b760911b602082015281565b336000908152600360205281604082206001600160a01b038516600090815260209190915260409020556001600160a01b038316337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405190815260200160405180910390a35060015b92915050565b60015481565b6001600160a01b0383166000908152600260205281604082205410156105f55760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b038416331480159061063957506001600160a01b038416600090815260036020526000199060409020336000908152602091909152604090205414155b15610718576001600160a01b03841660009081526003602052829060409020336000908152602091909152604090205410156106bb5760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b038416600090815260036020526106ee9060409020336000908152602091909152604090205483611054565b6001600160a01b038516600090815260036020526040902033600090815260209190915260409020555b6001600160a01b0384166000908152600260205261073b90604090205483611054565b6001600160a01b0385166000908152600260205260409020556001600160a01b038316600090815260026020526107779060409020548361109c565b6001600160a01b0384166000908152600260205260409020556001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019392505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb81565b601281565b60055481565b336000908152602081905260409020546001146108625760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b038216600090815260026020526108859060409020548261109c565b6001600160a01b0383166000908152600260205260409020556001546108ab908261109c565b6001556001600160a01b03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6040516040808201905260018152603160f81b602082015281565b336000908152602081905260409020546001146109645760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260019060409020555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b600260205280600052604060002054905081565b600460205280600052604060002054905081565b6005546000907fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8a8a8a8a8a60405160208101969096526001600160a01b03948516604080880191909152939094166060860152608085019190915260a084015290151560c083015260e090910190516020818303038152906040528051906020012060405161190160f01b6020820152602281019290925260428201526062016040516020818303038152906040528051906020012090506001600160a01b038916610aed5760405162461bcd60e51b815260206004820152601560248201527405641492f696e76616c69642d616464726573732d3605c1b604482015260640160405180910390fd5b60018185858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b4a573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614610bad5760405162461bcd60e51b81526020600482015260126024820152711590524bda5b9d985b1a590b5c195c9b5a5d60721b604482015260640160405180910390fd5b851580610bba5750854211155b610bff5760405162461bcd60e51b81526020600482015260126024820152711590524bdc195c9b5a5d0b595e1c1a5c995960721b604482015260640160405180910390fd5b6001600160a01b03891660009081526004602052604090208054600181019091558714610c665760405162461bcd60e51b81526020600482015260116024820152705641492f696e76616c69642d6e6f6e636560781b604482015260640160405180910390fd5b600085610c74576000610c78565b6000195b6001600160a01b038b16600090815260036020529091508190604090206001600160a01b038b16600090815260209190915260409020556001600160a01b03808a16908b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a350505050505050505050565b60405160408082019052600381526256414960e81b602082015281565b33600090815260208190526040902054600114610d715760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260408120555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b6001600160a01b03821660009081526002602052819060409020541015610e2c5760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b0382163314801590610e7057506001600160a01b038216600090815260036020526000199060409020336000908152602091909152604090205414155b15610f4f576001600160a01b0382166000908152600360205281906040902033600090815260209190915260409020541015610ef25760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b03821660009081526003602052610f259060409020336000908152602091909152604090205482611054565b6001600160a01b038316600090815260036020526040902033600090815260209190915260409020555b6001600160a01b03821660009081526002602052610f7290604090205482611054565b6001600160a01b038316600090815260026020526040902055600154610f989082611054565b60015560006001600160a01b0383167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6000610feb33848461058e565b9392505050565b610ffd33838361058e565b505050565b61100d83838361058e565b50505050565b600060205280600052604060002054905081565b6003602052816000526040600020602052806000526040600020549150829050565b610ffd82338361058e565b808203828111156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fd5b808201828110156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fdfea265627a7a72315820e60a8ab015db30e89a450cabef0dd42bef8680133f5d7283a594eef3b4b58f9164736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1295 CODESIZE SUB DUP1 PUSH2 0x1295 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 SSTORE MLOAD DUP2 SWAP1 DUP1 PUSH1 0x52 PUSH2 0x1243 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP4 MSTORE PUSH14 0x2B20A49029BA30B13632B1B7B4B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xDD18A44C5A898A5E53E119EAA2F28613C9F2172CF68C0FB769CBCDD3E3296B05 DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP5 ADD SWAP1 MSTORE DUP3 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SSTORE POP POP PUSH2 0x1119 DUP1 PUSH2 0x12A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xB753A98C EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xBB35783B EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xBF353DBB EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xF2D5D56B EQ PUSH2 0x4C2 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x8FCBAF0C EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x9C52A7F1 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x3B4 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x65FAE35E EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2E0 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x256 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 DUP2 ADD DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B JUMPI DUP1 DUP3 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x173 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x516 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x58E JUMP JUMPDEST PUSH2 0x20E PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x266 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x804 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x80A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x90C JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9CE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD19 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1049 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2B20A49029BA30B13632B1B7B4B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 SLOAD LT ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x639 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP3 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x6EE SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x73B SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x777 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP6 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x862 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x885 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0x8AB SWAP1 DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x964 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x40 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP2 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0xAED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x5641492F696E76616C69642D616464726573732D3 PUSH1 0x5C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xBAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDA5B9D985B1A590B5C195C9B5A5D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 ISZERO DUP1 PUSH2 0xBBA JUMPI POP DUP6 TIMESTAMP GT ISZERO JUMPDEST PUSH2 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDC195C9B5A5D0B595E1C1A5C9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP8 EQ PUSH2 0xC66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x5641492F696E76616C69642D6E6F6E6365 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH2 0xC74 JUMPI PUSH1 0x0 PUSH2 0xC78 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE SWAP1 SWAP2 POP DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP1 DUP12 AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x564149 PUSH1 0xE8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0xD71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0xE70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xF4F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0xF25 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0xF72 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0xF98 SWAP1 DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFEB CALLER DUP5 DUP5 PUSH2 0x58E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFD CALLER DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100D DUP4 DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xFFD DUP3 CALLER DUP4 PUSH2 0x58E JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE6 EXP DUP11 0xB0 ISZERO 0xDB ADDRESS 0xE8 SWAP11 GASLIMIT 0xC 0xAB 0xEF 0xD 0xD4 0x2B 0xEF DUP7 DUP1 SGT EXTCODEHASH 0x5D PUSH19 0x83A594EEF3B4B58F9164736F6C634300051000 ORIGIN GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ","sourceMap":"135:87:2:-;;;169:51;8:9:-1;5:2;;;30:1;27;20:12;5:2;169:51:2;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;169:51:2;2412:10:0;2406:5;:17;;;169:51:2;2406:17:0;;;;;;;;2426:1;2406:21;;2507:95;169:51:2;;2507:95:0;;;;;;;;;;;;;;;;2636:4;;;;;;;;-1:-1:-1;;;2636:4:0;;;;;2676:7;;;;;;;;;;-1:-1:-1;;;2676:7:0;;;;2479:277;;;;;;;;;2620:22;2479:277;;;;2660:25;2479:277;;;;;;;;;;;2737:4;2479:277;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2479:277:0;;;;;;2456:310;;;;;;;;2437:16;:329;-1:-1:-1;;135:87:2;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063a9059cbb1161007c578063a9059cbb146103e0578063b753a98c1461040c578063bb35783b14610438578063bf353dbb1461046e578063dd62ed3e14610494578063f2d5d56b146104c257610142565b80637ecebe00146103065780638fcbaf0c1461032c57806395d89b41146103865780639c52a7f11461038e5780639dc29fac146103b457610142565b8063313ce5671161010a578063313ce5671461025e5780633644e5151461027c57806340c10f191461028457806354fd4d50146102b257806365fae35e146102ba57806370a08231146102e057610142565b806306fdde0314610147578063095ea7b3146101c657806318160ddd1461020657806323b872dd1461022057806330adf81f14610256575b600080fd5b61014f6104ee565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018b578082015183820152602001610173565b50505050905090810190601f1680156101b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b038135169060200135610516565b604051901515815260200160405180910390f35b61020e610588565b60405190815260200160405180910390f35b6101f26004803603606081101561023657600080fd5b506001600160a01b0381358116916020810135909116906040013561058e565b61020e6107db565b6102666107ff565b60405160ff909116815260200160405180910390f35b61020e610804565b6102b06004803603604081101561029a57600080fd5b506001600160a01b03813516906020013561080a565b005b61014f6108f1565b6102b0600480360360208110156102d057600080fd5b50356001600160a01b031661090c565b61020e600480360360208110156102f657600080fd5b50356001600160a01b03166109ba565b61020e6004803603602081101561031c57600080fd5b50356001600160a01b03166109ce565b6102b0600480360361010081101561034357600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e001356109e2565b61014f610cfc565b6102b0600480360360208110156103a457600080fd5b50356001600160a01b0316610d19565b6102b0600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610dc4565b6101f2600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610fde565b6102b06004803603604081101561042257600080fd5b506001600160a01b038135169060200135610ff2565b6102b06004803603606081101561044e57600080fd5b506001600160a01b03813581169160208101359091169060400135611002565b61020e6004803603602081101561048457600080fd5b50356001600160a01b0316611013565b61020e600480360360408110156104aa57600080fd5b506001600160a01b0381358116916020013516611027565b6102b0600480360360408110156104d857600080fd5b506001600160a01b038135169060200135611049565b60405160408082019052600e81526d2b20a49029ba30b13632b1b7b4b760911b602082015281565b336000908152600360205281604082206001600160a01b038516600090815260209190915260409020556001600160a01b038316337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405190815260200160405180910390a35060015b92915050565b60015481565b6001600160a01b0383166000908152600260205281604082205410156105f55760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b038416331480159061063957506001600160a01b038416600090815260036020526000199060409020336000908152602091909152604090205414155b15610718576001600160a01b03841660009081526003602052829060409020336000908152602091909152604090205410156106bb5760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b038416600090815260036020526106ee9060409020336000908152602091909152604090205483611054565b6001600160a01b038516600090815260036020526040902033600090815260209190915260409020555b6001600160a01b0384166000908152600260205261073b90604090205483611054565b6001600160a01b0385166000908152600260205260409020556001600160a01b038316600090815260026020526107779060409020548361109c565b6001600160a01b0384166000908152600260205260409020556001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019392505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb81565b601281565b60055481565b336000908152602081905260409020546001146108625760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b038216600090815260026020526108859060409020548261109c565b6001600160a01b0383166000908152600260205260409020556001546108ab908261109c565b6001556001600160a01b03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6040516040808201905260018152603160f81b602082015281565b336000908152602081905260409020546001146109645760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260019060409020555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b600260205280600052604060002054905081565b600460205280600052604060002054905081565b6005546000907fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8a8a8a8a8a60405160208101969096526001600160a01b03948516604080880191909152939094166060860152608085019190915260a084015290151560c083015260e090910190516020818303038152906040528051906020012060405161190160f01b6020820152602281019290925260428201526062016040516020818303038152906040528051906020012090506001600160a01b038916610aed5760405162461bcd60e51b815260206004820152601560248201527405641492f696e76616c69642d616464726573732d3605c1b604482015260640160405180910390fd5b60018185858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b4a573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614610bad5760405162461bcd60e51b81526020600482015260126024820152711590524bda5b9d985b1a590b5c195c9b5a5d60721b604482015260640160405180910390fd5b851580610bba5750854211155b610bff5760405162461bcd60e51b81526020600482015260126024820152711590524bdc195c9b5a5d0b595e1c1a5c995960721b604482015260640160405180910390fd5b6001600160a01b03891660009081526004602052604090208054600181019091558714610c665760405162461bcd60e51b81526020600482015260116024820152705641492f696e76616c69642d6e6f6e636560781b604482015260640160405180910390fd5b600085610c74576000610c78565b6000195b6001600160a01b038b16600090815260036020529091508190604090206001600160a01b038b16600090815260209190915260409020556001600160a01b03808a16908b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a350505050505050505050565b60405160408082019052600381526256414960e81b602082015281565b33600090815260208190526040902054600114610d715760405162461bcd60e51b81526020600482015260126024820152711590524bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015260640160405180910390fd5b6001600160a01b0381166000908152602081905260408120555961012081016040526020815260e0602082015260e060006040830137602435600435336001600160e01b03196000351661012085a45050565b6001600160a01b03821660009081526002602052819060409020541015610e2c5760405162461bcd60e51b81526020600482015260186024820152775641492f696e73756666696369656e742d62616c616e636560401b604482015260640160405180910390fd5b6001600160a01b0382163314801590610e7057506001600160a01b038216600090815260036020526000199060409020336000908152602091909152604090205414155b15610f4f576001600160a01b0382166000908152600360205281906040902033600090815260209190915260409020541015610ef25760405162461bcd60e51b815260206004820152601a60248201527f5641492f696e73756666696369656e742d616c6c6f77616e6365000000000000604482015260640160405180910390fd5b6001600160a01b03821660009081526003602052610f259060409020336000908152602091909152604090205482611054565b6001600160a01b038316600090815260036020526040902033600090815260209190915260409020555b6001600160a01b03821660009081526002602052610f7290604090205482611054565b6001600160a01b038316600090815260026020526040902055600154610f989082611054565b60015560006001600160a01b0383167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6000610feb33848461058e565b9392505050565b610ffd33838361058e565b505050565b61100d83838361058e565b50505050565b600060205280600052604060002054905081565b6003602052816000526040600020602052806000526040600020549150829050565b610ffd82338361058e565b808203828111156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fd5b808201828110156105825760405162461bcd60e51b815260206004820152600e60248201526d2b20a49036b0ba341032b93937b960911b604482015260640160405180910390fdfea265627a7a72315820e60a8ab015db30e89a450cabef0dd42bef8680133f5d7283a594eef3b4b58f9164736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xB753A98C EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xBB35783B EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xBF353DBB EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xF2D5D56B EQ PUSH2 0x4C2 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x8FCBAF0C EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x9C52A7F1 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x3B4 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x65FAE35E EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2E0 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x256 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 DUP2 ADD DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B JUMPI DUP1 DUP3 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x173 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x516 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x58E JUMP JUMPDEST PUSH2 0x20E PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x266 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x804 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x80A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x90C JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9CE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD19 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF2 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x20E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x2B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1049 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x2B20A49029BA30B13632B1B7B4B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 DUP3 KECCAK256 SLOAD LT ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x639 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP3 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x6EE SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x73B SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x777 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP1 DUP6 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x862 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x885 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0x8AB SWAP1 DUP3 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0x964 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH32 0xEA2AA0A1BE11A07ED86D755C93467F4F82362B452371D1BA94D1715123511ACB DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x40 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP2 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0xAED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x5641492F696E76616C69642D616464726573732D3 PUSH1 0x5C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xBAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDA5B9D985B1A590B5C195C9B5A5D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 ISZERO DUP1 PUSH2 0xBBA JUMPI POP DUP6 TIMESTAMP GT ISZERO JUMPDEST PUSH2 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDC195C9B5A5D0B595E1C1A5C9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP8 EQ PUSH2 0xC66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x5641492F696E76616C69642D6E6F6E6365 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH2 0xC74 JUMPI PUSH1 0x0 PUSH2 0xC78 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE SWAP1 SWAP2 POP DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP1 DUP12 AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 DUP3 ADD SWAP1 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x564149 PUSH1 0xE8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 EQ PUSH2 0xD71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1590524BDB9BDD0B585D5D1A1BDC9A5E9959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE MSIZE PUSH2 0x120 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x0 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x0 CALLDATALOAD AND PUSH2 0x120 DUP6 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x5641492F696E73756666696369656E742D62616C616E6365 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0xE70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 NOT SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xF4F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD LT ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5641492F696E73756666696369656E742D616C6C6F77616E6365000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0xF25 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0xF72 SWAP1 PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x1 SLOAD PUSH2 0xF98 SWAP1 DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFEB CALLER DUP5 DUP5 PUSH2 0x58E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFD CALLER DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100D DUP4 DUP4 DUP4 PUSH2 0x58E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP DUP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xFFD DUP3 CALLER DUP4 PUSH2 0x58E JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x582 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x2B20A49036B0BA341032B93937B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE6 EXP DUP11 0xB0 ISZERO 0xDB ADDRESS 0xE8 SWAP11 GASLIMIT 0xC 0xAB 0xEF 0xD 0xD4 0x2B 0xEF DUP7 DUP1 SGT EXTCODEHASH 0x5D PUSH19 0x83A594EEF3B4B58F9164736F6C634300051000 ORIGIN ","sourceMap":"135:87:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;135:87:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1212:46:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1212:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4242:182;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4242:182:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1390:26;;;:::i;:::-;;;;;;;;;;;;;;;2932:572;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2932:572:0;;;;;;;;;;;;;;;;;:::i;2244:108::-;;;:::i;1349:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;2063:31;;;:::i;3510:202::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3510:202:0;;;;;;;;:::i;:::-;;1307:36;;;:::i;917:77::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:77:0;-1:-1:-1;;;;;917:77:0;;:::i;1423:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1423:44:0;-1:-1:-1;;;;;1423:44:0;;:::i;1543:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1543:41:0;-1:-1:-1;;;;;1543:41:0;;:::i;4811:872::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4811:872:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1264:37::-;;;:::i;1000:77::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1000:77:0;-1:-1:-1;;;;;1000:77:0;;:::i;3718:518::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3718:518:0;;;;;;;;:::i;2800:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2800:126:0;;;;;;;;:::i;4451:100::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4451:100:0;;;;;;;;:::i;4663:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4663:106:0;;;;;;;;;;;;;;;;;:::i;870:40::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;870:40:0;-1:-1:-1;;;;;870:40:0;;:::i;1473:64::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1473:64:0;;;;;;;;;;:::i;4557:100::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4557:100:0;;;;;;;;:::i;1212:46::-;;;;;;;;;;;;-1:-1:-1;;;1212:46:0;;;;;:::o;4242:182::-;4329:10;4303:4;4319:21;;;:9;:21;;4348:3;4319:21;4303:4;4319:21;-1:-1:-1;;;;;4319:26:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;4366:30:0;;4375:10;4366:30;4392:3;4366:30;;;;;;;;;;;;;;-1:-1:-1;4413:4:0;4242:182;;;;;:::o;1390:26::-;;;;:::o;2932:572::-;-1:-1:-1;;;;;3033:14:0;;3009:4;3033:14;;;:9;:14;;3051:3;3033:14;3009:4;3033:14;;:21;;3025:58;;;;-1:-1:-1;;;3025:58:0;;;;;;;;;;;;-1:-1:-1;;;3025:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3097:17:0;;3104:10;3097:17;;;;:62;;-1:-1:-1;;;;;;3118:14:0;;;;;;:9;:14;;-1:-1:-1;;3156:2:0;3118:14;;;3133:10;3118:26;;;;;;;;;;;;;:41;;3097:62;3093:244;;;-1:-1:-1;;;;;3183:14:0;;;;;;:9;:14;;3213:3;;3183:14;;;3198:10;3183:26;;;;;;;;;;;;;:33;;3175:72;;;;-1:-1:-1;;;3175:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3294:14:0;;;;;;:9;:14;;3290:36;;3294:14;;;3309:10;3294:26;;;;;;;;;;;;;3322:3;3290;:36::i;:::-;-1:-1:-1;;;;;3261:14:0;;;;;;:9;:14;;;;;3276:10;3261:26;;;;;;;;;;;;:65;3093:244;-1:-1:-1;;;;;3367:14:0;;;;;;:9;:14;;3363:24;;3367:14;;;;3383:3;3363;:24::i;:::-;-1:-1:-1;;;;;3346:14:0;;;;;;:9;:14;;;;;:41;-1:-1:-1;;;;;3418:14:0;;;;;;:9;:14;;3414:24;;3418:14;;;;3434:3;3414;:24::i;:::-;-1:-1:-1;;;;;3397:14:0;;;;;;:9;:14;;;;;:41;-1:-1:-1;;;;;3453:23:0;;;;;;;3472:3;3453:23;;;;;;;;;;;;;;-1:-1:-1;3493:4:0;2932:572;;;;;:::o;2244:108::-;2286:66;2244:108;:::o;1349:35::-;1382:2;1349:35;:::o;2063:31::-;;;;:::o;3510:202::-;1123:10;1117:5;:17;;;;;;;;;;;1138:1;1117:22;1109:53;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3595:14:0;;;;;;:9;:14;;3591:24;;3595:14;;;;3611:3;3591;:24::i;:::-;-1:-1:-1;;;;;3574:14:0;;;;;;:9;:14;;;;;:41;3643:11;;3639:21;;3656:3;3639;:21::i;:::-;3625:11;:35;-1:-1:-1;;;;;3675:30:0;;3692:1;3675:30;3701:3;3675:30;;;;;;;;;;;;;;3510:202;;:::o;1307:36::-;;;;;;;;;;;;-1:-1:-1;;;1307:36:0;;;;;:::o;917:77::-;1123:10;1117:5;:17;;;;;;;;;;;1138:1;1117:22;1109:53;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;973:10:0;;:5;:10;;;;;;;986:1;;973:10;;;:14;1132:7:1;1205:3;1199:4;1195:14;1189:4;1182:28;1266:4;1260;1253:18;1334:3;1327:4;1321;1317:15;1310:28;1407:3;1404:1;1397:4;1391;1387:15;1374:37;1676:2;1663:16;1635:1;1622:15;1582:8;-1:-1:-1;;;;;;1549:1:1;1536:15;1518:35;1485:3;1463:4;1441:260;958:753;;:::o;1423:44:0:-;;;;;;;;;;;;-1:-1:-1;1423:44:0;:::o;1543:41::-;;;;;;;;;;;;-1:-1:-1;1543:41:0;:::o;4811:872::-;5127:16;;5025:14;;2286:66;5199:6;5207:7;5216:5;5223:6;5231:7;5171:68;;;;;;;;;-1:-1:-1;;;;;5171:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5171:68:0;;;5161:79;;;;;;5065:189;;-1:-1:-1;;;5065:189:0;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5065:189:0;;;5042:222;;;;;;5025:239;-1:-1:-1;;;;;;5283:20:0;;5275:54;;;;-1:-1:-1;;;5275:54:0;;;;;;;;;;;;-1:-1:-1;;;5275:54:0;;;;;;;;;;;;;;5357:26;5367:6;5375:1;5378;5381;5357:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5357:26:0;;;;;;;;-1:-1:-1;;;;;5347:36:0;:6;-1:-1:-1;;;;;5347:36:0;;5339:67;;;;-1:-1:-1;;;5339:67:0;;;;;;;;;;;;-1:-1:-1;;;5339:67:0;;;;;;;;;;;;;;5424:11;;;:28;;;5446:6;5439:3;:13;;5424:28;5416:59;;;;-1:-1:-1;;;5416:59:0;;;;;;;;;;;;-1:-1:-1;;;5416:59:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5502:14:0;;;;;;:6;:14;;;;;:16;;;;;;;;5493:25;;5485:55;;;;-1:-1:-1;;;5485:55:0;;;;;;;;;;;;-1:-1:-1;;;5485:55:0;;;;;;;;;;;;;;5550:11;5564:7;:25;;5588:1;5564:25;;;-1:-1:-1;;5564:25:0;-1:-1:-1;;;;;5599:17:0;;;;;;:9;:17;;5550:39;;-1:-1:-1;5550:39:0;;5599:17;;;-1:-1:-1;;;;;5599:26:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;5646:30:0;;;;;;;5672:3;5646:30;;;;;;;;;;;;;;4811:872;;;;;;;;;;:::o;1264:37::-;;;;;;;;;;;;-1:-1:-1;;;1264:37:0;;;;;:::o;1000:77::-;1123:10;1117:5;:17;;;;;;;;;;;1138:1;1117:22;1109:53;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;-1:-1:-1;;;1109:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;1056:10:0;;1069:1;1056:10;;;;;;;;1069:1;1056:10;:14;1132:7:1;1205:3;1199:4;1195:14;1189:4;1182:28;1266:4;1260;1253:18;1334:3;1327:4;1321;1317:15;1310:28;1407:3;1404:1;1397:4;1391;1387:15;1374:37;1676:2;1663:16;1635:1;1622:15;1582:8;-1:-1:-1;;;;;;1549:1:1;1536:15;1518:35;1485:3;1463:4;1441:260;958:753;;:::o;3718:518:0:-;-1:-1:-1;;;;;3785:14:0;;;;;;:9;:14;;3803:3;;3785:14;;;;:21;;3777:58;;;;-1:-1:-1;;;3777:58:0;;;;;;;;;;;;-1:-1:-1;;;3777:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3849:17:0;;3856:10;3849:17;;;;:62;;-1:-1:-1;;;;;;3870:14:0;;;;;;:9;:14;;-1:-1:-1;;3908:2:0;3870:14;;;3885:10;3870:26;;;;;;;;;;;;;:41;;3849:62;3845:244;;;-1:-1:-1;;;;;3935:14:0;;;;;;:9;:14;;3965:3;;3935:14;;;3950:10;3935:26;;;;;;;;;;;;;:33;;3927:72;;;;-1:-1:-1;;;3927:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4046:14:0;;;;;;:9;:14;;4042:36;;4046:14;;;4061:10;4046:26;;;;;;;;;;;;;4074:3;4042;:36::i;:::-;-1:-1:-1;;;;;4013:14:0;;;;;;:9;:14;;;;;4028:10;4013:26;;;;;;;;;;;;:65;3845:244;-1:-1:-1;;;;;4119:14:0;;;;;;:9;:14;;4115:24;;4119:14;;;;4135:3;4115;:24::i;:::-;-1:-1:-1;;;;;4098:14:0;;;;;;:9;:14;;;;;:41;4167:11;;4163:21;;4180:3;4163;:21::i;:::-;4149:11;:35;4221:1;-1:-1:-1;;;;;4199:30:0;;;4225:3;4199:30;;;;;;;;;;;;;;3718:518;;:::o;2800:126::-;2862:4;2885:34;2898:10;2910:3;2915;2885:12;:34::i;:::-;2878:41;2800:126;-1:-1:-1;;;2800:126:0:o;4451:100::-;4510:34;4523:10;4535:3;4540;4510:12;:34::i;:::-;;4451:100;;:::o;4663:106::-;4735:27;4748:3;4753;4758;4735:12;:27::i;:::-;;4663:106;;;:::o;870:40::-;;;;;;;;;;;;-1:-1:-1;870:40:0;:::o;1473:64::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1473:64:0;;-1:-1:-1;1473:64:0:o;4557:100::-;4616:34;4629:3;4634:10;4646:3;4616:12;:34::i;1897:129::-;1989:5;;;1984:16;;;;1976:43;;;;-1:-1:-1;;;1976:43:0;;;;;;;;;;;;-1:-1:-1;;;1976:43:0;;;;;;;;;;;;;1762:129;1854:5;;;1849:16;;;;1841:43;;;;-1:-1:-1;;;1841:43:0;;;;;;;;;;;;-1:-1:-1;;;1841:43:0;;;;;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"875400","executionCost":"infinite","totalCost":"infinite"},"external":{"DOMAIN_SEPARATOR()":"1040","PERMIT_TYPEHASH()":"307","allowance(address,address)":"1322","approve(address,uint256)":"22326","balanceOf(address)":"1256","burn(address,uint256)":"infinite","decimals()":"227","deny(address)":"infinite","mint(address,uint256)":"infinite","move(address,address,uint256)":"infinite","name()":"infinite","nonces(address)":"1146","permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"infinite","pull(address,uint256)":"infinite","push(address,uint256)":"infinite","rely(address)":"infinite","symbol()":"infinite","totalSupply()":"1063","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","version()":"infinite","wards(address)":"1211"}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","deny(address)":"9c52a7f1","mint(address,uint256)":"40c10f19","move(address,address,uint256)":"bb35783b","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c","pull(address,uint256)":"f2d5d56b","push(address,uint256)":"b753a98c","rely(address)":"65fae35e","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","version()":"54fd4d50","wards(address)":"bf353dbb"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"arg1\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"arg2\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"}],\"name\":\"deny\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"pull\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"push\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"}],\"name\":\"rely\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/test/VAI.sol\":\"VAIScenario\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n// Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico\\n\\n// This program is free software: you can redistribute it and/or modify\\n// it under the terms of the GNU Affero General Public License as published by\\n// the Free Software Foundation, either version 3 of the License, or\\n// (at your option) any later version.\\n//\\n// This program is distributed in the hope that it will be useful,\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n// GNU Affero General Public License for more details.\\n//\\n// You should have received a copy of the GNU Affero General Public License\\n// along with this program. If not, see <https://www.gnu.org/licenses/>.\\n\\npragma solidity ^0.5.16;\\n\\nimport \\\"./lib.sol\\\";\\n\\ncontract VAI is LibNote {\\n // --- Auth ---\\n mapping(address => uint256) public wards;\\n\\n function rely(address guy) external note auth {\\n wards[guy] = 1;\\n }\\n\\n function deny(address guy) external note auth {\\n wards[guy] = 0;\\n }\\n\\n modifier auth() {\\n require(wards[msg.sender] == 1, \\\"VAI/not-authorized\\\");\\n _;\\n }\\n\\n // --- BEP20 Data ---\\n string public constant name = \\\"VAI Stablecoin\\\";\\n string public constant symbol = \\\"VAI\\\";\\n string public constant version = \\\"1\\\";\\n uint8 public constant decimals = 18;\\n uint256 public totalSupply;\\n\\n mapping(address => uint256) public balanceOf;\\n mapping(address => mapping(address => uint256)) public allowance;\\n mapping(address => uint256) public nonces;\\n\\n event Approval(address indexed src, address indexed guy, uint256 wad);\\n event Transfer(address indexed src, address indexed dst, uint256 wad);\\n\\n // --- Math ---\\n function add(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n require((z = x + y) >= x, \\\"VAI math error\\\");\\n }\\n\\n function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n require((z = x - y) <= x, \\\"VAI math error\\\");\\n }\\n\\n // --- EIP712 niceties ---\\n bytes32 public DOMAIN_SEPARATOR;\\n // bytes32 public constant PERMIT_TYPEHASH = keccak256(\\\"Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)\\\");\\n bytes32 public constant PERMIT_TYPEHASH = 0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb;\\n\\n constructor(uint256 chainId_) public {\\n wards[msg.sender] = 1;\\n DOMAIN_SEPARATOR = keccak256(\\n abi.encode(\\n keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n keccak256(bytes(name)),\\n keccak256(bytes(version)),\\n chainId_,\\n address(this)\\n )\\n );\\n }\\n\\n // --- Token ---\\n function transfer(address dst, uint256 wad) external returns (bool) {\\n return transferFrom(msg.sender, dst, wad);\\n }\\n\\n function transferFrom(address src, address dst, uint256 wad) public returns (bool) {\\n require(balanceOf[src] >= wad, \\\"VAI/insufficient-balance\\\");\\n if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\\n require(allowance[src][msg.sender] >= wad, \\\"VAI/insufficient-allowance\\\");\\n allowance[src][msg.sender] = sub(allowance[src][msg.sender], wad);\\n }\\n balanceOf[src] = sub(balanceOf[src], wad);\\n balanceOf[dst] = add(balanceOf[dst], wad);\\n emit Transfer(src, dst, wad);\\n return true;\\n }\\n\\n function mint(address usr, uint256 wad) external auth {\\n balanceOf[usr] = add(balanceOf[usr], wad);\\n totalSupply = add(totalSupply, wad);\\n emit Transfer(address(0), usr, wad);\\n }\\n\\n function burn(address usr, uint256 wad) external {\\n require(balanceOf[usr] >= wad, \\\"VAI/insufficient-balance\\\");\\n if (usr != msg.sender && allowance[usr][msg.sender] != uint256(-1)) {\\n require(allowance[usr][msg.sender] >= wad, \\\"VAI/insufficient-allowance\\\");\\n allowance[usr][msg.sender] = sub(allowance[usr][msg.sender], wad);\\n }\\n balanceOf[usr] = sub(balanceOf[usr], wad);\\n totalSupply = sub(totalSupply, wad);\\n emit Transfer(usr, address(0), wad);\\n }\\n\\n function approve(address usr, uint256 wad) external returns (bool) {\\n allowance[msg.sender][usr] = wad;\\n emit Approval(msg.sender, usr, wad);\\n return true;\\n }\\n\\n // --- Alias ---\\n function push(address usr, uint256 wad) external {\\n transferFrom(msg.sender, usr, wad);\\n }\\n\\n function pull(address usr, uint256 wad) external {\\n transferFrom(usr, msg.sender, wad);\\n }\\n\\n function move(address src, address dst, uint256 wad) external {\\n transferFrom(src, dst, wad);\\n }\\n\\n // --- Approve by signature ---\\n function permit(\\n address holder,\\n address spender,\\n uint256 nonce,\\n uint256 expiry,\\n bool allowed,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external {\\n bytes32 digest = keccak256(\\n abi.encodePacked(\\n \\\"\\\\x19\\\\x01\\\",\\n DOMAIN_SEPARATOR,\\n keccak256(abi.encode(PERMIT_TYPEHASH, holder, spender, nonce, expiry, allowed))\\n )\\n );\\n\\n require(holder != address(0), \\\"VAI/invalid-address-0\\\");\\n require(holder == ecrecover(digest, v, r, s), \\\"VAI/invalid-permit\\\");\\n require(expiry == 0 || now <= expiry, \\\"VAI/permit-expired\\\");\\n require(nonce == nonces[holder]++, \\\"VAI/invalid-nonce\\\");\\n uint256 wad = allowed ? uint256(-1) : 0;\\n allowance[holder][spender] = wad;\\n emit Approval(holder, spender, wad);\\n }\\n}\\n\",\"keccak256\":\"0x375461c43acbc72bdb71baad0d14b0f58409794115a29416ad7cfa6fb2c65457\"},\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/lib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n// This program is free software: you can redistribute it and/or modify\\n// it under the terms of the GNU General Public License as published by\\n// the Free Software Foundation, either version 3 of the License, or\\n// (at your option) any later version.\\n\\n// This program is distributed in the hope that it will be useful,\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n// GNU General Public License for more details.\\n\\n// You should have received a copy of the GNU General Public License\\n// along with this program. If not, see <http://www.gnu.org/licenses/>.\\n\\npragma solidity ^0.5.16;\\n\\ncontract LibNote {\\n event LogNote(\\n bytes4 indexed sig,\\n address indexed usr,\\n bytes32 indexed arg1,\\n bytes32 indexed arg2,\\n bytes data\\n ) anonymous;\\n\\n modifier note() {\\n _;\\n assembly {\\n // log an 'anonymous' event with a constant 6 words of calldata\\n // and four indexed topics: selector, caller, arg1 and arg2\\n let mark := msize() // end of memory ensures zero\\n mstore(0x40, add(mark, 288)) // update free memory pointer\\n mstore(mark, 0x20) // bytes type data offset\\n mstore(add(mark, 0x20), 224) // bytes size (padded)\\n calldatacopy(add(mark, 0x40), 0, 224) // bytes payload\\n log4(\\n mark,\\n 288, // calldata\\n shl(224, shr(224, calldataload(0))), // msg.sig\\n caller(), // msg.sender\\n calldataload(4), // arg1\\n calldataload(36) // arg2\\n )\\n }\\n }\\n}\\n\",\"keccak256\":\"0x63dceabe7331a78e04306883f77921e20bca79930e92468779bfe81cbe239c68\"},\"contracts/test/VAI.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.5.16;\\nimport \\\"@venusprotocol/venus-protocol/contracts/Tokens/VAI/VAI.sol\\\";\\n\\ncontract VAIScenario is VAI {\\n constructor(uint256 chainId) public VAI(chainId) {}\\n}\\n\",\"keccak256\":\"0x04e9f797d05d2b91db45c63588ddc23209be9111199b2eadcffcd39e2ba7ec1f\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8,"contract":"contracts/test/VAI.sol:VAIScenario","label":"wards","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":68,"contract":"contracts/test/VAI.sol:VAIScenario","label":"totalSupply","offset":0,"slot":"1","type":"t_uint256"},{"astId":72,"contract":"contracts/test/VAI.sol:VAIScenario","label":"balanceOf","offset":0,"slot":"2","type":"t_mapping(t_address,t_uint256)"},{"astId":78,"contract":"contracts/test/VAI.sol:VAIScenario","label":"allowance","offset":0,"slot":"3","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":82,"contract":"contracts/test/VAI.sol:VAIScenario","label":"nonces","offset":0,"slot":"4","type":"t_mapping(t_address,t_uint256)"},{"astId":144,"contract":"contracts/test/VAI.sol:VAIScenario","label":"DOMAIN_SEPARATOR","offset":0,"slot":"5","type":"t_bytes32"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"methods":{}}}}}}}