Files
contract/deployment/alpha/out/ERC20.sol/ERC20.json
2023-11-16 17:36:43 -04:00

8252 lines
355 KiB
JSON

{
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x60806040523480156200001157600080fd5b506040516200105c3803806200105c833981016040819052620000349162000187565b600362000042838262000308565b50600462000051828262000308565b505050620003d5565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b03811182821017156200009857620000986200005a565b6040525050565b6000620000ab60405190565b809150620000ba838262000070565b50919050565b60006001600160401b03821115620000dc57620000dc6200005a565b50601f01601f191660200190565b60005b8381101562000107578181015183820152602001620000ed565b50506000910152565b6000620001276200012184620000c0565b6200009f565b809150838152848484011115620001415762000141600080fd5b62000151846020830185620000ea565b509392505050565b600082601f8301126200016f576200016f600080fd5b620001808383516020850162000110565b9392505050565b600080604083850312156200019f576200019f600080fd5b82516001600160401b03811115620001ba57620001ba600080fd5b620001c88582860162000159565b602085015190935090506001600160401b03811115620001eb57620001eb600080fd5b620001f98582860162000159565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200023057607f821692505b60208310810362000245576200024562000203565b5050919050565b60006200025d6200025a8381565b90565b92915050565b6200028c620002766200025a856200024c565b8254600385901b91821b60001990921b19161790565b90555050565b620002a06000838362000263565b5050565b81811015620002a057620002ba60008262000292565b600101620002a4565b601f8211156200030357600081815260209020601f840160051c81016020851015620002ec5750805b62000300601f850160051c830182620002a4565b50505b505050565b81516001600160401b038111156200032457620003246200005a565b6200033c8162000335845462000219565b84620002c3565b6020601f8211600181146200037557600083156200035a5750848201515b600019600385901b1c198116600185901b1785555062000300565b600084815260208120601f198516915b82811015620003a7578785015182556020948501946001909201910162000385565b5084821015620003c65783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610c7780620003e56000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610190578063a9059cbb146101a3578063dd62ed3e146101b657600080fd5b8063395093511461013f57806370a082311461015257806395d89b411461018857600080fd5b806318160ddd116100b257806318160ddd1461010c57806323b872dd1461011d578063313ce5671461013057600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101fc565b6040516100e39190610753565b60405180910390f35b6100ff6100fa3660046107c7565b61028e565b6040516100e39190610809565b6002545b6040516100e3919061081d565b6100ff61012b36600461082b565b6102a8565b60126040516100e3919061087d565b6100ff61014d3660046107c7565b6102cc565b61011061016036600461088b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d6610318565b6100ff61019e3660046107c7565b610327565b6100ff6101b13660046107c7565b6103ab565b6101106101c43660046108aa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020b90610908565b80601f016020809104026020016040519081016040528092919081815260200182805461023790610908565b80156102845780601f1061025957610100808354040283529160200191610284565b820191906000526020600020905b81548152906001019060200180831161026757829003601f168201915b5050505050905090565b60003361029c8185856103b9565b60019150505b92915050565b6000336102b68582856104c8565b6102c185858561056f565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061029c9082908690610313908790610966565b6103b9565b60606004805461020b90610908565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561039e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610395906109e0565b60405180910390fd5b6102c182868684036103b9565b60003361029c81858561056f565b73ffffffffffffffffffffffffffffffffffffffff8316610406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610a4a565b73ffffffffffffffffffffffffffffffffffffffff8216610453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ab4565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104bb90859061081d565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610569578181101561055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ac6565b61056984848484036103b9565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610b5b565b73ffffffffffffffffffffffffffffffffffffffff8216610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610bc5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610c2f565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106d490869061081d565b60405180910390a3610569565b60005b838110156106fc5781810151838201526020016106e4565b50506000910152565b600061070f825190565b808452602084016107248282602087016106e1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006107666020830184610705565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102a2565b6107948161076d565b811461079f57600080fd5b50565b8035806107ae8161078b565b5092915050565b80610794565b8035806107ae816107b5565b600080604083850312156107dd576107dd600080fd5b6107e784846107a2565b91506107f684602085016107bb565b90509250929050565b8015155b82525050565b602081016102a282846107ff565b80610803565b602081016102a28284610817565b60008060006060848603121561084357610843600080fd5b61084d85856107a2565b925061085c85602086016107a2565b915061086b85604086016107bb565b90509250925092565b60ff8116610803565b602081016102a28284610874565b6000602082840312156108a0576108a0600080fd5b61076683836107a2565b600080604083850312156108c0576108c0600080fd5b6108ca84846107a2565b91506107f684602085016107a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168061091e57607f821692505b602083108103610930576109306108d9565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810181818082111561097b5761097b610937565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102a260208301610983565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f726573730000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a2602083016109f2565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f737300000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610a5c565b6020815260006102a260208301601d81527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000602082015260400190565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f647265737300000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b03565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f657373000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b6d565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e6365000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610bd756fea2646970667358221220baa75156c66c0bd8aa8ef90496fd64050645b44e46a761a31af5b4f237680d8364736f6c63430008160033",
"sourceMap": "1401:11610:19:-:0;;;1976:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2042:5;:13;2050:5;2042;:13;:::i;:::-;-1:-1:-1;2065:7:19;:17;2075:7;2065;:17;:::i;:::-;;1976:113;;1401:11610;;650:127:69;711:10;706:3;702:20;699:1;692:31;742:4;739:1;732:15;766:4;763:1;756:15;782:246;-1:-1:-1;;635:2:69;615:14;;611:28;857:37;;-1:-1:-1;;;;;909:34:69;;945:22;;;906:62;903:88;;;971:18;;:::i;:::-;1007:2;1000:22;-1:-1:-1;;782:246:69:o;1033:168::-;1067:6;1104:20;76:2;70:9;;14:67;1104:20;1143:8;1133:18;;1160:35;1190:4;1180:8;1160:35;:::i;:::-;;1033:168;;;:::o;1206:184::-;1255:4;-1:-1:-1;;;;;1277:30:69;;1274:56;;;1310:18;;:::i;:::-;-1:-1:-1;635:2:69;615:14;-1:-1:-1;;611:28:69;1379:4;1347:37;;1206:184::o;1395:250::-;1480:1;1490:113;1504:6;1501:1;1498:13;1490:113;;;1580:11;;;1574:18;1561:11;;;1554:39;1526:2;1519:10;1490:113;;;-1:-1:-1;;1637:1:69;1619:16;;1612:27;1395:250::o;1650:452::-;1726:5;1761:53;1777:36;1806:6;1777:36;:::i;:::-;1761:53;:::i;:::-;1832:7;1823:16;;1864:6;1855:7;1848:23;1904:3;1895:6;1890:3;1886:16;1883:25;1880:140;;;1931:79;191:1;188;181:12;1931:79;2029:67;2089:6;2082:4;2073:7;2069:18;2064:3;2029:67;:::i;:::-;;1650:452;;;;;:::o;2107:332::-;2161:5;2214:3;2207:4;2199:6;2195:17;2191:27;2181:150;;2242:79;191:1;188;181:12;2242:79;2349:84;2429:3;2420:6;2414:13;2407:4;2399:6;2395:17;2349:84;:::i;:::-;2340:93;2107:332;-1:-1:-1;;;2107:332:69:o;2444:842::-;2543:6;2551;2604:2;2592:9;2583:7;2579:23;2575:32;2572:147;;;2630:79;191:1;188;181:12;2630:79;2742:16;;-1:-1:-1;;;;;2770:30:69;;2767:145;;;2823:79;191:1;188;181:12;2823:79;2931:61;2984:7;2975:6;2964:9;2960:22;2931:61;:::i;:::-;3038:2;3023:18;;3017:25;2921:71;;-1:-1:-1;3017:25:69;-1:-1:-1;;;;;;3054:32:69;;3051:147;;;3109:79;191:1;188;181:12;3109:79;3217:63;3272:7;3261:8;3250:9;3246:24;3217:63;:::i;:::-;3207:73;;;2444:842;;;;;:::o;3372:127::-;3433:10;3428:3;3424:20;3421:1;3414:31;3464:4;3461:1;3454:15;3488:4;3485:1;3478:15;3504:318;3589:1;3585:12;;;;;;3659;;;3680:63;;3736:4;3726:8;3722:19;3712:29;;3680:63;3789:2;3781:6;3778:14;3758:18;3755:38;3752:64;;3796:18;;:::i;:::-;3752:64;;3504:318;;;:::o;4601:138::-;4647:9;4684:49;4700:32;4725:5;4700:32;4472:67;4709:22;4532:5;4472:67;4684:49;4671:62;4601:138;-1:-1:-1;;4601:138:69:o;4814:210::-;4911:106;4960:56;4982:33;5009:5;4982:33;:::i;4960:56::-;4939:11;;4256:1;4252:18;;;4122:16;;;-1:-1:-1;;4122:16:69;;;4427:9;4416:21;4413:48;;4145:322;4911:106;4898:120;;-1:-1:-1;;4814:210:69:o;5097:156::-;5162:85;5072:3;5208:6;5202:4;5162:85;:::i;:::-;;;5097:156::o;5258:187::-;5338:3;5331:5;5328:14;5320:119;;;5392:37;5427:1;5420:5;5392:37;:::i;:::-;5365:1;5354:13;5320:119;;5450:419;5552:2;5547:3;5544:11;5541:322;;;3900:1;3893:14;;;3937:4;3924:18;;4036:2;4025:14;;4022:1;4018:22;5666:8;5662:41;5734:2;5722:10;5719:18;5716:49;;;-1:-1:-1;5755:8:69;5716:49;5778:75;4036:2;4025:14;;4022:1;4018:22;5822:8;5818:34;5805:11;5778:75;:::i;:::-;;;5541:322;5450:419;;;:::o;6320:1301::-;3353:12;;-1:-1:-1;;;;;6476:30:69;;6473:56;;;6509:18;;:::i;:::-;6538:97;6628:6;6588:38;6620:4;6614:11;6588:38;:::i;:::-;6582:4;6538:97;:::i;:::-;6684:4;6715:2;6704:14;;6732:1;6727:637;;;;7408:1;7425:6;7422:89;;;-1:-1:-1;7477:19:69;;;7471:26;7422:89;-1:-1:-1;;6100:1:69;6096:13;;;5955:16;6063:56;6053:67;;6301:1;6297:11;;;6286:23;7531:4;7524:81;;6697:918;;6727:637;3900:1;3893:14;;;3937:4;3924:18;;-1:-1:-1;;6763:20:69;;;6881:222;6895:7;6892:1;6889:14;6881:222;;;6977:19;;;6971:26;6956:42;;7084:4;7069:20;;;;7037:1;7025:14;;;;6911:12;6881:222;;;6885:3;7131:6;7122:7;7119:19;7116:189;;;7192:19;;;7186:26;-1:-1:-1;;6100:1:69;6096:13;;;;;5955:16;6063:56;6053:67;7229:62;;7116:189;-1:-1:-1;;;;7351:1:69;7335:14;;;7331:22;7318:36;;-1:-1:-1;6320:1301:69:o;:::-;1401:11610:19;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610190578063a9059cbb146101a3578063dd62ed3e146101b657600080fd5b8063395093511461013f57806370a082311461015257806395d89b411461018857600080fd5b806318160ddd116100b257806318160ddd1461010c57806323b872dd1461011d578063313ce5671461013057600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101fc565b6040516100e39190610753565b60405180910390f35b6100ff6100fa3660046107c7565b61028e565b6040516100e39190610809565b6002545b6040516100e3919061081d565b6100ff61012b36600461082b565b6102a8565b60126040516100e3919061087d565b6100ff61014d3660046107c7565b6102cc565b61011061016036600461088b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d6610318565b6100ff61019e3660046107c7565b610327565b6100ff6101b13660046107c7565b6103ab565b6101106101c43660046108aa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020b90610908565b80601f016020809104026020016040519081016040528092919081815260200182805461023790610908565b80156102845780601f1061025957610100808354040283529160200191610284565b820191906000526020600020905b81548152906001019060200180831161026757829003601f168201915b5050505050905090565b60003361029c8185856103b9565b60019150505b92915050565b6000336102b68582856104c8565b6102c185858561056f565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061029c9082908690610313908790610966565b6103b9565b60606004805461020b90610908565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561039e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610395906109e0565b60405180910390fd5b6102c182868684036103b9565b60003361029c81858561056f565b73ffffffffffffffffffffffffffffffffffffffff8316610406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610a4a565b73ffffffffffffffffffffffffffffffffffffffff8216610453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ab4565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104bb90859061081d565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610569578181101561055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ac6565b61056984848484036103b9565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610b5b565b73ffffffffffffffffffffffffffffffffffffffff8216610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610bc5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610c2f565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106d490869061081d565b60405180910390a3610569565b60005b838110156106fc5781810151838201526020016106e4565b50506000910152565b600061070f825190565b808452602084016107248282602087016106e1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006107666020830184610705565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102a2565b6107948161076d565b811461079f57600080fd5b50565b8035806107ae8161078b565b5092915050565b80610794565b8035806107ae816107b5565b600080604083850312156107dd576107dd600080fd5b6107e784846107a2565b91506107f684602085016107bb565b90509250929050565b8015155b82525050565b602081016102a282846107ff565b80610803565b602081016102a28284610817565b60008060006060848603121561084357610843600080fd5b61084d85856107a2565b925061085c85602086016107a2565b915061086b85604086016107bb565b90509250925092565b60ff8116610803565b602081016102a28284610874565b6000602082840312156108a0576108a0600080fd5b61076683836107a2565b600080604083850312156108c0576108c0600080fd5b6108ca84846107a2565b91506107f684602085016107a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168061091e57607f821692505b602083108103610930576109306108d9565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810181818082111561097b5761097b610937565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102a260208301610983565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f726573730000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a2602083016109f2565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f737300000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610a5c565b6020815260006102a260208301601d81527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000602082015260400190565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f647265737300000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b03565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f657373000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b6d565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e6365000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610bd756fea2646970667358221220baa75156c66c0bd8aa8ef90496fd64050645b44e46a761a31af5b4f237680d8364736f6c63430008160033",
"sourceMap": "1401:11610:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3242:106::-;3329:12;;3242:106;;;;;;;:::i;5190:286::-;;;;;;:::i;:::-;;:::i;3091:91::-;3173:2;3091:91;;;;;;:::i;5871:234::-;;;;;;:::i;:::-;;:::i;3406:125::-;;;;;;:::i;:::-;3506:18;;3480:7;3506:18;;;;;;;;;;;;3406:125;2365:102;;;:::i;6592:427::-;;;;;;:::i;:::-;;:::i;3727:189::-;;;;;;:::i;:::-;;:::i;3974:149::-;;;;;;:::i;:::-;4089:18;;;;4063:7;4089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3974:149;2154:98;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;719:10:25;4568:32:19;719:10:25;4584:7:19;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;;:::o;5190:286::-;5317:4;719:10:25;5373:38:19;5389:4;719:10:25;5404:6:19;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;-1:-1:-1;5465:4:19;;5190:286;-1:-1:-1;;;;5190:286:19:o;5871:234::-;719:10:25;5959:4:19;4089:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5959:4;;719:10:25;6013:64:19;;719:10:25;;4089:27:19;;6038:38;;6066:10;;6038:38;:::i;:::-;6013:8;:64::i;2365:102::-;2421:13;2453:7;2446:14;;;;;:::i;6592:427::-;719:10:25;6685:4:19;4089:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6685:4;;719:10:25;6829:15:19;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;3727:189::-;3806:4;719:10:25;3860:28:19;719:10:25;3877:2:19;3881:6;3860:9;:28::i;10504:370::-;10635:19;;;10627:68;;;;;;;;;;;;:::i;:::-;10713:21;;;10705:68;;;;;;;;;;;;:::i;:::-;10784:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;10835:32;;;;;10814:6;;10835:32;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;4089:18;;;;11285:24;4089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;11371:17;11351:37;;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11275:321;11155:441;;;:::o;7473:818::-;7599:18;;;7591:68;;;;;;;;;;;;:::i;:::-;7677:16;;;7669:64;;;;;;;;;;;;:::i;:::-;7815:15;;;7793:19;7815:15;;;;;;;;;;;7848:21;;;;7840:72;;;;;;;;;;;;:::i;:::-;7946:15;;;;:9;:15;;;;;;;;;;;7964:20;;;7946:38;;8161:13;;;;;;;;;;:23;;;;;;8210:26;;;;;;7978:6;;8210:26;:::i;:::-;;;;;;;;8247:37;12180:121;250:250:69;335:1;345:113;359:6;356:1;353:13;345:113;;;435:11;;;429:18;416:11;;;409:39;381:2;374:10;345:113;;;-1:-1:-1;;492:1:69;474:16;;467:27;250:250::o;672:306::-;714:3;746:26;766:5;76:12;;14:76;746:26;182:19;;;234:4;225:14;;851:67;911:6;904:5;897:4;890:5;886:16;851:67;:::i;:::-;594:66;589:2;578:14;;574:87;934:38;;672:306;-1:-1:-1;;;;672:306:69:o;983:220::-;1132:2;1121:9;1114:21;1095:4;1152:45;1193:2;1182:9;1178:18;1170:6;1152:45;:::i;:::-;1144:53;983:220;-1:-1:-1;;;983:220:69:o;1455:96::-;1490:7;1401:42;1390:54;;1523:22;1322:128;1556:122;1631:22;1647:5;1631:22;:::i;:::-;1624:5;1621:33;1611:61;;1668:1;1665;1658:12;1611:61;1556:122;:::o;1683:172::-;1762:20;;;1816:33;1762:20;1816:33;:::i;:::-;;1683:172;;;;:::o;1932:122::-;2023:5;2007:22;1860:67;2059:172;2138:20;;;2192:33;2138:20;2192:33;:::i;2236:373::-;2304:6;2312;2365:2;2353:9;2344:7;2340:23;2336:32;2333:147;;;2391:79;1401:11610:19;;;2391:79:69;2499:38;2529:7;2518:9;2499:38;:::i;:::-;2489:48;;2556:47;2595:7;2590:2;2579:9;2575:18;2556:47;:::i;:::-;2546:57;;2236:373;;;;;:::o;2711:89::-;2686:13;;2679:21;2774:19;2769:3;2762:32;;;2711:89::o;2805:180::-;2933:2;2918:18;;2945:34;2922:9;2961:6;2945:34;:::i;2990:95::-;3072:5;3056:22;1860:67;3090:189;3224:2;3209:18;;3236:37;3213:9;3255:6;3236:37;:::i;3284:456::-;3361:6;3369;3377;3430:2;3418:9;3409:7;3405:23;3401:32;3398:147;;;3456:79;1401:11610:19;;;3456:79:69;3564:38;3594:7;3583:9;3564:38;:::i;:::-;3554:48;;3621:47;3660:7;3655:2;3644:9;3640:18;3621:47;:::i;:::-;3611:57;;3687:47;3726:7;3721:2;3710:9;3706:18;3687:47;:::i;:::-;3677:57;;3284:456;;;;;:::o;3826:91::-;3814:4;3803:16;;3890:20;3745:76;3922:183;4052:2;4037:18;;4064:35;4041:9;4081:6;4064:35;:::i;4110:290::-;4169:6;4222:2;4210:9;4201:7;4197:23;4193:32;4190:147;;;4248:79;1401:11610:19;;;4248:79:69;4356:38;4386:7;4375:9;4356:38;:::i;4405:373::-;4473:6;4481;4534:2;4522:9;4513:7;4509:23;4505:32;4502:147;;;4560:79;1401:11610:19;;;4560:79:69;4668:38;4698:7;4687:9;4668:38;:::i;:::-;4658:48;;4725:47;4764:7;4759:2;4748:9;4744:18;4725:47;:::i;4783:184::-;4835:77;4832:1;4825:88;4932:4;4929:1;4922:15;4956:4;4953:1;4946:15;4972:318;5057:1;5053:12;;;;;;5127;;;5148:63;;5204:4;5194:8;5190:19;5180:29;;5148:63;5257:2;5249:6;5246:14;5226:18;5223:38;5220:64;;5264:18;;:::i;:::-;5220:64;;4972:318;;;:::o;5295:184::-;5347:77;5344:1;5337:88;5444:4;5441:1;5434:15;5468:4;5465:1;5458:15;5484:213;5593:28;;;5569:1;5593:28;5654:14;;;5651:40;;;5671:18;;:::i;:::-;5651:40;;5484:213;;;;:::o;5924:262::-;6043:2;182:19;;5971:3;234:4;225:14;;5837:34;5822:50;;5905:7;5900:2;5888:15;;5881:32;6055:95;6177:2;6166:14;;5924:262;-1:-1:-1;;5924:262:69:o;6191:277::-;6393:2;6382:9;6375:21;6356:4;6413:49;6458:2;6447:9;6443:18;6413:49;:::i;6694:262::-;6813:2;182:19;;6741:3;234:4;225:14;;6608:34;6593:50;;6676:6;6671:2;6659:15;;6652:31;6825:95;6473:216;6961:277;7163:2;7152:9;7145:21;7126:4;7183:49;7228:2;7217:9;7213:18;7183:49;:::i;7462:262::-;7581:2;182:19;;7509:3;234:4;225:14;;7378:34;7363:50;;7446:4;7441:2;7429:15;;7422:29;7593:95;7243:214;7729:277;7931:2;7920:9;7913:21;7894:4;7951:49;7996:2;7985:9;7981:18;7951:49;:::i;8456:277::-;8658:2;8647:9;8640:21;8621:4;8678:49;8723:2;8712:9;8708:18;8308:2;182:19;;8146:31;234:4;225:14;;8131:47;8431:14;;;8189:262;8960;9079:2;182:19;;9007:3;234:4;225:14;;8873:34;8858:50;;8941:7;8936:2;8924:15;;8917:32;9091:95;8738:217;9227:277;9429:2;9418:9;9411:21;9392:4;9449:49;9494:2;9483:9;9479:18;9449:49;:::i;9729:262::-;9848:2;182:19;;9776:3;234:4;225:14;;9644:34;9629:50;;9712:5;9707:2;9695:15;;9688:30;9860:95;9509:215;9996:277;10198:2;10187:9;10180:21;10161:4;10218:49;10263:2;10252:9;10248:18;10218:49;:::i;10501:257::-;10615:2;182:19;;10543:3;234:4;225:14;;10413:34;10398:50;;10481:8;10476:2;10464:15;;10457:33;10627:95;10278:218;10763:272;10965:2;10954:9;10947:21;10928:4;10985:44;11025:2;11014:9;11010:18;10985:44;:::i",
"linkReferences": {}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"increaseAllowance(address,uint256)": "39509351",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "spender",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Approval",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "to",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Transfer",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"constructor": {
"details": "Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@uniswap/v3-core/=lib_uniswap/v3-core/",
"@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"v3-core/=lib_uniswap/v3-core/",
"v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
],
"optimizer": {
"runs": 999999999,
"details": {
"peephole": true,
"inliner": true,
"jumpdestRemover": true,
"orderLiterals": true,
"deduplicate": true,
"cse": true,
"constantOptimizer": true,
"yul": true,
"yulDetails": {
"stackAllocation": true,
"optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
}
}
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": "ERC20"
},
"libraries": {}
},
"sources": {
"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": {
"keccak256": "0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d",
"urls": [
"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d",
"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b",
"urls": [
"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34",
"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca",
"urls": [
"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd",
"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
],
"license": "MIT"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
"id": 43479,
"exportedSymbols": {
"Context": [
43777
],
"ERC20": [
43478
],
"IERC20": [
43556
],
"IERC20Metadata": [
43581
]
},
"nodeType": "SourceUnit",
"src": "105:12907:19",
"nodes": [
{
"id": 42893,
"nodeType": "PragmaDirective",
"src": "105:23:19",
"nodes": [],
"literals": [
"solidity",
"^",
"0.8",
".0"
]
},
{
"id": 42894,
"nodeType": "ImportDirective",
"src": "130:22:19",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol",
"file": "./IERC20.sol",
"nameLocation": "-1:-1:-1",
"scope": 43479,
"sourceUnit": 43557,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 42895,
"nodeType": "ImportDirective",
"src": "153:41:19",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol",
"file": "./extensions/IERC20Metadata.sol",
"nameLocation": "-1:-1:-1",
"scope": 43479,
"sourceUnit": 43582,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 42896,
"nodeType": "ImportDirective",
"src": "195:33:19",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol",
"file": "../../utils/Context.sol",
"nameLocation": "-1:-1:-1",
"scope": 43479,
"sourceUnit": 43778,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 43478,
"nodeType": "ContractDefinition",
"src": "1401:11610:19",
"nodes": [
{
"id": 42907,
"nodeType": "VariableDeclaration",
"src": "1457:45:19",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_balances",
"nameLocation": "1493:9:19",
"scope": 43478,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 42906,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 42904,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1465:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1457:27:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 42905,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1476:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "private"
},
{
"id": 42913,
"nodeType": "VariableDeclaration",
"src": "1509:67:19",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_allowances",
"nameLocation": "1565:11:19",
"scope": 43478,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
},
"typeName": {
"id": 42912,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 42908,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1517:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1509:47:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 42911,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 42909,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1536:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1528:27:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 42910,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1547:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
}
},
"visibility": "private"
},
{
"id": 42915,
"nodeType": "VariableDeclaration",
"src": "1583:28:19",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_totalSupply",
"nameLocation": "1599:12:19",
"scope": 43478,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 42914,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1583:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "private"
},
{
"id": 42917,
"nodeType": "VariableDeclaration",
"src": "1618:20:19",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_name",
"nameLocation": "1633:5:19",
"scope": 43478,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 42916,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1618:6:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"id": 42919,
"nodeType": "VariableDeclaration",
"src": "1644:22:19",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_symbol",
"nameLocation": "1659:7:19",
"scope": 43478,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 42918,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1644:6:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"id": 42936,
"nodeType": "FunctionDefinition",
"src": "1976:113:19",
"nodes": [],
"body": {
"id": 42935,
"nodeType": "Block",
"src": "2032:57:19",
"nodes": [],
"statements": [
{
"expression": {
"id": 42929,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 42927,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42917,
"src": "2042:5:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 42928,
"name": "name_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42922,
"src": "2050:5:19",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "2042:13:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 42930,
"nodeType": "ExpressionStatement",
"src": "2042:13:19"
},
{
"expression": {
"id": 42933,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 42931,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42919,
"src": "2065:7:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 42932,
"name": "symbol_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42924,
"src": "2075:7:19",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "2065:17:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 42934,
"nodeType": "ExpressionStatement",
"src": "2065:17:19"
}
]
},
"documentation": {
"id": 42920,
"nodeType": "StructuredDocumentation",
"src": "1673:298:19",
"text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 42925,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42922,
"mutability": "mutable",
"name": "name_",
"nameLocation": "2002:5:19",
"nodeType": "VariableDeclaration",
"scope": 42936,
"src": "1988:19:19",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 42921,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1988:6:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 42924,
"mutability": "mutable",
"name": "symbol_",
"nameLocation": "2023:7:19",
"nodeType": "VariableDeclaration",
"scope": 42936,
"src": "2009:21:19",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 42923,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2009:6:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1987:44:19"
},
"returnParameters": {
"id": 42926,
"nodeType": "ParameterList",
"parameters": [],
"src": "2032:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 42946,
"nodeType": "FunctionDefinition",
"src": "2154:98:19",
"nodes": [],
"body": {
"id": 42945,
"nodeType": "Block",
"src": "2223:29:19",
"nodes": [],
"statements": [
{
"expression": {
"id": 42943,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42917,
"src": "2240:5:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 42942,
"id": 42944,
"nodeType": "Return",
"src": "2233:12:19"
}
]
},
"baseFunctions": [
43568
],
"documentation": {
"id": 42937,
"nodeType": "StructuredDocumentation",
"src": "2095:54:19",
"text": " @dev Returns the name of the token."
},
"functionSelector": "06fdde03",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "name",
"nameLocation": "2163:4:19",
"overrides": {
"id": 42939,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2190:8:19"
},
"parameters": {
"id": 42938,
"nodeType": "ParameterList",
"parameters": [],
"src": "2167:2:19"
},
"returnParameters": {
"id": 42942,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42941,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 42946,
"src": "2208:13:19",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 42940,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2208:6:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2207:15:19"
},
"scope": 43478,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 42956,
"nodeType": "FunctionDefinition",
"src": "2365:102:19",
"nodes": [],
"body": {
"id": 42955,
"nodeType": "Block",
"src": "2436:31:19",
"nodes": [],
"statements": [
{
"expression": {
"id": 42953,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42919,
"src": "2453:7:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 42952,
"id": 42954,
"nodeType": "Return",
"src": "2446:14:19"
}
]
},
"baseFunctions": [
43574
],
"documentation": {
"id": 42947,
"nodeType": "StructuredDocumentation",
"src": "2258:102:19",
"text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
},
"functionSelector": "95d89b41",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "symbol",
"nameLocation": "2374:6:19",
"overrides": {
"id": 42949,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2403:8:19"
},
"parameters": {
"id": 42948,
"nodeType": "ParameterList",
"parameters": [],
"src": "2380:2:19"
},
"returnParameters": {
"id": 42952,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42951,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 42956,
"src": "2421:13:19",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 42950,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2421:6:19",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2420:15:19"
},
"scope": 43478,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 42966,
"nodeType": "FunctionDefinition",
"src": "3091:91:19",
"nodes": [],
"body": {
"id": 42965,
"nodeType": "Block",
"src": "3156:26:19",
"nodes": [],
"statements": [
{
"expression": {
"hexValue": "3138",
"id": 42963,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3173:2:19",
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
},
"functionReturnParameters": 42962,
"id": 42964,
"nodeType": "Return",
"src": "3166:9:19"
}
]
},
"baseFunctions": [
43580
],
"documentation": {
"id": 42957,
"nodeType": "StructuredDocumentation",
"src": "2473:613:19",
"text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
},
"functionSelector": "313ce567",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decimals",
"nameLocation": "3100:8:19",
"overrides": {
"id": 42959,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3131:8:19"
},
"parameters": {
"id": 42958,
"nodeType": "ParameterList",
"parameters": [],
"src": "3108:2:19"
},
"returnParameters": {
"id": 42962,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42961,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 42966,
"src": "3149:5:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 42960,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3149:5:19",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "3148:7:19"
},
"scope": 43478,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 42976,
"nodeType": "FunctionDefinition",
"src": "3242:106:19",
"nodes": [],
"body": {
"id": 42975,
"nodeType": "Block",
"src": "3312:36:19",
"nodes": [],
"statements": [
{
"expression": {
"id": 42973,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42915,
"src": "3329:12:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 42972,
"id": 42974,
"nodeType": "Return",
"src": "3322:19:19"
}
]
},
"baseFunctions": [
43505
],
"documentation": {
"id": 42967,
"nodeType": "StructuredDocumentation",
"src": "3188:49:19",
"text": " @dev See {IERC20-totalSupply}."
},
"functionSelector": "18160ddd",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nameLocation": "3251:11:19",
"overrides": {
"id": 42969,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3285:8:19"
},
"parameters": {
"id": 42968,
"nodeType": "ParameterList",
"parameters": [],
"src": "3262:2:19"
},
"returnParameters": {
"id": 42972,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42971,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 42976,
"src": "3303:7:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 42970,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3303:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3302:9:19"
},
"scope": 43478,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 42990,
"nodeType": "FunctionDefinition",
"src": "3406:125:19",
"nodes": [],
"body": {
"id": 42989,
"nodeType": "Block",
"src": "3489:42:19",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"id": 42985,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42907,
"src": "3506:9:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 42987,
"indexExpression": {
"id": 42986,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42979,
"src": "3516:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3506:18:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 42984,
"id": 42988,
"nodeType": "Return",
"src": "3499:25:19"
}
]
},
"baseFunctions": [
43513
],
"documentation": {
"id": 42977,
"nodeType": "StructuredDocumentation",
"src": "3354:47:19",
"text": " @dev See {IERC20-balanceOf}."
},
"functionSelector": "70a08231",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "3415:9:19",
"overrides": {
"id": 42981,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3462:8:19"
},
"parameters": {
"id": 42980,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42979,
"mutability": "mutable",
"name": "account",
"nameLocation": "3433:7:19",
"nodeType": "VariableDeclaration",
"scope": 42990,
"src": "3425:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 42978,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3425:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3424:17:19"
},
"returnParameters": {
"id": 42984,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42983,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 42990,
"src": "3480:7:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 42982,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3480:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3479:9:19"
},
"scope": 43478,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 43015,
"nodeType": "FunctionDefinition",
"src": "3727:189:19",
"nodes": [],
"body": {
"id": 43014,
"nodeType": "Block",
"src": "3812:104:19",
"nodes": [],
"statements": [
{
"assignments": [
43002
],
"declarations": [
{
"constant": false,
"id": 43002,
"mutability": "mutable",
"name": "owner",
"nameLocation": "3830:5:19",
"nodeType": "VariableDeclaration",
"scope": 43014,
"src": "3822:13:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43001,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3822:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 43005,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 43003,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43767,
"src": "3838:10:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 43004,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3838:12:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3822:28:19"
},
{
"expression": {
"arguments": [
{
"id": 43007,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43002,
"src": "3870:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43008,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42993,
"src": "3877:2:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43009,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42995,
"src": "3881:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43006,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43238,
"src": "3860:9:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43010,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3860:28:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43011,
"nodeType": "ExpressionStatement",
"src": "3860:28:19"
},
{
"expression": {
"hexValue": "74727565",
"id": 43012,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3905:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 43000,
"id": 43013,
"nodeType": "Return",
"src": "3898:11:19"
}
]
},
"baseFunctions": [
43523
],
"documentation": {
"id": 42991,
"nodeType": "StructuredDocumentation",
"src": "3537:185:19",
"text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
},
"functionSelector": "a9059cbb",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "transfer",
"nameLocation": "3736:8:19",
"overrides": {
"id": 42997,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3788:8:19"
},
"parameters": {
"id": 42996,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42993,
"mutability": "mutable",
"name": "to",
"nameLocation": "3753:2:19",
"nodeType": "VariableDeclaration",
"scope": 43015,
"src": "3745:10:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 42992,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3745:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 42995,
"mutability": "mutable",
"name": "amount",
"nameLocation": "3765:6:19",
"nodeType": "VariableDeclaration",
"scope": 43015,
"src": "3757:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 42994,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3757:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3744:28:19"
},
"returnParameters": {
"id": 43000,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 42999,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43015,
"src": "3806:4:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 42998,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3806:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "3805:6:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 43033,
"nodeType": "FunctionDefinition",
"src": "3974:149:19",
"nodes": [],
"body": {
"id": 43032,
"nodeType": "Block",
"src": "4072:51:19",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"baseExpression": {
"id": 43026,
"name": "_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42913,
"src": "4089:11:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 43028,
"indexExpression": {
"id": 43027,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43018,
"src": "4101:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4089:18:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43030,
"indexExpression": {
"id": 43029,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43020,
"src": "4108:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4089:27:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 43025,
"id": 43031,
"nodeType": "Return",
"src": "4082:34:19"
}
]
},
"baseFunctions": [
43533
],
"documentation": {
"id": 43016,
"nodeType": "StructuredDocumentation",
"src": "3922:47:19",
"text": " @dev See {IERC20-allowance}."
},
"functionSelector": "dd62ed3e",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "allowance",
"nameLocation": "3983:9:19",
"overrides": {
"id": 43022,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4045:8:19"
},
"parameters": {
"id": 43021,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43018,
"mutability": "mutable",
"name": "owner",
"nameLocation": "4001:5:19",
"nodeType": "VariableDeclaration",
"scope": 43033,
"src": "3993:13:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43017,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3993:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43020,
"mutability": "mutable",
"name": "spender",
"nameLocation": "4016:7:19",
"nodeType": "VariableDeclaration",
"scope": 43033,
"src": "4008:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43019,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4008:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3992:32:19"
},
"returnParameters": {
"id": 43025,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43024,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43033,
"src": "4063:7:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43023,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4063:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4062:9:19"
},
"scope": 43478,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 43058,
"nodeType": "FunctionDefinition",
"src": "4431:197:19",
"nodes": [],
"body": {
"id": 43057,
"nodeType": "Block",
"src": "4520:108:19",
"nodes": [],
"statements": [
{
"assignments": [
43045
],
"declarations": [
{
"constant": false,
"id": 43045,
"mutability": "mutable",
"name": "owner",
"nameLocation": "4538:5:19",
"nodeType": "VariableDeclaration",
"scope": 43057,
"src": "4530:13:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43044,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4530:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 43048,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 43046,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43767,
"src": "4546:10:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 43047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4546:12:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4530:28:19"
},
{
"expression": {
"arguments": [
{
"id": 43050,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43045,
"src": "4577:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43051,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43036,
"src": "4584:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43052,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43038,
"src": "4593:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43049,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43412,
"src": "4568:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4568:32:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43054,
"nodeType": "ExpressionStatement",
"src": "4568:32:19"
},
{
"expression": {
"hexValue": "74727565",
"id": 43055,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4617:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 43043,
"id": 43056,
"nodeType": "Return",
"src": "4610:11:19"
}
]
},
"baseFunctions": [
43543
],
"documentation": {
"id": 43034,
"nodeType": "StructuredDocumentation",
"src": "4129:297:19",
"text": " @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."
},
"functionSelector": "095ea7b3",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "approve",
"nameLocation": "4440:7:19",
"overrides": {
"id": 43040,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4496:8:19"
},
"parameters": {
"id": 43039,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43036,
"mutability": "mutable",
"name": "spender",
"nameLocation": "4456:7:19",
"nodeType": "VariableDeclaration",
"scope": 43058,
"src": "4448:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43035,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4448:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43038,
"mutability": "mutable",
"name": "amount",
"nameLocation": "4473:6:19",
"nodeType": "VariableDeclaration",
"scope": 43058,
"src": "4465:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43037,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4465:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4447:33:19"
},
"returnParameters": {
"id": 43043,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43042,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43058,
"src": "4514:4:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 43041,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4514:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4513:6:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 43091,
"nodeType": "FunctionDefinition",
"src": "5190:286:19",
"nodes": [],
"body": {
"id": 43090,
"nodeType": "Block",
"src": "5323:153:19",
"nodes": [],
"statements": [
{
"assignments": [
43072
],
"declarations": [
{
"constant": false,
"id": 43072,
"mutability": "mutable",
"name": "spender",
"nameLocation": "5341:7:19",
"nodeType": "VariableDeclaration",
"scope": 43090,
"src": "5333:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43071,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5333:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 43075,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 43073,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43767,
"src": "5351:10:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 43074,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5351:12:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5333:30:19"
},
{
"expression": {
"arguments": [
{
"id": 43077,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43061,
"src": "5389:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43078,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43072,
"src": "5395:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43079,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43065,
"src": "5404:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43076,
"name": "_spendAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43455,
"src": "5373:15:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43080,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5373:38:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43081,
"nodeType": "ExpressionStatement",
"src": "5373:38:19"
},
{
"expression": {
"arguments": [
{
"id": 43083,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43061,
"src": "5431:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43084,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43063,
"src": "5437:2:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43085,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43065,
"src": "5441:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43082,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43238,
"src": "5421:9:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43086,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5421:27:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43087,
"nodeType": "ExpressionStatement",
"src": "5421:27:19"
},
{
"expression": {
"hexValue": "74727565",
"id": 43088,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5465:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 43070,
"id": 43089,
"nodeType": "Return",
"src": "5458:11:19"
}
]
},
"baseFunctions": [
43555
],
"documentation": {
"id": 43059,
"nodeType": "StructuredDocumentation",
"src": "4634:551:19",
"text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."
},
"functionSelector": "23b872dd",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nameLocation": "5199:12:19",
"overrides": {
"id": 43067,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5299:8:19"
},
"parameters": {
"id": 43066,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43061,
"mutability": "mutable",
"name": "from",
"nameLocation": "5229:4:19",
"nodeType": "VariableDeclaration",
"scope": 43091,
"src": "5221:12:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43060,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5221:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43063,
"mutability": "mutable",
"name": "to",
"nameLocation": "5251:2:19",
"nodeType": "VariableDeclaration",
"scope": 43091,
"src": "5243:10:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43062,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5243:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43065,
"mutability": "mutable",
"name": "amount",
"nameLocation": "5271:6:19",
"nodeType": "VariableDeclaration",
"scope": 43091,
"src": "5263:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43064,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5263:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5211:72:19"
},
"returnParameters": {
"id": 43070,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43069,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43091,
"src": "5317:4:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 43068,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5317:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "5316:6:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 43120,
"nodeType": "FunctionDefinition",
"src": "5871:234:19",
"nodes": [],
"body": {
"id": 43119,
"nodeType": "Block",
"src": "5965:140:19",
"nodes": [],
"statements": [
{
"assignments": [
43102
],
"declarations": [
{
"constant": false,
"id": 43102,
"mutability": "mutable",
"name": "owner",
"nameLocation": "5983:5:19",
"nodeType": "VariableDeclaration",
"scope": 43119,
"src": "5975:13:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43101,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5975:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 43105,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 43103,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43767,
"src": "5991:10:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 43104,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5991:12:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5975:28:19"
},
{
"expression": {
"arguments": [
{
"id": 43107,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43102,
"src": "6022:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43108,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43094,
"src": "6029:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43114,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 43110,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43102,
"src": "6048:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43111,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43094,
"src": "6055:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 43109,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43033,
"src": "6038:9:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view returns (uint256)"
}
},
"id": 43112,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6038:25:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 43113,
"name": "addedValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43096,
"src": "6066:10:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6038:38:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43106,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43412,
"src": "6013:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43115,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6013:64:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43116,
"nodeType": "ExpressionStatement",
"src": "6013:64:19"
},
{
"expression": {
"hexValue": "74727565",
"id": 43117,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6094:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 43100,
"id": 43118,
"nodeType": "Return",
"src": "6087:11:19"
}
]
},
"documentation": {
"id": 43092,
"nodeType": "StructuredDocumentation",
"src": "5482:384:19",
"text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
},
"functionSelector": "39509351",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "increaseAllowance",
"nameLocation": "5880:17:19",
"parameters": {
"id": 43097,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43094,
"mutability": "mutable",
"name": "spender",
"nameLocation": "5906:7:19",
"nodeType": "VariableDeclaration",
"scope": 43120,
"src": "5898:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43093,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5898:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43096,
"mutability": "mutable",
"name": "addedValue",
"nameLocation": "5923:10:19",
"nodeType": "VariableDeclaration",
"scope": 43120,
"src": "5915:18:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43095,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5915:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5897:37:19"
},
"returnParameters": {
"id": 43100,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43099,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43120,
"src": "5959:4:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 43098,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5959:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "5958:6:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 43161,
"nodeType": "FunctionDefinition",
"src": "6592:427:19",
"nodes": [],
"body": {
"id": 43160,
"nodeType": "Block",
"src": "6691:328:19",
"nodes": [],
"statements": [
{
"assignments": [
43131
],
"declarations": [
{
"constant": false,
"id": 43131,
"mutability": "mutable",
"name": "owner",
"nameLocation": "6709:5:19",
"nodeType": "VariableDeclaration",
"scope": 43160,
"src": "6701:13:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43130,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6701:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 43134,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 43132,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43767,
"src": "6717:10:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 43133,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6717:12:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6701:28:19"
},
{
"assignments": [
43136
],
"declarations": [
{
"constant": false,
"id": 43136,
"mutability": "mutable",
"name": "currentAllowance",
"nameLocation": "6747:16:19",
"nodeType": "VariableDeclaration",
"scope": 43160,
"src": "6739:24:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43135,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6739:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 43141,
"initialValue": {
"arguments": [
{
"id": 43138,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43131,
"src": "6776:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43139,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43123,
"src": "6783:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 43137,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43033,
"src": "6766:9:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view returns (uint256)"
}
},
"id": 43140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6766:25:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6739:52:19"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43143,
"name": "currentAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43136,
"src": "6809:16:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 43144,
"name": "subtractedValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43125,
"src": "6829:15:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6809:35:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
"id": 43146,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6846:39:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
"typeString": "literal_string \"ERC20: decreased allowance below zero\""
},
"value": "ERC20: decreased allowance below zero"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
"typeString": "literal_string \"ERC20: decreased allowance below zero\""
}
],
"id": 43142,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6801:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43147,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6801:85:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43148,
"nodeType": "ExpressionStatement",
"src": "6801:85:19"
},
{
"id": 43157,
"nodeType": "UncheckedBlock",
"src": "6896:95:19",
"statements": [
{
"expression": {
"arguments": [
{
"id": 43150,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43131,
"src": "6929:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43151,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43123,
"src": "6936:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43152,
"name": "currentAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43136,
"src": "6945:16:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 43153,
"name": "subtractedValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43125,
"src": "6964:15:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6945:34:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43149,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43412,
"src": "6920:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43155,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6920:60:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43156,
"nodeType": "ExpressionStatement",
"src": "6920:60:19"
}
]
},
{
"expression": {
"hexValue": "74727565",
"id": 43158,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7008:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 43129,
"id": 43159,
"nodeType": "Return",
"src": "7001:11:19"
}
]
},
"documentation": {
"id": 43121,
"nodeType": "StructuredDocumentation",
"src": "6111:476:19",
"text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
},
"functionSelector": "a457c2d7",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decreaseAllowance",
"nameLocation": "6601:17:19",
"parameters": {
"id": 43126,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43123,
"mutability": "mutable",
"name": "spender",
"nameLocation": "6627:7:19",
"nodeType": "VariableDeclaration",
"scope": 43161,
"src": "6619:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43122,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6619:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43125,
"mutability": "mutable",
"name": "subtractedValue",
"nameLocation": "6644:15:19",
"nodeType": "VariableDeclaration",
"scope": 43161,
"src": "6636:23:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43124,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6636:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6618:42:19"
},
"returnParameters": {
"id": 43129,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43128,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43161,
"src": "6685:4:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 43127,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "6685:4:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "6684:6:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 43238,
"nodeType": "FunctionDefinition",
"src": "7473:818:19",
"nodes": [],
"body": {
"id": 43237,
"nodeType": "Block",
"src": "7581:710:19",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 43177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43172,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43164,
"src": "7599:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 43175,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7615:1:19",
"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": 43174,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7607:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43173,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7607:7:19",
"typeDescriptions": {}
}
},
"id": 43176,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7607:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7599:18:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
"id": 43178,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7619:39:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
"typeString": "literal_string \"ERC20: transfer from the zero address\""
},
"value": "ERC20: transfer from the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
"typeString": "literal_string \"ERC20: transfer from the zero address\""
}
],
"id": 43171,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7591:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7591:68:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43180,
"nodeType": "ExpressionStatement",
"src": "7591:68:19"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 43187,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43182,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43166,
"src": "7677:2:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 43185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7691:1:19",
"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": 43184,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7683:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43183,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7683:7:19",
"typeDescriptions": {}
}
},
"id": 43186,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7683:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7677:16:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
"id": 43188,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7695:37:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
"typeString": "literal_string \"ERC20: transfer to the zero address\""
},
"value": "ERC20: transfer to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
"typeString": "literal_string \"ERC20: transfer to the zero address\""
}
],
"id": 43181,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7669:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7669:64:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43190,
"nodeType": "ExpressionStatement",
"src": "7669:64:19"
},
{
"expression": {
"arguments": [
{
"id": 43192,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43164,
"src": "7765:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43193,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43166,
"src": "7771:2:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43194,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43168,
"src": "7775:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43191,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43466,
"src": "7744:20:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43195,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7744:38:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43196,
"nodeType": "ExpressionStatement",
"src": "7744:38:19"
},
{
"assignments": [
43198
],
"declarations": [
{
"constant": false,
"id": 43198,
"mutability": "mutable",
"name": "fromBalance",
"nameLocation": "7801:11:19",
"nodeType": "VariableDeclaration",
"scope": 43237,
"src": "7793:19:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43197,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7793:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 43202,
"initialValue": {
"baseExpression": {
"id": 43199,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42907,
"src": "7815:9:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43201,
"indexExpression": {
"id": 43200,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43164,
"src": "7825:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7815:15:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7793:37:19"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43206,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43204,
"name": "fromBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43198,
"src": "7848:11:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 43205,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43168,
"src": "7863:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7848:21:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
"id": 43207,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7871:40:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
"typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
},
"value": "ERC20: transfer amount exceeds balance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
"typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
}
],
"id": 43203,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7840:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7840:72:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43209,
"nodeType": "ExpressionStatement",
"src": "7840:72:19"
},
{
"id": 43224,
"nodeType": "UncheckedBlock",
"src": "7922:273:19",
"statements": [
{
"expression": {
"id": 43216,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 43210,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42907,
"src": "7946:9:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43212,
"indexExpression": {
"id": 43211,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43164,
"src": "7956:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7946:15:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43213,
"name": "fromBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43198,
"src": "7964:11:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 43214,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43168,
"src": "7978:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7964:20:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7946:38:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 43217,
"nodeType": "ExpressionStatement",
"src": "7946:38:19"
},
{
"expression": {
"id": 43222,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 43218,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42907,
"src": "8161:9:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43220,
"indexExpression": {
"id": 43219,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43166,
"src": "8171:2:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8161:13:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 43221,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43168,
"src": "8178:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8161:23:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 43223,
"nodeType": "ExpressionStatement",
"src": "8161:23:19"
}
]
},
{
"eventCall": {
"arguments": [
{
"id": 43226,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43164,
"src": "8219:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43227,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43166,
"src": "8225:2:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43228,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43168,
"src": "8229:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43225,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43490,
"src": "8210:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43229,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8210:26:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43230,
"nodeType": "EmitStatement",
"src": "8205:31:19"
},
{
"expression": {
"arguments": [
{
"id": 43232,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43164,
"src": "8267:4:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43233,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43166,
"src": "8273:2:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43234,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43168,
"src": "8277:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43231,
"name": "_afterTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43477,
"src": "8247:19:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43235,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8247:37:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43236,
"nodeType": "ExpressionStatement",
"src": "8247:37:19"
}
]
},
"documentation": {
"id": 43162,
"nodeType": "StructuredDocumentation",
"src": "7025:443:19",
"text": " @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfer",
"nameLocation": "7482:9:19",
"parameters": {
"id": 43169,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43164,
"mutability": "mutable",
"name": "from",
"nameLocation": "7509:4:19",
"nodeType": "VariableDeclaration",
"scope": 43238,
"src": "7501:12:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43163,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7501:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43166,
"mutability": "mutable",
"name": "to",
"nameLocation": "7531:2:19",
"nodeType": "VariableDeclaration",
"scope": 43238,
"src": "7523:10:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43165,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7523:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43168,
"mutability": "mutable",
"name": "amount",
"nameLocation": "7551:6:19",
"nodeType": "VariableDeclaration",
"scope": 43238,
"src": "7543:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43167,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7543:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7491:72:19"
},
"returnParameters": {
"id": 43170,
"nodeType": "ParameterList",
"parameters": [],
"src": "7581:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 43295,
"nodeType": "FunctionDefinition",
"src": "8567:535:19",
"nodes": [],
"body": {
"id": 43294,
"nodeType": "Block",
"src": "8632:470:19",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 43252,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43247,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43241,
"src": "8650:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 43250,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8669:1:19",
"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": 43249,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8661:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43248,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8661:7:19",
"typeDescriptions": {}
}
},
"id": 43251,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8661:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "8650:21:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
"id": 43253,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8673:33:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
"typeString": "literal_string \"ERC20: mint to the zero address\""
},
"value": "ERC20: mint to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
"typeString": "literal_string \"ERC20: mint to the zero address\""
}
],
"id": 43246,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8642:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8642:65:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43255,
"nodeType": "ExpressionStatement",
"src": "8642:65:19"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 43259,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8747:1:19",
"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": 43258,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8739:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43257,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8739:7:19",
"typeDescriptions": {}
}
},
"id": 43260,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8739:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43261,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43241,
"src": "8751:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43262,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43243,
"src": "8760:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43256,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43466,
"src": "8718:20:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43263,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8718:49:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43264,
"nodeType": "ExpressionStatement",
"src": "8718:49:19"
},
{
"expression": {
"id": 43267,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 43265,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42915,
"src": "8778:12:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 43266,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43243,
"src": "8794:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8778:22:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 43268,
"nodeType": "ExpressionStatement",
"src": "8778:22:19"
},
{
"id": 43275,
"nodeType": "UncheckedBlock",
"src": "8810:175:19",
"statements": [
{
"expression": {
"id": 43273,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 43269,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42907,
"src": "8946:9:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43271,
"indexExpression": {
"id": 43270,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43241,
"src": "8956:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8946:18:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 43272,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43243,
"src": "8968:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8946:28:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 43274,
"nodeType": "ExpressionStatement",
"src": "8946:28:19"
}
]
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 43279,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9016:1:19",
"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": 43278,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9008:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43277,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9008:7:19",
"typeDescriptions": {}
}
},
"id": 43280,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9008:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43281,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43241,
"src": "9020:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43282,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43243,
"src": "9029:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43276,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43490,
"src": "8999:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43283,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8999:37:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43284,
"nodeType": "EmitStatement",
"src": "8994:42:19"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 43288,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9075:1:19",
"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": 43287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9067:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43286,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9067:7:19",
"typeDescriptions": {}
}
},
"id": 43289,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9067:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43290,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43241,
"src": "9079:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43291,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43243,
"src": "9088:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43285,
"name": "_afterTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43477,
"src": "9047:19:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43292,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9047:48:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43293,
"nodeType": "ExpressionStatement",
"src": "9047:48:19"
}
]
},
"documentation": {
"id": 43239,
"nodeType": "StructuredDocumentation",
"src": "8297:265:19",
"text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_mint",
"nameLocation": "8576:5:19",
"parameters": {
"id": 43244,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43241,
"mutability": "mutable",
"name": "account",
"nameLocation": "8590:7:19",
"nodeType": "VariableDeclaration",
"scope": 43295,
"src": "8582:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43240,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8582:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43243,
"mutability": "mutable",
"name": "amount",
"nameLocation": "8607:6:19",
"nodeType": "VariableDeclaration",
"scope": 43295,
"src": "8599:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43242,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8599:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "8581:33:19"
},
"returnParameters": {
"id": 43245,
"nodeType": "ParameterList",
"parameters": [],
"src": "8632:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 43367,
"nodeType": "FunctionDefinition",
"src": "9422:659:19",
"nodes": [],
"body": {
"id": 43366,
"nodeType": "Block",
"src": "9487:594:19",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 43309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43304,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43298,
"src": "9505:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 43307,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9524:1:19",
"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": 43306,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9516:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43305,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9516:7:19",
"typeDescriptions": {}
}
},
"id": 43308,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9516:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9505:21:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
"id": 43310,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9528:35:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
"typeString": "literal_string \"ERC20: burn from the zero address\""
},
"value": "ERC20: burn from the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
"typeString": "literal_string \"ERC20: burn from the zero address\""
}
],
"id": 43303,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9497:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43311,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9497:67:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43312,
"nodeType": "ExpressionStatement",
"src": "9497:67:19"
},
{
"expression": {
"arguments": [
{
"id": 43314,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43298,
"src": "9596:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 43317,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9613:1:19",
"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": 43316,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9605:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43315,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9605:7:19",
"typeDescriptions": {}
}
},
"id": 43318,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9605:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43319,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43300,
"src": "9617:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43313,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43466,
"src": "9575:20:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9575:49:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43321,
"nodeType": "ExpressionStatement",
"src": "9575:49:19"
},
{
"assignments": [
43323
],
"declarations": [
{
"constant": false,
"id": 43323,
"mutability": "mutable",
"name": "accountBalance",
"nameLocation": "9643:14:19",
"nodeType": "VariableDeclaration",
"scope": 43366,
"src": "9635:22:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43322,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9635:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 43327,
"initialValue": {
"baseExpression": {
"id": 43324,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42907,
"src": "9660:9:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43326,
"indexExpression": {
"id": 43325,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43298,
"src": "9670:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9660:18:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9635:43:19"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43331,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43329,
"name": "accountBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43323,
"src": "9696:14:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 43330,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43300,
"src": "9714:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9696:24:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
"id": 43332,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9722:36:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
"typeString": "literal_string \"ERC20: burn amount exceeds balance\""
},
"value": "ERC20: burn amount exceeds balance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
"typeString": "literal_string \"ERC20: burn amount exceeds balance\""
}
],
"id": 43328,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9688:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43333,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9688:71:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43334,
"nodeType": "ExpressionStatement",
"src": "9688:71:19"
},
{
"id": 43347,
"nodeType": "UncheckedBlock",
"src": "9769:194:19",
"statements": [
{
"expression": {
"id": 43341,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 43335,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42907,
"src": "9793:9:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43337,
"indexExpression": {
"id": 43336,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43298,
"src": "9803:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9793:18:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43340,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43338,
"name": "accountBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43323,
"src": "9814:14:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 43339,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43300,
"src": "9831:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9814:23:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9793:44:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 43342,
"nodeType": "ExpressionStatement",
"src": "9793:44:19"
},
{
"expression": {
"id": 43345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 43343,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42915,
"src": "9930:12:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"id": 43344,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43300,
"src": "9946:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9930:22:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 43346,
"nodeType": "ExpressionStatement",
"src": "9930:22:19"
}
]
},
{
"eventCall": {
"arguments": [
{
"id": 43349,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43298,
"src": "9987:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 43352,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10004:1:19",
"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": 43351,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9996:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43350,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9996:7:19",
"typeDescriptions": {}
}
},
"id": 43353,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9996:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43354,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43300,
"src": "10008:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43348,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43490,
"src": "9978:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43355,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9978:37:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43356,
"nodeType": "EmitStatement",
"src": "9973:42:19"
},
{
"expression": {
"arguments": [
{
"id": 43358,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43298,
"src": "10046:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 43361,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10063:1:19",
"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": 43360,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10055:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43359,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10055:7:19",
"typeDescriptions": {}
}
},
"id": 43362,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10055:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43363,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43300,
"src": "10067:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43357,
"name": "_afterTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43477,
"src": "10026:19:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10026:48:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43365,
"nodeType": "ExpressionStatement",
"src": "10026:48:19"
}
]
},
"documentation": {
"id": 43296,
"nodeType": "StructuredDocumentation",
"src": "9108:309:19",
"text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_burn",
"nameLocation": "9431:5:19",
"parameters": {
"id": 43301,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43298,
"mutability": "mutable",
"name": "account",
"nameLocation": "9445:7:19",
"nodeType": "VariableDeclaration",
"scope": 43367,
"src": "9437:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43297,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9437:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43300,
"mutability": "mutable",
"name": "amount",
"nameLocation": "9462:6:19",
"nodeType": "VariableDeclaration",
"scope": 43367,
"src": "9454:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43299,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9454:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9436:33:19"
},
"returnParameters": {
"id": 43302,
"nodeType": "ParameterList",
"parameters": [],
"src": "9487:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 43412,
"nodeType": "FunctionDefinition",
"src": "10504:370:19",
"nodes": [],
"body": {
"id": 43411,
"nodeType": "Block",
"src": "10617:257:19",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 43383,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43378,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43370,
"src": "10635:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 43381,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10652:1:19",
"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": 43380,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10644:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43379,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10644:7:19",
"typeDescriptions": {}
}
},
"id": 43382,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10644:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10635:19:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
"id": 43384,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10656:38:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
"typeString": "literal_string \"ERC20: approve from the zero address\""
},
"value": "ERC20: approve from the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
"typeString": "literal_string \"ERC20: approve from the zero address\""
}
],
"id": 43377,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10627:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43385,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10627:68:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43386,
"nodeType": "ExpressionStatement",
"src": "10627:68:19"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 43393,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43388,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43372,
"src": "10713:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 43391,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10732:1:19",
"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": 43390,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10724:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 43389,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10724:7:19",
"typeDescriptions": {}
}
},
"id": 43392,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10724:10:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10713:21:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
"id": 43394,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10736:36:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
"typeString": "literal_string \"ERC20: approve to the zero address\""
},
"value": "ERC20: approve to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
"typeString": "literal_string \"ERC20: approve to the zero address\""
}
],
"id": 43387,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10705:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43395,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10705:68:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43396,
"nodeType": "ExpressionStatement",
"src": "10705:68:19"
},
{
"expression": {
"id": 43403,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 43397,
"name": "_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42913,
"src": "10784:11:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 43400,
"indexExpression": {
"id": 43398,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43370,
"src": "10796:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10784:18:19",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 43401,
"indexExpression": {
"id": 43399,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43372,
"src": "10803:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10784:27:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 43402,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43374,
"src": "10814:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10784:36:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 43404,
"nodeType": "ExpressionStatement",
"src": "10784:36:19"
},
{
"eventCall": {
"arguments": [
{
"id": 43406,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43370,
"src": "10844:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43407,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43372,
"src": "10851:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43408,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43374,
"src": "10860:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43405,
"name": "Approval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43499,
"src": "10835:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43409,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10835:32:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43410,
"nodeType": "EmitStatement",
"src": "10830:37:19"
}
]
},
"documentation": {
"id": 43368,
"nodeType": "StructuredDocumentation",
"src": "10087:412:19",
"text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_approve",
"nameLocation": "10513:8:19",
"parameters": {
"id": 43375,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43370,
"mutability": "mutable",
"name": "owner",
"nameLocation": "10539:5:19",
"nodeType": "VariableDeclaration",
"scope": 43412,
"src": "10531:13:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43369,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10531:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43372,
"mutability": "mutable",
"name": "spender",
"nameLocation": "10562:7:19",
"nodeType": "VariableDeclaration",
"scope": 43412,
"src": "10554:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43371,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10554:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43374,
"mutability": "mutable",
"name": "amount",
"nameLocation": "10587:6:19",
"nodeType": "VariableDeclaration",
"scope": 43412,
"src": "10579:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43373,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10579:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "10521:78:19"
},
"returnParameters": {
"id": 43376,
"nodeType": "ParameterList",
"parameters": [],
"src": "10617:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 43455,
"nodeType": "FunctionDefinition",
"src": "11155:441:19",
"nodes": [],
"body": {
"id": 43454,
"nodeType": "Block",
"src": "11275:321:19",
"nodes": [],
"statements": [
{
"assignments": [
43423
],
"declarations": [
{
"constant": false,
"id": 43423,
"mutability": "mutable",
"name": "currentAllowance",
"nameLocation": "11293:16:19",
"nodeType": "VariableDeclaration",
"scope": 43454,
"src": "11285:24:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43422,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11285:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 43428,
"initialValue": {
"arguments": [
{
"id": 43425,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43415,
"src": "11322:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43426,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43417,
"src": "11329:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 43424,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43033,
"src": "11312:9:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view returns (uint256)"
}
},
"id": 43427,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11312:25:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "11285:52:19"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43435,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43429,
"name": "currentAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43423,
"src": "11351:16:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 43432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "11376:7:19",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 43431,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11376:7:19",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
],
"id": 43430,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "11371:4:19",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 43433,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11371:13:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_uint256",
"typeString": "type(uint256)"
}
},
"id": 43434,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "11385:3:19",
"memberName": "max",
"nodeType": "MemberAccess",
"src": "11371:17:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11351:37:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 43453,
"nodeType": "IfStatement",
"src": "11347:243:19",
"trueBody": {
"id": 43452,
"nodeType": "Block",
"src": "11390:200:19",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43439,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43437,
"name": "currentAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43423,
"src": "11412:16:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 43438,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43419,
"src": "11432:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11412:26:19",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365",
"id": 43440,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11440:31:19",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
"typeString": "literal_string \"ERC20: insufficient allowance\""
},
"value": "ERC20: insufficient allowance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe",
"typeString": "literal_string \"ERC20: insufficient allowance\""
}
],
"id": 43436,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "11404:7:19",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 43441,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11404:68:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43442,
"nodeType": "ExpressionStatement",
"src": "11404:68:19"
},
{
"id": 43451,
"nodeType": "UncheckedBlock",
"src": "11486:94:19",
"statements": [
{
"expression": {
"arguments": [
{
"id": 43444,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43415,
"src": "11523:5:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 43445,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43417,
"src": "11530:7:19",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 43448,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43446,
"name": "currentAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43423,
"src": "11539:16:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 43447,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43419,
"src": "11558:6:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11539:25:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 43443,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43412,
"src": "11514:8:19",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 43449,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11514:51:19",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43450,
"nodeType": "ExpressionStatement",
"src": "11514:51:19"
}
]
}
]
}
}
]
},
"documentation": {
"id": 43413,
"nodeType": "StructuredDocumentation",
"src": "10880:270:19",
"text": " @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_spendAllowance",
"nameLocation": "11164:15:19",
"parameters": {
"id": 43420,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43415,
"mutability": "mutable",
"name": "owner",
"nameLocation": "11197:5:19",
"nodeType": "VariableDeclaration",
"scope": 43455,
"src": "11189:13:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43414,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11189:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43417,
"mutability": "mutable",
"name": "spender",
"nameLocation": "11220:7:19",
"nodeType": "VariableDeclaration",
"scope": 43455,
"src": "11212:15:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43416,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11212:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43419,
"mutability": "mutable",
"name": "amount",
"nameLocation": "11245:6:19",
"nodeType": "VariableDeclaration",
"scope": 43455,
"src": "11237:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43418,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11237:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "11179:78:19"
},
"returnParameters": {
"id": 43421,
"nodeType": "ParameterList",
"parameters": [],
"src": "11275:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 43466,
"nodeType": "FunctionDefinition",
"src": "12180:121:19",
"nodes": [],
"body": {
"id": 43465,
"nodeType": "Block",
"src": "12299:2:19",
"nodes": [],
"statements": []
},
"documentation": {
"id": 43456,
"nodeType": "StructuredDocumentation",
"src": "11602:573:19",
"text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_beforeTokenTransfer",
"nameLocation": "12189:20:19",
"parameters": {
"id": 43463,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43458,
"mutability": "mutable",
"name": "from",
"nameLocation": "12227:4:19",
"nodeType": "VariableDeclaration",
"scope": 43466,
"src": "12219:12:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43457,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12219:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43460,
"mutability": "mutable",
"name": "to",
"nameLocation": "12249:2:19",
"nodeType": "VariableDeclaration",
"scope": 43466,
"src": "12241:10:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43459,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12241:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43462,
"mutability": "mutable",
"name": "amount",
"nameLocation": "12269:6:19",
"nodeType": "VariableDeclaration",
"scope": 43466,
"src": "12261:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43461,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12261:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "12209:72:19"
},
"returnParameters": {
"id": 43464,
"nodeType": "ParameterList",
"parameters": [],
"src": "12299:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 43477,
"nodeType": "FunctionDefinition",
"src": "12889:120:19",
"nodes": [],
"body": {
"id": 43476,
"nodeType": "Block",
"src": "13007:2:19",
"nodes": [],
"statements": []
},
"documentation": {
"id": 43467,
"nodeType": "StructuredDocumentation",
"src": "12307:577:19",
"text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_afterTokenTransfer",
"nameLocation": "12898:19:19",
"parameters": {
"id": 43474,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43469,
"mutability": "mutable",
"name": "from",
"nameLocation": "12935:4:19",
"nodeType": "VariableDeclaration",
"scope": 43477,
"src": "12927:12:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43468,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12927:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43471,
"mutability": "mutable",
"name": "to",
"nameLocation": "12957:2:19",
"nodeType": "VariableDeclaration",
"scope": 43477,
"src": "12949:10:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43470,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12949:7:19",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43473,
"mutability": "mutable",
"name": "amount",
"nameLocation": "12977:6:19",
"nodeType": "VariableDeclaration",
"scope": 43477,
"src": "12969:14:19",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43472,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12969:7:19",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "12917:72:19"
},
"returnParameters": {
"id": 43475,
"nodeType": "ParameterList",
"parameters": [],
"src": "13007:0:19"
},
"scope": 43478,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 42898,
"name": "Context",
"nameLocations": [
"1419:7:19"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 43777,
"src": "1419:7:19"
},
"id": 42899,
"nodeType": "InheritanceSpecifier",
"src": "1419:7:19"
},
{
"baseName": {
"id": 42900,
"name": "IERC20",
"nameLocations": [
"1428:6:19"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 43556,
"src": "1428:6:19"
},
"id": 42901,
"nodeType": "InheritanceSpecifier",
"src": "1428:6:19"
},
{
"baseName": {
"id": 42902,
"name": "IERC20Metadata",
"nameLocations": [
"1436:14:19"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 43581,
"src": "1436:14:19"
},
"id": 42903,
"nodeType": "InheritanceSpecifier",
"src": "1436:14:19"
}
],
"canonicalName": "ERC20",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 42897,
"nodeType": "StructuredDocumentation",
"src": "230:1170:19",
"text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
},
"fullyImplemented": true,
"linearizedBaseContracts": [
43478,
43581,
43556,
43777
],
"name": "ERC20",
"nameLocation": "1410:5:19",
"scope": 43479,
"usedErrors": [],
"usedEvents": [
43490,
43499
]
}
],
"license": "MIT"
},
"id": 19
}