0 txs
0 calls
constructor
No constructor.
functions
ERC20Limit
viewfunction ERC20Limit() view returns (uint256)
hasPermission
viewfunction hasPermission(address _addr, uint8 _permission) view returns (bool)
isOwner
viewfunction isOwner(address _owner) view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
isUnderLimit
viewfunction isUnderLimit(uint256 _amount) view returns (bool)
owner
viewfunction owner() view returns (address)
PERMISSION_DEPLOY_RECEIVER
viewfunction PERMISSION_DEPLOY_RECEIVER() view returns (uint8)
PERMISSION_EXECUTE_ON_RECEIVER
viewfunction PERMISSION_EXECUTE_ON_RECEIVER() view returns (uint8)
PERMISSION_EXECUTE
viewfunction PERMISSION_EXECUTE() view returns (uint8)
PERMISSION_ISSUE_ERC721
viewfunction PERMISSION_ISSUE_ERC721() view returns (uint8)
PERMISSION_PAUSE
viewfunction PERMISSION_PAUSE() view returns (uint8)
PERMISSION_SEND_ERC20_LIMIT
viewfunction PERMISSION_SEND_ERC20_LIMIT() view returns (uint8)
PERMISSION_SEND_ERC20
viewfunction PERMISSION_SEND_ERC20() view returns (uint8)
PERMISSION_SEND_ERC721
viewfunction PERMISSION_SEND_ERC721() view returns (uint8)
PERMISSION_SEND_ETH
viewfunction PERMISSION_SEND_ETH() view returns (uint8)
PERMISSION_SWEEP_ERC20
viewfunction PERMISSION_SWEEP_ERC20() view returns (uint8)
PERMISSION_SWEEP_ETH
viewfunction PERMISSION_SWEEP_ETH() view returns (uint8)
permissionExists
viewfunction permissionExists(uint8) view returns (bool)
permissions
viewfunction permissions(address) view returns (bytes32)
receiverFor
viewfunction receiverFor(uint256 _id) view returns (address)
receiverTemplate
viewfunction receiverTemplate() view returns (address)
addPermission
nonpayablefunction addPermission(address _addr, uint8 _permission)
addPermissions
nonpayablefunction addPermissions(address _addr, uint8[] _permissions)
clearPermissions
nonpayablefunction clearPermissions(address _addr)
delPermission
nonpayablefunction delPermission(address _addr, uint8 _permission)
deployReceivers
nonpayablefunction deployReceivers(uint256[] _receivers)
deployReceiversRange
nonpayablefunction deployReceiversRange(uint256 _from, uint256 _to)
execute
nonpayablefunction execute(address _to, uint256 _value, bytes _data) returns (bytes)
executeOnReceiver
nonpayablefunction executeOnReceiver(uint256 _id, address _to, uint256 _value, bytes _data) returns (bytes)
initialize
nonpayablefunction initialize()
issueBatchERC721
nonpayablefunction issueBatchERC721(address _beneficiary, address[] _contracts, uint256[] _optionIds, uint256[] _issuedIds)
issueERC721
nonpayablefunction issueERC721(address _beneficiary, address _contract, uint256 _optionId, uint256 _issuedId)
pause
nonpayablefunction pause()
rennounceOwnership
nonpayablefunction rennounceOwnership()
sendBatchERC20
nonpayablefunction sendBatchERC20(address _token, address[] _to, uint256[] _amounts)
sendBatchERC721
nonpayablefunction sendBatchERC721(address _token, uint256[] _ids, address[] _tos, uint256[] _tokenIds)
sendBatchETH
nonpayablefunction sendBatchETH(address[] _tos, uint256[] _amounts)
sendERC20
nonpayablefunction sendERC20(address _token, address _to, uint256 _amount)
sendERC20WithLimit
nonpayablefunction sendERC20WithLimit(address _token, address _to, uint256 _amount)
sendERC721
nonpayablefunction sendERC721(address _token, uint256 _from, address _to, uint256 _id)
sendETH
nonpayablefunction sendETH(address _to, uint256 _amount)
sweepBatchERC20
nonpayablefunction sweepBatchERC20(address _token, uint256[] _ids)
sweepBatchETH
nonpayablefunction sweepBatchETH(uint256[] _ids)
sweepERC20
nonpayablefunction sweepERC20(address _token, uint256 _id)
sweepETH
nonpayablefunction sweepETH(uint256 _id)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
unpause
nonpayablefunction unpause()
updateERC20Limit
nonpayablefunction updateERC20Limit(uint256 _limit)
events
AddPermission
event AddPermission(address indexed _addr, uint8 _permission)
ClearPermissions
event ClearPermissions(address indexed _addr)
DelPermission
event DelPermission(address indexed _addr, uint8 _permission)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed _previousOwner, address indexed _newOwner)
Paused
event Paused(address _sender)
Unpaused
event Unpaused(address _sender)
UpdateERC20Limit
event UpdateERC20Limit(uint256 _limit)
errors
ArrayLengthMismatchERC20
error ArrayLengthMismatchERC20(uint256 _array1, uint256 _array2)
ArrayLengthMismatchERC721
error ArrayLengthMismatchERC721(uint256 _array1, uint256 _array2, uint256 _array3)
ArrayLengthMismatchETH
error ArrayLengthMismatchETH(uint256 _array1, uint256 _array2)
ArrayLengthMismatchIssueERC721
error ArrayLengthMismatchIssueERC721(uint256 _array1, uint256 _array2, uint256 _array3)
CallError
error CallError(address _to, uint256 _value, bytes _data, bytes _result)
ContractNotCreated
error ContractNotCreated()
ContractPaused
error ContractPaused()
DuplicatedPermission
error DuplicatedPermission(uint8 _permission)
ErrorSendingERC20
error ErrorSendingERC20(address _token, address _to, uint256 _amount, bytes _result)
ErrorSendingETH
error ErrorSendingETH(address _to, uint256 _amount, bytes _result)
ErrorSweepingERC20
error ErrorSweepingERC20(address _token, address _receiver, uint256 _amount, bytes _result)
ExceededLimit
error ExceededLimit(uint256 _amount, uint256 _limit)
InvalidNewOwner
error InvalidNewOwner()
NotOwner
error NotOwner(address _sender, address _owner)
PermissionDenied
error PermissionDenied(address _sender, uint8 _permission)
ReceiverCallError
error ReceiverCallError(address _receiver, address _to, uint256 _value, bytes _data, bytes _result)
creation bytecode
0x60806040526006805460ff1916600117905534801561001d57600080fd5b506134d98061002d6000396000f3fe6080604052600436106102275760003560e01c806301e88208146102335780630c8d1a961461027357806311c9191414610295578063197ebb86146102c85780631d85570a146102de578063229c86d4146102fe5780632659ac0f1461031e5780632f54bf6e1461033e57806331b33f431461035e578063328bc10d1461038b57806338715158146103ab5780633df53c57146103d95780633f4ba83a146103fa57806342942cb91461040f57806343565ca61461042f578063493bf970146104505780634a6f2397146104805780634ada739a146104b35780635e0b862b146104d35780635e867c71146104f457806363e85d2d1461051457806364751e411461053457806364a197f3146105545780636b1cc751146105745780636ec2f8f6146105945780638129fc1c146105a95780638456cb59146105be5780638da5cb5b146105d35780638f975a64146105f35780639388d2b0146106135780639830ff6a146106335780639990c944146106535780639da947d814610672578063a659eb8e14610692578063aba58e77146106b3578063b187bd26146106d3578063b2356304146106e8578063b61d27f614610708578063c04450d314610728578063c2b9568014610748578063c2d0d1d014610768578063d255b4a414610788578063d572c88c146107a8578063d8050ed2146107c9578063e6d11999146107ea578063ebc1a3091461080a578063f1411c331461082b578063f2fde38b1461084c57600080fd5b3661022e57005b600080fd5b34801561023f57600080fd5b5061026061024e366004612811565b60046020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561027f57600080fd5b5061029361028e366004612880565b61086c565b005b3480156102a157600080fd5b506102b86102b03660046128d4565b600354101590565b604051901515815260200161026a565b3480156102d457600080fd5b5061026060035481565b3480156102ea57600080fd5b506102936102f9366004612903565b610935565b34801561030a57600080fd5b50610293610319366004612880565b61097a565b34801561032a57600080fd5b50610293610339366004612938565b6109c1565b34801561034a57600080fd5b506102b8610359366004612811565b610ae8565b34801561036a57600080fd5b5061037e6103793660046129fb565b610b16565b60405161026a9190612aa3565b34801561039757600080fd5b506102936103a6366004612ab6565b610be8565b3480156103b757600080fd5b506006546103cc90600160381b900460ff1681565b60405161026a9190612ad8565b3480156103e557600080fd5b506006546103cc90600160201b900460ff1681565b34801561040657600080fd5b50610293610c8d565b34801561041b57600080fd5b5061029361042a366004612ae6565b610d0b565b34801561043b57600080fd5b506006546103cc906301000000900460ff1681565b34801561045c57600080fd5b506102b861046b366004612b27565b60056020526000908152604090205460ff1681565b34801561048c57600080fd5b506000546104a6906201000090046001600160a01b031681565b60405161026a9190612b42565b3480156104bf57600080fd5b506102936104ce366004612903565b610de1565b3480156104df57600080fd5b506006546103cc90600160401b900460ff1681565b34801561050057600080fd5b5061029361050f366004612b56565b610e22565b34801561052057600080fd5b506102b861052f366004612903565b610fb8565b34801561054057600080fd5b5061029361054f366004612c02565b610fe5565b34801561056057600080fd5b5061029361056f366004612c43565b61109d565b34801561058057600080fd5b5061029361058f366004612c6f565b61119c565b3480156105a057600080fd5b50610293611259565b3480156105b557600080fd5b506102936112bd565b3480156105ca57600080fd5b50610293611419565b3480156105df57600080fd5b506002546104a6906001600160a01b031681565b3480156105ff57600080fd5b5061029361060e366004612ae6565b6114a0565b34801561061f57600080fd5b5061029361062e366004612cb7565b611537565b34801561063f57600080fd5b5061029361064e3660046128d4565b611623565b34801561065f57600080fd5b506006546103cc90610100900460ff1681565b34801561067e57600080fd5b5061029361068d366004612811565b6116af565b34801561069e57600080fd5b506006546103cc90600160281b900460ff1681565b3480156106bf57600080fd5b506102936106ce3660046128d4565b6116ef565b3480156106df57600080fd5b506102b861172f565b3480156106f457600080fd5b506104a66107033660046128d4565b611750565b34801561071457600080fd5b5061037e610723366004612cfd565b6117ab565b34801561073457600080fd5b50610293610743366004612d58565b6118bd565b34801561075457600080fd5b50610293610763366004612c02565b611a78565b34801561077457600080fd5b50610293610783366004612b56565b611b25565b34801561079457600080fd5b506006546103cc9062010000900460ff1681565b3480156107b457600080fd5b506006546103cc90600160501b900460ff1681565b3480156107d557600080fd5b506006546103cc90600160301b900460ff1681565b3480156107f657600080fd5b50610293610805366004612c43565b611caa565b34801561081657600080fd5b506006546103cc90600160581b900460ff1681565b34801561083757600080fd5b506006546103cc90600160481b900460ff1681565b34801561085857600080fd5b50610293610867366004612811565b611d36565b600260065460ff16600281111561088557610885612db7565b036108a35760405163ab35696f60e01b815260040160405180910390fd5b60065462010000900460ff166108b93382610fb8565b1580156108cc57506108ca33610ae8565b155b156108f7573381604051630d000ed760e31b81526004016108ee929190612dcd565b60405180910390fd5b8160005b8181101561092d576109258686868481811061091957610919612de9565b90506020020135611dce565b6001016108fb565b505050505050565b61093e33610ae8565b61096c57600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b6109768282611eb1565b5050565b61098333610ae8565b6109b157600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b6109bc838383611f12565b505050565b600260065460ff1660028111156109da576109da612db7565b036109f85760405163ab35696f60e01b815260040160405180910390fd5b6006546301000000900460ff16610a0f3382610fb8565b158015610a225750610a2033610ae8565b155b15610a44573381604051630d000ed760e31b81526004016108ee929190612dcd565b83828114610a6f5760405163094b3f4960e21b815260048101829052602481018490526044016108ee565b60005b81811015610ade57610ad6878783818110610a8f57610a8f612de9565b9050602002016020810190610aa49190612811565b868684818110610ab657610ab6612de9565b905060200201358a6001600160a01b0316611f559092919063ffffffff16565b600101610a72565b5050505050505050565b6002546000906001600160a01b038381169116148015610b1057506001600160a01b03821615155b92915050565b6060600260065460ff166002811115610b3157610b31612db7565b03610b4f5760405163ab35696f60e01b815260040160405180910390fd5b600654600160401b900460ff16610b663382610fb8565b158015610b795750610b7733610ae8565b155b15610b9b573381604051630d000ed760e31b81526004016108ee929190612dcd565b610bdd87878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061203b92505050565b979650505050505050565b600260065460ff166002811115610c0157610c01612db7565b03610c1f5760405163ab35696f60e01b815260040160405180910390fd5b600654600160501b900460ff16610c363382610fb8565b158015610c495750610c4733610ae8565b155b15610c6b573381604051630d000ed760e31b81526004016108ee929190612dcd565b825b82811015610c8757610c7e8161205a565b50600101610c6d565b50505050565b610c9633610ae8565b610cc457600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b6006805460ff191660011790556040517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90610d01903390612b42565b60405180910390a1565b600260065460ff166002811115610d2457610d24612db7565b03610d425760405163ab35696f60e01b815260040160405180910390fd5b600654600160201b900460ff16610d593382610fb8565b158015610d6c5750610d6a33610ae8565b155b15610d8e573381604051630d000ed760e31b81526004016108ee929190612dcd565b81610d9b81600354101590565b610dc657600354604051636174885160e01b81526108ee918391600401918252602082015260400190565b610dda6001600160a01b0386168585611f55565b5050505050565b610dea33610ae8565b610e1857600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b610976828261206e565b600260065460ff166002811115610e3b57610e3b612db7565b03610e595760405163ab35696f60e01b815260040160405180910390fd5b600654600160281b900460ff16610e703382610fb8565b158015610e835750610e8133610ae8565b155b15610ea5573381604051630d000ed760e31b81526004016108ee929190612dcd565b858481141580610eb55750808314155b15610ed95760405163c8ef4fcb60e01b81526108ee90829087908690600401612e19565b60005b81811015610fac576000610f078a8a84818110610efb57610efb612de9565b9050602002013561205a565b9050610fa2818c60006323b872dd60e01b838d8d89818110610f2b57610f2b612de9565b9050602002016020810190610f409190612811565b8c8c8a818110610f5257610f52612de9565b90506020020135604051602401610f6b93929190612e2f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526120c2565b5050600101610edc565b50505050505050505050565b6000600160ff83161b6001600160a01b038416600090815260046020526040902054161515905092915050565b600260065460ff166002811115610ffe57610ffe612db7565b0361101c5760405163ab35696f60e01b815260040160405180910390fd5b600654600160301b900460ff166110333382610fb8565b158015611046575061104433610ae8565b155b15611068573381604051630d000ed760e31b81526004016108ee929190612dcd565b8160005b81811015610dda5761109585858381811061108957611089612de9565b90506020020135612174565b60010161106c565b600260065460ff1660028111156110b6576110b6612db7565b036110d45760405163ab35696f60e01b815260040160405180910390fd5b600654600160381b900460ff166110eb3382610fb8565b1580156110fe57506110fc33610ae8565b155b15611120573381604051630d000ed760e31b81526004016108ee929190612dcd565b600080846001600160a01b03168460405160006040518083038185875af1925050503d806000811461116e576040519150601f19603f3d011682016040523d82523d6000602084013e611173565b606091505b509150915081610dda578484826040516363ccad4b60e01b81526004016108ee93929190612e53565b600260065460ff1660028111156111b5576111b5612db7565b036111d35760405163ab35696f60e01b815260040160405180910390fd5b600654600160281b900460ff166111ea3382610fb8565b1580156111fd57506111fb33610ae8565b155b1561121f573381604051630d000ed760e31b81526004016108ee929190612dcd565b600061122a8561205a565b9050611250818760006323b872dd60e01b858989604051602401610f6b93929190612e2f565b50505050505050565b61126233610ae8565b61129057600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b600280546001600160a01b03191690556040516000903390600080516020613484833981519152908390a3565b600054610100900460ff16158080156112dd5750600054600160ff909116105b806112f75750303b1580156112f7575060005460ff166001145b61135a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108ee565b6000805460ff19166001179055801561137d576000805461ff0019166101001790555b61138b60016002600b6121b8565b611395600361226b565b6113a1600460056122c8565b6113ad60066007612356565b6113b760086123e4565b6113c16009612441565b6113cb600a612492565b8015611416576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061140d90600190612ad8565b60405180910390a15b50565b600654610100900460ff1661142e3382610fb8565b158015611441575061143f33610ae8565b155b15611463573381604051630d000ed760e31b81526004016108ee929190612dcd565b6006805460ff191660021790556040517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589061140d903390612b42565b600260065460ff1660028111156114b9576114b9612db7565b036114d75760405163ab35696f60e01b815260040160405180910390fd5b6006546301000000900460ff166114ee3382610fb8565b15801561150157506114ff33610ae8565b155b15611523573381604051630d000ed760e31b81526004016108ee929190612dcd565b610c876001600160a01b0385168484611f55565b600260065460ff16600281111561155057611550612db7565b0361156e5760405163ab35696f60e01b815260040160405180910390fd5b600654600160581b900460ff166115853382610fb8565b158015611598575061159633610ae8565b155b156115ba573381604051630d000ed760e31b81526004016108ee929190612dcd565b6040516336bf91df60e21b81526001600160a01b0385169063dafe477c906115ea90889087908790600401612e7a565b600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b505050505050505050565b600260065460ff16600281111561163c5761163c612db7565b0361165a5760405163ab35696f60e01b815260040160405180910390fd5b600654600160301b900460ff166116713382610fb8565b158015611684575061168233610ae8565b155b156116a6573381604051630d000ed760e31b81526004016108ee929190612dcd565b61097682612174565b6116b833610ae8565b6116e657600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b611416816124d5565b6116f833610ae8565b61172657600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b61141681612519565b6000600260065460ff16600281111561174a5761174a612db7565b14905090565b600154604080516001600160f81b03196020808301919091523060601b6001600160601b0319166021830152603582018590526055808301949094528251808303909401845260759091019091528151910120600090610b10565b6060600260065460ff1660028111156117c6576117c6612db7565b036117e45760405163ab35696f60e01b815260040160405180910390fd5b600654600160481b900460ff166117fb3382610fb8565b15801561180e575061180c33610ae8565b155b15611830573381604051630d000ed760e31b81526004016108ee929190612dcd565b600080876001600160a01b031687878760405161184e929190612e9b565b60006040518083038185875af1925050503d806000811461188b576040519150601f19603f3d011682016040523d82523d6000602084013e611890565b606091505b509150915081610bdd57878787878460405163f5faddbb60e01b81526004016108ee959493929190612eab565b600260065460ff1660028111156118d6576118d6612db7565b036118f45760405163ab35696f60e01b815260040160405180910390fd5b600654600160381b900460ff1661190b3382610fb8565b15801561191e575061191c33610ae8565b155b15611940573381604051630d000ed760e31b81526004016108ee929190612dcd565b8382811461196b57604051632105fa9560e21b815260048101829052602481018490526044016108ee565b60005b818110156112505760008088888481811061198b5761198b612de9565b90506020020160208101906119a09190612811565b6001600160a01b03168787858181106119bb576119bb612de9565b9050602002013560405160006040518083038185875af1925050503d8060008114611a02576040519150601f19603f3d011682016040523d82523d6000602084013e611a07565b606091505b509150915081611a6e57888884818110611a2357611a23612de9565b9050602002016020810190611a389190612811565b878785818110611a4a57611a4a612de9565b90506020020135826040516363ccad4b60e01b81526004016108ee93929190612e53565b505060010161196e565b600260065460ff166002811115611a9157611a91612db7565b03611aaf5760405163ab35696f60e01b815260040160405180910390fd5b600654600160501b900460ff16611ac63382610fb8565b158015611ad95750611ad733610ae8565b155b15611afb573381604051630d000ed760e31b81526004016108ee929190612dcd565b8160005b81811015610dda57611b1c858583818110610efb57610efb612de9565b50600101611aff565b600260065460ff166002811115611b3e57611b3e612db7565b03611b5c5760405163ab35696f60e01b815260040160405180910390fd5b600654600160581b900460ff16611b733382610fb8565b158015611b865750611b8433610ae8565b155b15611ba8573381604051630d000ed760e31b81526004016108ee929190612dcd565b858481141580611bb85750808314155b15611bdc576040516312c28db360e21b81526108ee90829087908690600401612e19565b60005b81811015610fac57888882818110611bf957611bf9612de9565b9050602002016020810190611c0e9190612811565b6001600160a01b031663dafe477c8b898985818110611c2f57611c2f612de9565b90506020020135888886818110611c4857611c48612de9565b905060200201356040518463ffffffff1660e01b8152600401611c6d93929190612e7a565b600060405180830381600087803b158015611c8757600080fd5b505af1158015611c9b573d6000803e3d6000fd5b50505050806001019050611bdf565b600260065460ff166002811115611cc357611cc3612db7565b03611ce15760405163ab35696f60e01b815260040160405180910390fd5b60065462010000900460ff16611cf73382610fb8565b158015611d0a5750611d0833610ae8565b155b15611d2c573381604051630d000ed760e31b81526004016108ee929190612dcd565b6109bc8383611dce565b611d3f33610ae8565b611d6d57600254604051631194af8760e11b81526108ee9133916001600160a01b0390911690600401612dff565b6001600160a01b038116611d9457604051632a52b3c360e11b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b038316908117909155604051339060008051602061348483398151915290600090a350565b6000611dd982611750565b90506000836001600160a01b03166370a08231836040518263ffffffff1660e01b8152600401611e099190612b42565b602060405180830381865afa158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190612f0c565b90508015610c8757611e5c828461254e565b506000611e818386600063a9059cbb60e01b3087604051602401610f6b929190612f25565b9050611e8c81612572565b610dda578483838360405163d0acb72d60e01b81526004016108ee9493929190612f3e565b6001600160a01b038216600081815260046020526040908190208054600160ff86161b19169055517f31712f88cf0ac4bb1f2a194ba7f7eedf070f0e687bb81f6c7dd562e2a4a975bf90611f06908490612ad8565b60405180910390a25050565b60005b81811015610c8757611f4d84848484818110611f3357611f33612de9565b9050602002016020810190611f489190612b27565b61206e565b600101611f15565b600080846001600160a01b031663a9059cbb60e01b8585604051602401611f7d929190612f25565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611fbb9190612f71565b6000604051808303816000865af19150503d8060008114611ff8576040519150601f19603f3d011682016040523d82523d6000602084013e611ffd565b606091505b5091509150811580612015575061201381612572565b155b15610dda578484848360405163194f44ab60e11b81526004016108ee9493929190612f3e565b60606120516120498661205a565b8585856120c2565b95945050505050565b6000610b1061206883611750565b8361254e565b6001600160a01b038216600081815260046020526040908190208054600160ff86161b179055517f87dd0a07ce69ed29fb6177354fd667fd36f490b40e519f46d19343eee4e6082d90611f06908490612ad8565b6060600080866001600160a01b031663b61d27f68787876040518463ffffffff1660e01b81526004016120f793929190612e53565b6000604051808303816000875af1158015612116573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261213e9190810190612fb3565b915091508161216a5786868686846040516353df14d960e01b81526004016108ee959493929190613073565b9695505050505050565b600061217f82611750565b90506001600160a01b0381163180156109bc5761219c828461254e565b50610c87823083604051806020016040528060008152506120c2565b600054610100900460ff166121df5760405162461bcd60e51b81526004016108ee906130b8565b6006805463ffff000019166201000060ff8681169190910263ff0000001916919091176301000000858316021760ff60201b1916600160201b9184169190910217905561222a612593565b60065461223f9062010000900460ff16612625565b600654612255906301000000900460ff16612625565b6006546109bc90600160201b900460ff16612625565b600054610100900460ff166122925760405162461bcd60e51b81526004016108ee906130b8565b6006805460ff60281b1916600160281b60ff8416021790556122b2612593565b60065461141690600160281b900460ff16612625565b600054610100900460ff166122ef5760405162461bcd60e51b81526004016108ee906130b8565b6006805460ff838116600160381b0260ff60381b19918616600160301b029190911661ffff60301b199092169190911717905561232a612593565b60065461234090600160301b900460ff16612625565b60065461097690600160381b900460ff16612625565b600054610100900460ff1661237d5760405162461bcd60e51b81526004016108ee906130b8565b6006805460ff838116600160481b0260ff60481b19918616600160401b029190911661ffff60401b19909216919091171790556123b8612593565b6006546123ce90600160401b900460ff16612625565b60065461097690600160481b900460ff16612625565b600054610100900460ff1661240b5760405162461bcd60e51b81526004016108ee906130b8565b6006805460ff60501b1916600160501b60ff84160217905561242b612593565b60065461141690600160501b900460ff16612625565b600054610100900460ff166124685760405162461bcd60e51b81526004016108ee906130b8565b6006805460ff60581b1916600160581b60ff84811682029290921792839055611416920416612625565b600054610100900460ff166124b95760405162461bcd60e51b81526004016108ee906130b8565b6006805461ff00191661010060ff841602179055611416612678565b6001600160a01b038116600081815260046020526040808220829055517ff3ae8a9ec7a74524888eda748db87556dc0137c576e33d9e443ff7c7045d8af79190a250565b60038190556040518181527fc789f3c6e11c26e01497dbada79eb3e880962e86835be4139cce578f55341e039060200161140d565b6000823b80156125615783915050610b10565b61256a836126cf565b949350505050565b6000815160001480610b10575081806020019051810190610b109190613103565b600054610100900460ff166125ba5760405162461bcd60e51b81526004016108ee906130b8565b6040516125c6906127ef565b604051809103906000f0801580156125e2573d6000803e3d6000fd5b506000805462010000600160b01b031916620100006001600160a01b039384168102919091179182905561261892910416612755565b8051602090910120600155565b60ff808216600090815260056020526040902054161561265a57806040516361ca9f2960e01b81526004016108ee9190612ad8565b60ff166000908152600560205260409020805460ff19166001179055565b600054610100900460ff1661269f5760405162461bcd60e51b81526004016108ee906130b8565b600280546001600160a01b03191633908117909155604051600090600080516020613484833981519152908290a3565b6000806126f9836126f4600060029054906101000a90046001600160a01b0316612755565b6127bb565b9050806001600160a01b031663bfc66b6e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b509295945050505050565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b6020820152606082811b6001600160601b03191660348301526e5af43d82803e903d91602b57fd5bf360881b6048830152906057016040516020818303038152906040529050919050565b60008282516020840134f590506001600160a01b038116610b105760405163219c53f560e21b815260040160405180910390fd5b6103658061311f83390190565b6001600160a01b038116811461141657600080fd5b60006020828403121561282357600080fd5b813561282e816127fc565b9392505050565b60008083601f84011261284757600080fd5b5081356001600160401b0381111561285e57600080fd5b6020830191508360208260051b850101111561287957600080fd5b9250929050565b60008060006040848603121561289557600080fd5b83356128a0816127fc565b925060208401356001600160401b038111156128bb57600080fd5b6128c786828701612835565b9497909650939450505050565b6000602082840312156128e657600080fd5b5035919050565b803560ff811681146128fe57600080fd5b919050565b6000806040838503121561291657600080fd5b8235612921816127fc565b915061292f602084016128ed565b90509250929050565b60008060008060006060868803121561295057600080fd5b853561295b816127fc565b945060208601356001600160401b038082111561297757600080fd5b61298389838a01612835565b9096509450604088013591508082111561299c57600080fd5b506129a988828901612835565b969995985093965092949392505050565b60008083601f8401126129cc57600080fd5b5081356001600160401b038111156129e357600080fd5b60208301915083602082850101111561287957600080fd5b600080600080600060808688031215612a1357600080fd5b853594506020860135612a25816127fc565b93506040860135925060608601356001600160401b03811115612a4757600080fd5b6129a9888289016129ba565b60005b83811015612a6e578181015183820152602001612a56565b50506000910152565b60008151808452612a8f816020860160208601612a53565b601f01601f19169290920160200192915050565b60208152600061282e6020830184612a77565b60008060408385031215612ac957600080fd5b50508035926020909101359150565b60ff91909116815260200190565b600080600060608486031215612afb57600080fd5b8335612b06816127fc565b92506020840135612b16816127fc565b929592945050506040919091013590565b600060208284031215612b3957600080fd5b61282e826128ed565b6001600160a01b0391909116815260200190565b60008060008060008060006080888a031215612b7157600080fd5b8735612b7c816127fc565b965060208801356001600160401b0380821115612b9857600080fd5b612ba48b838c01612835565b909850965060408a0135915080821115612bbd57600080fd5b612bc98b838c01612835565b909650945060608a0135915080821115612be257600080fd5b50612bef8a828b01612835565b989b979a50959850939692959293505050565b60008060208385031215612c1557600080fd5b82356001600160401b03811115612c2b57600080fd5b612c3785828601612835565b90969095509350505050565b60008060408385031215612c5657600080fd5b8235612c61816127fc565b946020939093013593505050565b60008060008060808587031215612c8557600080fd5b8435612c90816127fc565b9350602085013592506040850135612ca7816127fc565b9396929550929360600135925050565b60008060008060808587031215612ccd57600080fd5b8435612cd8816127fc565b93506020850135612ce8816127fc565b93969395505050506040820135916060013590565b60008060008060608587031215612d1357600080fd5b8435612d1e816127fc565b93506020850135925060408501356001600160401b03811115612d4057600080fd5b612d4c878288016129ba565b95989497509550505050565b60008060008060408587031215612d6e57600080fd5b84356001600160401b0380821115612d8557600080fd5b612d9188838901612835565b90965094506020870135915080821115612daa57600080fd5b50612d4c87828801612835565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0392909216825260ff16602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b9283526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60018060a01b03841681528260208201526060604082015260006120516060830184612a77565b6001600160a01b039390931683526020830191909152604082015260600190565b8183823760009101908152919050565b6001600160a01b0386168152602081018590526080604082018190528101839052828460a0830137600060a084830101526000601f19601f850116820160a0838203016060840152612f0060a0820185612a77565b98975050505050505050565b600060208284031215612f1e57600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061216a90830184612a77565b60008251612f83818460208701612a53565b9190910192915050565b805180151581146128fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612fc657600080fd5b612fcf83612f8d565b60208401519092506001600160401b0380821115612fec57600080fd5b818501915085601f83011261300057600080fd5b81518181111561301257613012612f9d565b604051601f8201601f19908116603f0116810190838211818310171561303a5761303a612f9d565b8160405282815288602084870101111561305357600080fd5b613064836020830160208801612a53565b80955050505050509250929050565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906130a690830185612a77565b8281036080840152612f008185612a77565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561311557600080fd5b61282e82612f8d56fe608060405234801561001057600080fd5b50610345806100206000396000f3fe6080604052600436106100355760003560e01c8063150b7a021461003e578063b61d27f614610088578063bfc66b6e146100b657005b3661003c57005b005b34801561004a57600080fd5b5061006a6100593660046101da565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020015b60405180910390f35b34801561009457600080fd5b506100a86100a336600461024c565b6100da565b60405161007f9291906102a7565b3480156100c257600080fd5b5061003c600080546001600160a01b03191633179055565b600080546060906001600160a01b0316331461010f57604051634a0bfec160e01b815233600482015260240160405180910390fd5b856001600160a01b031685858560405161012a9291906102ff565b60006040518083038185875af1925050503d8060008114610167576040519150601f19603f3d011682016040523d82523d6000602084013e61016c565b606091505b509150915094509492505050565b6001600160a01b038116811461018f57600080fd5b50565b60008083601f8401126101a457600080fd5b5081356001600160401b038111156101bb57600080fd5b6020830191508360208285010111156101d357600080fd5b9250929050565b6000806000806000608086880312156101f257600080fd5b85356101fd8161017a565b9450602086013561020d8161017a565b93506040860135925060608601356001600160401b0381111561022f57600080fd5b61023b88828901610192565b969995985093965092949392505050565b6000806000806060858703121561026257600080fd5b843561026d8161017a565b93506020850135925060408501356001600160401b0381111561028f57600080fd5b61029b87828801610192565b95989497509550505050565b821515815260006020604081840152835180604085015260005b818110156102dd578581018301518582016060015282016102c1565b506000606082860101526060601f19601f830116850101925050509392505050565b818382376000910190815291905056fea2646970667358221220117b2efddae87b0013c001fed11ba2f36e38d259e4777c9b3dafc231b7e2852c64736f6c634300081000338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220e13a2c7f3a2ef72288f15ffc5a32615b2bed35cac642012b0ed5485701d4ec1a64736f6c63430008100033