{
    "contractName": "WETH9",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "dst",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Deposit",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "dst",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Withdrawal",
            "type": "event"
        },
        {
            "stateMutability": "payable",
            "type": "fallback"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "stateMutability": "payable",
            "type": "receive"
        },
        {
            "inputs": [],
            "name": "deposit",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "withdraw",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "dst",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "dst",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/testing/WETH9.sol\":\"WETH9\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/testing/WETH9.sol\":{\"keccak256\":\"0x29998b508b0335f7a6a6f4d3fd1acc1f5abba4c752357dcbcd7806abeffb2cb9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://839266fc7dc233bc09a8e72abe6479ccac2650d996842b16bd730185c3e17343\",\"dweb:/ipfs/QmSYntc9NcsvV5Gr9tmgCq7Cq6uT5XybMx2bx298a9acfc\"]}},\"version\":1}",
    "bytecode": "0x60806040526040518060400160405280600d81526020017f57726170706564204574686572000000000000000000000000000000000000008152506000908051906020019061004f9291906100ca565b506040518060400160405280600481526020017f57455448000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100ca565b506012600260006101000a81548160ff021916908360ff1602179055503480156100c457600080fd5b50610167565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010b57805160ff1916838001178555610139565b82800160010185558215610139579182015b8281111561013857825182559160200191906001019061011d565b5b509050610146919061014a565b5090565b5b8082111561016357600081600090555060010161014b565b5090565b610cbc806101766000396000f3fe6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce567146102b157806370a08231146102df57806395d89b4114610344578063a9059cbb146103d4578063d0e30db014610445578063dd62ed3e1461044f576100af565b806306fdde03146100b9578063095ea7b31461014957806318160ddd146101ba57806323b872dd146101e55780632e1a7d4d14610276576100af565b366100af576100ad6104d4565b005b6100b76104d4565b005b3480156100c557600080fd5b506100ce610571565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010e5780820151818401526020810190506100f3565b50505050905090810190601f16801561013b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015557600080fd5b506101a26004803603604081101561016c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061060f565b60405180821515815260200191505060405180910390f35b3480156101c657600080fd5b506101cf610701565b6040518082815260200191505060405180910390f35b3480156101f157600080fd5b5061025e6004803603606081101561020857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610709565b60405180821515815260200191505060405180910390f35b34801561028257600080fd5b506102af6004803603602081101561029957600080fd5b8101908080359060200190929190505050610a52565b005b3480156102bd57600080fd5b506102c6610b83565b604051808260ff16815260200191505060405180910390f35b3480156102eb57600080fd5b5061032e6004803603602081101561030257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b96565b6040518082815260200191505060405180910390f35b34801561035057600080fd5b50610359610bae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039957808201518184015260208101905061037e565b50505050905090810190601f1680156103c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103e057600080fd5b5061042d600480360360408110156103f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c4c565b60405180821515815260200191505060405180910390f35b61044d6104d4565b005b34801561045b57600080fd5b506104be6004803603604081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600047905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561082f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156109485781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156108bd57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610a9e57600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b31573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c445780601f10610c1957610100808354040283529160200191610c44565b820191906000526020600020905b815481529060010190602001808311610c2757829003601f168201915b505050505081565b6000610c59338484610709565b905092915050565b600460205281600052604060002060205280600052604060002060009150915050548156fea2646970667358221220cc4c3798b7ad55714baa4894b482c31db4ff64c6fdee8156502431036d86bc0b64736f6c63430007030033",
    "deployedBytecode": "0x6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce567146102b157806370a08231146102df57806395d89b4114610344578063a9059cbb146103d4578063d0e30db014610445578063dd62ed3e1461044f576100af565b806306fdde03146100b9578063095ea7b31461014957806318160ddd146101ba57806323b872dd146101e55780632e1a7d4d14610276576100af565b366100af576100ad6104d4565b005b6100b76104d4565b005b3480156100c557600080fd5b506100ce610571565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010e5780820151818401526020810190506100f3565b50505050905090810190601f16801561013b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015557600080fd5b506101a26004803603604081101561016c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061060f565b60405180821515815260200191505060405180910390f35b3480156101c657600080fd5b506101cf610701565b6040518082815260200191505060405180910390f35b3480156101f157600080fd5b5061025e6004803603606081101561020857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610709565b60405180821515815260200191505060405180910390f35b34801561028257600080fd5b506102af6004803603602081101561029957600080fd5b8101908080359060200190929190505050610a52565b005b3480156102bd57600080fd5b506102c6610b83565b604051808260ff16815260200191505060405180910390f35b3480156102eb57600080fd5b5061032e6004803603602081101561030257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b96565b6040518082815260200191505060405180910390f35b34801561035057600080fd5b50610359610bae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039957808201518184015260208101905061037e565b50505050905090810190601f1680156103c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103e057600080fd5b5061042d600480360360408110156103f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c4c565b60405180821515815260200191505060405180910390f35b61044d6104d4565b005b34801561045b57600080fd5b506104be6004803603604081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600047905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561082f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156109485781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156108bd57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610a9e57600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b31573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c445780601f10610c1957610100808354040283529160200191610c44565b820191906000526020600020905b815481529060010190602001808311610c2757829003601f168201915b505050505081565b6000610c59338484610709565b905092915050565b600460205281600052604060002060205280600052604060002060009150915050548156fea2646970667358221220cc4c3798b7ad55714baa4894b482c31db4ff64c6fdee8156502431036d86bc0b64736f6c63430007030033",
    "immutableReferences": {},
    "generatedSources": [],
    "deployedGeneratedSources": [],
    "sourceMap": "756:1877:33:-:0;;;777:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;819:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;878:2;854:26;;;;;;;;;;;;;;;;;;;;756:1877;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
    "deployedSourceMap": "756:1877:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:9;:7;:9::i;:::-;756:1877;;1306:9;:7;:9::i;:::-;756:1877;777:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1839:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1735:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2155:476;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1523:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;854:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1147:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;819:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1387:130;;;:::i;:::-;;1197:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1387:130;1456:9;1431;:21;1441:10;1431:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;1488:10;1480:30;;;1500:9;1480:30;;;;;;;;;;;;;;;;;;1387:130::o;777:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1839:180::-;1898:4;1943:3;1914:9;:21;1924:10;1914:21;;;;;;;;;;;;;;;:26;1936:3;1914:26;;;;;;;;;;;;;;;:32;;;;1982:3;1961:30;;1970:10;1961:30;;;1987:3;1961:30;;;;;;;;;;;;;;;;;;2008:4;2001:11;;1839:180;;;;:::o;1735:98::-;1779:7;1805:21;1798:28;;1735:98;:::o;2155:476::-;2262:4;2304:3;2286:9;:14;2296:3;2286:14;;;;;;;;;;;;;;;;:21;;2278:30;;;;;;2330:10;2323:17;;:3;:17;;;;:62;;;;;2382:2;2344:9;:14;2354:3;2344:14;;;;;;;;;;;;;;;:26;2359:10;2344:26;;;;;;;;;;;;;;;;:41;;2323:62;2319:182;;;2439:3;2409:9;:14;2419:3;2409:14;;;;;;;;;;;;;;;:26;2424:10;2409:26;;;;;;;;;;;;;;;;:33;;2401:42;;;;;;2487:3;2457:9;:14;2467:3;2457:14;;;;;;;;;;;;;;;:26;2472:10;2457:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;2319:182;2529:3;2511:9;:14;2521:3;2511:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;2560:3;2542:9;:14;2552:3;2542:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;2593:3;2579:23;;2588:3;2579:23;;;2598:3;2579:23;;;;;;;;;;;;;;;;;;2620:4;2613:11;;2155:476;;;;;:::o;1523:206::-;1604:3;1579:9;:21;1589:10;1579:21;;;;;;;;;;;;;;;;:28;;1571:37;;;;;;1643:3;1618:9;:21;1628:10;1618:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;1656:10;:19;;:24;1676:3;1656:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:10;1695:27;;;1718:3;1695:27;;;;;;;;;;;;;;;;;;1523:206;:::o;854:26::-;;;;;;;;;;;;;:::o;1147:44::-;;;;;;;;;;;;;;;;;:::o;819:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2025:124::-;2085:4;2108:34;2121:10;2133:3;2138;2108:12;:34::i;:::-;2101:41;;2025:124;;;;:::o;1197:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
    "source": "// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.7.0;\n\ncontract WETH9 {\n    string public name = \"Wrapped Ether\";\n    string public symbol = \"WETH\";\n    uint8 public decimals = 18;\n\n    event Approval(address indexed src, address indexed guy, uint256 wad);\n    event Transfer(address indexed src, address indexed dst, uint256 wad);\n    event Deposit(address indexed dst, uint256 wad);\n    event Withdrawal(address indexed src, uint256 wad);\n\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    fallback() external payable {\n        deposit();\n    }\n\n    receive() external payable {\n        deposit();\n    }\n\n    function deposit() public payable {\n        balanceOf[msg.sender] += msg.value;\n        emit Deposit(msg.sender, msg.value);\n    }\n\n    function withdraw(uint256 wad) public {\n        require(balanceOf[msg.sender] >= wad);\n        balanceOf[msg.sender] -= wad;\n        msg.sender.transfer(wad);\n        emit Withdrawal(msg.sender, wad);\n    }\n\n    function totalSupply() public view returns (uint256) {\n        return address(this).balance;\n    }\n\n    function approve(address guy, uint256 wad) public returns (bool) {\n        allowance[msg.sender][guy] = wad;\n        emit Approval(msg.sender, guy, wad);\n        return true;\n    }\n\n    function transfer(address dst, uint256 wad) public returns (bool) {\n        return transferFrom(msg.sender, dst, wad);\n    }\n\n    function transferFrom(\n        address src,\n        address dst,\n        uint256 wad\n    ) public returns (bool) {\n        require(balanceOf[src] >= wad);\n\n        if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\n            require(allowance[src][msg.sender] >= wad);\n            allowance[src][msg.sender] -= wad;\n        }\n\n        balanceOf[src] -= wad;\n        balanceOf[dst] += wad;\n\n        emit Transfer(src, dst, wad);\n\n        return true;\n    }\n}\n\n/*\n                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n\n*/\n",
    "sourcePath": "/Users/andrekorol/src/kollateral/protocol/contracts/testing/WETH9.sol",
    "ast": {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/testing/WETH9.sol",
        "exportedSymbols": {
            "WETH9": [
                4711
            ]
        },
        "id": 4712,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 4458,
                "literals": [
                    "solidity",
                    "^",
                    "0.7",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "731:23:33"
            },
            {
                "abstract": false,
                "baseContracts": [],
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 4711,
                "linearizedBaseContracts": [
                    4711
                ],
                "name": "WETH9",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "functionSelector": "06fdde03",
                        "id": 4461,
                        "mutability": "mutable",
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "scope": 4711,
                        "src": "777:36:33",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 4459,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "777:6:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": {
                            "hexValue": "57726170706564204574686572",
                            "id": 4460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "798:15:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3",
                                "typeString": "literal_string \"Wrapped Ether\""
                            },
                            "value": "Wrapped Ether"
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "95d89b41",
                        "id": 4464,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 4711,
                        "src": "819:29:33",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 4462,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "819:6:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": {
                            "hexValue": "57455448",
                            "id": 4463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "842:6:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8",
                                "typeString": "literal_string \"WETH\""
                            },
                            "value": "WETH"
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "313ce567",
                        "id": 4467,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "scope": 4711,
                        "src": "854:26:33",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                        },
                        "typeName": {
                            "id": 4465,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "854:5:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                            }
                        },
                        "value": {
                            "hexValue": "3138",
                            "id": 4466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "878:2:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                            },
                            "value": "18"
                        },
                        "visibility": "public"
                    },
                    {
                        "anonymous": false,
                        "id": 4475,
                        "name": "Approval",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 4474,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4469,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "src",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4475,
                                    "src": "902:19:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4468,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "902:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4471,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "guy",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4475,
                                    "src": "923:19:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4470,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "923:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4473,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4475,
                                    "src": "944:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4472,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "944:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "901:55:33"
                        },
                        "src": "887:70:33"
                    },
                    {
                        "anonymous": false,
                        "id": 4483,
                        "name": "Transfer",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 4482,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4477,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "src",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4483,
                                    "src": "977:19:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4476,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "977:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4479,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "dst",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4483,
                                    "src": "998:19:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4478,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "998:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4481,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4483,
                                    "src": "1019:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4480,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1019:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "976:55:33"
                        },
                        "src": "962:70:33"
                    },
                    {
                        "anonymous": false,
                        "id": 4489,
                        "name": "Deposit",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 4488,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4485,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "dst",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4489,
                                    "src": "1051:19:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4484,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1051:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4487,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4489,
                                    "src": "1072:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4486,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1072:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1050:34:33"
                        },
                        "src": "1037:48:33"
                    },
                    {
                        "anonymous": false,
                        "id": 4495,
                        "name": "Withdrawal",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 4494,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4491,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "src",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4495,
                                    "src": "1107:19:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4490,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1107:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4493,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4495,
                                    "src": "1128:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4492,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1128:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1106:34:33"
                        },
                        "src": "1090:51:33"
                    },
                    {
                        "constant": false,
                        "functionSelector": "70a08231",
                        "id": 4499,
                        "mutability": "mutable",
                        "name": "balanceOf",
                        "nodeType": "VariableDeclaration",
                        "scope": 4711,
                        "src": "1147:44:33",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 4498,
                            "keyType": {
                                "id": 4496,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1155:7:33",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1147:27:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 4497,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1166:7:33",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "dd62ed3e",
                        "id": 4505,
                        "mutability": "mutable",
                        "name": "allowance",
                        "nodeType": "VariableDeclaration",
                        "scope": 4711,
                        "src": "1197:64:33",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                        },
                        "typeName": {
                            "id": 4504,
                            "keyType": {
                                "id": 4500,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1205:7:33",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1197:47:33",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                            },
                            "valueType": {
                                "id": 4503,
                                "keyType": {
                                    "id": 4501,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1224:7:33",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "1216:27:33",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                },
                                "valueType": {
                                    "id": 4502,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1235:7:33",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 4511,
                            "nodeType": "Block",
                            "src": "1296:26:33",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 4508,
                                            "name": "deposit",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4538,
                                            "src": "1306:7:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                "typeString": "function ()"
                                            }
                                        },
                                        "id": 4509,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1306:9:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4510,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1306:9:33"
                                }
                            ]
                        },
                        "id": 4512,
                        "implemented": true,
                        "kind": "fallback",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4506,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1276:2:33"
                        },
                        "returnParameters": {
                            "id": 4507,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1296:0:33"
                        },
                        "scope": 4711,
                        "src": "1268:54:33",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 4518,
                            "nodeType": "Block",
                            "src": "1355:26:33",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 4515,
                                            "name": "deposit",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4538,
                                            "src": "1365:7:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                "typeString": "function ()"
                                            }
                                        },
                                        "id": 4516,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1365:9:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4517,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1365:9:33"
                                }
                            ]
                        },
                        "id": 4519,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4513,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1335:2:33"
                        },
                        "returnParameters": {
                            "id": 4514,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1355:0:33"
                        },
                        "scope": 4711,
                        "src": "1328:53:33",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 4537,
                            "nodeType": "Block",
                            "src": "1421:96:33",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 4528,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 4522,
                                                "name": "balanceOf",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4499,
                                                "src": "1431:9:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4525,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 4523,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "1441:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4524,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1441:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "1431:21:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                            "expression": {
                                                "id": 4526,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "1456:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                }
                                            },
                                            "id": 4527,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "value",
                                            "nodeType": "MemberAccess",
                                            "src": "1456:9:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1431:34:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4529,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1431:34:33"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4531,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "1488:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4532,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1488:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 4533,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "1500:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4534,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "value",
                                                "nodeType": "MemberAccess",
                                                "src": "1500:9:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4530,
                                            "name": "Deposit",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4489,
                                            "src": "1480:7:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 4535,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1480:30:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4536,
                                    "nodeType": "EmitStatement",
                                    "src": "1475:35:33"
                                }
                            ]
                        },
                        "functionSelector": "d0e30db0",
                        "id": 4538,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "deposit",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4520,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1403:2:33"
                        },
                        "returnParameters": {
                            "id": 4521,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1421:0:33"
                        },
                        "scope": 4711,
                        "src": "1387:130:33",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 4573,
                            "nodeType": "Block",
                            "src": "1561:168:33",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 4549,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "baseExpression": {
                                                        "id": 4544,
                                                        "name": "balanceOf",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4499,
                                                        "src": "1579:9:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 4547,
                                                    "indexExpression": {
                                                        "expression": {
                                                            "id": 4545,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -15,
                                                            "src": "1589:3:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 4546,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "1589:10:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "1579:21:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "id": 4548,
                                                    "name": "wad",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4540,
                                                    "src": "1604:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "1579:28:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "id": 4543,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "1571:7:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                "typeString": "function (bool) pure"
                                            }
                                        },
                                        "id": 4550,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1571:37:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4551,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1571:37:33"
                                },
                                {
                                    "expression": {
                                        "id": 4557,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 4552,
                                                "name": "balanceOf",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4499,
                                                "src": "1618:9:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4555,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 4553,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "1628:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4554,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1628:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "1618:21:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "-=",
                                        "rightHandSide": {
                                            "id": 4556,
                                            "name": "wad",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4540,
                                            "src": "1643:3:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1618:28:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4558,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1618:28:33"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4564,
                                                "name": "wad",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4540,
                                                "src": "1676:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "expression": {
                                                    "id": 4559,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "1656:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4562,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1656:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            "id": 4563,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transfer",
                                            "nodeType": "MemberAccess",
                                            "src": "1656:19:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256)"
                                            }
                                        },
                                        "id": 4565,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1656:24:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4566,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1656:24:33"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4568,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "1706:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4569,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1706:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "id": 4570,
                                                "name": "wad",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4540,
                                                "src": "1718:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4567,
                                            "name": "Withdrawal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4495,
                                            "src": "1695:10:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 4571,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1695:27:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4572,
                                    "nodeType": "EmitStatement",
                                    "src": "1690:32:33"
                                }
                            ]
                        },
                        "functionSelector": "2e1a7d4d",
                        "id": 4574,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "withdraw",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4541,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4540,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4574,
                                    "src": "1541:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4539,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1541:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1540:13:33"
                        },
                        "returnParameters": {
                            "id": 4542,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1561:0:33"
                        },
                        "scope": 4711,
                        "src": "1523:206:33",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 4585,
                            "nodeType": "Block",
                            "src": "1788:45:33",
                            "statements": [
                                {
                                    "expression": {
                                        "expression": {
                                            "arguments": [
                                                {
                                                    "id": 4581,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "1813:4:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_WETH9_$4711",
                                                        "typeString": "contract WETH9"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_contract$_WETH9_$4711",
                                                        "typeString": "contract WETH9"
                                                    }
                                                ],
                                                "id": 4580,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1805:7:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 4579,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1805:7:33",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 4582,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1805:13:33",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "id": 4583,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "balance",
                                        "nodeType": "MemberAccess",
                                        "src": "1805:21:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 4578,
                                    "id": 4584,
                                    "nodeType": "Return",
                                    "src": "1798:28:33"
                                }
                            ]
                        },
                        "functionSelector": "18160ddd",
                        "id": 4586,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "totalSupply",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4575,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1755:2:33"
                        },
                        "returnParameters": {
                            "id": 4578,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4577,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4586,
                                    "src": "1779:7:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4576,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1779:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1778:9:33"
                        },
                        "scope": 4711,
                        "src": "1735:98:33",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 4613,
                            "nodeType": "Block",
                            "src": "1904:115:33",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 4602,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 4595,
                                                    "name": "allowance",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4505,
                                                    "src": "1914:9:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                        "typeString": "mapping(address => mapping(address => uint256))"
                                                    }
                                                },
                                                "id": 4599,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 4596,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "1924:3:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 4597,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "1924:10:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1914:21:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4600,
                                            "indexExpression": {
                                                "id": 4598,
                                                "name": "guy",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4588,
                                                "src": "1936:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "1914:26:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 4601,
                                            "name": "wad",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4590,
                                            "src": "1943:3:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1914:32:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4603,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1914:32:33"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4605,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "1970:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4606,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "1970:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "id": 4607,
                                                "name": "guy",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4588,
                                                "src": "1982:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4608,
                                                "name": "wad",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4590,
                                                "src": "1987:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4604,
                                            "name": "Approval",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4475,
                                            "src": "1961:8:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 4609,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1961:30:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4610,
                                    "nodeType": "EmitStatement",
                                    "src": "1956:35:33"
                                },
                                {
                                    "expression": {
                                        "hexValue": "74727565",
                                        "id": 4611,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2008:4:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 4594,
                                    "id": 4612,
                                    "nodeType": "Return",
                                    "src": "2001:11:33"
                                }
                            ]
                        },
                        "functionSelector": "095ea7b3",
                        "id": 4614,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "approve",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4591,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4588,
                                    "mutability": "mutable",
                                    "name": "guy",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4614,
                                    "src": "1856:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4587,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1856:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4590,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4614,
                                    "src": "1869:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4589,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1869:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1855:26:33"
                        },
                        "returnParameters": {
                            "id": 4594,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4593,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4614,
                                    "src": "1898:4:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 4592,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1898:4:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1897:6:33"
                        },
                        "scope": 4711,
                        "src": "1839:180:33",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 4630,
                            "nodeType": "Block",
                            "src": "2091:58:33",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4624,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "2121:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4625,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "2121:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "id": 4626,
                                                "name": "dst",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4616,
                                                "src": "2133:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4627,
                                                "name": "wad",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4618,
                                                "src": "2138:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4623,
                                            "name": "transferFrom",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4710,
                                            "src": "2108:12:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,address,uint256) returns (bool)"
                                            }
                                        },
                                        "id": 4628,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2108:34:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 4622,
                                    "id": 4629,
                                    "nodeType": "Return",
                                    "src": "2101:41:33"
                                }
                            ]
                        },
                        "functionSelector": "a9059cbb",
                        "id": 4631,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transfer",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4619,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4616,
                                    "mutability": "mutable",
                                    "name": "dst",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4631,
                                    "src": "2043:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4615,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2043:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4618,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4631,
                                    "src": "2056:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4617,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2056:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2042:26:33"
                        },
                        "returnParameters": {
                            "id": 4622,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4621,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4631,
                                    "src": "2085:4:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 4620,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2085:4:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2084:6:33"
                        },
                        "scope": 4711,
                        "src": "2025:124:33",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 4709,
                            "nodeType": "Block",
                            "src": "2268:363:33",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 4647,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "baseExpression": {
                                                        "id": 4643,
                                                        "name": "balanceOf",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4499,
                                                        "src": "2286:9:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 4645,
                                                    "indexExpression": {
                                                        "id": 4644,
                                                        "name": "src",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4633,
                                                        "src": "2296:3:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "2286:14:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "id": 4646,
                                                    "name": "wad",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4637,
                                                    "src": "2304:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "2286:21:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "id": 4642,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "2278:7:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                "typeString": "function (bool) pure"
                                            }
                                        },
                                        "id": 4648,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2278:30:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4649,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2278:30:33"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 4666,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "id": 4653,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 4650,
                                                "name": "src",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4633,
                                                "src": "2323:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                                "expression": {
                                                    "id": 4651,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "2330:3:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4652,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "2330:10:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            "src": "2323:17:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 4665,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 4654,
                                                        "name": "allowance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4505,
                                                        "src": "2344:9:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                            "typeString": "mapping(address => mapping(address => uint256))"
                                                        }
                                                    },
                                                    "id": 4656,
                                                    "indexExpression": {
                                                        "id": 4655,
                                                        "name": "src",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4633,
                                                        "src": "2354:3:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "2344:14:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                        "typeString": "mapping(address => uint256)"
                                                    }
                                                },
                                                "id": 4659,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 4657,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "2359:3:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 4658,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "2359:10:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2344:26:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 4663,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "-",
                                                        "prefix": true,
                                                        "src": "2382:2:33",
                                                        "subExpression": {
                                                            "hexValue": "31",
                                                            "id": 4662,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2383:1:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                "typeString": "int_const 1"
                                                            },
                                                            "value": "1"
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_minus_1_by_1",
                                                            "typeString": "int_const -1"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_minus_1_by_1",
                                                            "typeString": "int_const -1"
                                                        }
                                                    ],
                                                    "id": 4661,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "2374:7:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                        "typeString": "type(uint256)"
                                                    },
                                                    "typeName": {
                                                        "id": 4660,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2374:7:33",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4664,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2374:11:33",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "2344:41:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "2323:62:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4688,
                                    "nodeType": "IfStatement",
                                    "src": "2319:182:33",
                                    "trueBody": {
                                        "id": 4687,
                                        "nodeType": "Block",
                                        "src": "2387:114:33",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4675,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 4668,
                                                                        "name": "allowance",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4505,
                                                                        "src": "2409:9:33",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                            "typeString": "mapping(address => mapping(address => uint256))"
                                                                        }
                                                                    },
                                                                    "id": 4670,
                                                                    "indexExpression": {
                                                                        "id": 4669,
                                                                        "name": "src",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4633,
                                                                        "src": "2419:3:33",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "2409:14:33",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                        "typeString": "mapping(address => uint256)"
                                                                    }
                                                                },
                                                                "id": 4673,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 4671,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "2424:3:33",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 4672,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "2424:10:33",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "2409:26:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 4674,
                                                                "name": "wad",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4637,
                                                                "src": "2439:3:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2409:33:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 4667,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2401:7:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                            "typeString": "function (bool) pure"
                                                        }
                                                    },
                                                    "id": 4676,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2401:42:33",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4677,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2401:42:33"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4685,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 4678,
                                                                "name": "allowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4505,
                                                                "src": "2457:9:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                                }
                                                            },
                                                            "id": 4682,
                                                            "indexExpression": {
                                                                "id": 4679,
                                                                "name": "src",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4633,
                                                                "src": "2467:3:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2457:14:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 4683,
                                                        "indexExpression": {
                                                            "expression": {
                                                                "id": 4680,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "2472:3:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4681,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "2472:10:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "2457:26:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "id": 4684,
                                                        "name": "wad",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4637,
                                                        "src": "2487:3:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2457:33:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4686,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2457:33:33"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 4693,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 4689,
                                                "name": "balanceOf",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4499,
                                                "src": "2511:9:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4691,
                                            "indexExpression": {
                                                "id": 4690,
                                                "name": "src",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4633,
                                                "src": "2521:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "2511:14:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "-=",
                                        "rightHandSide": {
                                            "id": 4692,
                                            "name": "wad",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4637,
                                            "src": "2529:3:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "2511:21:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4694,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2511:21:33"
                                },
                                {
                                    "expression": {
                                        "id": 4699,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 4695,
                                                "name": "balanceOf",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4499,
                                                "src": "2542:9:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4697,
                                            "indexExpression": {
                                                "id": 4696,
                                                "name": "dst",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4635,
                                                "src": "2552:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "2542:14:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                            "id": 4698,
                                            "name": "wad",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4637,
                                            "src": "2560:3:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "2542:21:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4700,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2542:21:33"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 4702,
                                                "name": "src",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4633,
                                                "src": "2588:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4703,
                                                "name": "dst",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4635,
                                                "src": "2593:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4704,
                                                "name": "wad",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4637,
                                                "src": "2598:3:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4701,
                                            "name": "Transfer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4483,
                                            "src": "2579:8:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 4705,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2579:23:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4706,
                                    "nodeType": "EmitStatement",
                                    "src": "2574:28:33"
                                },
                                {
                                    "expression": {
                                        "hexValue": "74727565",
                                        "id": 4707,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2620:4:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 4641,
                                    "id": 4708,
                                    "nodeType": "Return",
                                    "src": "2613:11:33"
                                }
                            ]
                        },
                        "functionSelector": "23b872dd",
                        "id": 4710,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transferFrom",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4638,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4633,
                                    "mutability": "mutable",
                                    "name": "src",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4710,
                                    "src": "2186:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4632,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2186:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4635,
                                    "mutability": "mutable",
                                    "name": "dst",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4710,
                                    "src": "2207:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4634,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2207:7:33",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4637,
                                    "mutability": "mutable",
                                    "name": "wad",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4710,
                                    "src": "2228:11:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4636,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2228:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2176:69:33"
                        },
                        "returnParameters": {
                            "id": 4641,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4640,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4710,
                                    "src": "2262:4:33",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 4639,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2262:4:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2261:6:33"
                        },
                        "scope": 4711,
                        "src": "2155:476:33",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 4712,
                "src": "756:1877:33"
            }
        ],
        "src": "731:37058:33"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/testing/WETH9.sol",
            "exportedSymbols": {
                "WETH9": [
                    4711
                ]
            },
            "license": "GPL-3.0-or-later"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "^",
                        "0.7",
                        ".0"
                    ]
                },
                "id": 4458,
                "name": "PragmaDirective",
                "src": "731:23:33"
            },
            {
                "attributes": {
                    "abstract": false,
                    "baseContracts": [
                        null
                    ],
                    "contractDependencies": [
                        null
                    ],
                    "contractKind": "contract",
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        4711
                    ],
                    "name": "WETH9",
                    "scope": 4712
                },
                "children": [
                    {
                        "attributes": {
                            "constant": false,
                            "functionSelector": "06fdde03",
                            "mutability": "mutable",
                            "name": "name",
                            "scope": 4711,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "string",
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "string",
                                    "type": "string"
                                },
                                "id": 4459,
                                "name": "ElementaryTypeName",
                                "src": "777:6:33"
                            },
                            {
                                "attributes": {
                                    "hexvalue": "57726170706564204574686572",
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "token": "string",
                                    "type": "literal_string \"Wrapped Ether\"",
                                    "value": "Wrapped Ether"
                                },
                                "id": 4460,
                                "name": "Literal",
                                "src": "798:15:33"
                            }
                        ],
                        "id": 4461,
                        "name": "VariableDeclaration",
                        "src": "777:36:33"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "functionSelector": "95d89b41",
                            "mutability": "mutable",
                            "name": "symbol",
                            "scope": 4711,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "string",
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "string",
                                    "type": "string"
                                },
                                "id": 4462,
                                "name": "ElementaryTypeName",
                                "src": "819:6:33"
                            },
                            {
                                "attributes": {
                                    "hexvalue": "57455448",
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "token": "string",
                                    "type": "literal_string \"WETH\"",
                                    "value": "WETH"
                                },
                                "id": 4463,
                                "name": "Literal",
                                "src": "842:6:33"
                            }
                        ],
                        "id": 4464,
                        "name": "VariableDeclaration",
                        "src": "819:29:33"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "functionSelector": "313ce567",
                            "mutability": "mutable",
                            "name": "decimals",
                            "scope": 4711,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "uint8",
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "uint8",
                                    "type": "uint8"
                                },
                                "id": 4465,
                                "name": "ElementaryTypeName",
                                "src": "854:5:33"
                            },
                            {
                                "attributes": {
                                    "hexvalue": "3138",
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "token": "number",
                                    "type": "int_const 18",
                                    "value": "18"
                                },
                                "id": 4466,
                                "name": "Literal",
                                "src": "878:2:33"
                            }
                        ],
                        "id": 4467,
                        "name": "VariableDeclaration",
                        "src": "854:26:33"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "Approval"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "src",
                                            "scope": 4475,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4468,
                                                "name": "ElementaryTypeName",
                                                "src": "902:7:33"
                                            }
                                        ],
                                        "id": 4469,
                                        "name": "VariableDeclaration",
                                        "src": "902:19:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "guy",
                                            "scope": 4475,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4470,
                                                "name": "ElementaryTypeName",
                                                "src": "923:7:33"
                                            }
                                        ],
                                        "id": 4471,
                                        "name": "VariableDeclaration",
                                        "src": "923:19:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4475,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4472,
                                                "name": "ElementaryTypeName",
                                                "src": "944:7:33"
                                            }
                                        ],
                                        "id": 4473,
                                        "name": "VariableDeclaration",
                                        "src": "944:11:33"
                                    }
                                ],
                                "id": 4474,
                                "name": "ParameterList",
                                "src": "901:55:33"
                            }
                        ],
                        "id": 4475,
                        "name": "EventDefinition",
                        "src": "887:70:33"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "Transfer"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "src",
                                            "scope": 4483,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4476,
                                                "name": "ElementaryTypeName",
                                                "src": "977:7:33"
                                            }
                                        ],
                                        "id": 4477,
                                        "name": "VariableDeclaration",
                                        "src": "977:19:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "dst",
                                            "scope": 4483,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4478,
                                                "name": "ElementaryTypeName",
                                                "src": "998:7:33"
                                            }
                                        ],
                                        "id": 4479,
                                        "name": "VariableDeclaration",
                                        "src": "998:19:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4483,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4480,
                                                "name": "ElementaryTypeName",
                                                "src": "1019:7:33"
                                            }
                                        ],
                                        "id": 4481,
                                        "name": "VariableDeclaration",
                                        "src": "1019:11:33"
                                    }
                                ],
                                "id": 4482,
                                "name": "ParameterList",
                                "src": "976:55:33"
                            }
                        ],
                        "id": 4483,
                        "name": "EventDefinition",
                        "src": "962:70:33"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "Deposit"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "dst",
                                            "scope": 4489,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4484,
                                                "name": "ElementaryTypeName",
                                                "src": "1051:7:33"
                                            }
                                        ],
                                        "id": 4485,
                                        "name": "VariableDeclaration",
                                        "src": "1051:19:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4489,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4486,
                                                "name": "ElementaryTypeName",
                                                "src": "1072:7:33"
                                            }
                                        ],
                                        "id": 4487,
                                        "name": "VariableDeclaration",
                                        "src": "1072:11:33"
                                    }
                                ],
                                "id": 4488,
                                "name": "ParameterList",
                                "src": "1050:34:33"
                            }
                        ],
                        "id": 4489,
                        "name": "EventDefinition",
                        "src": "1037:48:33"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "Withdrawal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "src",
                                            "scope": 4495,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4490,
                                                "name": "ElementaryTypeName",
                                                "src": "1107:7:33"
                                            }
                                        ],
                                        "id": 4491,
                                        "name": "VariableDeclaration",
                                        "src": "1107:19:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4495,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4492,
                                                "name": "ElementaryTypeName",
                                                "src": "1128:7:33"
                                            }
                                        ],
                                        "id": 4493,
                                        "name": "VariableDeclaration",
                                        "src": "1128:11:33"
                                    }
                                ],
                                "id": 4494,
                                "name": "ParameterList",
                                "src": "1106:34:33"
                            }
                        ],
                        "id": 4495,
                        "name": "EventDefinition",
                        "src": "1090:51:33"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "functionSelector": "70a08231",
                            "mutability": "mutable",
                            "name": "balanceOf",
                            "scope": 4711,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => uint256)",
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => uint256)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 4496,
                                        "name": "ElementaryTypeName",
                                        "src": "1155:7:33"
                                    },
                                    {
                                        "attributes": {
                                            "name": "uint256",
                                            "type": "uint256"
                                        },
                                        "id": 4497,
                                        "name": "ElementaryTypeName",
                                        "src": "1166:7:33"
                                    }
                                ],
                                "id": 4498,
                                "name": "Mapping",
                                "src": "1147:27:33"
                            }
                        ],
                        "id": 4499,
                        "name": "VariableDeclaration",
                        "src": "1147:44:33"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "functionSelector": "dd62ed3e",
                            "mutability": "mutable",
                            "name": "allowance",
                            "scope": 4711,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => mapping(address => uint256))",
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => mapping(address => uint256))"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 4500,
                                        "name": "ElementaryTypeName",
                                        "src": "1205:7:33"
                                    },
                                    {
                                        "attributes": {
                                            "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "type": "address"
                                                },
                                                "id": 4501,
                                                "name": "ElementaryTypeName",
                                                "src": "1224:7:33"
                                            },
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4502,
                                                "name": "ElementaryTypeName",
                                                "src": "1235:7:33"
                                            }
                                        ],
                                        "id": 4503,
                                        "name": "Mapping",
                                        "src": "1216:27:33"
                                    }
                                ],
                                "id": 4504,
                                "name": "Mapping",
                                "src": "1197:47:33"
                            }
                        ],
                        "id": 4505,
                        "name": "VariableDeclaration",
                        "src": "1197:64:33"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "fallback",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "scope": 4711,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4506,
                                "name": "ParameterList",
                                "src": "1276:2:33"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4507,
                                "name": "ParameterList",
                                "src": "1296:0:33"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4538,
                                                            "type": "function ()",
                                                            "value": "deposit"
                                                        },
                                                        "id": 4508,
                                                        "name": "Identifier",
                                                        "src": "1306:7:33"
                                                    }
                                                ],
                                                "id": 4509,
                                                "name": "FunctionCall",
                                                "src": "1306:9:33"
                                            }
                                        ],
                                        "id": 4510,
                                        "name": "ExpressionStatement",
                                        "src": "1306:9:33"
                                    }
                                ],
                                "id": 4511,
                                "name": "Block",
                                "src": "1296:26:33"
                            }
                        ],
                        "id": 4512,
                        "name": "FunctionDefinition",
                        "src": "1268:54:33"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "receive",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "scope": 4711,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4513,
                                "name": "ParameterList",
                                "src": "1335:2:33"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4514,
                                "name": "ParameterList",
                                "src": "1355:0:33"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4538,
                                                            "type": "function ()",
                                                            "value": "deposit"
                                                        },
                                                        "id": 4515,
                                                        "name": "Identifier",
                                                        "src": "1365:7:33"
                                                    }
                                                ],
                                                "id": 4516,
                                                "name": "FunctionCall",
                                                "src": "1365:9:33"
                                            }
                                        ],
                                        "id": 4517,
                                        "name": "ExpressionStatement",
                                        "src": "1365:9:33"
                                    }
                                ],
                                "id": 4518,
                                "name": "Block",
                                "src": "1355:26:33"
                            }
                        ],
                        "id": 4519,
                        "name": "FunctionDefinition",
                        "src": "1328:53:33"
                    },
                    {
                        "attributes": {
                            "functionSelector": "d0e30db0",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "deposit",
                            "scope": 4711,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4520,
                                "name": "ParameterList",
                                "src": "1403:2:33"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4521,
                                "name": "ParameterList",
                                "src": "1421:0:33"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "+=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4499,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "balanceOf"
                                                                },
                                                                "id": 4522,
                                                                "name": "Identifier",
                                                                "src": "1431:9:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -15,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 4523,
                                                                        "name": "Identifier",
                                                                        "src": "1441:3:33"
                                                                    }
                                                                ],
                                                                "id": 4524,
                                                                "name": "MemberAccess",
                                                                "src": "1441:10:33"
                                                            }
                                                        ],
                                                        "id": 4525,
                                                        "name": "IndexAccess",
                                                        "src": "1431:21:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "value",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4526,
                                                                "name": "Identifier",
                                                                "src": "1456:3:33"
                                                            }
                                                        ],
                                                        "id": 4527,
                                                        "name": "MemberAccess",
                                                        "src": "1456:9:33"
                                                    }
                                                ],
                                                "id": 4528,
                                                "name": "Assignment",
                                                "src": "1431:34:33"
                                            }
                                        ],
                                        "id": 4529,
                                        "name": "ExpressionStatement",
                                        "src": "1431:34:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4489,
                                                            "type": "function (address,uint256)",
                                                            "value": "Deposit"
                                                        },
                                                        "id": 4530,
                                                        "name": "Identifier",
                                                        "src": "1480:7:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4531,
                                                                "name": "Identifier",
                                                                "src": "1488:3:33"
                                                            }
                                                        ],
                                                        "id": 4532,
                                                        "name": "MemberAccess",
                                                        "src": "1488:10:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "value",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4533,
                                                                "name": "Identifier",
                                                                "src": "1500:3:33"
                                                            }
                                                        ],
                                                        "id": 4534,
                                                        "name": "MemberAccess",
                                                        "src": "1500:9:33"
                                                    }
                                                ],
                                                "id": 4535,
                                                "name": "FunctionCall",
                                                "src": "1480:30:33"
                                            }
                                        ],
                                        "id": 4536,
                                        "name": "EmitStatement",
                                        "src": "1475:35:33"
                                    }
                                ],
                                "id": 4537,
                                "name": "Block",
                                "src": "1421:96:33"
                            }
                        ],
                        "id": 4538,
                        "name": "FunctionDefinition",
                        "src": "1387:130:33"
                    },
                    {
                        "attributes": {
                            "functionSelector": "2e1a7d4d",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "withdraw",
                            "scope": 4711,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4574,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4539,
                                                "name": "ElementaryTypeName",
                                                "src": "1541:7:33"
                                            }
                                        ],
                                        "id": 4540,
                                        "name": "VariableDeclaration",
                                        "src": "1541:11:33"
                                    }
                                ],
                                "id": 4541,
                                "name": "ParameterList",
                                "src": "1540:13:33"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4542,
                                "name": "ParameterList",
                                "src": "1561:0:33"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 4543,
                                                        "name": "Identifier",
                                                        "src": "1571:7:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": ">=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4499,
                                                                            "type": "mapping(address => uint256)",
                                                                            "value": "balanceOf"
                                                                        },
                                                                        "id": 4544,
                                                                        "name": "Identifier",
                                                                        "src": "1579:9:33"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sender",
                                                                            "type": "address payable"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -15,
                                                                                    "type": "msg",
                                                                                    "value": "msg"
                                                                                },
                                                                                "id": 4545,
                                                                                "name": "Identifier",
                                                                                "src": "1589:3:33"
                                                                            }
                                                                        ],
                                                                        "id": 4546,
                                                                        "name": "MemberAccess",
                                                                        "src": "1589:10:33"
                                                                    }
                                                                ],
                                                                "id": 4547,
                                                                "name": "IndexAccess",
                                                                "src": "1579:21:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4540,
                                                                    "type": "uint256",
                                                                    "value": "wad"
                                                                },
                                                                "id": 4548,
                                                                "name": "Identifier",
                                                                "src": "1604:3:33"
                                                            }
                                                        ],
                                                        "id": 4549,
                                                        "name": "BinaryOperation",
                                                        "src": "1579:28:33"
                                                    }
                                                ],
                                                "id": 4550,
                                                "name": "FunctionCall",
                                                "src": "1571:37:33"
                                            }
                                        ],
                                        "id": 4551,
                                        "name": "ExpressionStatement",
                                        "src": "1571:37:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "-=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4499,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "balanceOf"
                                                                },
                                                                "id": 4552,
                                                                "name": "Identifier",
                                                                "src": "1618:9:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -15,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 4553,
                                                                        "name": "Identifier",
                                                                        "src": "1628:3:33"
                                                                    }
                                                                ],
                                                                "id": 4554,
                                                                "name": "MemberAccess",
                                                                "src": "1628:10:33"
                                                            }
                                                        ],
                                                        "id": 4555,
                                                        "name": "IndexAccess",
                                                        "src": "1618:21:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4540,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4556,
                                                        "name": "Identifier",
                                                        "src": "1643:3:33"
                                                    }
                                                ],
                                                "id": 4557,
                                                "name": "Assignment",
                                                "src": "1618:28:33"
                                            }
                                        ],
                                        "id": 4558,
                                        "name": "ExpressionStatement",
                                        "src": "1618:28:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transfer",
                                                            "type": "function (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -15,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 4559,
                                                                        "name": "Identifier",
                                                                        "src": "1656:3:33"
                                                                    }
                                                                ],
                                                                "id": 4562,
                                                                "name": "MemberAccess",
                                                                "src": "1656:10:33"
                                                            }
                                                        ],
                                                        "id": 4563,
                                                        "name": "MemberAccess",
                                                        "src": "1656:19:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4540,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4564,
                                                        "name": "Identifier",
                                                        "src": "1676:3:33"
                                                    }
                                                ],
                                                "id": 4565,
                                                "name": "FunctionCall",
                                                "src": "1656:24:33"
                                            }
                                        ],
                                        "id": 4566,
                                        "name": "ExpressionStatement",
                                        "src": "1656:24:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4495,
                                                            "type": "function (address,uint256)",
                                                            "value": "Withdrawal"
                                                        },
                                                        "id": 4567,
                                                        "name": "Identifier",
                                                        "src": "1695:10:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4568,
                                                                "name": "Identifier",
                                                                "src": "1706:3:33"
                                                            }
                                                        ],
                                                        "id": 4569,
                                                        "name": "MemberAccess",
                                                        "src": "1706:10:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4540,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4570,
                                                        "name": "Identifier",
                                                        "src": "1718:3:33"
                                                    }
                                                ],
                                                "id": 4571,
                                                "name": "FunctionCall",
                                                "src": "1695:27:33"
                                            }
                                        ],
                                        "id": 4572,
                                        "name": "EmitStatement",
                                        "src": "1690:32:33"
                                    }
                                ],
                                "id": 4573,
                                "name": "Block",
                                "src": "1561:168:33"
                            }
                        ],
                        "id": 4574,
                        "name": "FunctionDefinition",
                        "src": "1523:206:33"
                    },
                    {
                        "attributes": {
                            "functionSelector": "18160ddd",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "totalSupply",
                            "scope": 4711,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4575,
                                "name": "ParameterList",
                                "src": "1755:2:33"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 4586,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4576,
                                                "name": "ElementaryTypeName",
                                                "src": "1779:7:33"
                                            }
                                        ],
                                        "id": 4577,
                                        "name": "VariableDeclaration",
                                        "src": "1779:7:33"
                                    }
                                ],
                                "id": 4578,
                                "name": "ParameterList",
                                "src": "1778:9:33"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 4578
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "member_name": "balance",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_WETH9_$4711",
                                                                            "typeString": "contract WETH9"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 4579,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "1805:7:33"
                                                                    }
                                                                ],
                                                                "id": 4580,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "1805:7:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract WETH9",
                                                                    "value": "this"
                                                                },
                                                                "id": 4581,
                                                                "name": "Identifier",
                                                                "src": "1813:4:33"
                                                            }
                                                        ],
                                                        "id": 4582,
                                                        "name": "FunctionCall",
                                                        "src": "1805:13:33"
                                                    }
                                                ],
                                                "id": 4583,
                                                "name": "MemberAccess",
                                                "src": "1805:21:33"
                                            }
                                        ],
                                        "id": 4584,
                                        "name": "Return",
                                        "src": "1798:28:33"
                                    }
                                ],
                                "id": 4585,
                                "name": "Block",
                                "src": "1788:45:33"
                            }
                        ],
                        "id": 4586,
                        "name": "FunctionDefinition",
                        "src": "1735:98:33"
                    },
                    {
                        "attributes": {
                            "functionSelector": "095ea7b3",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "approve",
                            "scope": 4711,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "guy",
                                            "scope": 4614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4587,
                                                "name": "ElementaryTypeName",
                                                "src": "1856:7:33"
                                            }
                                        ],
                                        "id": 4588,
                                        "name": "VariableDeclaration",
                                        "src": "1856:11:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4589,
                                                "name": "ElementaryTypeName",
                                                "src": "1869:7:33"
                                            }
                                        ],
                                        "id": 4590,
                                        "name": "VariableDeclaration",
                                        "src": "1869:11:33"
                                    }
                                ],
                                "id": 4591,
                                "name": "ParameterList",
                                "src": "1855:26:33"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 4614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 4592,
                                                "name": "ElementaryTypeName",
                                                "src": "1898:4:33"
                                            }
                                        ],
                                        "id": 4593,
                                        "name": "VariableDeclaration",
                                        "src": "1898:4:33"
                                    }
                                ],
                                "id": 4594,
                                "name": "ParameterList",
                                "src": "1897:6:33"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "mapping(address => uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4505,
                                                                            "type": "mapping(address => mapping(address => uint256))",
                                                                            "value": "allowance"
                                                                        },
                                                                        "id": 4595,
                                                                        "name": "Identifier",
                                                                        "src": "1914:9:33"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sender",
                                                                            "type": "address payable"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -15,
                                                                                    "type": "msg",
                                                                                    "value": "msg"
                                                                                },
                                                                                "id": 4596,
                                                                                "name": "Identifier",
                                                                                "src": "1924:3:33"
                                                                            }
                                                                        ],
                                                                        "id": 4597,
                                                                        "name": "MemberAccess",
                                                                        "src": "1924:10:33"
                                                                    }
                                                                ],
                                                                "id": 4599,
                                                                "name": "IndexAccess",
                                                                "src": "1914:21:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4588,
                                                                    "type": "address",
                                                                    "value": "guy"
                                                                },
                                                                "id": 4598,
                                                                "name": "Identifier",
                                                                "src": "1936:3:33"
                                                            }
                                                        ],
                                                        "id": 4600,
                                                        "name": "IndexAccess",
                                                        "src": "1914:26:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4590,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4601,
                                                        "name": "Identifier",
                                                        "src": "1943:3:33"
                                                    }
                                                ],
                                                "id": 4602,
                                                "name": "Assignment",
                                                "src": "1914:32:33"
                                            }
                                        ],
                                        "id": 4603,
                                        "name": "ExpressionStatement",
                                        "src": "1914:32:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4475,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "Approval"
                                                        },
                                                        "id": 4604,
                                                        "name": "Identifier",
                                                        "src": "1961:8:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4605,
                                                                "name": "Identifier",
                                                                "src": "1970:3:33"
                                                            }
                                                        ],
                                                        "id": 4606,
                                                        "name": "MemberAccess",
                                                        "src": "1970:10:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4588,
                                                            "type": "address",
                                                            "value": "guy"
                                                        },
                                                        "id": 4607,
                                                        "name": "Identifier",
                                                        "src": "1982:3:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4590,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4608,
                                                        "name": "Identifier",
                                                        "src": "1987:3:33"
                                                    }
                                                ],
                                                "id": 4609,
                                                "name": "FunctionCall",
                                                "src": "1961:30:33"
                                            }
                                        ],
                                        "id": 4610,
                                        "name": "EmitStatement",
                                        "src": "1956:35:33"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 4594
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 4611,
                                                "name": "Literal",
                                                "src": "2008:4:33"
                                            }
                                        ],
                                        "id": 4612,
                                        "name": "Return",
                                        "src": "2001:11:33"
                                    }
                                ],
                                "id": 4613,
                                "name": "Block",
                                "src": "1904:115:33"
                            }
                        ],
                        "id": 4614,
                        "name": "FunctionDefinition",
                        "src": "1839:180:33"
                    },
                    {
                        "attributes": {
                            "functionSelector": "a9059cbb",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "transfer",
                            "scope": 4711,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "dst",
                                            "scope": 4631,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4615,
                                                "name": "ElementaryTypeName",
                                                "src": "2043:7:33"
                                            }
                                        ],
                                        "id": 4616,
                                        "name": "VariableDeclaration",
                                        "src": "2043:11:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4631,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4617,
                                                "name": "ElementaryTypeName",
                                                "src": "2056:7:33"
                                            }
                                        ],
                                        "id": 4618,
                                        "name": "VariableDeclaration",
                                        "src": "2056:11:33"
                                    }
                                ],
                                "id": 4619,
                                "name": "ParameterList",
                                "src": "2042:26:33"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 4631,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 4620,
                                                "name": "ElementaryTypeName",
                                                "src": "2085:4:33"
                                            }
                                        ],
                                        "id": 4621,
                                        "name": "VariableDeclaration",
                                        "src": "2085:4:33"
                                    }
                                ],
                                "id": 4622,
                                "name": "ParameterList",
                                "src": "2084:6:33"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 4622
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4710,
                                                            "type": "function (address,address,uint256) returns (bool)",
                                                            "value": "transferFrom"
                                                        },
                                                        "id": 4623,
                                                        "name": "Identifier",
                                                        "src": "2108:12:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4624,
                                                                "name": "Identifier",
                                                                "src": "2121:3:33"
                                                            }
                                                        ],
                                                        "id": 4625,
                                                        "name": "MemberAccess",
                                                        "src": "2121:10:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4616,
                                                            "type": "address",
                                                            "value": "dst"
                                                        },
                                                        "id": 4626,
                                                        "name": "Identifier",
                                                        "src": "2133:3:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4618,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4627,
                                                        "name": "Identifier",
                                                        "src": "2138:3:33"
                                                    }
                                                ],
                                                "id": 4628,
                                                "name": "FunctionCall",
                                                "src": "2108:34:33"
                                            }
                                        ],
                                        "id": 4629,
                                        "name": "Return",
                                        "src": "2101:41:33"
                                    }
                                ],
                                "id": 4630,
                                "name": "Block",
                                "src": "2091:58:33"
                            }
                        ],
                        "id": 4631,
                        "name": "FunctionDefinition",
                        "src": "2025:124:33"
                    },
                    {
                        "attributes": {
                            "functionSelector": "23b872dd",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "transferFrom",
                            "scope": 4711,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "src",
                                            "scope": 4710,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4632,
                                                "name": "ElementaryTypeName",
                                                "src": "2186:7:33"
                                            }
                                        ],
                                        "id": 4633,
                                        "name": "VariableDeclaration",
                                        "src": "2186:11:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "dst",
                                            "scope": 4710,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4634,
                                                "name": "ElementaryTypeName",
                                                "src": "2207:7:33"
                                            }
                                        ],
                                        "id": 4635,
                                        "name": "VariableDeclaration",
                                        "src": "2207:11:33"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "wad",
                                            "scope": 4710,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4636,
                                                "name": "ElementaryTypeName",
                                                "src": "2228:7:33"
                                            }
                                        ],
                                        "id": 4637,
                                        "name": "VariableDeclaration",
                                        "src": "2228:11:33"
                                    }
                                ],
                                "id": 4638,
                                "name": "ParameterList",
                                "src": "2176:69:33"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 4710,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 4639,
                                                "name": "ElementaryTypeName",
                                                "src": "2262:4:33"
                                            }
                                        ],
                                        "id": 4640,
                                        "name": "VariableDeclaration",
                                        "src": "2262:4:33"
                                    }
                                ],
                                "id": 4641,
                                "name": "ParameterList",
                                "src": "2261:6:33"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 4642,
                                                        "name": "Identifier",
                                                        "src": "2278:7:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": ">=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4499,
                                                                            "type": "mapping(address => uint256)",
                                                                            "value": "balanceOf"
                                                                        },
                                                                        "id": 4643,
                                                                        "name": "Identifier",
                                                                        "src": "2286:9:33"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4633,
                                                                            "type": "address",
                                                                            "value": "src"
                                                                        },
                                                                        "id": 4644,
                                                                        "name": "Identifier",
                                                                        "src": "2296:3:33"
                                                                    }
                                                                ],
                                                                "id": 4645,
                                                                "name": "IndexAccess",
                                                                "src": "2286:14:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4637,
                                                                    "type": "uint256",
                                                                    "value": "wad"
                                                                },
                                                                "id": 4646,
                                                                "name": "Identifier",
                                                                "src": "2304:3:33"
                                                            }
                                                        ],
                                                        "id": 4647,
                                                        "name": "BinaryOperation",
                                                        "src": "2286:21:33"
                                                    }
                                                ],
                                                "id": 4648,
                                                "name": "FunctionCall",
                                                "src": "2278:30:33"
                                            }
                                        ],
                                        "id": 4649,
                                        "name": "ExpressionStatement",
                                        "src": "2278:30:33"
                                    },
                                    {
                                        "attributes": {},
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "&&",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "!=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4633,
                                                                    "type": "address",
                                                                    "value": "src"
                                                                },
                                                                "id": 4650,
                                                                "name": "Identifier",
                                                                "src": "2323:3:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -15,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 4651,
                                                                        "name": "Identifier",
                                                                        "src": "2330:3:33"
                                                                    }
                                                                ],
                                                                "id": 4652,
                                                                "name": "MemberAccess",
                                                                "src": "2330:10:33"
                                                            }
                                                        ],
                                                        "id": 4653,
                                                        "name": "BinaryOperation",
                                                        "src": "2323:17:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "!=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4505,
                                                                                    "type": "mapping(address => mapping(address => uint256))",
                                                                                    "value": "allowance"
                                                                                },
                                                                                "id": 4654,
                                                                                "name": "Identifier",
                                                                                "src": "2344:9:33"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4633,
                                                                                    "type": "address",
                                                                                    "value": "src"
                                                                                },
                                                                                "id": 4655,
                                                                                "name": "Identifier",
                                                                                "src": "2354:3:33"
                                                                            }
                                                                        ],
                                                                        "id": 4656,
                                                                        "name": "IndexAccess",
                                                                        "src": "2344:14:33"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sender",
                                                                            "type": "address payable"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -15,
                                                                                    "type": "msg",
                                                                                    "value": "msg"
                                                                                },
                                                                                "id": 4657,
                                                                                "name": "Identifier",
                                                                                "src": "2359:3:33"
                                                                            }
                                                                        ],
                                                                        "id": 4658,
                                                                        "name": "MemberAccess",
                                                                        "src": "2359:10:33"
                                                                    }
                                                                ],
                                                                "id": 4659,
                                                                "name": "IndexAccess",
                                                                "src": "2344:26:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                    "typeString": "int_const -1"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "uint256"
                                                                                },
                                                                                "id": 4660,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "2374:7:33"
                                                                            }
                                                                        ],
                                                                        "id": 4661,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "2374:7:33"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "operator": "-",
                                                                            "prefix": true,
                                                                            "type": "int_const -1"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "hexvalue": "31",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "token": "number",
                                                                                    "type": "int_const 1",
                                                                                    "value": "1"
                                                                                },
                                                                                "id": 4662,
                                                                                "name": "Literal",
                                                                                "src": "2383:1:33"
                                                                            }
                                                                        ],
                                                                        "id": 4663,
                                                                        "name": "UnaryOperation",
                                                                        "src": "2382:2:33"
                                                                    }
                                                                ],
                                                                "id": 4664,
                                                                "name": "FunctionCall",
                                                                "src": "2374:11:33"
                                                            }
                                                        ],
                                                        "id": 4665,
                                                        "name": "BinaryOperation",
                                                        "src": "2344:41:33"
                                                    }
                                                ],
                                                "id": 4666,
                                                "name": "BinaryOperation",
                                                "src": "2323:62:33"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                -18,
                                                                                -18
                                                                            ],
                                                                            "referencedDeclaration": -18,
                                                                            "type": "function (bool) pure",
                                                                            "value": "require"
                                                                        },
                                                                        "id": 4667,
                                                                        "name": "Identifier",
                                                                        "src": "2401:7:33"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": ">=",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "uint256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => uint256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4505,
                                                                                                    "type": "mapping(address => mapping(address => uint256))",
                                                                                                    "value": "allowance"
                                                                                                },
                                                                                                "id": 4668,
                                                                                                "name": "Identifier",
                                                                                                "src": "2409:9:33"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4633,
                                                                                                    "type": "address",
                                                                                                    "value": "src"
                                                                                                },
                                                                                                "id": 4669,
                                                                                                "name": "Identifier",
                                                                                                "src": "2419:3:33"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4670,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "2409:14:33"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "sender",
                                                                                            "type": "address payable"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": -15,
                                                                                                    "type": "msg",
                                                                                                    "value": "msg"
                                                                                                },
                                                                                                "id": 4671,
                                                                                                "name": "Identifier",
                                                                                                "src": "2424:3:33"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4672,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "2424:10:33"
                                                                                    }
                                                                                ],
                                                                                "id": 4673,
                                                                                "name": "IndexAccess",
                                                                                "src": "2409:26:33"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4637,
                                                                                    "type": "uint256",
                                                                                    "value": "wad"
                                                                                },
                                                                                "id": 4674,
                                                                                "name": "Identifier",
                                                                                "src": "2439:3:33"
                                                                            }
                                                                        ],
                                                                        "id": 4675,
                                                                        "name": "BinaryOperation",
                                                                        "src": "2409:33:33"
                                                                    }
                                                                ],
                                                                "id": 4676,
                                                                "name": "FunctionCall",
                                                                "src": "2401:42:33"
                                                            }
                                                        ],
                                                        "id": 4677,
                                                        "name": "ExpressionStatement",
                                                        "src": "2401:42:33"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "-=",
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4505,
                                                                                            "type": "mapping(address => mapping(address => uint256))",
                                                                                            "value": "allowance"
                                                                                        },
                                                                                        "id": 4678,
                                                                                        "name": "Identifier",
                                                                                        "src": "2457:9:33"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4633,
                                                                                            "type": "address",
                                                                                            "value": "src"
                                                                                        },
                                                                                        "id": 4679,
                                                                                        "name": "Identifier",
                                                                                        "src": "2467:3:33"
                                                                                    }
                                                                                ],
                                                                                "id": 4682,
                                                                                "name": "IndexAccess",
                                                                                "src": "2457:14:33"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sender",
                                                                                    "type": "address payable"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": -15,
                                                                                            "type": "msg",
                                                                                            "value": "msg"
                                                                                        },
                                                                                        "id": 4680,
                                                                                        "name": "Identifier",
                                                                                        "src": "2472:3:33"
                                                                                    }
                                                                                ],
                                                                                "id": 4681,
                                                                                "name": "MemberAccess",
                                                                                "src": "2472:10:33"
                                                                            }
                                                                        ],
                                                                        "id": 4683,
                                                                        "name": "IndexAccess",
                                                                        "src": "2457:26:33"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4637,
                                                                            "type": "uint256",
                                                                            "value": "wad"
                                                                        },
                                                                        "id": 4684,
                                                                        "name": "Identifier",
                                                                        "src": "2487:3:33"
                                                                    }
                                                                ],
                                                                "id": 4685,
                                                                "name": "Assignment",
                                                                "src": "2457:33:33"
                                                            }
                                                        ],
                                                        "id": 4686,
                                                        "name": "ExpressionStatement",
                                                        "src": "2457:33:33"
                                                    }
                                                ],
                                                "id": 4687,
                                                "name": "Block",
                                                "src": "2387:114:33"
                                            }
                                        ],
                                        "id": 4688,
                                        "name": "IfStatement",
                                        "src": "2319:182:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "-=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4499,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "balanceOf"
                                                                },
                                                                "id": 4689,
                                                                "name": "Identifier",
                                                                "src": "2511:9:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4633,
                                                                    "type": "address",
                                                                    "value": "src"
                                                                },
                                                                "id": 4690,
                                                                "name": "Identifier",
                                                                "src": "2521:3:33"
                                                            }
                                                        ],
                                                        "id": 4691,
                                                        "name": "IndexAccess",
                                                        "src": "2511:14:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4637,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4692,
                                                        "name": "Identifier",
                                                        "src": "2529:3:33"
                                                    }
                                                ],
                                                "id": 4693,
                                                "name": "Assignment",
                                                "src": "2511:21:33"
                                            }
                                        ],
                                        "id": 4694,
                                        "name": "ExpressionStatement",
                                        "src": "2511:21:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "+=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4499,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "balanceOf"
                                                                },
                                                                "id": 4695,
                                                                "name": "Identifier",
                                                                "src": "2542:9:33"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4635,
                                                                    "type": "address",
                                                                    "value": "dst"
                                                                },
                                                                "id": 4696,
                                                                "name": "Identifier",
                                                                "src": "2552:3:33"
                                                            }
                                                        ],
                                                        "id": 4697,
                                                        "name": "IndexAccess",
                                                        "src": "2542:14:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4637,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4698,
                                                        "name": "Identifier",
                                                        "src": "2560:3:33"
                                                    }
                                                ],
                                                "id": 4699,
                                                "name": "Assignment",
                                                "src": "2542:21:33"
                                            }
                                        ],
                                        "id": 4700,
                                        "name": "ExpressionStatement",
                                        "src": "2542:21:33"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4483,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "Transfer"
                                                        },
                                                        "id": 4701,
                                                        "name": "Identifier",
                                                        "src": "2579:8:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4633,
                                                            "type": "address",
                                                            "value": "src"
                                                        },
                                                        "id": 4702,
                                                        "name": "Identifier",
                                                        "src": "2588:3:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4635,
                                                            "type": "address",
                                                            "value": "dst"
                                                        },
                                                        "id": 4703,
                                                        "name": "Identifier",
                                                        "src": "2593:3:33"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4637,
                                                            "type": "uint256",
                                                            "value": "wad"
                                                        },
                                                        "id": 4704,
                                                        "name": "Identifier",
                                                        "src": "2598:3:33"
                                                    }
                                                ],
                                                "id": 4705,
                                                "name": "FunctionCall",
                                                "src": "2579:23:33"
                                            }
                                        ],
                                        "id": 4706,
                                        "name": "EmitStatement",
                                        "src": "2574:28:33"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 4641
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 4707,
                                                "name": "Literal",
                                                "src": "2620:4:33"
                                            }
                                        ],
                                        "id": 4708,
                                        "name": "Return",
                                        "src": "2613:11:33"
                                    }
                                ],
                                "id": 4709,
                                "name": "Block",
                                "src": "2268:363:33"
                            }
                        ],
                        "id": 4710,
                        "name": "FunctionDefinition",
                        "src": "2155:476:33"
                    }
                ],
                "id": 4711,
                "name": "ContractDefinition",
                "src": "756:1877:33"
            }
        ],
        "id": 4712,
        "name": "SourceUnit",
        "src": "731:37058:33"
    },
    "compiler": {
        "name": "solc",
        "version": "0.7.3+commit.9bfce1f6.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.3.3",
    "updatedAt": "2021-02-01T23:13:33.266Z",
    "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
