@dnextco/tokenboost-solidity-erc223token
Version:
Solidity contracts for TokenBoost (ERC223Token)
942 lines • 368 kB
JSON
{
"contractName": "ERC223Token",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "_interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "mintingFinished",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operator",
"type": "address"
},
{
"name": "_role",
"type": "string"
}
],
"name": "checkRole",
"outputs": [],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_Token",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "activated",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_ERC165",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "maxMintable",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operator",
"type": "address"
},
{
"name": "_role",
"type": "string"
}
],
"name": "hasRole",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_minter",
"type": "address"
}
],
"name": "removeMinter",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "pausable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "initialSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "unpause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "mintable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "paused",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_subtractedValue",
"type": "uint256"
}
],
"name": "decreaseApproval",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "template",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "finishMinting",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ROLE_MINTER",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_minter",
"type": "address"
}
],
"name": "addMinter",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "burnable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_addedValue",
"type": "uint256"
}
],
"name": "increaseApproval",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_ERC223Token",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_Contract",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_name",
"type": "string"
},
{
"name": "_symbol",
"type": "string"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "operator",
"type": "address"
},
{
"indexed": false,
"name": "role",
"type": "string"
}
],
"name": "RoleAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "operator",
"type": "address"
},
{
"indexed": false,
"name": "role",
"type": "string"
}
],
"name": "RoleRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "Mint",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "MintFinished",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "burner",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Pause",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Unpause",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
}
],
"name": "OwnershipRenounced",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"name": "data",
"type": "bytes"
}
],
"name": "Transfer",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_name",
"type": "string"
},
{
"name": "_symbol",
"type": "string"
},
{
"name": "_decimals",
"type": "uint8"
},
{
"name": "_initialSupply",
"type": "uint256"
},
{
"name": "_mintable",
"type": "bool"
},
{
"name": "_burnable",
"type": "bool"
},
{
"name": "_pausable",
"type": "bool"
}
],
"name": "update",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_maxMintable",
"type": "uint256"
}
],
"name": "setMaxMintable",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "activate",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
},
{
"name": "_data",
"type": "bytes"
},
{
"name": "_custom_fallback",
"type": "string"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
},
{
"name": "_data",
"type": "bytes"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_value",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "pause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040526008805461ffff19169055600a805460ff191660121790553480156200002957600080fd5b50604051620025d8380380620025d8833981016040908152815160208301519183015160038054600160a060020a0319163317905590929182019101828282826200009d7f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001b3810204565b600160a060020a0381161515620000b357600080fd5b6005805433600160a060020a03199182161790915560038054909116600160a060020a038316179055620001107f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001b3810204565b5081516200012690600690602085019062000220565b5080516200013c90600790602084019062000220565b50620001717ffd155c6700000000000000000000000000000000000000000000000000000000640100000000620001b3810204565b50620001aa91507fd0c381c9000000000000000000000000000000000000000000000000000000009050640100000000620001b3810204565b505050620002c5565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e357600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600460205260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026357805160ff191683800117855562000293565b8280016001018555821562000293579182015b828111156200029357825182559160200191906001019062000276565b50620002a1929150620002a5565b5090565b620002c291905b80821115620002a15760008155600101620002ac565b90565b61230380620002d56000396000f3006080604052600436106101f55763ffffffff60e060020a60003504166301ffc9a781146101fa57806305d2035b1461024557806306fdde031461025a578063095ea7b3146102e45780630988ca8c146103085780630f15f4c014610371578063172d02bd1461038657806318160ddd146103cd578063186601ca146103f457806319fa8f50146104095780632154dc391461041e578063217fe6c61461043357806323b872dd1461049a57806325d387b5146104c45780633092afd5146104dc578063313ce567146104fd5780633677584714610528578063378dc3dc1461053d5780633f4ba83a1461055257806340c10f191461056757806342966c681461058b5780634bf365df146105a35780635c975abb146105b857806366188463146105cd5780636f2ddd93146105f157806370a0823114610622578063715018a6146106435780637d64bcb4146106585780638456cb591461066d5780638da5cb5b1461068257806392afc33a1461069757806395d89b41146106ac578063983b2d56146106c1578063a07c7ce4146106e2578063a9059cbb146106f7578063be45fd621461071b578063d73dd62314610784578063dd62ed3e146107a8578063f2226de6146107cf578063f2fde38b14610886578063f6368f8a146108a7578063fb499abc1461094e578063fbf964eb14610963575b600080fd5b34801561020657600080fd5b506102317bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610978565b604080519115158252519081900360200190f35b34801561025157600080fd5b506102316109ac565b34801561026657600080fd5b5061026f6109ba565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a9578181015183820152602001610291565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f057600080fd5b50610231600160a060020a0360043516602435610a48565b34801561031457600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261036f958335600160a060020a0316953695604494919390910191908190840183828082843750949750610a749650505050505050565b005b34801561037d57600080fd5b50610231610ae2565b34801561039257600080fd5b5061039b610b2d565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156103d957600080fd5b506103e2610b51565b60408051918252519081900360200190f35b34801561040057600080fd5b50610231610b57565b34801561041557600080fd5b5061039b610b67565b34801561042a57600080fd5b506103e2610b8b565b34801561043f57600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610231958335600160a060020a0316953695604494919390910191908190840183828082843750949750610b919650505050505050565b3480156104a657600080fd5b50610231600160a060020a0360043581169060243516604435610bfd565b3480156104d057600080fd5b5061036f600435610c2b565b3480156104e857600080fd5b5061036f600160a060020a0360043516610c5e565b34801561050957600080fd5b50610512610ca5565b6040805160ff9092168252519081900360200190f35b34801561053457600080fd5b50610231610cae565b34801561054957600080fd5b506103e2610cbc565b34801561055e57600080fd5b5061036f610cc2565b34801561057357600080fd5b50610231600160a060020a0360043516602435610d1f565b34801561059757600080fd5b5061036f600435610d81565b3480156105af57600080fd5b50610231610db3565b3480156105c457600080fd5b50610231610dbc565b3480156105d957600080fd5b50610231600160a060020a0360043516602435610dc5565b3480156105fd57600080fd5b50610606610de2565b60408051600160a060020a039092168252519081900360200190f35b34801561062e57600080fd5b506103e2600160a060020a0360043516610df1565b34801561064f57600080fd5b5061036f610e0c565b34801561066457600080fd5b50610231610e7a565b34801561067957600080fd5b5061036f610ee7565b34801561068e57600080fd5b50610606610f1f565b3480156106a357600080fd5b5061026f610f2e565b3480156106b857600080fd5b5061026f610f53565b3480156106cd57600080fd5b5061036f600160a060020a0360043516610fae565b3480156106ee57600080fd5b50610231610ff2565b34801561070357600080fd5b50610231600160a060020a0360043516602435610ffb565b34801561072757600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610231948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506110209650505050505050565b34801561079057600080fd5b50610231600160a060020a0360043516602435611046565b3480156107b457600080fd5b506103e2600160a060020a0360043581169060243516611063565b3480156107db57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261036f94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff8535169550505060208301359260408101351515925060608101351515915060800135151561108e565b34801561089257600080fd5b5061036f600160a060020a0360043516611131565b3480156108b357600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610231948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506111519650505050505050565b34801561095a57600080fd5b5061039b611181565b34801561096f57600080fd5b5061039b6111a5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a405780601f10610a1557610100808354040283529160200191610a40565b820191906000526020600020905b815481529060010190602001808311610a2357829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610a6357600080fd5b610a6d83836111c9565b9392505050565b610ade826009836040518082805190602001908083835b60208310610aaa5780518252601f199092019160209182019101610a8b565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506111e6565b5050565b60055460009060a060020a900460ff1615610afc57600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610b276111fb565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610a6d836009846040518082805190602001908083835b60208310610bc95780518252601f199092019160209182019101610baa565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061121d565b60055460009060a060020a900460ff161515610c1857600080fd5b610c2384848461123c565b949350505050565b600354600160a060020a03163314610c4257600080fd5b60055460a060020a900460ff1615610c5957600080fd5b600d55565b600354600160a060020a03163314610c7557600080fd5b610ca2816040805190810160405280600681526020016000805160206122b883398151915281525061125a565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610cd957600080fd5b60085460ff161515610cea57600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610d3357600080fd5b60055460a060020a900460ff161515610d4b57600080fd5b6000600d541115610d7757600d54600154610d6c908463ffffffff61136b16565b1115610d7757600080fd5b610a6d838361137e565b600e5460ff161515610d9257600080fd5b60055460a060020a900460ff161515610daa57600080fd5b610ca28161149b565b600c5460ff1681565b60085460ff1681565b60085460009060ff1615610dd857600080fd5b610a6d83836114a5565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610e2357600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a03163314610e9457600080fd5b600854610100900460ff1615610ea957600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff161515610efd57600080fd5b60055460a060020a900460ff161515610f1557600080fd5b610f1d611596565b565b600354600160a060020a031681565b60408051808201909152600681526000805160206122b8833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a405780601f10610a1557610100808354040283529160200191610a40565b600354600160a060020a03163314610fc557600080fd5b610ca2816040805190810160405280600681526020016000805160206122b88339815191528152506115f5565b600e5460ff1681565b60055460009060a060020a900460ff16151561101657600080fd5b610a6d83836116c7565b60055460009060a060020a900460ff16151561103b57600080fd5b610c238484846116e4565b60085460009060ff161561105957600080fd5b610a6d8383611702565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a031633146110a557600080fd5b60055460a060020a900460ff16156110bc57600080fd5b86516110cf9060069060208a019061221f565b5085516110e390600790602089019061221f565b50600a805460ff1990811660ff97909716969096179055600b93909355600c8054851692151592909217909155600e80549093169015151761ff001916610100911515919091021790555050565b600354600160a060020a0316331461114857600080fd5b610ca28161179b565b60055460009060a060020a900460ff16151561116c57600080fd5b61117885858585611819565b95945050505050565b7fd0c381c90000000000000000000000000000000000000000000000000000000081565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b60085460009060ff16156111dc57600080fd5b610a6d8383611838565b6111f0828261121d565b1515610ade57600080fd5b600354600090600160a060020a0316331461121557600080fd5b610b2761189e565b600160a060020a03166000908152602091909152604090205460ff1690565b60085460009060ff161561124f57600080fd5b610c238484846118c7565b6112c4826009836040518082805190602001908083835b602083106112905780518252601f199092019160209182019101611271565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611a3c565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561132d578181015183820152602001611315565b50505050905090810190601f16801561135a5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b8181018281101561137857fe5b92915050565b60006113ad336040805190810160405280600681526020016000805160206122b8833981519152815250610a74565b600854610100900460ff16156113c257600080fd5b6001546113d5908363ffffffff61136b16565b600155600160a060020a038316600090815260208190526040902054611401908363ffffffff61136b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b610ca23382611a5e565b336000908152600260209081526040808320600160a060020a03861684529091528120548083106114f957336000908152600260209081526040808320600160a060020a038816845290915281205561152e565b611509818463ffffffff611b5f16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b600354600160a060020a031633146115ad57600080fd5b60085460ff16156115bd57600080fd5b6008805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b61165f826009836040518082805190602001908083835b6020831061162b5780518252601f19909201916020918201910161160c565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611b71565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360008381101561132d578181015183820152602001611315565b60085460009060ff16156116da57600080fd5b610a6d8383611b96565b60085460009060ff16156116f757600080fd5b610c23848484611bb3565b336000908152600260209081526040808320600160a060020a0386168452909152812054611736908363ffffffff61136b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03811615156117b057600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff161561182c57600080fd5b61117885858585611be0565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a0383166000908152602081905260408120548211156118ec57600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561191c57600080fd5b600160a060020a038316151561193157600080fd5b600160a060020a03841660009081526020819052604090205461195a908363ffffffff611b5f16565b600160a060020a03808616600090815260208190526040808220939093559085168152205461198f908363ffffffff61136b16565b600160a060020a038085166000908152602081815260408083209490945591871681526002825282812033825290915220546119d1908363ffffffff611b5f16565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038216600090815260208190526040902054811115611a8357600080fd5b600160a060020a038216600090815260208190526040902054611aac908263ffffffff611b5f16565b600160a060020a038316600090815260208190526040902055600154611ad8908263ffffffff611b5f16565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082821115611b6b57fe5b50900390565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b60085460009060ff1615611ba957600080fd5b610a6d8383611ebe565b6000611bbe84611eed565b15611bd557611bce848484611ef5565b9050610a6d565b611bce8484846120f8565b6000611beb85611eed565b15611eac5783611bfa33610df1565b11611c0457600080fd5b611c1d84611c1133610df1565b9063ffffffff611b5f16565b33600090815260208190526040902055611c4684611c3a87610df1565b9063ffffffff61136b16565b60008087600160a060020a0316600160a060020a031681526020019081526020016000208190555084600160a060020a03166000836040516020018082805190602001908083835b60208310611cad5780518252601f199092019160209182019101611c8e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310611d105780518252601f199092019160209182019101611cf1565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060e060020a9004903387876040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015611da2578181015183820152602001611d8a565b50505050905090810190601f168015611dcf5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515611def57fe5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611e69578181015183820152602001611e51565b50505050905090810190601f168015611e965780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001610c23565b611eb78585856120f8565b9050610c23565b60006060611ecb84611eed565b15611ee257611edb848483611ef5565b915061158f565b611edb8484836120f8565b6000903b1190565b60008083611f0233610df1565b11611f0c57600080fd5b611f1984611c1133610df1565b33600090815260208190526040902055611f3684611c3a87610df1565b600160a060020a0386166000818152602081815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b83811015611fd2578181015183820152602001611fba565b50505050905090810190601f168015611fff5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561202057600080fd5b505af1158015612034573d6000803e3d6000fd5b5050505084600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156120b257818101518382015260200161209a565b50505050905090810190601f1680156120df5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b60008261210433610df1565b1161210e57600080fd5b61211b83611c1133610df1565b3360009081526020819052604090205561213883611c3a86610df1565b60008086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156121da5781810151838201526020016121c2565b50505050905090810190601f1680156122075780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061226057805160ff191683800117855561228d565b8280016001018555821561228d579182015b8281111561228d578251825591602001919060010190612272565b5061229992915061229d565b5090565b610b2a91905b8082111561229957600081556001016122a356006d696e7465720000000000000000000000000000000000000000000000000000a165627a7a723058206a066305611f26c6a625029a49005943daf5c288b32b72525e09ce2fbd9a11830029",
"deployedBytecode": "0x6080604052600436106101f55763ffffffff60e060020a60003504166301ffc9a781146101fa57806305d2035b1461024557806306fdde031461025a578063095ea7b3146102e45780630988ca8c146103085780630f15f4c014610371578063172d02bd1461038657806318160ddd146103cd578063186601ca146103f457806319fa8f50146104095780632154dc391461041e578063217fe6c61461043357806323b872dd1461049a57806325d387b5146104c45780633092afd5146104dc578063313ce567146104fd5780633677584714610528578063378dc3dc1461053d5780633f4ba83a1461055257806340c10f191461056757806342966c681461058b5780634bf365df146105a35780635c975abb146105b857806366188463146105cd5780636f2ddd93146105f157806370a0823114610622578063715018a6146106435780637d64bcb4146106585780638456cb591461066d5780638da5cb5b1461068257806392afc33a1461069757806395d89b41146106ac578063983b2d56146106c1578063a07c7ce4146106e2578063a9059cbb146106f7578063be45fd621461071b578063d73dd62314610784578063dd62ed3e146107a8578063f2226de6146107cf578063f2fde38b14610886578063f6368f8a146108a7578063fb499abc1461094e578063fbf964eb14610963575b600080fd5b34801561020657600080fd5b506102317bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610978565b604080519115158252519081900360200190f35b34801561025157600080fd5b506102316109ac565b34801561026657600080fd5b5061026f6109ba565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a9578181015183820152602001610291565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f057600080fd5b50610231600160a060020a0360043516602435610a48565b34801561031457600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261036f958335600160a060020a0316953695604494919390910191908190840183828082843750949750610a749650505050505050565b005b34801561037d57600080fd5b50610231610ae2565b34801561039257600080fd5b5061039b610b2d565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156103d957600080fd5b506103e2610b51565b60408051918252519081900360200190f35b34801561040057600080fd5b50610231610b57565b34801561041557600080fd5b5061039b610b67565b34801561042a57600080fd5b506103e2610b8b565b34801561043f57600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610231958335600160a060020a0316953695604494919390910191908190840183828082843750949750610b919650505050505050565b3480156104a657600080fd5b50610231600160a060020a0360043581169060243516604435610bfd565b3480156104d057600080fd5b5061036f600435610c2b565b3480156104e857600080fd5b5061036f600160a060020a0360043516610c5e565b34801561050957600080fd5b50610512610ca5565b6040805160ff9092168252519081900360200190f35b34801561053457600080fd5b50610231610cae565b34801561054957600080fd5b506103e2610cbc565b34801561055e57600080fd5b5061036f610cc2565b34801561057357600080fd5b50610231600160a060020a0360043516602435610d1f565b34801561059757600080fd5b5061036f600435610d81565b3480156105af57600080fd5b50610231610db3565b3480156105c457600080fd5b50610231610dbc565b3480156105d957600080fd5b50610231600160a060020a0360043516602435610dc5565b3480156105fd57600080fd5b50610606610de2565b60408051600160a060020a039092168252519081900360200190f35b34801561062e57600080fd5b506103e2600160a060020a0360043516610df1565b34801561064f57600080fd5b5061036f610e0c565b34801561066457600080fd5b50610231610e7a565b34801561067957600080fd5b5061036f610ee7565b34801561068e57600080fd5b50610606610f1f565b3480156106a357600080fd5b5061026f610f2e565b3480156106b857600080fd5b5061026f610f53565b3480156106cd57600080fd5b5061036f600160a060020a0360043516610fae565b3480156106ee57600080fd5b50610231610ff2565b34801561070357600080fd5b50610231600160a060020a0360043516602435610ffb565b34801561072757600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610231948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506110209650505050505050565b34801561079057600080fd5b50610231600160a060020a0360043516602435611046565b3480156107b457600080fd5b506103e2600160a060020a0360043581169060243516611063565b3480156107db57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261036f94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff8535169550505060208301359260408101351515925060608101351515915060800135151561108e565b34801561089257600080fd5b5061036f600160a060020a0360043516611131565b3480156108b357600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610231948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506111519650505050505050565b34801561095a57600080fd5b5061039b611181565b34801561096f57600080fd5b5061039b6111a5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a405780601f10610a1557610100808354040283529160200191610a40565b820191906000526020600020905b815481529060010190602001808311610a2357829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610a6357600080fd5b610a6d83836111c9565b9392505050565b610ade826009836040518082805190602001908083835b60208310610aaa5780518252601f199092019160209182019101610a8b565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506111e6565b5050565b60055460009060a060020a900460ff1615610afc57600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610b276111fb565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610a6d836009846040518082805190602001908083835b60208310610bc95780518252601f199092019160209182019101610baa565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061121d565b60055460009060a060020a900460ff161515610c1857600080fd5b610c2384848461123c565b949350505050565b600354600160a060020a03163314610c4257600080fd5b60055460a060020a900460ff1615610c5957600080fd5b600d55565b600354600160a060020a03163314610c7557600080fd5b610ca2816040805190810160405280600681526020016000805160206122b883398151915281525061125a565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610cd957600080fd5b60085460ff161515610cea57600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610d3357600080fd5b60055460a060020a900460ff161515610d4b57600080fd5b6000600d541115610d7757600d54600154610d6c908463ffffffff61136b16565b1115610d7757600080fd5b610a6d838361137e565b600e5460ff161515610d9257600080fd5b60055460a060020a900460ff161515610daa57600080fd5b610ca28161149b565b600c5460ff1681565b60085460ff1681565b60085460009060ff1615610dd857600080fd5b610a6d83836114a5565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610e2357600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a03163314610e9457600080fd5b600854610100900460ff1615610ea957600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff161515610efd57600080fd5b60055460a060020a900460ff161515610f1557600080fd5b610f1d611596565b565b600354600160a060020a031681565b60408051808201909152600681526000805160206122b8833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a405780601f10610a1557610100808354040283529160200191610a40565b600354600160a060020a03163314610fc557600080fd5b610ca2816040805190810160405280600681526020016000805160206122b88339815191528152506115f5565b600e5460ff1681565b60055460009060a060020a900460ff16151561101657600080fd5b610a6d83836116c7565b60055460009060a060020a900460ff16151561103b57600080fd5b610c238484846116e4565b60085460009060ff161561105957600080fd5b610a6d8383611702565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a031633146110a557600080fd5b60055460a060020a900460ff16156110bc57600080fd5b86516110cf9060069060208a019061221f565b5085516110e390600790602089019061221f565b50600a805460ff1990811660ff97909716969096179055600b93909355600c8054851692151592909217909155600e80549093169015151761ff001916610100911515919091021790555050565b600354600160a060020a0316331461114857600080fd5b610ca28161179b565b60055460009060a060020a900460ff16151561116c57600080fd5b61117885858585611819565b95945050505050565b7fd0c381c90000000000000000000000000000000000000000000000000000000081565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b60085460009060ff16156111dc57600080fd5b610a6d8383611838565b6111f0828261121d565b1515610ade57600080fd5b600354600090600160a060020a0316331461121557600080fd5b610b2761189e565b600160a060020a03166000908152602091909152604090205460ff1690565b60085460009060ff161561124f57600080fd5b610c238484846118c7565b6112c4826009836040518082805190602001908083835b602083106112905780518252601f199092019160209182019101611271565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611a3c565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561132d578181015183820152602001611315565b50505050905090810190601f16801561135a5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b8181018281101561137857fe5b92915050565b60006113ad336040805190810160405280600681526020016000805160206122b8833981519152815250610a74565b600854610100900460ff16156113c257600080fd5b6001546113d5908363ffffffff61136b16565b600155600160a060020a038316600090815260208190526040902054611401908363ffffffff61136b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b610ca23382611a5e565b336000908152600260209081526040808320600160a060020a03861684529091528120548083106114f957336000908152600260209081526040808320600160a060020a038816845290915281205561152e565b611509818463ffffffff611b5f16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b600354600160a060020a031633146115ad57600080fd5b60085460ff16156115bd57600080fd5b6008805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b61165f826009836040518082805190602001908083835b6020831061162b5780518252601f19909201916020918201910161160c565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611b71565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360008381101561132d578181015183820152602001611315565b60085460009060ff16156116da57600080fd5b610a6d8383611b96565b60085460009060ff16156116f757600080fd5b610c23848484611bb3565b336000908152600260209081526040808320600160a060020a0386168452909152812054611736908363ffffffff61136b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03811615156117b057600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff161561182c57600080fd5b61117885858585611be0565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff00000000000000000000000000000000000