UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

626 lines (625 loc) 96.3 kB
{ "contractName": "CustomTestToken", "abi": [ { "inputs": [ { "internalType": "string", "name": "__name", "type": "string" }, { "internalType": "string", "name": "__symbol", "type": "string" }, { "internalType": "uint8", "name": "__decimals", "type": "uint8" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Issue", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "addBalance", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "who", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "issue", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "who", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "issueTo", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "setBalance", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bool", "name": "_shouldRevertNameCall", "type": "bool" } ], "name": "setShouldRevertNameCall", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "shouldRevertNameCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"__name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"__symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"__decimals\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Issue\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"addBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"issue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"issueTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"setBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_shouldRevertNameCall\",\"type\":\"bool\"}],\"name\":\"setShouldRevertNameCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"shouldRevertNameCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/CustomTestToken.sol\":\"CustomTestToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/CustomTestToken.sol\":{\"keccak256\":\"0x2580ad1d4b6092a9f0a8ff20dd4bbdc7fc98bdfb44ff840c873fa6a7a9a6e8ad\",\"urls\":[\"bzz-raw://eeae34f2a35d92dc9e2a39d3d8e128377897907de527d6c56471dbc9ca7867ec\",\"dweb:/ipfs/QmcD4MfP5MCPQSmv8FFDScjiL9Yw724EyFqnyqgKzJqg74\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestToken.sol\":{\"keccak256\":\"0xfbf238308c7b72cfc85387bdcf3a88145ab193c82268bed81f6eeea470c8e1bb\",\"urls\":[\"bzz-raw://ee425eb5d26cf169e6fc1ec50c66a59596bb4af77c9b190e5d8b3a0abd26efa1\",\"dweb:/ipfs/QmRKFYpuX7Q3pJ3UuLMcAHJ8SF1Gegp7Q99r2wZo57hDrR\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b506040516200122638038062001226833981016040819052620000349162000191565b8251620000499060049060208601906200007d565b5081516200005f9060059060208501906200007d565b506006805460ff191660ff9290921691909117905550620002b69050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000c057805160ff1916838001178555620000f0565b82800160010185558215620000f0579182015b82811115620000f0578251825591602001919060010190620000d3565b50620000fe92915062000102565b5090565b6200011f91905b80821115620000fe576000815560010162000109565b90565b600082601f8301126200013457600080fd5b81516200014b62000145826200023b565b62000214565b915080825260208301602083018583830111156200016857600080fd5b6200017583828462000269565b50505092915050565b80516200018b816200029c565b92915050565b600080600060608486031215620001a757600080fd5b83516001600160401b03811115620001be57600080fd5b620001cc8682870162000122565b93505060208401516001600160401b03811115620001e957600080fd5b620001f78682870162000122565b92505060406200020a868287016200017e565b9150509250925092565b6040518181016001600160401b03811182821017156200023357600080fd5b604052919050565b60006001600160401b038211156200025257600080fd5b506020601f91909101601f19160190565b60ff1690565b60005b83811015620002865781810151838201526020016200026c565b8381111562000296576000848401525b50505050565b620002a78162000263565b8114620002b357600080fd5b50565b610f6080620002c66000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063313ce56711610097578063b6169b9c11610066578063b6169b9c146101d3578063cc872b66146101e6578063dd62ed3e146101f9578063e30443bc1461020c576100f5565b8063313ce5671461019057806370a08231146101a557806395d89b41146101b8578063a9059cbb146101c0576100f5565b806318160ddd116100d357806318160ddd1461014d5780631e929ac31461016257806321e5383a1461016a57806323b872dd1461017d576100f5565b806306fdde03146100fa578063095ea7b3146101185780631207f0c114610138575b600080fd5b61010261021f565b60405161010f9190610dd3565b60405180910390f35b61012b610126366004610b5e565b610316565b60405161010f9190610dc5565b61014b610146366004610b5e565b61038e565b005b610155610441565b60405161010f9190610e44565b61012b610447565b61014b610178366004610b5e565b610450565b61012b61018b366004610b11565b61053e565b610198610746565b60405161010f9190610e52565b6101556101b3366004610ab1565b61074f565b610102610777565b61012b6101ce366004610b5e565b6107f6565b61014b6101e1366004610b8e565b6108fa565b61014b6101f4366004610bac565b61092b565b610155610207366004610ad7565b610938565b61014b61021a366004610b5e565b610970565b60035460609060ff1615610268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610de4565b60405180910390fd5b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561030c5780601f106102e15761010080835404028352916020019161030c565b820191906000526020600020905b8154815290600101906020018083116102ef57829003601f168201915b5050505050905090565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061037c908690610e44565b60405180910390a35060015b92915050565b6000546103a1908263ffffffff6109c716565b600090815573ffffffffffffffffffffffffffffffffffffffff83168152600160205260409020546103d9908263ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260409081902092909255905130907f4b2682685b046a3dae8e75ff49b82fa703e366056a43c6a791411011134f4f5d90610435908590610e44565b60405180910390a35050565b60005490565b60035460ff1681565b600061045b8361074f565b9050808183011015610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e34565b6104a9818363ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040812091909155546104e3908363ffffffff6109c716565b600090815560405173ffffffffffffffffffffffffffffffffffffffff851691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610531908690610e44565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205482111561059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e24565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054821115610607576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e14565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461063d908363ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559086168152205461067f908363ffffffff610a0d16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526001602090815260408083209390935560028152828220338352905220546106c9908363ffffffff610a0d16565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526002602090815260408083203384529091529081902093909355915190851691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610734908690610e44565b60405180910390a35060019392505050565b60065460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561030c5780601f106102e15761010080835404028352916020019161030c565b3360009081526001602052604081205482111561083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610df4565b3360009081526001602052604090205461085f908363ffffffff610a0d16565b336000908152600160205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461089e908363ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061037c908690610e44565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610935338261038e565b50565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020526040808220849055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610435908590610e44565b600082820183811015610a06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e04565b9392505050565b6000610a0683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115610a88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f9190610dd3565b505050900390565b803561038881610ef7565b803561038881610f0b565b803561038881610f14565b600060208284031215610ac357600080fd5b6000610acf8484610a90565b949350505050565b60008060408385031215610aea57600080fd5b6000610af68585610a90565b9250506020610b0785828601610a90565b9150509250929050565b600080600060608486031215610b2657600080fd5b6000610b328686610a90565b9350506020610b4386828701610a90565b9250506040610b5486828701610aa6565b9150509250925092565b60008060408385031215610b7157600080fd5b6000610b7d8585610a90565b9250506020610b0785828601610aa6565b600060208284031215610ba057600080fd5b6000610acf8484610a9b565b600060208284031215610bbe57600080fd5b6000610acf8484610aa6565b610bd381610e78565b82525050565b6000610be482610e60565b610bee8185610e64565b9350610bfe818560208601610e9f565b610c0781610ecf565b9093019392505050565b6000610c1e601d83610e64565b7f54657374546f6b656e3a206e616d652063616c6c207265766572746564000000815260200192915050565b6000610c57601683610e64565b7f546f6b656e3a205472616e73666572206661696c656400000000000000000000815260200192915050565b6000610c90601b83610e64565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000610cc9602583610e64565b7f237472616e7366657246726f6d3a20494e53554646494349454e545f414c4c4f81527f57414e4345000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000610d28602383610e64565b7f237472616e7366657246726f6d3a20494e53554646494349454e545f42414c4181527f4e43450000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000610d87600d83610e64565b7f494e56414c49445f56414c554500000000000000000000000000000000000000815260200192915050565b610bd381610e96565b610bd381610e99565b602081016103888284610bca565b60208082528101610a068184610bd9565b6020808252810161038881610c11565b6020808252810161038881610c4a565b6020808252810161038881610c83565b6020808252810161038881610cbc565b6020808252810161038881610d1b565b6020808252810161038881610d7a565b602081016103888284610db3565b602081016103888284610dbc565b5190565b90815260200190565b600061038882610e7d565b151590565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b60ff1690565b60005b83811015610eba578181015183820152602001610ea2565b83811115610ec9576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610f0081610e6d565b811461093557600080fd5b610f0081610e78565b610f0081610e9656fea365627a7a72315820ed06c354b206818b4467441d6d47432a40ded89791ab7294a2e2504d648c4c2e6c6578706572696d656e74616cf564736f6c63430005100040", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063313ce56711610097578063b6169b9c11610066578063b6169b9c146101d3578063cc872b66146101e6578063dd62ed3e146101f9578063e30443bc1461020c576100f5565b8063313ce5671461019057806370a08231146101a557806395d89b41146101b8578063a9059cbb146101c0576100f5565b806318160ddd116100d357806318160ddd1461014d5780631e929ac31461016257806321e5383a1461016a57806323b872dd1461017d576100f5565b806306fdde03146100fa578063095ea7b3146101185780631207f0c114610138575b600080fd5b61010261021f565b60405161010f9190610dd3565b60405180910390f35b61012b610126366004610b5e565b610316565b60405161010f9190610dc5565b61014b610146366004610b5e565b61038e565b005b610155610441565b60405161010f9190610e44565b61012b610447565b61014b610178366004610b5e565b610450565b61012b61018b366004610b11565b61053e565b610198610746565b60405161010f9190610e52565b6101556101b3366004610ab1565b61074f565b610102610777565b61012b6101ce366004610b5e565b6107f6565b61014b6101e1366004610b8e565b6108fa565b61014b6101f4366004610bac565b61092b565b610155610207366004610ad7565b610938565b61014b61021a366004610b5e565b610970565b60035460609060ff1615610268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610de4565b60405180910390fd5b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152929183018282801561030c5780601f106102e15761010080835404028352916020019161030c565b820191906000526020600020905b8154815290600101906020018083116102ef57829003601f168201915b5050505050905090565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061037c908690610e44565b60405180910390a35060015b92915050565b6000546103a1908263ffffffff6109c716565b600090815573ffffffffffffffffffffffffffffffffffffffff83168152600160205260409020546103d9908263ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260409081902092909255905130907f4b2682685b046a3dae8e75ff49b82fa703e366056a43c6a791411011134f4f5d90610435908590610e44565b60405180910390a35050565b60005490565b60035460ff1681565b600061045b8361074f565b9050808183011015610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e34565b6104a9818363ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040812091909155546104e3908363ffffffff6109c716565b600090815560405173ffffffffffffffffffffffffffffffffffffffff851691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610531908690610e44565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205482111561059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e24565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054821115610607576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e14565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461063d908363ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559086168152205461067f908363ffffffff610a0d16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526001602090815260408083209390935560028152828220338352905220546106c9908363ffffffff610a0d16565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526002602090815260408083203384529091529081902093909355915190851691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610734908690610e44565b60405180910390a35060019392505050565b60065460ff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561030c5780601f106102e15761010080835404028352916020019161030c565b3360009081526001602052604081205482111561083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610df4565b3360009081526001602052604090205461085f908363ffffffff610a0d16565b336000908152600160205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461089e908363ffffffff6109c716565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061037c908690610e44565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610935338261038e565b50565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020526040808220849055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610435908590610e44565b600082820183811015610a06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90610e04565b9392505050565b6000610a0683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115610a88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f9190610dd3565b505050900390565b803561038881610ef7565b803561038881610f0b565b803561038881610f14565b600060208284031215610ac357600080fd5b6000610acf8484610a90565b949350505050565b60008060408385031215610aea57600080fd5b6000610af68585610a90565b9250506020610b0785828601610a90565b9150509250929050565b600080600060608486031215610b2657600080fd5b6000610b328686610a90565b9350506020610b4386828701610a90565b9250506040610b5486828701610aa6565b9150509250925092565b60008060408385031215610b7157600080fd5b6000610b7d8585610a90565b9250506020610b0785828601610aa6565b600060208284031215610ba057600080fd5b6000610acf8484610a9b565b600060208284031215610bbe57600080fd5b6000610acf8484610aa6565b610bd381610e78565b82525050565b6000610be482610e60565b610bee8185610e64565b9350610bfe818560208601610e9f565b610c0781610ecf565b9093019392505050565b6000610c1e601d83610e64565b7f54657374546f6b656e3a206e616d652063616c6c207265766572746564000000815260200192915050565b6000610c57601683610e64565b7f546f6b656e3a205472616e73666572206661696c656400000000000000000000815260200192915050565b6000610c90601b83610e64565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000610cc9602583610e64565b7f237472616e7366657246726f6d3a20494e53554646494349454e545f414c4c4f81527f57414e4345000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000610d28602383610e64565b7f237472616e7366657246726f6d3a20494e53554646494349454e545f42414c4181527f4e43450000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000610d87600d83610e64565b7f494e56414c49445f56414c554500000000000000000000000000000000000000815260200192915050565b610bd381610e96565b610bd381610e99565b602081016103888284610bca565b60208082528101610a068184610bd9565b6020808252810161038881610c11565b6020808252810161038881610c4a565b6020808252810161038881610c83565b6020808252810161038881610cbc565b6020808252810161038881610d1b565b6020808252810161038881610d7a565b602081016103888284610db3565b602081016103888284610dbc565b5190565b90815260200190565b600061038882610e7d565b151590565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b60ff1690565b60005b83811015610eba578181015183820152602001610ea2565b83811115610ec9576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610f0081610e6d565b811461093557600080fd5b610f0081610e78565b610f0081610e9656fea365627a7a72315820ed06c354b206818b4467441d6d47432a40ded89791ab7294a2e2504d648c4c2e6c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "700:703:105:-;;;832:204;8:9:-1;5:2;;;30:1;27;20:12;5:2;832:204:105;;;;;;;;;;;;;;;;;;;;;955:14;;;;:5;;:14;;;;;:::i;:::-;-1:-1:-1;979:18:105;;;;:7;;:18;;;;;:::i;:::-;-1:-1:-1;1007:9:105;:22;;-1:-1:-1;;1007:22:105;;;;;;;;;;;;-1:-1:-1;700:703:105;;-1:-1:-1;700:703:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;700:703:105;;;-1:-1:-1;700:703:105;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;6:444:-1:-;;119:3;112:4;104:6;100:17;96:27;86:2;;137:1;134;127:12;86:2;167:6;161:13;189:65;204:49;246:6;204:49;;;189:65;;;180:74;;274:6;267:5;260:21;310:4;302:6;298:17;343:4;336:5;332:16;378:3;369:6;364:3;360:16;357:25;354:2;;;395:1;392;385:12;354:2;405:39;437:6;432:3;427;405:39;;;79:371;;;;;;;;458:130;534:13;;552:31;534:13;552:31;;;519:69;;;;;595:729;;;;762:2;750:9;741:7;737:23;733:32;730:2;;;778:1;775;768:12;730:2;813:24;;-1:-1;;;;;846:30;;843:2;;;889:1;886;879:12;843:2;909:74;975:7;966:6;955:9;951:22;909:74;;;899:84;;792:197;1041:2;1030:9;1026:18;1020:25;-1:-1;;;;;1057:6;1054:30;1051:2;;;1097:1;1094;1087:12;1051:2;1117:74;1183:7;1174:6;1163:9;1159:22;1117:74;;;1107:84;;999:198;1228:2;1246:62;1300:7;1291:6;1280:9;1276:22;1246:62;;;1236:72;;1207:107;724:600;;;;;;1331:256;1393:2;1387:9;1419:17;;;-1:-1;;;;;1479:34;;1515:22;;;1476:62;1473:2;;;1551:1;1548;1541:12;1473:2;1567;1560:22;1371:216;;-1:-1;1371:216;1594:322;;-1:-1;;;;;1730:6;1727:30;1724:2;;;1770:1;1767;1760:12;1724:2;-1:-1;1901:4;1837;1814:17;;;;-1:-1;;1810:33;1891:15;;1661:255;1923:81;1994:4;1983:16;;1966:38;2012:268;2077:1;2084:101;2098:6;2095:1;2092:13;2084:101;;;2165:11;;;2159:18;2146:11;;;2139:39;2120:2;2113:10;2084:101;;;2200:6;2197:1;2194:13;2191:2;;;2265:1;2256:6;2251:3;2247:16;2240:27;2191:2;2061:219;;;;;2288:113;2355:22;2371:5;2355:22;;;2348:5;2345:33;2335:2;;2392:1;2389;2382:12;2335:2;2329:72;;;700:703:105;;;;;;", "deployedSourceMap": "700:703:105:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;700:703:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1133:180;;;:::i;:::-;;;;;;;;;;;;;;;;3746:242:139;;;;;;;;;:::i;:::-;;;;;;;;1918:196;;;;;;;;;:::i;:::-;;2120:83;;;:::i;:::-;;;;;;;;1009:32;;;:::i;1550:362::-;;;;;;;;;:::i;3191:549::-;;;;;;;;;:::i;1319:81:105:-;;;:::i;:::-;;;;;;;;2209:99:139;;;;;;;;;:::i;1042:85:105:-;;;:::i;2811:374:139:-;;;;;;;;;:::i;1415:129::-;;;;;;;;;:::i;1164:82::-;;;;;;;;;:::i;2314:128::-;;;;;;;;;:::i;1252:157::-;;;;;;;;;:::i;1133:180:105:-;1199:20;;1170:13;;1199:20;;1195:90;;;1235:39;;;;;;;;;;;;;;;;;;;1195:90;1301:5;1294:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:5;1294:12;;1301:5;1294:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1133:180;:::o;3746:242:139:-;3835:10;3811:4;3827:19;;;:7;:19;;;;;;;;;:28;;;;;;;;;;:36;;;3878:82;3811:4;;3827:28;;3878:82;;;;3858:5;;3878:82;;;;;;;;;;-1:-1:-1;3977:4:139;3746:242;;;;;:::o;1918:196::-;1990:6;;:18;;2001:6;1990:18;:10;:18;:::i;:::-;1981:6;:27;;;2034:13;;;;;:8;:13;;;;;;:25;;2052:6;2034:25;:17;:25;:::i;:::-;2018:13;;;;;;;:8;:13;;;;;;;:41;;;;2074:33;;2088:4;;2074:33;;;;2100:6;;2074:33;;;;;;;;;;1918:196;;:::o;2120:83::-;2164:7;2190:6;2120:83;:::o;1009:32::-;;;;;;:::o;1550:362::-;1650:19;1672:18;1682:7;1672:9;:18::i;:::-;1650:40;;1732:11;1717;1708:6;:20;:35;;1700:61;;;;;;;;;;;;;;1791:23;:11;1807:6;1791:23;:15;:23;:::i;:::-;1771:17;;;;;;;:8;:17;;;;;:43;;;;1833:6;:18;;1844:6;1833:18;:10;:18;:::i;:::-;1824:6;:27;;;1866:39;;;;;;1824:6;1866:39;;;;1898:6;;1866:39;;;;;;;;;;1550:362;;;:::o;3191:549::-;3294:14;;;3270:4;3294:14;;;:8;:14;;;;;;:23;-1:-1:-1;3294:23:139;3286:71;;;;;;;;;;;;;;3375:13;;;;;;;:7;:13;;;;;;;;3389:10;3375:25;;;;;;;;:34;-1:-1:-1;3375:34:139;3367:84;;;;;;;;;;;;;;3477:12;;;;;;;:8;:12;;;;;;:23;;3494:5;3477:23;:16;:23;:::i;:::-;3462:12;;;;;;;;:8;:12;;;;;;:38;;;;3527:14;;;;;;;:25;;3546:5;3527:25;:18;:25;:::i;:::-;3510:14;;;;;;;:8;:14;;;;;;;;:42;;;;3590:7;:13;;;;;3604:10;3590:25;;;;;;:36;;3620:5;3590:36;:29;:36;:::i;:::-;3562:13;;;;;;;;:7;:13;;;;;;;;3576:10;3562:25;;;;;;;;;:64;;;;3641:71;;;;;;3562:13;3641:71;;;;3697:5;;3641:71;;;;;;;;;;-1:-1:-1;3729:4:139;3191:549;;;;;:::o;1319:81:105:-;1384:9;;;;1319:81;:::o;2209:99:139:-;2288:13;;2262:7;2288:13;;;:8;:13;;;;;;;2209:99::o;1042:85:105:-;1113:7;1106:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1081:13;;1106:14;;1113:7;;1106:14;;1113:7;1106:14;;;;;;;;;;;;;;;;;;;;;;;;2811:374:139;2905:10;2872:4;2896:20;;;:8;:20;;;;;;:29;-1:-1:-1;2896:29:139;2888:64;;;;;;;;;;;;;;2995:10;2986:20;;;;:8;:20;;;;;;:31;;3011:5;2986:31;:24;:31;:::i;:::-;2972:10;2963:20;;;;:8;:20;;;;;;:54;;;;:20;3042:12;;;;;;:23;;3059:5;3042:23;:16;:23;:::i;:::-;3027:12;;;;;;;:8;:12;;;;;;;:38;;;;3080:77;;3102:10;;3080:77;;;;3142:5;;3080:77;;1415:129;1493:20;:44;;;;;;;;;;;;;1415:129::o;1164:82::-;1212:27;1220:10;1232:6;1212:7;:27::i;:::-;1164:82;:::o;2314:128::-;2412:14;;;;2386:7;2412:14;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;2314:128::o;1252:157::-;1322:17;;;;;;;:8;:17;;;;;;:26;;;1363:39;;;;;1342:6;;1363:39;;834:176:150;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:150:o;1274:134::-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:150;;;1732:187::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:124;206:20;;231:30;206:20;231:30;;273:130;340:20;;365:33;340:20;365:33;;410:241;;514:2;502:9;493:7;489:23;485:32;482:2;;;530:1;527;520:12;482:2;565:1;582:53;627:7;607:9;582:53;;;572:63;476:175;-1:-1;;;;476:175;658:366;;;779:2;767:9;758:7;754:23;750:32;747:2;;;795:1;792;785:12;747:2;830:1;847:53;892:7;872:9;847:53;;;837:63;;809:97;937:2;955:53;1000:7;991:6;980:9;976:22;955:53;;;945:63;;916:98;741:283;;;;;;1031:491;;;;1169:2;1157:9;1148:7;1144:23;1140:32;1137:2;;;1185:1;1182;1175:12;1137:2;1220:1;1237:53;1282:7;1262:9;1237:53;;;1227:63;;1199:97;1327:2;1345:53;1390:7;1381:6;1370:9;1366:22;1345:53;;;1335:63;;1306:98;1435:2;1453:53;1498:7;1489:6;1478:9;1474:22;1453:53;;;1443:63;;1414:98;1131:391;;;;;;1529:366;;;1650:2;1638:9;1629:7;1625:23;1621:32;1618:2;;;1666:1;1663;1656:12;1618:2;1701:1;1718:53;1763:7;1743:9;1718:53;;;1708:63;;1680:97;1808:2;1826:53;1871:7;1862:6;1851:9;1847:22;1826:53;;1902:235;;2003:2;1991:9;1982:7;1978:23;1974:32;1971:2;;;2019:1;2016;2009:12;1971:2;2054:1;2071:50;2113:7;2093:9;2071:50;;2144:241;;2248:2;2236:9;2227:7;2223:23;2219:32;2216:2;;;2264:1;2261;2254:12;2216:2;2299:1;2316:53;2361:7;2341:9;2316:53;;2392:104;2469:21;2484:5;2469:21;;;2464:3;2457:34;2451:45;;;2503:347;;2615:39;2648:5;2615:39;;;2666:71;2730:6;2725:3;2666:71;;;2659:78;;2742:52;2787:6;2782:3;2775:4;2768:5;2764:16;2742:52;;;2815:29;2837:6;2815:29;;;2806:39;;;;2595:255;-1:-1;;;2595:255;2858:329;;3018:67;3082:2;3077:3;3018:67;;;3118:31;3098:52;;3178:2;3169:12;;3004:183;-1:-1;;3004:183;3196:322;;3356:67;3420:2;3415:3;3356:67;;;3456:24;3436:45;;3509:2;3500:12;;3342:176;-1:-1;;3342:176;3527:327;;3687:67;3751:2;3746:3;3687:67;;;3787:29;3767:50;;3845:2;3836:12;;3673:181;-1:-1;;3673:181;3863:374;;4023:67;4087:2;4082:3;4023:67;;;4123:34;4103:55;;4192:7;4187:2;4178:12;;4171:29;4228:2;4219:12;;4009:228;-1:-1;;4009:228;4246:372;;4406:67;4470:2;4465:3;4406:67;;;4506:34;4486:55;;4575:5;4570:2;4561:12;;4554:27;4609:2;4600:12;;4392:226;-1:-1;;4392:226;4627:313;;4787:67;4851:2;4846:3;4787:67;;;4887:15;4867:36;;4931:2;4922:12;;4773:167;-1:-1;;4773:167;4948:113;5031:24;5049:5;5031:24;;5068:107;5147:22;5163:5;5147:22;;5182:201;5294:2;5279:18;;5308:65;5283:9;5346:6;5308:65;;5390:301;5528:2;5542:47;;;5513:18;;5603:78;5513:18;5667:6;5603:78;;5698:407;5889:2;5903:47;;;5874:18;;5964:131;5874:18;5964:131;;6112:407;6303:2;6317:47;;;6288:18;;6378:131;6288:18;6378:131;;6526:407;6717:2;6731:47;;;6702:18;;6792:131;6702:18;6792:131;;6940:407;7131:2;7145:47;;;7116:18;;7206:131;7116:18;7206:131;;7354:407;7545:2;7559:47;;;7530:18;;7620:131;7530:18;7620:131;;7768:407;7959:2;7973:47;;;7944:18;;8034:131;7944:18;8034:131;;8182:213;8300:2;8285:18;;8314:71;8289:9;8358:6;8314:71;;8402:205;8516:2;8501:18;;8530:67;8505:9;8570:6;8530:67;;8614:122;8702:12;;8673:63;8744:163;8847:19;;;8896:4;8887:14;;8840:67;8915:91;;8977:24;8995:5;8977:24;;9013:85;9079:13;9072:21;;9055:43;9105:121;9178:42;9167:54;;9150:76;9233:72;9295:5;9278:27;9312:81;9383:4;9372:16;;9355:38;9401:268;9466:1;9473:101;9487:6;9484:1;9481:13;9473:101;;;9554:11;;;9548:18;9535:11;;;9528:39;9509:2;9502:10;9473:101;;;9589:6;9586:1;9583:13;9580:2;;;9654:1;9645:6;9640:3;9636:16;9629:27;9580:2;9450:219;;;;;9677:97;9765:2;9745:14;9761:7;9741:28;;9725:49;9782:117;9851:24;9869:5;9851:24;;;9844:5;9841:35;9831:2;;9890:1;9887;9880:12;9906:111;9972:21;9987:5;9972:21;;10024:117;10093:24;10111:5;10093:24;", "source": "/*\n\n Copyright 2021 Dolomite\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { TestToken } from \"./TestToken.sol\";\n\n\ncontract CustomTestToken is TestToken {\n\n string internal _name;\n string internal _symbol;\n uint8 internal _decimals;\n\n constructor(\n string memory __name,\n string memory __symbol,\n uint8 __decimals\n ) public {\n _name = __name;\n _symbol = __symbol;\n _decimals = __decimals;\n }\n\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n function name() public view returns (string memory) {\n if (shouldRevertNameCall) {\n revert(\"TestToken: name call reverted\");\n }\n return _name;\n }\n\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n}\n", "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/CustomTestToken.sol", "ast": { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/CustomTestToken.sol", "exportedSymbols": { "CustomTestToken": [ 31428 ] }, "id": 31429, "nodeType": "SourceUnit", "nodes": [ { "id": 31363, "literals": [ "solidity", "^", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "594:23:105" }, { "id": 31364, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "618:33:105" }, { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestToken.sol", "file": "./TestToken.sol", "id": 31366, "nodeType": "ImportDirective", "scope": 31429, "sourceUnit": 36717, "src": "653:44:105", "symbolAliases": [ { "foreign": 31365, "local": null } ], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 31367, "name": "TestToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 36716, "src": "728:9:105", "typeDescriptions": { "typeIdentifier": "t_contract$_TestToken_$36716", "typeString": "contract TestToken" } }, "id": 31368, "nodeType": "InheritanceSpecifier", "src": "728:9:105" } ], "contractDependencies": [ 24715, 36716, 37552 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 31428, "linearizedBaseContracts": [ 31428, 36716, 24715, 37552 ], "name": "CustomTestToken", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 31370, "name": "_name", "nodeType": "VariableDeclaration", "scope": 31428, "src": "745:21:105", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 31369, "name": "string", "nodeType": "ElementaryTypeName", "src": "745:6:105", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 31372, "name": "_symbol", "nodeType": "VariableDeclaration", "scope": 31428, "src": "772:23:105", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 31371, "name": "string", "nodeType": "ElementaryTypeName", "src": "772:6:105", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 31374, "name": "_decimals", "nodeType": "VariableDeclaration", "scope": 31428, "src": "801:24:105", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 31373, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "801:5:105", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "body": { "id": 31395, "nodeType": "Block", "src": "945:91:105", "statements": [ { "expression": { "argumentTypes": null, "id": 31385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 31383, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31370, "src": "955:5:105", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 31384, "name": "__name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31376, "src": "963:6:105", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "955:14:105", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 31386, "nodeType": "ExpressionStatement", "src": "955:14:105" }, { "expression": { "argumentTypes": null, "id": 31389, "isConstant": false, "isLValue": false, "isPure": false,