UNPKG

@hyperledger/cactus-test-plugin-htlc-eth-besu-erc20

Version:

Integration tests for HTLC with ERC-20 tokens plugin.

605 lines (604 loc) 1.89 MB
{ "contractName": "Test_Token", "abi": [ { "inputs": [ { "internalType": "uint256", "name": "_initialAmount", "type": "uint256" }, { "internalType": "string", "name": "_tokenName", "type": "string" }, { "internalType": "uint8", "name": "_decimalUnits", "type": "uint8" }, { "internalType": "string", "name": "_tokenSymbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "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": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "remaining", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenName\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"params\":{\"_owner\":\"The address of the account owning tokens\",\"_spender\":\"The address of the account able to transfer the tokens\"},\"returns\":{\"remaining\":\"Amount of remaining tokens allowed to spent\"}},\"approve(address,uint256)\":{\"params\":{\"_spender\":\"The address of the account able to transfer the tokens\",\"_value\":\"The amount of wei to be approved for transfer\"},\"returns\":{\"success\":\"Whether the approval was successful or not\"}},\"balanceOf(address)\":{\"params\":{\"_owner\":\"The address from which the balance will be retrieved\"},\"returns\":{\"balance\":\"the balance\"}},\"transfer(address,uint256)\":{\"params\":{\"_to\":\"The address of the recipient\",\"_value\":\"The amount of token to be transferred\"},\"returns\":{\"success\":\"Whether the transfer was successful or not\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"_from\":\"The address of the sender\",\"_to\":\"The address of the recipient\",\"_value\":\"The amount of token to be transferred\"},\"returns\":{\"success\":\"Whether the transfer was successful or not\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"`msg.sender` approves `_addr` to spend `_value` tokens\"},\"transfer(address,uint256)\":{\"notice\":\"send `_value` token to `_to` from `msg.sender`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/jordigironamezcua/pruebas/contracts/Token.sol\":\"Test_Token\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/jordigironamezcua/pruebas/contracts/Token.sol\":{\"keccak256\":\"0x1e85b30d11439d47026a71e631e68f183ed11452cb9736209c8e89302304fb07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://865c5dcda1e1d509c30f824d43abc5fae1ec7a149d73e8bf4372ff26c4848c49\",\"dweb:/ipfs/QmNY8wAdmFLNBRfKbXNA2rHUU3X5CkwMV4fE98VyRYT6LP\"]}},\"version\":1}", "bytecode": "60806040523480156200001157600080fd5b50604051620013af380380620013af833981810160405281019062000037919062000228565b836000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600281905550826003908051906020019062000099929190620000d8565b5081600460006101000a81548160ff021916908360ff1602179055508060059080519060200190620000cd929190620000d8565b505050505062000442565b828054620000e6906200037a565b90600052602060002090601f0160209004810192826200010a576000855562000156565b82601f106200012557805160ff191683800117855562000156565b8280016001018555821562000156579182015b828111156200015557825182559160200191906001019062000138565b5b50905062000165919062000169565b5090565b5b80821115620001845760008160009055506001016200016a565b5090565b60006200019f6200019984620002fa565b620002c6565b905082815260208101848484011115620001b857600080fd5b620001c584828562000344565b509392505050565b600082601f830112620001df57600080fd5b8151620001f184826020860162000188565b91505092915050565b6000815190506200020b816200040e565b92915050565b600081519050620002228162000428565b92915050565b600080600080608085870312156200023f57600080fd5b60006200024f87828801620001fa565b945050602085015167ffffffffffffffff8111156200026d57600080fd5b6200027b87828801620001cd565b93505060406200028e8782880162000211565b925050606085015167ffffffffffffffff811115620002ac57600080fd5b620002ba87828801620001cd565b91505092959194509250565b6000604051905081810181811067ffffffffffffffff82111715620002f057620002ef620003df565b5b8060405250919050565b600067ffffffffffffffff821115620003185762000317620003df565b5b601f19601f8301169050602081019050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200036457808201518184015260208101905062000347565b8381111562000374576000848401525b50505050565b600060028204905060018216806200039357607f821691505b60208210811415620003aa57620003a9620003b0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000419816200032d565b81146200042557600080fd5b50565b620004338162000337565b81146200043f57600080fd5b50565b610f5d80620004526000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063313ce56711610071578063313ce5671461017a5780635c6581651461019857806370a08231146101c857806395d89b41146101f8578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a57806327e235e31461014a575b600080fd5b6100b6610276565b6040516100c39190610c92565b60405180910390f35b6100e660048036038101906100e19190610b09565b610304565b6040516100f39190610c77565b60405180910390f35b6101046103f6565b6040516101119190610cf4565b60405180910390f35b610134600480360381019061012f9190610aba565b6103fc565b6040516101419190610c77565b60405180910390f35b610164600480360381019061015f9190610a55565b6106e2565b6040516101719190610cf4565b60405180910390f35b6101826106fa565b60405161018f9190610d0f565b60405180910390f35b6101b260048036038101906101ad9190610a7e565b61070d565b6040516101bf9190610cf4565b60405180910390f35b6101e260048036038101906101dd9190610a55565b610732565b6040516101ef9190610cf4565b60405180910390f35b61020061077a565b60405161020d9190610c92565b60405180910390f35b610230600480360381019061022b9190610b09565b610808565b60405161023d9190610c77565b60405180910390f35b610260600480360381019061025b9190610a7e565b6109a4565b60405161026d9190610cf4565b60405180910390f35b6003805461028390610e58565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90610e58565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103e49190610cf4565b60405180910390a36001905092915050565b60025481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156104cc5750828110155b61050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050290610cd4565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105599190610d46565b92505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105ae9190610d9c565b925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106715782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106699190610d9c565b925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106ce9190610cf4565b60405180910390a360019150509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900460ff1681565b6001602052816000526040600020602052806000526040600020600091509150505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6005805461078790610e58565b80601f01602080910402602001604051908101604052809291908181526020018280546107b390610e58565b80156108005780601f106107d557610100808354040283529160200191610800565b820191906000526020600020905b8154815290600101906020018083116107e357829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290610cb4565b60405180910390fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108d99190610d9c565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092e9190610d46565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109929190610cf4565b60405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610a3a81610ef9565b92915050565b600081359050610a4f81610f10565b92915050565b600060208284031215610a6757600080fd5b6000610a7584828501610a2b565b91505092915050565b60008060408385031215610a9157600080fd5b6000610a9f85828601610a2b565b9250506020610ab085828601610a2b565b9150509250929050565b600080600060608486031215610acf57600080fd5b6000610add86828701610a2b565b9350506020610aee86828701610a2b565b9250506040610aff86828701610a40565b9150509250925092565b60008060408385031215610b1c57600080fd5b6000610b2a85828601610a2b565b9250506020610b3b85828601610a40565b9150509250929050565b610b4e81610de2565b82525050565b6000610b5f82610d2a565b610b698185610d35565b9350610b79818560208601610e25565b610b8281610ee8565b840191505092915050565b6000610b9a602f83610d35565b91507f746f6b656e2062616c616e6365206973206c6f776572207468616e207468652060008301527f76616c75652072657175657374656400000000000000000000000000000000006020830152604082019050919050565b6000610c00603983610d35565b91507f746f6b656e2062616c616e6365206f7220616c6c6f77616e6365206973206c6f60008301527f776572207468616e20616d6f756e7420726571756573746564000000000000006020830152604082019050919050565b610c6281610e0e565b82525050565b610c7181610e18565b82525050565b6000602082019050610c8c6000830184610b45565b92915050565b60006020820190508181036000830152610cac8184610b54565b905092915050565b60006020820190508181036000830152610ccd81610b8d565b9050919050565b60006020820190508181036000830152610ced81610bf3565b9050919050565b6000602082019050610d096000830184610c59565b92915050565b6000602082019050610d246000830184610c68565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610d5182610e0e565b9150610d5c83610e0e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d9157610d90610e8a565b5b828201905092915050565b6000610da782610e0e565b9150610db283610e0e565b925082821015610dc557610dc4610e8a565b5b828203905092915050565b6000610ddb82610dee565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610e43578082015181840152602081019050610e28565b83811115610e52576000848401525b50505050565b60006002820490506001821680610e7057607f821691505b60208210811415610e8457610e83610eb9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b610f0281610dd0565b8114610f0d57600080fd5b50565b610f1981610e0e565b8114610f2457600080fd5b5056fea2646970667358221220caed3ccf9f3e5a02e5c13bf96bde7dec9a4cd5dae702da65612423e101e9a55864736f6c63430008000033", "deployedBytecode": "608060405234801561001057600080fd5b50600436106100a95760003560e01c8063313ce56711610071578063313ce5671461017a5780635c6581651461019857806370a08231146101c857806395d89b41146101f8578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a57806327e235e31461014a575b600080fd5b6100b6610276565b6040516100c39190610c92565b60405180910390f35b6100e660048036038101906100e19190610b09565b610304565b6040516100f39190610c77565b60405180910390f35b6101046103f6565b6040516101119190610cf4565b60405180910390f35b610134600480360381019061012f9190610aba565b6103fc565b6040516101419190610c77565b60405180910390f35b610164600480360381019061015f9190610a55565b6106e2565b6040516101719190610cf4565b60405180910390f35b6101826106fa565b60405161018f9190610d0f565b60405180910390f35b6101b260048036038101906101ad9190610a7e565b61070d565b6040516101bf9190610cf4565b60405180910390f35b6101e260048036038101906101dd9190610a55565b610732565b6040516101ef9190610cf4565b60405180910390f35b61020061077a565b60405161020d9190610c92565b60405180910390f35b610230600480360381019061022b9190610b09565b610808565b60405161023d9190610c77565b60405180910390f35b610260600480360381019061025b9190610a7e565b6109a4565b60405161026d9190610cf4565b60405180910390f35b6003805461028390610e58565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90610e58565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103e49190610cf4565b60405180910390a36001905092915050565b60025481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156104cc5750828110155b61050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050290610cd4565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105599190610d46565b92505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105ae9190610d9c565b925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106715782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106699190610d9c565b925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106ce9190610cf4565b60405180910390a360019150509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900460ff1681565b6001602052816000526040600020602052806000526040600020600091509150505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6005805461078790610e58565b80601f01602080910402602001604051908101604052809291908181526020018280546107b390610e58565b80156108005780601f106107d557610100808354040283529160200191610800565b820191906000526020600020905b8154815290600101906020018083116107e357829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290610cb4565b60405180910390fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108d99190610d9c565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092e9190610d46565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109929190610cf4565b60405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610a3a81610ef9565b92915050565b600081359050610a4f81610f10565b92915050565b600060208284031215610a6757600080fd5b6000610a7584828501610a2b565b91505092915050565b60008060408385031215610a9157600080fd5b6000610a9f85828601610a2b565b9250506020610ab085828601610a2b565b9150509250929050565b600080600060608486031215610acf57600080fd5b6000610add86828701610a2b565b9350506020610aee86828701610a2b565b9250506040610aff86828701610a40565b9150509250925092565b60008060408385031215610b1c57600080fd5b6000610b2a85828601610a2b565b9250506020610b3b85828601610a40565b9150509250929050565b610b4e81610de2565b82525050565b6000610b5f82610d2a565b610b698185610d35565b9350610b79818560208601610e25565b610b8281610ee8565b840191505092915050565b6000610b9a602f83610d35565b91507f746f6b656e2062616c616e6365206973206c6f776572207468616e207468652060008301527f76616c75652072657175657374656400000000000000000000000000000000006020830152604082019050919050565b6000610c00603983610d35565b91507f746f6b656e2062616c616e6365206f7220616c6c6f77616e6365206973206c6f60008301527f776572207468616e20616d6f756e7420726571756573746564000000000000006020830152604082019050919050565b610c6281610e0e565b82525050565b610c7181610e18565b82525050565b6000602082019050610c8c6000830184610b45565b92915050565b60006020820190508181036000830152610cac8184610b54565b905092915050565b60006020820190508181036000830152610ccd81610b8d565b9050919050565b60006020820190508181036000830152610ced81610bf3565b9050919050565b6000602082019050610d096000830184610c59565b92915050565b6000602082019050610d246000830184610c68565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610d5182610e0e565b9150610d5c83610e0e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d9157610d90610e8a565b5b828201905092915050565b6000610da782610e0e565b9150610db283610e0e565b925082821015610dc557610dc4610e8a565b5b828203905092915050565b6000610ddb82610dee565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610e43578082015181840152602081019050610e28565b83811115610e52576000848401525b50505050565b60006002820490506001821680610e7057607f821691505b60208210811415610e8457610e83610eb9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b610f0281610dd0565b8114610f0d57600080fd5b50565b610f1981610e0e565b8114610f2457600080fd5b5056fea2646970667358221220caed3ccf9f3e5a02e5c13bf96bde7dec9a4cd5dae702da65612423e101e9a55864736f6c63430008000033", "immutableReferences": {}, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:3997:2", "statements": [ { "body": { "nodeType": "YulBlock", "src": "102:258:2", "statements": [ { "nodeType": "YulAssignment", "src": "112:74:2", "value": { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "178:6:2" } ], "functionName": { "name": "array_allocation_size_t_string_memory_ptr", "nodeType": "YulIdentifier", "src": "136:41:2" }, "nodeType": "YulFunctionCall", "src": "136:49:2" } ], "functionName": { "name": "allocateMemory", "nodeType": "YulIdentifier", "src": "121:14:2" }, "nodeType": "YulFunctionCall", "src": "121:65:2" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", "src": "112:5:2" } ] }, { "expression": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", "src": "202:5:2" }, { "name": "length", "nodeType": "YulIdentifier", "src": "209:6:2" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "195:6:2" }, "nodeType": "YulFunctionCall", "src": "195:21:2" }, "nodeType": "YulExpressionStatement", "src": "195:21:2" }, { "nodeType": "YulVariableDeclaration", "src": "225:27:2", "value": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", "src": "240:5:2" }, { "kind": "number", "nodeType": "YulLiteral", "src": "247:4:2", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "236:3:2" }, "nodeType": "YulFunctionCall", "src": "236:16:2" }, "variables": [ { "name": "dst", "nodeType": "YulTypedName", "src": "229:3:2", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "290:16:2", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "299:1:2", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "302:1:2", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "292:6:2" }, "nodeType": "YulFunctionCall", "src": "292:12:2" }, "nodeType": "YulExpressionStatement", "src": "292:12:2" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "271:3:2" }, { "name": "length", "nodeType": "YulIdentifier", "src": "276:6:2" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "267:3:2" }, "nodeType": "YulFunctionCall", "src": "267:16:2" }, { "name": "end", "nodeType": "YulIdentifier", "src": "285:3:2" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "264:2:2" }, "nodeType": "YulFunctionCall", "src": "264:25:2" }, "nodeType": "YulIf", "src": "261:2:2" }, { "expression": { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "337:3:2" }, { "name": "dst", "nodeType": "YulIdentifier", "src": "342:3:2" }, { "name": "length", "nodeType": "YulIdentifier", "src": "347:6:2" } ], "functionName": { "name": "copy_memory_to_memory", "nodeType": "YulIdentifier", "src": "315:21:2" }, "nodeType": "YulFunctionCall", "src": "315:39:2" }, "nodeType": "YulExpressionStatement", "src": "315:39:2" } ] }, "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "src", "nodeType": "YulTypedName", "src": "75:3:2", "type": "" }, { "name": "length", "nodeType": "YulTypedName", "src": "80:6:2", "type": "" }, { "name": "end", "nodeType": "YulTypedName", "src": "88:3:2", "type": "" } ], "returnVariables": [ { "name": "array", "nodeType": "YulTypedName", "src": "96:5:2", "type": "" } ], "src": "7:353:2" }, { "body": { "nodeType": "YulBlock", "src": "453:215:2", "statements": [ { "body": { "nodeType": "YulBlock", "src": "502:16:2", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "511:1:2", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "514:1:2", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "504:6:2" }, "nodeType": "YulFunctionCall", "src": "504:12:2" }, "nodeType": "YulExpressionStatement", "src": "504:12:2" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "481:6:2" }, { "kind": "number", "nodeType": "YulLiteral", "src": "489:4:2",