Overview
ETH Balance
More Info
ContractCreator
TokenTracker
Multichain Info
Latest 25 from a total of 277,552 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Test Contract | 44339938 | 22 hrs ago | IN | 0 ETH | 0.0000015 | ||||
| Test Contract | 44339931 | 22 hrs ago | IN | 0 ETH | 0.00000209 | ||||
| Test Contract | 44328156 | 29 hrs ago | IN | 0 ETH | 0.0000025 | ||||
| Test Contract | 44302998 | 43 hrs ago | IN | 0 ETH | 0.0000018 | ||||
| Test Contract | 44302993 | 43 hrs ago | IN | 0 ETH | 0.0000025 | ||||
| Test Contract | 44260229 | 2 days ago | IN | 0 ETH | 0.00000209 | ||||
| Test Contract | 44108950 | 6 days ago | IN | 0 ETH | 0.0000025 | ||||
| Test Contract | 44051196 | 7 days ago | IN | 0 ETH | 0.00000211 | ||||
| Test Contract | 43975976 | 9 days ago | IN | 0 ETH | 0.0000025 | ||||
| Test Contract | 43738509 | 14 days ago | IN | 0 ETH | 0.00000149 | ||||
| Test Contract | 43738418 | 14 days ago | IN | 0 ETH | 0.0000015 | ||||
| Test Contract | 43738412 | 14 days ago | IN | 0 ETH | 0.00000165 | ||||
| Test Contract | 43711839 | 15 days ago | IN | 0 ETH | 0.00000209 | ||||
| Test Contract | 43625977 | 17 days ago | IN | 0 ETH | 0.00000176 | ||||
| Test Contract | 43625962 | 17 days ago | IN | 0 ETH | 0.00000234 | ||||
| Test Contract | 43620501 | 17 days ago | IN | 0 ETH | 0.00000252 | ||||
| Test Contract | 43618552 | 17 days ago | IN | 0 ETH | 0.0000026 | ||||
| Test Contract | 43546182 | 19 days ago | IN | 0 ETH | 0.00000262 | ||||
| Test Contract | 43546161 | 19 days ago | IN | 0 ETH | 0.00000027 | ||||
| Test Contract | 43545840 | 19 days ago | IN | 0 ETH | 0.00000027 | ||||
| Test Contract | 43544716 | 19 days ago | IN | 0 ETH | 0.00000027 | ||||
| Transfer Ownersh... | 43544585 | 19 days ago | IN | 0 ETH | 0.00000018 | ||||
| Approve | 43544572 | 19 days ago | IN | 0 ETH | 0.00000018 | ||||
| Approve | 43544548 | 19 days ago | IN | 0 ETH | 0.00000018 | ||||
| Test Contract | 43544512 | 19 days ago | IN | 0 ETH | 0.00000027 |
Latest 4 internal transactions
| Parent Transaction Hash | Block | From | To | Amount | ||
|---|---|---|---|---|---|---|
| 4612817 | 920 days ago | Contract Creation | 0 ETH | |||
| 4612817 | 920 days ago | Contract Creation | 0 ETH | |||
| 4612817 | 920 days ago | Contract Creation | 0 ETH | |||
| 4612817 | 920 days ago | Contract Creation | 0 ETH |
Contract Source Code (Solidity Standard Json-Input format)
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotActive","type":"error"},{"inputs":[],"name":"SoulboundToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"submission","type":"address"},{"indexed":false,"internalType":"bool","name":"passed","type":"bool"},{"components":[{"internalType":"string","name":"message","type":"string"},{"components":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult[]","name":"elements","type":"tuple[]"},{"internalType":"uint256","name":"num","type":"uint256"}],"internalType":"struct List.ARList","name":"assertResults","type":"tuple"}],"indexed":false,"internalType":"struct Cafe.TestResult[]","name":"testResults","type":"tuple[]"}],"name":"TestSuiteResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"message","type":"string"},{"components":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult[]","name":"elements","type":"tuple[]"},{"internalType":"uint256","name":"num","type":"uint256"}],"internalType":"struct List.ARList","name":"assertResults","type":"tuple"}],"internalType":"struct Cafe.TestResult[]","name":"_testResults","type":"tuple[]"}],"name":"checkIfAllPassed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"a","type":"bytes"},{"internalType":"bytes","name":"b","type":"bytes"}],"name":"equal","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"equal","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"address","name":"b","type":"address"}],"name":"equal","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"a","type":"string"},{"internalType":"string","name":"b","type":"string"}],"name":"equal","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"a","type":"string[]"},{"internalType":"string[]","name":"b","type":"string[]"}],"name":"equal","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"a","type":"address[]"},{"internalType":"address[]","name":"b","type":"address[]"}],"name":"equal","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"a","type":"uint256[]"},{"internalType":"uint256[]","name":"b","type":"uint256[]"}],"name":"equal","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"a","type":"bool"}],"name":"isFalse","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"a","type":"bool"}],"name":"isTrue","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"address","name":"b","type":"address"}],"name":"notEqual","outputs":[{"components":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"string","name":"assertionError","type":"string"},{"internalType":"string","name":"returnedAsString","type":"string"},{"internalType":"string","name":"expectedAsString","type":"string"},{"internalType":"string","name":"methodName","type":"string"}],"internalType":"struct Assert.AssertResult","name":"result","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"owners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_setActiveTo","type":"bool"}],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_submissionAddress","type":"address"}],"name":"testContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenIds","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
600b805460ff1916600117905560a060405260006080908152600c9062000027908262000378565b503480156200003557600080fd5b506040518060400160405280600b81526020016a29ba37b930b3b2902834b760a91b815250604051806040016040528060048152602001635343445360e01b815250816000908162000088919062000378565b50600162000097828262000378565b505050620000b4620000ae6200024360201b60201c565b62000247565b6001600755604051600d90620000ca9062000299565b604051809103906000f080158015620000e7573d6000803e3d6000fd5b5081546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055604051600d906200012b90620002a7565b604051809103906000f08015801562000148573d6000803e3d6000fd5b5081546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055604051600d906200018c90620002b5565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b5081546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055604051600d90620001ed90620002c3565b604051809103906000f0801580156200020a573d6000803e3d6000fd5b5081546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905562000444565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611d498062003de583390190565b611f798062005b2e83390190565b611cff8062007aa783390190565b611f6e80620097a683390190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002fc57607f821691505b6020821081036200031d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000373576000816000526020600020601f850160051c810160208610156200034e5750805b601f850160051c820191505b818110156200036f578281556001016200035a565b5050505b505050565b81516001600160401b03811115620003945762000394620002d1565b620003ac81620003a58454620002e7565b8462000323565b602080601f831160018114620003e45760008415620003cb5750858301515b600019600386901b1c1916600185901b1785556200036f565b600085815260208120601f198616915b828110156200041557888601518255948401946001909101908401620003f4565b5085821015620004345787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61399180620004546000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b88d4fde116100a2578063e7da4c7e11610071578063e7da4c7e14610431578063e985e9c514610444578063f2fde38b14610480578063fa084b9b1461049357600080fd5b8063b88d4fde146103e5578063c87b56dd146103f8578063d70968e71461040b578063e0df5b6f1461041e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103a657806395d89b41146103b7578063a22cb465146103bf578063acec338a146103d257600080fd5b806370a0823114610360578063714cff5614610381578063715018a61461038b57806374f130701461039357600080fd5b8063301916261161018757806346bdca9a1161015657806346bdca9a146102a857806360fb55d5146103275780636352211e1461033a5780636df864781461034d57600080fd5b806330191626146102db57806331495d33146102ee578063410dbb8b1461030157806342842e0e1461031457600080fd5b8063081812fc116101c3578063081812fc1461026a578063095ea7b314610295578063235266d2146102a857806323b872dd146102c857600080fd5b806301ffc9a7146101f5578063022914a71461021d57806306d82f291461024057806306fdde0314610255575b600080fd5b610208610203366004612688565b6104a6565b60405190151581526020015b60405180910390f35b61020861022b3660046126ba565b60096020526000908152604090205460ff1681565b61025361024e3660046126ba565b610543565b005b61025d6107fe565b6040516102149190612727565b61027d61027836600461273a565b610890565b6040516001600160a01b039091168152602001610214565b6102536102a3366004612753565b6108b7565b6102bb6102b6366004612890565b610a0b565b604051610214919061296b565b6102536102d636600461297e565b610aba565b6102bb6102e93660046129bf565b610b31565b6102bb6102fc3660046129e1565b610beb565b6102bb61030f366004612a38565b610cbc565b61025361032236600461297e565b610dbc565b6102bb610335366004612b04565b610dd7565b61027d61034836600461273a565b610eb3565b6102bb61035b366004612bc6565b610f18565b61037361036e3660046126ba565b610ff4565b604051908152602001610214565b6008546103739081565b61025361108e565b6102bb6103a1366004612a38565b6110a2565b6006546001600160a01b031661027d565b61025d6111a3565b6102536103cd366004612c20565b6111b2565b6102536103e0366004612a38565b6111c1565b6102536103f3366004612c4e565b6111dc565b61025d61040636600461273a565b611254565b6102bb6104193660046129e1565b6112e8565b61025361042c366004612cba565b6113af565b6102bb61043f366004612d4e565b6113c3565b6102086104523660046129e1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61025361048e3660046126ba565b61149f565b6102086104a1366004612da8565b61152f565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061050957506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061053d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b600b5460ff1661057f576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e5460609060009083906001600160a01b0316156106bb57600d546105a69060016130e5565b67ffffffffffffffff8111156105be576105be61277f565b6040519080825280602002602001820160405280156105f757816020015b6105e461263e565b8152602001906001900390816105dc5790505b50925081610604816130f8565b600e546040517f4c96a3890000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015292955091169150634c96a389906024016000604051808303816000875af115801561066c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106949190810190613328565b846000815181106106a7576106a761336f565b602002602001018193508290525050610713565b600d5467ffffffffffffffff8111156106d6576106d661277f565b60405190808252806020026020018201604052801561070f57816020015b6106fc61263e565b8152602001906001900390816106f45790505b5092505b600d548210156107ee57600d82815481106107305761073061336f565b6000918252602090912001546040517f4b64e4920000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634b64e492906024016000604051808303816000875af115801561079e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c69190810190613385565b8383815181106107d8576107d861336f565b6020908102919091010152600190910190610713565b6107f884846115cf565b50505050565b60606000805461080d906133ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610839906133ba565b80156108865780601f1061085b57610100808354040283529160200191610886565b820191906000526020600020905b81548152906001019060200180831161086957829003601f168201915b5050505050905090565b600061089b826116d6565b506000908152600460205260409020546001600160a01b031690565b60006108c282610eb3565b9050806001600160a01b0316836001600160a01b0316036109505760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b038216148061098a57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6109fc5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610947565b610a06838361173a565b505050565b610a3f6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815160208084019190912084519185019190912014808252610a84578282604051602001610a6e9291906133f4565b60408051601f1981840301815291905260208201525b604080820193909352606081019190915281518083019092526005825264195c5d585b60da1b6020830152608081019190915290565b610ac433826117b5565b610b265760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610947565b610a06838383611834565b610b656040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b828214808252610ba857610b7883611a47565b610b8183611a47565b604051602001610b929291906133f4565b60408051601f1981840301815291905260208201525b610bb183611a47565b6040820152610bbf82611a47565b6060820152604080518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b610c1f6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b0383811690831681148252600090610c3f906014611ae7565b90506000610c57846001600160a01b03166014611ae7565b8351909150610c89578181604051602001610c739291906133f4565b60408051601f1981840301815291905260208401525b604080840192909252606083015280518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b610cf06040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8115808252610d18576040518060600160405280602381526020016139176023913960208201525b600182151514610d45576040518060400160405280600581526020016466616c736560d81b815250610d63565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600782527f697346616c736500000000000000000000000000000000000000000000000000908201526080820152919050565b610a06838383604051806020016040528060008152506111dc565b610e0b6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610e1c9190613475565b6040516020818303038152906040528051906020012083604051602001610e439190613475565b60408051601f19818403018152919052805160209091012014808252610e9c57610e6c83611ccf565b610e7583611ccf565b604051602001610e869291906133f4565b60408051601f1981840301815291905260208201525b610ea583611ccf565b6040820152610bbf82611ccf565b6000818152600260205260408120546001600160a01b03168061053d5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610947565b610f4c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610f5d91906134d9565b6040516020818303038152906040528051906020012083604051602001610f8491906134d9565b60408051601f19818403018152919052805160209091012014808252610fdd57610fad83611d9a565b610fb683611d9a565b604051602001610fc79291906133f4565b60408051601f1981840301815291905260208201525b610fe683611d9a565b6040820152610bbf82611d9a565b60006001600160a01b0382166110725760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610947565b506001600160a01b031660009081526003602052604090205490565b611096611e6c565b6110a06000611ec6565b565b6110d66040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8115158082526110ff5760405180606001604052806022815260200161393a6022913960208201525b60018215151461112c576040518060400160405280600581526020016466616c736560d81b81525061114a565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600682527f6973547275650000000000000000000000000000000000000000000000000000908201526080820152919050565b60606001805461080d906133ba565b6111bd338383611f25565b5050565b6111c9611e6c565b600b805460ff1916911515919091179055565b6111e633836117b5565b6112485760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610947565b6107f884848484611ff3565b6060600c8054611263906133ba565b80601f016020809104026020016040519081016040528092919081815260200182805461128f906133ba565b80156112dc5780601f106112b1576101008083540402835291602001916112dc565b820191906000526020600020905b8154815290600101906020018083116112bf57829003601f168201915b50505050509050919050565b61131c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b03838116908316811415825260009061133d906014611ae7565b825190915061136d57806040516020016113579190613526565b60408051601f1981840301815291905260208301525b60408083019190915280516020808201835260008252606084019190915281518083019092526005825264195c5d585b60da1b90820152608082015292915050565b6113b7611e6c565b600c6111bd82826135e1565b6113f76040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8160405160200161140891906136a1565b604051602081830303815290604052805190602001208360405160200161142f91906136a1565b60408051601f198184030181529190528051602090910120148082526114885761145883612071565b61146183612071565b6040516020016114729291906133f4565b60408051601f1981840301815291905260208201525b61149183612071565b6040820152610bbf82612071565b6114a7611e6c565b6001600160a01b0381166115235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610947565b61152c81611ec6565b50565b6000805b82518110156115c65760005b8382815181106115515761155161336f565b602002602001015160200151602001518110156115bd5783828151811061157a5761157a61336f565b60200260200101516020015160000151818151811061159b5761159b61336f565b6020026020010151600001516115b5575060009392505050565b60010161153f565b50600101611533565b50600192915050565b6115d7612138565b60006115e28261152f565b90507f53d51c5f8eaf1bdbf1288871cbf97a9295da23a9868b15b526b4256ede348db9838284604051611617939291906136d9565b60405180910390a16001600160a01b0383166000908152600a602052604090205460ff1615801561165857503360009081526009602052604090205460ff16155b80156116615750805b156116a857611674600880546001019055565b600061167f60085490565b336000818152600960205260409020805460ff191660011790559091506116a69082612191565b505b506001600160a01b0382166000908152600a60205260409020805460ff191660011790556111bd6001600755565b6000818152600260205260409020546001600160a01b031661152c5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610947565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155819061177c82610eb3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806117c183610eb3565b9050806001600160a01b0316846001600160a01b0316148061180857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061182c5750836001600160a01b031661182184610890565b6001600160a01b0316145b949350505050565b826001600160a01b031661184782610eb3565b6001600160a01b0316146118ab5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610947565b6001600160a01b0382166119265760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610947565b61193383838360016121ab565b826001600160a01b031661194682610eb3565b6001600160a01b0316146119aa5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610947565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60606000611a54836121ec565b600101905060008167ffffffffffffffff811115611a7457611a7461277f565b6040519080825280601f01601f191660200182016040528015611a9e576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611aa857509392505050565b60606000611af68360026137ce565b611b019060026130e5565b67ffffffffffffffff811115611b1957611b1961277f565b6040519080825280601f01601f191660200182016040528015611b43576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611b7a57611b7a61336f565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611bc557611bc561336f565b60200101906001600160f81b031916908160001a9053506000611be98460026137ce565b611bf49060016130e5565b90505b6001811115611c79577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611c3557611c3561336f565b1a60f81b828281518110611c4b57611c4b61336f565b60200101906001600160f81b031916908160001a90535060049490941c93611c72816137e5565b9050611bf7565b508315611cc85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610947565b9392505050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015611d935760018451611d0491906137fc565b811015611d4d5781848281518110611d1e57611d1e61336f565b6020026020010151604051602001611d3792919061380f565b6040516020818303038152906040529150611d8b565b81848281518110611d6057611d6061336f565b6020026020010151604051602001611d79929190613866565b60405160208183030381529060405291505b600101611ced565b5092915050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015611d935760018451611dcf91906137fc565b811015611e2b5781611e04858381518110611dec57611dec61336f565b60200260200101516001600160a01b03166014611ae7565b604051602001611e1592919061380f565b6040516020818303038152906040529150611e64565b81611e41858381518110611dec57611dec61336f565b604051602001611e52929190613866565b60405160208183030381529060405291505b600101611db8565b6006546001600160a01b031633146110a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610947565b600680546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f865760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610947565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611ffe848484611834565b61200a848484846122ce565b6107f85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610947565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015611d9357600184516120a691906137fc565b8110156120f757816120d08583815181106120c3576120c361336f565b6020026020010151611a47565b6040516020016120e192919061380f565b6040516020818303038152906040529150612130565b8161210d8583815181106120c3576120c361336f565b60405160200161211e929190613866565b60405160208183030381529060405291505b60010161208f565b60026007540361218a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610947565b6002600755565b6111bd82826040518060200160405280600081525061241a565b6001600160a01b038416156107f8576040517f6e10574900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612235577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612261576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061227f57662386f26fc10000830492506010015b6305f5e1008310612297576305f5e100830492506008015b61271083106122ab57612710830492506004015b606483106122bd576064830492506002015b600a831061053d5760010192915050565b60006001600160a01b0384163b1561240f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906123129033908990889088906004016138bd565b6020604051808303816000875af192505050801561234d575060408051601f3d908101601f1916820190925261234a918101906138f9565b60015b6123f5573d80801561237b576040519150601f19603f3d011682016040523d82523d6000602084013e612380565b606091505b5080516000036123ed5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610947565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061182c565b506001949350505050565b6124248383612498565b61243160008484846122ce565b610a065760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610947565b6001600160a01b0382166124ee5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610947565b6000818152600260205260409020546001600160a01b0316156125535760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610947565b6125616000838360016121ab565b6000818152600260205260409020546001600160a01b0316156125c65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610947565b6001600160a01b0382166000818152600360209081526040808320805460010190558483526002909152808220805473ffffffffffffffffffffffffffffffffffffffff19168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60405180604001604052806060815260200161266d604051806040016040528060608152602001600081525090565b905290565b6001600160e01b03198116811461152c57600080fd5b60006020828403121561269a57600080fd5b8135611cc881612672565b6001600160a01b038116811461152c57600080fd5b6000602082840312156126cc57600080fd5b8135611cc8816126a5565b60005b838110156126f25781810151838201526020016126da565b50506000910152565b600081518084526127138160208601602086016126d7565b601f01601f19169290920160200192915050565b602081526000611cc860208301846126fb565b60006020828403121561274c57600080fd5b5035919050565b6000806040838503121561276657600080fd5b8235612771816126a5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156127b8576127b861277f565b60405290565b60405160a0810167ffffffffffffffff811182821017156127b8576127b861277f565b604051601f8201601f1916810167ffffffffffffffff8111828210171561280a5761280a61277f565b604052919050565b600067ffffffffffffffff82111561282c5761282c61277f565b50601f01601f191660200190565b600082601f83011261284b57600080fd5b813561285e61285982612812565b6127e1565b81815284602083860101111561287357600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156128a357600080fd5b823567ffffffffffffffff808211156128bb57600080fd5b6128c78683870161283a565b935060208501359150808211156128dd57600080fd5b506128ea8582860161283a565b9150509250929050565b8051151582526000602082015160a0602085015261291560a08501826126fb565b90506040830151848203604086015261292e82826126fb565b9150506060830151848203606086015261294882826126fb565b9150506080830151848203608086015261296282826126fb565b95945050505050565b602081526000611cc860208301846128f4565b60008060006060848603121561299357600080fd5b833561299e816126a5565b925060208401356129ae816126a5565b929592945050506040919091013590565b600080604083850312156129d257600080fd5b50508035926020909101359150565b600080604083850312156129f457600080fd5b82356129ff816126a5565b91506020830135612a0f816126a5565b809150509250929050565b801515811461152c57600080fd5b8035612a3381612a1a565b919050565b600060208284031215612a4a57600080fd5b8135611cc881612a1a565b600067ffffffffffffffff821115612a6f57612a6f61277f565b5060051b60200190565b600082601f830112612a8a57600080fd5b81356020612a9a61285983612a55565b82815260059290921b84018101918181019086841115612ab957600080fd5b8286015b84811015612af957803567ffffffffffffffff811115612add5760008081fd5b612aeb8986838b010161283a565b845250918301918301612abd565b509695505050505050565b60008060408385031215612b1757600080fd5b823567ffffffffffffffff80821115612b2f57600080fd5b612b3b86838701612a79565b93506020850135915080821115612b5157600080fd5b506128ea85828601612a79565b600082601f830112612b6f57600080fd5b81356020612b7f61285983612a55565b8083825260208201915060208460051b870101935086841115612ba157600080fd5b602086015b84811015612af9578035612bb9816126a5565b8352918301918301612ba6565b60008060408385031215612bd957600080fd5b823567ffffffffffffffff80821115612bf157600080fd5b612bfd86838701612b5e565b93506020850135915080821115612c1357600080fd5b506128ea85828601612b5e565b60008060408385031215612c3357600080fd5b8235612c3e816126a5565b91506020830135612a0f81612a1a565b60008060008060808587031215612c6457600080fd5b8435612c6f816126a5565b93506020850135612c7f816126a5565b925060408501359150606085013567ffffffffffffffff811115612ca257600080fd5b612cae8782880161283a565b91505092959194509250565b600060208284031215612ccc57600080fd5b813567ffffffffffffffff811115612ce357600080fd5b61182c8482850161283a565b600082601f830112612d0057600080fd5b81356020612d1061285983612a55565b8083825260208201915060208460051b870101935086841115612d3257600080fd5b602086015b84811015612af95780358352918301918301612d37565b60008060408385031215612d6157600080fd5b823567ffffffffffffffff80821115612d7957600080fd5b612d8586838701612cef565b93506020850135915080821115612d9b57600080fd5b506128ea85828601612cef565b600060208284031215612dba57600080fd5b67ffffffffffffffff82351115612dd057600080fd5b82601f833584010112612de257600080fd5b612df26128598335840135612a55565b8235830180358083526020808401939260059290921b90910101851015612e1857600080fd5b602084358501015b84358501803560051b016020018110156130c65767ffffffffffffffff81351115612e4a57600080fd5b6040853586018235018703601f19011215612e6457600080fd5b612e6c612795565b67ffffffffffffffff60208335883589010101351115612e8b57600080fd5b612ea3876020843589358a010181810135010161283a565b815267ffffffffffffffff60408335883589010101351115612ec457600080fd5b60408635870183350180820135018803601f19011215612ee357600080fd5b612eeb612795565b67ffffffffffffffff87358801843501604081013501602001351115612f1057600080fd5b86358701833501604081013501602081013501603f81018913612f3257600080fd5b612f426128596020830135612a55565b602082810135808352908201919060051b83016040018b1015612f6457600080fd5b604083015b6040602085013560051b8501018110156130945767ffffffffffffffff81351115612f9357600080fd5b8035840160a0818e03603f19011215612fab57600080fd5b612fb36127be565b612fbf60408301612a28565b815267ffffffffffffffff60608301351115612fda57600080fd5b612fed8e6040606085013585010161283a565b602082015267ffffffffffffffff6080830135111561300b57600080fd5b61301e8e6040608085013585010161283a565b604082015267ffffffffffffffff60a0830135111561303c57600080fd5b61304f8e604060a085013585010161283a565b606082015267ffffffffffffffff60c0830135111561306d57600080fd5b6130808e604060c085013585010161283a565b608082015284525060209283019201612f69565b508352505060408335883589010181810135010135602080830191909152828101919091529084529283019201612e20565b50949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561053d5761053d6130cf565b60006001820161310a5761310a6130cf565b5060010190565b600082601f83011261312257600080fd5b815161313061285982612812565b81815284602083860101111561314557600080fd5b61182c8260208301602087016126d7565b8051612a3381612a1a565b60006040828403121561317357600080fd5b61317b612795565b9050815167ffffffffffffffff8082111561319557600080fd5b6131a185838601613111565b83526020915081840151818111156131b857600080fd5b8401604081870312156131ca57600080fd5b6131d2612795565b8151838111156131e157600080fd5b8201601f810188136131f257600080fd5b805161320061285982612a55565b81815260059190911b8201860190868101908a83111561321f57600080fd5b8784015b8381101561330c5780518881111561323a57600080fd5b850160a0818e03601f1901121561325057600080fd5b6132586127be565b6132638b8301613156565b815260408201518a81111561327757600080fd5b6132858f8d83860101613111565b8c8301525060608201518a81111561329c57600080fd5b6132aa8f8d83860101613111565b60408301525060808201518a8111156132c35760008081fd5b6132d18f8d83860101613111565b60608301525060a08201518a8111156132ea5760008081fd5b6132f88f8d83860101613111565b608083015250845250918801918801613223565b5084525050509083015183820152918301919091525092915050565b6000806040838503121561333b57600080fd5b825167ffffffffffffffff81111561335257600080fd5b61335e85828601613161565b9250506020830151612a0f816126a5565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561339757600080fd5b815167ffffffffffffffff8111156133ae57600080fd5b61182c84828501613161565b600181811c908216806133ce57607f821691505b6020821081036133ee57634e487b7160e01b600052602260045260246000fd5b50919050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081526000835161342c8160108501602088016126d7565b7f206973206e6f7420657175616c20746f2000000000000000000000000000000060109184019182015283516134698160218401602088016126d7565b01602101949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156134cc57603f198886030184526134ba8583516126fb565b9450928501929085019060010161349e565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561351a5783516001600160a01b0316835292840192918401916001016134f5565b50909695505050505050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081527f20426f74682076616c75657320617265000000000000000000000000000000006010820152600082516135848160208501602087016126d7565b9190910160200192915050565b601f821115610a06576000816000526020600020601f850160051c810160208610156135ba5750805b601f850160051c820191505b818110156135d9578281556001016135c6565b505050505050565b815167ffffffffffffffff8111156135fb576135fb61277f565b61360f8161360984546133ba565b84613591565b602080601f831160018114613644576000841561362c5750858301515b600019600386901b1c1916600185901b1785556135d9565b600085815260208120601f198616915b8281101561367357888601518255948401946001909101908401613654565b50858210156136915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252825182820181905260009190848201906040850190845b8181101561351a578351835292840192918401916001016136bd565b600060608083016001600160a01b038716845260208615158186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b838110156137bc578a8803607f1901855282518051878a52613740888b01826126fb565b918901518a83038b8b0152805189845280518a850181905291939250600582901b83018d0191908b01908d840190875b8181101561379e57605f1986860301835261378c8585516128f4565b9450928d0192918d0191600101613770565b5050505091890151908901529750938601939186019160010161371c565b50959c9b505050505050505050505050565b808202811582820484141761053d5761053d6130cf565b6000816137f4576137f46130cf565b506000190190565b8181038181111561053d5761053d6130cf565b600083516138218184602088016126d7565b8351908301906138358183602088016126d7565b7f2c200000000000000000000000000000000000000000000000000000000000009101908152600201949350505050565b600083516138788184602088016126d7565b83519083019061388c8183602088016126d7565b7f5d000000000000000000000000000000000000000000000000000000000000009101908152600101949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526138ef60808301846126fb565b9695505050505050565b60006020828403121561390b57600080fd5b8151611cc88161267256fe417373657274696f6e4572726f723a20726573756c74206973206e6f742066616c7365417373657274696f6e4572726f723a20726573756c74206973206e6f742074727565a2646970667358221220544c4e0c430c90443a421ae62565ca3d73d34b3d66ee4055a78625f862aa227664736f6c63430008170033608060405234801561001057600080fd5b50611d29806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80634b64e4921161008157806374f130701161005b57806374f1307014610176578063d70968e714610189578063e7da4c7e1461019c57600080fd5b80634b64e4921461013057806360fb55d5146101505780636df864781461016357600080fd5b806331495d33116100b257806331495d331461010a578063410dbb8b1461011d57806346bdca9a146100ce57600080fd5b8063235266d2146100ce57806330191626146100f7575b600080fd5b6100e16100dc3660046113af565b6101af565b6040516100ee91906114da565b60405180910390f35b6100e16101053660046114f4565b61025e565b6100e1610118366004611532565b610318565b6100e161012b366004611565565b6103e9565b61014361013e366004611587565b6104e9565b6040516100ee91906115a2565b6100e161015e3660046116ea565b610657565b6100e16101713660046117aa565b610733565b6100e1610184366004611565565b61080f565b6100e1610197366004611532565b610910565b6100e16101aa366004611863565b6109d7565b6101e36040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8151602080840191909120845191850191909120148082526102285782826040516020016102129291906118bd565b60408051601f1981840301815291905260208201525b604080820193909352606081019190915281518083019092526005825264195c5d585b60da1b6020830152608081019190915290565b6102926040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8282148082526102d5576102a583610ab3565b6102ae83610ab3565b6040516020016102bf9291906118bd565b60408051601f1981840301815291905260208201525b6102de83610ab3565b60408201526102ec82610ab3565b6060820152604080518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61034c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038381169083168114825260009061036c906014610b53565b90506000610384846001600160a01b03166014610b53565b83519091506103b65781816040516020016103a09291906118bd565b60408051601f1981840301815291905260208401525b604080840192909252606083015280518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61041d6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b811580825261044557604051806060016040528060238152602001611caf6023913960208201525b600182151514610472576040518060400160405280600581526020016466616c736560d81b815250610490565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600782527f697346616c736500000000000000000000000000000000000000000000000000908201526080820152919050565b6104f16112b6565b816104fa6112b6565b6105078160200151610d5b565b506040518060600160405280602c8152602001611c83602c913981600001819052506105db6105d0836001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561056d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610595919081019061193e565b6040518060400160405280600381526020017f50617400000000000000000000000000000000000000000000000000000000008152506101af565b602083015190610dd7565b5061064f6105d0836001600160a01b0316633f83ea3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064491906119ac565b641a291109a661025e565b509392505050565b61068b6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8160405160200161069c91906119c5565b60405160208183030381529060405280519060200120836040516020016106c391906119c5565b60408051601f1981840301815291905280516020909101201480825261071c576106ec83610e47565b6106f583610e47565b6040516020016107069291906118bd565b60408051601f1981840301815291905260208201525b61072583610e47565b60408201526102ec82610e47565b6107676040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b816040516020016107789190611a29565b604051602081830303815290604052805190602001208360405160200161079f9190611a29565b60408051601f198184030181529190528051602090910120148082526107f8576107c883610f12565b6107d183610f12565b6040516020016107e29291906118bd565b60408051601f1981840301815291905260208201525b61080183610f12565b60408201526102ec82610f12565b6108436040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81151580825261086c57604051806060016040528060228152602001611cd26022913960208201525b600182151514610899576040518060400160405280600581526020016466616c736560d81b8152506108b7565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600682527f6973547275650000000000000000000000000000000000000000000000000000908201526080820152919050565b6109446040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038381169083168114158252600090610965906014610b53565b8251909150610995578060405160200161097f9190611a76565b60408051601f1981840301815291905260208301525b60408083019190915280516020808201835260008252606084019190915281518083019092526005825264195c5d585b60da1b90820152608082015292915050565b610a0b6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610a1c9190611ae1565b6040516020818303038152906040528051906020012083604051602001610a439190611ae1565b60408051601f19818403018152919052805160209091012014808252610a9c57610a6c83610fe4565b610a7583610fe4565b604051602001610a869291906118bd565b60408051601f1981840301815291905260208201525b610aa583610fe4565b60408201526102ec82610fe4565b60606000610ac0836110ab565b600101905060008167ffffffffffffffff811115610ae057610ae06112ea565b6040519080825280601f01601f191660200182016040528015610b0a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610b1457509392505050565b60606000610b62836002611b2f565b610b6d906002611b46565b67ffffffffffffffff811115610b8557610b856112ea565b6040519080825280601f01601f191660200182016040528015610baf576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610be657610be6611b59565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610c3157610c31611b59565b60200101906001600160f81b031916908160001a9053506000610c55846002611b2f565b610c60906001611b46565b90505b6001811115610ce5577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610ca157610ca1611b59565b1a60f81b828281518110610cb757610cb7611b59565b60200101906001600160f81b031916908160001a90535060049490941c93610cde81611b6f565b9050610c63565b508315610d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b90505b92915050565b60408051808201825260608152600060208201528151600480825260a082019093529091816020015b610db86040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081610d845750508252506000602082015290565b604080518082019091526060815260006020820152825151602084015103610e0557610e028361118d565b92505b818360000151846020015181518110610e2057610e20611b59565b6020026020010181905250826020018051809190610e3d90611b86565b9052509192915050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015610f0b5760018451610e7c9190611b9f565b811015610ec55781848281518110610e9657610e96611b59565b6020026020010151604051602001610eaf929190611bb2565b6040516020818303038152906040529150610f03565b81848281518110610ed857610ed8611b59565b6020026020010151604051602001610ef1929190611c09565b60405160208183030381529060405291505b600101610e65565b5092915050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015610f0b5760018451610f479190611b9f565b811015610fa35781610f7c858381518110610f6457610f64611b59565b60200260200101516001600160a01b03166014610b53565b604051602001610f8d929190611bb2565b6040516020818303038152906040529150610fdc565b81610fb9858381518110610f6457610f64611b59565b604051602001610fca929190611c09565b60405160208183030381529060405291505b600101610f30565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015610f0b57600184516110199190611b9f565b81101561106a578161104385838151811061103657611036611b59565b6020026020010151610ab3565b604051602001611054929190611bb2565b60405160208183030381529060405291506110a3565b8161108085838151811061103657611036611b59565b604051602001611091929190611c09565b60405160208183030381529060405291505b600101611002565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106110f4577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611120576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061113e57662386f26fc10000830492506010015b6305f5e1008310611156576305f5e100830492506008015b612710831061116a57612710830492506004015b6064831061117c576064830492506002015b600a8310610d555760010192915050565b6040805180820190915260608152600060208201526040805180820190915260608152600060208201528251516002906111c8906003611b2f565b6111d29190611c60565b67ffffffffffffffff8111156111ea576111ea6112ea565b60405190808252806020026020018201604052801561124f57816020015b61123c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8152602001906001900390816112085790505b50815260005b8351518110156112a457835180518290811061127357611273611b59565b60200260200101518260000151828151811061129157611291611b59565b6020908102919091010152600101611255565b50602092830151928101929092525090565b6040518060400160405280606081526020016112e5604051806040016040528060608152602001600081525090565b905290565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611329576113296112ea565b604052919050565b600067ffffffffffffffff82111561134b5761134b6112ea565b50601f01601f191660200190565b600082601f83011261136a57600080fd5b813561137d61137882611331565b611300565b81815284602083860101111561139257600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156113c257600080fd5b823567ffffffffffffffff808211156113da57600080fd5b6113e686838701611359565b935060208501359150808211156113fc57600080fd5b5061140985828601611359565b9150509250929050565b60005b8381101561142e578181015183820152602001611416565b50506000910152565b6000815180845261144f816020860160208601611413565b601f01601f19169290920160200192915050565b8051151582526000602082015160a0602085015261148460a0850182611437565b90506040830151848203604086015261149d8282611437565b915050606083015184820360608601526114b78282611437565b915050608083015184820360808601526114d18282611437565b95945050505050565b6020815260006114ed6020830184611463565b9392505050565b6000806040838503121561150757600080fd5b50508035926020909101359150565b80356001600160a01b038116811461152d57600080fd5b919050565b6000806040838503121561154557600080fd5b61154e83611516565b915061155c60208401611516565b90509250929050565b60006020828403121561157757600080fd5b81358015158114610d5257600080fd5b60006020828403121561159957600080fd5b6114ed82611516565b6000602080835283516040828501526115be6060850182611437565b905081850151601f198583030160408601526040820181516040845281815180845260608601915060608160051b8701019350868301925060005b8181101561162757605f19878603018352611615858551611463565b945092870192918701916001016115f9565b505050509083015191909201529392505050565b600067ffffffffffffffff821115611655576116556112ea565b5060051b60200190565b600082601f83011261167057600080fd5b813560206116806113788361163b565b82815260059290921b8401810191818101908684111561169f57600080fd5b8286015b848110156116df57803567ffffffffffffffff8111156116c35760008081fd5b6116d18986838b0101611359565b8452509183019183016116a3565b509695505050505050565b600080604083850312156116fd57600080fd5b823567ffffffffffffffff8082111561171557600080fd5b6117218683870161165f565b9350602085013591508082111561173757600080fd5b506114098582860161165f565b600082601f83011261175557600080fd5b813560206117656113788361163b565b8083825260208201915060208460051b87010193508684111561178757600080fd5b602086015b848110156116df5761179d81611516565b835291830191830161178c565b600080604083850312156117bd57600080fd5b823567ffffffffffffffff808211156117d557600080fd5b6117e186838701611744565b935060208501359150808211156117f757600080fd5b5061140985828601611744565b600082601f83011261181557600080fd5b813560206118256113788361163b565b8083825260208201915060208460051b87010193508684111561184757600080fd5b602086015b848110156116df578035835291830191830161184c565b6000806040838503121561187657600080fd5b823567ffffffffffffffff8082111561188e57600080fd5b61189a86838701611804565b935060208501359150808211156118b057600080fd5b5061140985828601611804565b7f417373657274696f6e4572726f723a20000000000000000000000000000000008152600083516118f5816010850160208801611413565b7f206973206e6f7420657175616c20746f200000000000000000000000000000006010918401918201528351611932816021840160208801611413565b01602101949350505050565b60006020828403121561195057600080fd5b815167ffffffffffffffff81111561196757600080fd5b8201601f8101841361197857600080fd5b805161198661137882611331565b81815285602083850101111561199b57600080fd5b6114d1826020830160208601611413565b6000602082840312156119be57600080fd5b5051919050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015611a1c57603f19888603018452611a0a858351611437565b945092850192908501906001016119ee565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611a6a5783516001600160a01b031683529284019291840191600101611a45565b50909695505050505050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081527f20426f74682076616c7565732061726500000000000000000000000000000000601082015260008251611ad4816020850160208701611413565b9190910160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015611a6a57835183529284019291840191600101611afd565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d5557610d55611b19565b80820180821115610d5557610d55611b19565b634e487b7160e01b600052603260045260246000fd5b600081611b7e57611b7e611b19565b506000190190565b600060018201611b9857611b98611b19565b5060010190565b81810381811115610d5557610d55611b19565b60008351611bc4818460208801611413565b835190830190611bd8818360208801611413565b7f2c200000000000000000000000000000000000000000000000000000000000009101908152600201949350505050565b60008351611c1b818460208801611413565b835190830190611c2f818360208801611413565b7f5d000000000000000000000000000000000000000000000000000000000000009101908152600101949350505050565b600082611c7d57634e487b7160e01b600052601260045260246000fd5b50049056fe436f6e7374727563746f722073686f756c6420696e697469616c697a65206461746120636f72726563746c79417373657274696f6e4572726f723a20726573756c74206973206e6f742066616c7365417373657274696f6e4572726f723a20726573756c74206973206e6f742074727565a26469706673582212208515c6d2db8df30f24caa897432a20daf70a9d38e3f26c2763cf641b66f242f764736f6c63430008170033608060405234801561001057600080fd5b50611f59806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80634b64e4921161008157806374f130701161005b57806374f1307014610176578063d70968e714610189578063e7da4c7e1461019c57600080fd5b80634b64e4921461013057806360fb55d5146101505780636df864781461016357600080fd5b806331495d33116100b257806331495d331461010a578063410dbb8b1461011d57806346bdca9a146100ce57600080fd5b8063235266d2146100ce57806330191626146100f7575b600080fd5b6100e16100dc366004611613565b6101af565b6040516100ee919061173e565b60405180910390f35b6100e1610105366004611758565b61025e565b6100e1610118366004611796565b610318565b6100e161012b3660046117c9565b6103e9565b61014361013e3660046117eb565b6104e9565b6040516100ee9190611806565b6100e161015e366004611953565b610744565b6100e1610171366004611a13565b610820565b6100e16101843660046117c9565b6108fc565b6100e1610197366004611796565b6109fd565b6100e16101aa366004611acc565b610ac4565b6101e36040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815160208084019190912084519185019190912014808252610228578282604051602001610212929190611b26565b60408051601f1981840301815291905260208201525b604080820193909352606081019190915281518083019092526005825264195c5d585b60da1b6020830152608081019190915290565b6102926040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8282148082526102d5576102a583610ba0565b6102ae83610ba0565b6040516020016102bf929190611b26565b60408051601f1981840301815291905260208201525b6102de83610ba0565b60408201526102ec82610ba0565b6060820152604080518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61034c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038381169083168114825260009061036c906014610c40565b90506000610384846001600160a01b03166014610c40565b83519091506103b65781816040516020016103a0929190611b26565b60408051601f1981840301815291905260208401525b604080840192909252606083015280518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61041d6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b811580825261044557604051806060016040528060238152602001611edf6023913960208201525b600182151514610472576040518060400160405280600581526020016466616c736560d81b815250610490565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600782527f697346616c736500000000000000000000000000000000000000000000000000908201526080820152919050565b6104f1611528565b816104fa611528565b6105078160200151610e48565b50604051806060016040528060318152602001611eae603191398160000181905250816001600160a01b0316634c7648096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561056457600080fd5b505af1158015610578573d6000803e3d6000fd5b5050505060008061058884610ec4565b915091506105a3610598826108fc565b602085015190610f3b565b506105ad84610fab565b90925090508015610646576040805160a081018252600080825282518084018452601f81527f43616c6c20746f2072656d6f746556696577536861726573206661696c656400602082810191909152808401919091528351808201855282815283850152835180820185528281526060840152835180820190945290835260808201929092529084015161064091610f3b565b5061065b565b6106596105988361ffff166103e861025e565b505b600061066685611005565b92509050610681610676836108fc565b602086015190610f3b565b5061068b8561105f565b925090508115610723576040805160a081018252600080825282518084018452601f81527f43616c6c20746f2072656d6f74655669657753616c617279206661696c656400602082810191909152808401919091528351808201855282815283850152835180820185528281526060840152835180820190945290835260808201929092529085015161071d91610f3b565b50610739565b6107376106768262ffffff1661c35061025e565b505b509195945050505050565b6107786040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b816040516020016107899190611ba7565b60405160208183030381529060405280519060200120836040516020016107b09190611ba7565b60408051601f19818403018152919052805160209091012014808252610809576107d9836110b9565b6107e2836110b9565b6040516020016107f3929190611b26565b60408051601f1981840301815291905260208201525b610812836110b9565b60408201526102ec826110b9565b6108546040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b816040516020016108659190611c0b565b604051602081830303815290604052805190602001208360405160200161088c9190611c0b565b60408051601f198184030181529190528051602090910120148082526108e5576108b583611184565b6108be83611184565b6040516020016108cf929190611b26565b60408051601f1981840301815291905260208201525b6108ee83611184565b60408201526102ec82611184565b6109306040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81151580825261095957604051806060016040528060228152602001611f026022913960208201525b600182151514610986576040518060400160405280600581526020016466616c736560d81b8152506109a4565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600682527f6973547275650000000000000000000000000000000000000000000000000000908201526080820152919050565b610a316040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038381169083168114158252600090610a52906014610c40565b8251909150610a825780604051602001610a6c9190611c58565b60408051601f1981840301815291905260208301525b60408083019190915280516020808201835260008252606084019190915281518083019092526005825264195c5d585b60da1b90820152608082015292915050565b610af86040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610b099190611cc3565b6040516020818303038152906040528051906020012083604051602001610b309190611cc3565b60408051601f19818403018152919052805160209091012014808252610b8957610b5983611256565b610b6283611256565b604051602001610b73929190611b26565b60408051601f1981840301815291905260208201525b610b9283611256565b60408201526102ec82611256565b60606000610bad8361131d565b600101905060008167ffffffffffffffff811115610bcd57610bcd61155c565b6040519080825280601f01601f191660200182016040528015610bf7576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0157509392505050565b60606000610c4f836002611d11565b610c5a906002611d28565b67ffffffffffffffff811115610c7257610c7261155c565b6040519080825280601f01601f191660200182016040528015610c9c576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610cd357610cd3611d3b565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610d1e57610d1e611d3b565b60200101906001600160f81b031916908160001a9053506000610d42846002611d11565b610d4d906001611d28565b90505b6001811115610dd2577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610d8e57610d8e611d3b565b1a60f81b828281518110610da457610da4611d3b565b60200101906001600160f81b031916908160001a90535060049490941c93610dcb81611d51565b9050610d50565b508315610e3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b90505b92915050565b60408051808201825260608152600060208201528151600480825260a082019093529091816020015b610ea56040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081610e715750508252506000602082015290565b600080826001600160a01b03166303314efa6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f21575060408051601f3d908101601f19168201909252610f1e91810190611d68565b60015b610f315750600092600192509050565b9360009350915050565b604080518082019091526060815260006020820152825151602084015103610f6957610f66836113ff565b92505b818360000151846020015181518110610f8457610f84611d3b565b6020026020010181905250826020018051809190610fa190611d8c565b9052509192915050565b600080826001600160a01b0316636d45e2a56040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f21575060408051601f3d908101601f19168201909252610f1e91810190611d68565b600080826001600160a01b0316630397b6526040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f21575060408051601f3d908101601f19168201909252610f1e91810190611da5565b600080826001600160a01b031663495744026040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f21575060408051601f3d908101601f19168201909252610f1e91810190611da5565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561117d57600184516110ee9190611dca565b811015611137578184828151811061110857611108611d3b565b6020026020010151604051602001611121929190611ddd565b6040516020818303038152906040529150611175565b8184828151811061114a5761114a611d3b565b6020026020010151604051602001611163929190611e34565b60405160208183030381529060405291505b6001016110d7565b5092915050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561117d57600184516111b99190611dca565b81101561121557816111ee8583815181106111d6576111d6611d3b565b60200260200101516001600160a01b03166014610c40565b6040516020016111ff929190611ddd565b604051602081830303815290604052915061124e565b8161122b8583815181106111d6576111d6611d3b565b60405160200161123c929190611e34565b60405160208183030381529060405291505b6001016111a2565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561117d576001845161128b9190611dca565b8110156112dc57816112b58583815181106112a8576112a8611d3b565b6020026020010151610ba0565b6040516020016112c6929190611ddd565b6040516020818303038152906040529150611315565b816112f28583815181106112a8576112a8611d3b565b604051602001611303929190611e34565b60405160208183030381529060405291505b600101611274565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611366577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611392576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106113b057662386f26fc10000830492506010015b6305f5e10083106113c8576305f5e100830492506008015b61271083106113dc57612710830492506004015b606483106113ee576064830492506002015b600a8310610e425760010192915050565b60408051808201909152606081526000602082015260408051808201909152606081526000602082015282515160029061143a906003611d11565b6114449190611e8b565b67ffffffffffffffff81111561145c5761145c61155c565b6040519080825280602002602001820160405280156114c157816020015b6114ae6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81526020019060019003908161147a5790505b50815260005b8351518110156115165783518051829081106114e5576114e5611d3b565b60200260200101518260000151828151811061150357611503611d3b565b60209081029190910101526001016114c7565b50602092830151928101929092525090565b604051806040016040528060608152602001611557604051806040016040528060608152602001600081525090565b905290565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561159b5761159b61155c565b604052919050565b600082601f8301126115b457600080fd5b813567ffffffffffffffff8111156115ce576115ce61155c565b6115e1601f8201601f1916602001611572565b8181528460208386010111156115f657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561162657600080fd5b823567ffffffffffffffff8082111561163e57600080fd5b61164a868387016115a3565b9350602085013591508082111561166057600080fd5b5061166d858286016115a3565b9150509250929050565b60005b8381101561169257818101518382015260200161167a565b50506000910152565b600081518084526116b3816020860160208601611677565b601f01601f19169290920160200192915050565b8051151582526000602082015160a060208501526116e860a085018261169b565b905060408301518482036040860152611701828261169b565b9150506060830151848203606086015261171b828261169b565b91505060808301518482036080860152611735828261169b565b95945050505050565b60208152600061175160208301846116c7565b9392505050565b6000806040838503121561176b57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461179157600080fd5b919050565b600080604083850312156117a957600080fd5b6117b28361177a565b91506117c06020840161177a565b90509250929050565b6000602082840312156117db57600080fd5b81358015158114610e3f57600080fd5b6000602082840312156117fd57600080fd5b6117518261177a565b600060208083528351604082850152611822606085018261169b565b905081850151601f198583030160408601526040820181516040845281815180845260608601915060608160051b8701019350868301925060005b8181101561188b57605f198786030183526118798585516116c7565b9450928701929187019160010161185d565b505050509083015191909201529392505050565b600067ffffffffffffffff8211156118b9576118b961155c565b5060051b60200190565b600082601f8301126118d457600080fd5b813560206118e96118e48361189f565b611572565b82815260059290921b8401810191818101908684111561190857600080fd5b8286015b8481101561194857803567ffffffffffffffff81111561192c5760008081fd5b61193a8986838b01016115a3565b84525091830191830161190c565b509695505050505050565b6000806040838503121561196657600080fd5b823567ffffffffffffffff8082111561197e57600080fd5b61198a868387016118c3565b935060208501359150808211156119a057600080fd5b5061166d858286016118c3565b600082601f8301126119be57600080fd5b813560206119ce6118e48361189f565b8083825260208201915060208460051b8701019350868411156119f057600080fd5b602086015b8481101561194857611a068161177a565b83529183019183016119f5565b60008060408385031215611a2657600080fd5b823567ffffffffffffffff80821115611a3e57600080fd5b611a4a868387016119ad565b93506020850135915080821115611a6057600080fd5b5061166d858286016119ad565b600082601f830112611a7e57600080fd5b81356020611a8e6118e48361189f565b8083825260208201915060208460051b870101935086841115611ab057600080fd5b602086015b848110156119485780358352918301918301611ab5565b60008060408385031215611adf57600080fd5b823567ffffffffffffffff80821115611af757600080fd5b611b0386838701611a6d565b93506020850135915080821115611b1957600080fd5b5061166d85828601611a6d565b7f417373657274696f6e4572726f723a2000000000000000000000000000000000815260008351611b5e816010850160208801611677565b7f206973206e6f7420657175616c20746f200000000000000000000000000000006010918401918201528351611b9b816021840160208801611677565b01602101949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015611bfe57603f19888603018452611bec85835161169b565b94509285019290850190600101611bd0565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611c4c5783516001600160a01b031683529284019291840191600101611c27565b50909695505050505050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081527f20426f74682076616c7565732061726500000000000000000000000000000000601082015260008251611cb6816020850160208701611677565b9190910160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015611c4c57835183529284019291840191600101611cdf565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e4257610e42611cfb565b80820180821115610e4257610e42611cfb565b634e487b7160e01b600052603260045260246000fd5b600081611d6057611d60611cfb565b506000190190565b600060208284031215611d7a57600080fd5b815161ffff81168114610e3f57600080fd5b600060018201611d9e57611d9e611cfb565b5060010190565b600060208284031215611db757600080fd5b815162ffffff81168114610e3f57600080fd5b81810381811115610e4257610e42611cfb565b60008351611def818460208801611677565b835190830190611e03818360208801611677565b7f2c200000000000000000000000000000000000000000000000000000000000009101908152600201949350505050565b60008351611e46818460208801611677565b835190830190611e5a818360208801611677565b7f5d000000000000000000000000000000000000000000000000000000000000009101908152600101949350505050565b600082611ea857634e487b7160e01b600052601260045260246000fd5b50049056fe5072697661746520766172732073686f756c64207265766572742c2068617665207075626c6963206163636573736f7273417373657274696f6e4572726f723a20726573756c74206973206e6f742066616c7365417373657274696f6e4572726f723a20726573756c74206973206e6f742074727565a2646970667358221220586732f5457c9a24e13c87ca5b7ecd66d7e8621ee1e54110a468d41bb299d1fc64736f6c63430008170033608060405234801561001057600080fd5b50611cdf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80634b64e4921161008157806374f130701161005b57806374f1307014610176578063d70968e714610189578063e7da4c7e1461019c57600080fd5b80634b64e4921461013057806360fb55d5146101505780636df864781461016357600080fd5b806331495d33116100b257806331495d331461010a578063410dbb8b1461011d57806346bdca9a146100ce57600080fd5b8063235266d2146100ce57806330191626146100f7575b600080fd5b6100e16100dc3660046113d7565b6101af565b6040516100ee9190611502565b60405180910390f35b6100e161010536600461151c565b61025e565b6100e161011836600461155a565b610318565b6100e161012b36600461158d565b6103e9565b61014361013e3660046115af565b6104e9565b6040516100ee91906115ca565b6100e161015e366004611717565b6105ee565b6100e16101713660046117d7565b6106ca565b6100e161018436600461158d565b6107a6565b6100e161019736600461155a565b6108a7565b6100e16101aa366004611890565b61096e565b6101e36040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8151602080840191909120845191850191909120148082526102285782826040516020016102129291906118ea565b60408051601f1981840301815291905260208201525b604080820193909352606081019190915281518083019092526005825264195c5d585b60da1b6020830152608081019190915290565b6102926040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8282148082526102d5576102a583610a4a565b6102ae83610a4a565b6040516020016102bf9291906118ea565b60408051601f1981840301815291905260208201525b6102de83610a4a565b60408201526102ec82610a4a565b6060820152604080518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61034c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038381169083168114825260009061036c906014610aea565b90506000610384846001600160a01b03166014610aea565b83519091506103b65781816040516020016103a09291906118ea565b60408051601f1981840301815291905260208401525b604080840192909252606083015280518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61041d6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b811580825261044557604051806060016040528060238152602001611c426023913960208201525b600182151514610472576040518060400160405280600581526020016466616c736560d81b815250610490565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600782527f697346616c736500000000000000000000000000000000000000000000000000908201526080820152919050565b6104f16112ec565b816104fa6112ec565b6105078160200151610cf2565b50604051806060016040528060238152602001611c87602391398152600080610531846003610d6e565b9150915080156105c9576040805160a081018252600080825282518084018452601e81527f43616c6c20746f20636865636b466f725061636b696e67206661696c6564000060208281019190915280840191909152835180820185528281528385015283518082018552828152606084015283518082019094529083526080820192909252908401516105c391610e0d565b506105e4565b6105e26105d783600061025e565b602085015190610e0d565b505b5090949350505050565b6106226040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610633919061196b565b604051602081830303815290604052805190602001208360405160200161065a919061196b565b60408051601f198184030181529190528051602090910120148082526106b35761068383610e7d565b61068c83610e7d565b60405160200161069d9291906118ea565b60408051601f1981840301815291905260208201525b6106bc83610e7d565b60408201526102ec82610e7d565b6106fe6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8160405160200161070f91906119cf565b604051602081830303815290604052805190602001208360405160200161073691906119cf565b60408051601f1981840301815291905280516020909101201480825261078f5761075f83610f48565b61076883610f48565b6040516020016107799291906118ea565b60408051601f1981840301815291905260208201525b61079883610f48565b60408201526102ec82610f48565b6107da6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81151580825261080357604051806060016040528060228152602001611c656022913960208201525b600182151514610830576040518060400160405280600581526020016466616c736560d81b81525061084e565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600682527f6973547275650000000000000000000000000000000000000000000000000000908201526080820152919050565b6108db6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b0383811690831681141582526000906108fc906014610aea565b825190915061092c57806040516020016109169190611a1c565b60408051601f1981840301815291905260208301525b60408083019190915280516020808201835260008252606084019190915281518083019092526005825264195c5d585b60da1b90820152608082015292915050565b6109a26040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b816040516020016109b39190611a87565b60405160208183030381529060405280519060200120836040516020016109da9190611a87565b60408051601f19818403018152919052805160209091012014808252610a3357610a038361101a565b610a0c8361101a565b604051602001610a1d9291906118ea565b60408051601f1981840301815291905260208201525b610a3c8361101a565b60408201526102ec8261101a565b60606000610a57836110e1565b600101905060008167ffffffffffffffff811115610a7757610a77611320565b6040519080825280601f01601f191660200182016040528015610aa1576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610aab57509392505050565b60606000610af9836002611ad5565b610b04906002611aec565b67ffffffffffffffff811115610b1c57610b1c611320565b6040519080825280601f01601f191660200182016040528015610b46576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610b7d57610b7d611aff565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610bc857610bc8611aff565b60200101906001600160f81b031916908160001a9053506000610bec846002611ad5565b610bf7906001611aec565b90505b6001811115610c7c577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610c3857610c38611aff565b1a60f81b828281518110610c4e57610c4e611aff565b60200101906001600160f81b031916908160001a90535060049490941c93610c7581611b15565b9050610bfa565b508315610ce9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b90505b92915050565b60408051808201825260608152600060208201528151600480825260a082019093529091816020015b610d4f6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081610d1b5750508252506000602082015290565b6040517f8f6a861a0000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b03851690638f6a861a906024016020604051808303816000875af1925050508015610def575060408051601f3d908101601f19168201909252610dec91810190611b2c565b60015b610dff5750600090506001610e06565b9150600090505b9250929050565b604080518082019091526060815260006020820152825151602084015103610e3b57610e38836111c3565b92505b818360000151846020015181518110610e5657610e56611aff565b6020026020010181905250826020018051809190610e7390611b45565b9052509192915050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015610f415760018451610eb29190611b5e565b811015610efb5781848281518110610ecc57610ecc611aff565b6020026020010151604051602001610ee5929190611b71565b6040516020818303038152906040529150610f39565b81848281518110610f0e57610f0e611aff565b6020026020010151604051602001610f27929190611bc8565b60405160208183030381529060405291505b600101610e9b565b5092915050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015610f415760018451610f7d9190611b5e565b811015610fd95781610fb2858381518110610f9a57610f9a611aff565b60200260200101516001600160a01b03166014610aea565b604051602001610fc3929190611b71565b6040516020818303038152906040529150611012565b81610fef858381518110610f9a57610f9a611aff565b604051602001611000929190611bc8565b60405160208183030381529060405291505b600101610f66565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015610f41576001845161104f9190611b5e565b8110156110a0578161107985838151811061106c5761106c611aff565b6020026020010151610a4a565b60405160200161108a929190611b71565b60405160208183030381529060405291506110d9565b816110b685838151811061106c5761106c611aff565b6040516020016110c7929190611bc8565b60405160208183030381529060405291505b600101611038565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061112a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611156576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061117457662386f26fc10000830492506010015b6305f5e100831061118c576305f5e100830492506008015b61271083106111a057612710830492506004015b606483106111b2576064830492506002015b600a8310610cec5760010192915050565b6040805180820190915260608152600060208201526040805180820190915260608152600060208201528251516002906111fe906003611ad5565b6112089190611c1f565b67ffffffffffffffff81111561122057611220611320565b60405190808252806020026020018201604052801561128557816020015b6112726040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81526020019060019003908161123e5790505b50815260005b8351518110156112da5783518051829081106112a9576112a9611aff565b6020026020010151826000015182815181106112c7576112c7611aff565b602090810291909101015260010161128b565b50602092830151928101929092525090565b60405180604001604052806060815260200161131b604051806040016040528060608152602001600081525090565b905290565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561135f5761135f611320565b604052919050565b600082601f83011261137857600080fd5b813567ffffffffffffffff81111561139257611392611320565b6113a5601f8201601f1916602001611336565b8181528460208386010111156113ba57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156113ea57600080fd5b823567ffffffffffffffff8082111561140257600080fd5b61140e86838701611367565b9350602085013591508082111561142457600080fd5b5061143185828601611367565b9150509250929050565b60005b8381101561145657818101518382015260200161143e565b50506000910152565b6000815180845261147781602086016020860161143b565b601f01601f19169290920160200192915050565b8051151582526000602082015160a060208501526114ac60a085018261145f565b9050604083015184820360408601526114c5828261145f565b915050606083015184820360608601526114df828261145f565b915050608083015184820360808601526114f9828261145f565b95945050505050565b602081526000611515602083018461148b565b9392505050565b6000806040838503121561152f57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461155557600080fd5b919050565b6000806040838503121561156d57600080fd5b6115768361153e565b91506115846020840161153e565b90509250929050565b60006020828403121561159f57600080fd5b81358015158114610ce957600080fd5b6000602082840312156115c157600080fd5b6115158261153e565b6000602080835283516040828501526115e6606085018261145f565b905081850151601f198583030160408601526040820181516040845281815180845260608601915060608160051b8701019350868301925060005b8181101561164f57605f1987860301835261163d85855161148b565b94509287019291870191600101611621565b505050509083015191909201529392505050565b600067ffffffffffffffff82111561167d5761167d611320565b5060051b60200190565b600082601f83011261169857600080fd5b813560206116ad6116a883611663565b611336565b82815260059290921b840181019181810190868411156116cc57600080fd5b8286015b8481101561170c57803567ffffffffffffffff8111156116f05760008081fd5b6116fe8986838b0101611367565b8452509183019183016116d0565b509695505050505050565b6000806040838503121561172a57600080fd5b823567ffffffffffffffff8082111561174257600080fd5b61174e86838701611687565b9350602085013591508082111561176457600080fd5b5061143185828601611687565b600082601f83011261178257600080fd5b813560206117926116a883611663565b8083825260208201915060208460051b8701019350868411156117b457600080fd5b602086015b8481101561170c576117ca8161153e565b83529183019183016117b9565b600080604083850312156117ea57600080fd5b823567ffffffffffffffff8082111561180257600080fd5b61180e86838701611771565b9350602085013591508082111561182457600080fd5b5061143185828601611771565b600082601f83011261184257600080fd5b813560206118526116a883611663565b8083825260208201915060208460051b87010193508684111561187457600080fd5b602086015b8481101561170c5780358352918301918301611879565b600080604083850312156118a357600080fd5b823567ffffffffffffffff808211156118bb57600080fd5b6118c786838701611831565b935060208501359150808211156118dd57600080fd5b5061143185828601611831565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081526000835161192281601085016020880161143b565b7f206973206e6f7420657175616c20746f20000000000000000000000000000000601091840191820152835161195f81602184016020880161143b565b01602101949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156119c257603f198886030184526119b085835161145f565b94509285019290850190600101611994565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611a105783516001600160a01b0316835292840192918401916001016119eb565b50909695505050505050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081527f20426f74682076616c7565732061726500000000000000000000000000000000601082015260008251611a7a81602085016020870161143b565b9190910160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015611a1057835183529284019291840191600101611aa3565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610cec57610cec611abf565b80820180821115610cec57610cec611abf565b634e487b7160e01b600052603260045260246000fd5b600081611b2457611b24611abf565b506000190190565b600060208284031215611b3e57600080fd5b5051919050565b600060018201611b5757611b57611abf565b5060010190565b81810381811115610cec57610cec611abf565b60008351611b8381846020880161143b565b835190830190611b9781836020880161143b565b7f2c200000000000000000000000000000000000000000000000000000000000009101908152600201949350505050565b60008351611bda81846020880161143b565b835190830190611bee81836020880161143b565b7f5d000000000000000000000000000000000000000000000000000000000000009101908152600101949350505050565b600082611c3c57634e487b7160e01b600052601260045260246000fd5b50049056fe417373657274696f6e4572726f723a20726573756c74206973206e6f742066616c7365417373657274696f6e4572726f723a20726573756c74206973206e6f7420747275655661726961626c65732073686f756c64207061636b20617070726f7072696174656c79a26469706673582212201c57f1e7f8dbd75e4535a066e21ceff29733a8ad92d4027c7d74a6e745a5201864736f6c63430008170033608060405234801561001057600080fd5b50611f4e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80634b64e4921161008157806374f130701161005b57806374f1307014610176578063d70968e714610189578063e7da4c7e1461019c57600080fd5b80634b64e4921461013057806360fb55d5146101505780636df864781461016357600080fd5b806331495d33116100b257806331495d331461010a578063410dbb8b1461011d57806346bdca9a146100ce57600080fd5b8063235266d2146100ce57806330191626146100f7575b600080fd5b6100e16100dc36600461159a565b6101af565b6040516100ee91906116c5565b60405180910390f35b6100e16101053660046116df565b61025e565b6100e161011836600461171d565b610318565b6100e161012b366004611750565b6103e9565b61014361013e366004611772565b6104e9565b6040516100ee919061178d565b6100e161015e3660046118e0565b6106fa565b6100e16101713660046119ac565b6107d6565b6100e1610184366004611750565b6108b2565b6100e161019736600461171d565b6109b3565b6100e16101aa366004611a71565b610a7a565b6101e36040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815160208084019190912084519185019190912014808252610228578282604051602001610212929190611acb565b60408051601f1981840301815291905260208201525b604080820193909352606081019190915281518083019092526005825264195c5d585b60da1b6020830152608081019190915290565b6102926040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8282148082526102d5576102a583610b56565b6102ae83610b56565b6040516020016102bf929190611acb565b60408051601f1981840301815291905260208201525b6102de83610b56565b60408201526102ec82610b56565b6060820152604080518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61034c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038381169083168114825260009061036c906014610bf6565b90506000610384846001600160a01b03166014610bf6565b83519091506103b65781816040516020016103a0929190611acb565b60408051601f1981840301815291905260208401525b604080840192909252606083015280518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b61041d6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b811580825261044557604051806060016040528060238152602001611ed46023913960208201525b600182151514610472576040518060400160405280600581526020016466616c736560d81b815250610490565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600782527f697346616c736500000000000000000000000000000000000000000000000000908201526080820152919050565b6104f16114af565b816104fa6114af565b6105078160200151610dfe565b50604080518082018252601f81527f43616e206772616e74207368617265732c20726576657274203e2035303030006020820152825280517f4c76480900000000000000000000000000000000000000000000000000000000815290516001600160a01b03841691634c76480991600480830192600092919082900301818387803b15801561059557600080fd5b505af11580156105a9573d6000803e3d6000fd5b505050506000806105bc84611389610e7a565b915091506105d76105cc826108b2565b602085015190610f59565b5061061a6105cc836040518060400160405280600f81526020017f546f6f206d616e792073686172657300000000000000000000000000000000008152506101af565b50610627846103e8610e7a565b909250905080156106c0576040805160a081018252600080825282518084018452601a81527f43616c6c20746f206772616e74536861726573206661696c656400000000000060208281019190915280840191909152835180820185528281528385015283518082018552828152606084015283518082019094529083526080820192909252908401516106ba91610f59565b506106f0565b60006106cb85610fc9565b925090506106ed6106e261ffff83166107d061025e565b602086015190610f59565b50505b5090949350505050565b61072e6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8160405160200161073f9190611b4c565b60405160208183030381529060405280519060200120836040516020016107669190611b4c565b60408051601f198184030181529190528051602090910120148082526107bf5761078f83611040565b61079883611040565b6040516020016107a9929190611acb565b60408051601f1981840301815291905260208201525b6107c883611040565b60408201526102ec82611040565b61080a6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8160405160200161081b9190611bb0565b60405160208183030381529060405280519060200120836040516020016108429190611bb0565b60408051601f1981840301815291905280516020909101201480825261089b5761086b8361110b565b6108748361110b565b604051602001610885929190611acb565b60408051601f1981840301815291905260208201525b6108a48361110b565b60408201526102ec8261110b565b6108e66040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81151580825261090f57604051806060016040528060228152602001611ef76022913960208201525b60018215151461093c576040518060400160405280600581526020016466616c736560d81b81525061095a565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600682527f6973547275650000000000000000000000000000000000000000000000000000908201526080820152919050565b6109e76040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038381169083168114158252600090610a08906014610bf6565b8251909150610a385780604051602001610a229190611bfd565b60408051601f1981840301815291905260208301525b60408083019190915280516020808201835260008252606084019190915281518083019092526005825264195c5d585b60da1b90820152608082015292915050565b610aae6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610abf9190611c68565b6040516020818303038152906040528051906020012083604051602001610ae69190611c68565b60408051601f19818403018152919052805160209091012014808252610b3f57610b0f836111dd565b610b18836111dd565b604051602001610b29929190611acb565b60408051601f1981840301815291905260208201525b610b48836111dd565b60408201526102ec826111dd565b60606000610b63836112a4565b600101905060008167ffffffffffffffff811115610b8357610b836114e3565b6040519080825280601f01601f191660200182016040528015610bad576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610bb757509392505050565b60606000610c05836002611cb6565b610c10906002611ccd565b67ffffffffffffffff811115610c2857610c286114e3565b6040519080825280601f01601f191660200182016040528015610c52576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610c8957610c89611ce0565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610cd457610cd4611ce0565b60200101906001600160f81b031916908160001a9053506000610cf8846002611cb6565b610d03906001611ccd565b90505b6001811115610d88577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610d4457610d44611ce0565b1a60f81b828281518110610d5a57610d5a611ce0565b60200101906001600160f81b031916908160001a90535060049490941c93610d8181611cf6565b9050610d06565b508315610df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b90505b92915050565b60408051808201825260608152600060208201528151600480825260a082019093529091816020015b610e5b6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081610e275750508252506000602082015290565b6040517f52c9868900000000000000000000000000000000000000000000000000000000815261ffff821660048201526060906000906001600160a01b038516906352c9868990602401600060405180830381600087803b158015610ede57600080fd5b505af1925050508015610eef575060015b610f3f57610efb611d0d565b806308c379a003610f255750610f0f611d29565b80610f1a5750610f27565b915060019050610f52565b505b50506040805160208101909152600081526001610f52565b5050604080516020810190915260008082525b9250929050565b604080518082019091526060815260006020820152825151602084015103610f8757610f8483611386565b92505b818360000151846020015181518110610fa257610fa2611ce0565b6020026020010181905250826020018051809190610fbf90611db3565b9052509192915050565b600080826001600160a01b0316636d45e2a56040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611026575060408051601f3d908101601f1916820190925261102391810190611dcc565b60015b6110365750600092600192509050565b9360009350915050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561110457600184516110759190611df0565b8110156110be578184828151811061108f5761108f611ce0565b60200260200101516040516020016110a8929190611e03565b60405160208183030381529060405291506110fc565b818482815181106110d1576110d1611ce0565b60200260200101516040516020016110ea929190611e5a565b60405160208183030381529060405291505b60010161105e565b5092915050565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561110457600184516111409190611df0565b81101561119c578161117585838151811061115d5761115d611ce0565b60200260200101516001600160a01b03166014610bf6565b604051602001611186929190611e03565b60405160208183030381529060405291506111d5565b816111b285838151811061115d5761115d611ce0565b6040516020016111c3929190611e5a565b60405160208183030381529060405291505b600101611129565b6040805180820190915260018152605b60f81b602082015260609060005b835181101561110457600184516112129190611df0565b811015611263578161123c85838151811061122f5761122f611ce0565b6020026020010151610b56565b60405160200161124d929190611e03565b604051602081830303815290604052915061129c565b8161127985838151811061122f5761122f611ce0565b60405160200161128a929190611e5a565b60405160208183030381529060405291505b6001016111fb565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106112ed577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611319576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061133757662386f26fc10000830492506010015b6305f5e100831061134f576305f5e100830492506008015b612710831061136357612710830492506004015b60648310611375576064830492506002015b600a8310610df85760010192915050565b6040805180820190915260608152600060208201526040805180820190915260608152600060208201528251516002906113c1906003611cb6565b6113cb9190611eb1565b67ffffffffffffffff8111156113e3576113e36114e3565b60405190808252806020026020018201604052801561144857816020015b6114356040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8152602001906001900390816114015790505b50815260005b83515181101561149d57835180518290811061146c5761146c611ce0565b60200260200101518260000151828151811061148a5761148a611ce0565b602090810291909101015260010161144e565b50602092830151928101929092525090565b6040518060400160405280606081526020016114de604051806040016040528060608152602001600081525090565b905290565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561151f5761151f6114e3565b6040525050565b600082601f83011261153757600080fd5b813567ffffffffffffffff811115611551576115516114e3565b604051611568601f8301601f1916602001826114f9565b81815284602083860101111561157d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156115ad57600080fd5b823567ffffffffffffffff808211156115c557600080fd5b6115d186838701611526565b935060208501359150808211156115e757600080fd5b506115f485828601611526565b9150509250929050565b60005b83811015611619578181015183820152602001611601565b50506000910152565b6000815180845261163a8160208601602086016115fe565b601f01601f19169290920160200192915050565b8051151582526000602082015160a0602085015261166f60a0850182611622565b9050604083015184820360408601526116888282611622565b915050606083015184820360608601526116a28282611622565b915050608083015184820360808601526116bc8282611622565b95945050505050565b6020815260006116d8602083018461164e565b9392505050565b600080604083850312156116f257600080fd5b50508035926020909101359150565b80356001600160a01b038116811461171857600080fd5b919050565b6000806040838503121561173057600080fd5b61173983611701565b915061174760208401611701565b90509250929050565b60006020828403121561176257600080fd5b81358015158114610df557600080fd5b60006020828403121561178457600080fd5b6116d882611701565b6000602080835283516040828501526117a96060850182611622565b905081850151601f198583030160408601526040820181516040845281815180845260608601915060608160051b8701019350868301925060005b8181101561181257605f1987860301835261180085855161164e565b945092870192918701916001016117e4565b505050509083015191909201529392505050565b600067ffffffffffffffff821115611840576118406114e3565b5060051b60200190565b600082601f83011261185b57600080fd5b8135602061186882611826565b60405161187582826114f9565b83815260059390931b850182019282810191508684111561189557600080fd5b8286015b848110156118d557803567ffffffffffffffff8111156118b95760008081fd5b6118c78986838b0101611526565b845250918301918301611899565b509695505050505050565b600080604083850312156118f357600080fd5b823567ffffffffffffffff8082111561190b57600080fd5b6119178683870161184a565b9350602085013591508082111561192d57600080fd5b506115f48582860161184a565b600082601f83011261194b57600080fd5b8135602061195882611826565b60405161196582826114f9565b80915083815260208101915060208460051b87010193508684111561198957600080fd5b602086015b848110156118d55761199f81611701565b835291830191830161198e565b600080604083850312156119bf57600080fd5b823567ffffffffffffffff808211156119d757600080fd5b6119e38683870161193a565b935060208501359150808211156119f957600080fd5b506115f48582860161193a565b600082601f830112611a1757600080fd5b81356020611a2482611826565b604051611a3182826114f9565b80915083815260208101915060208460051b870101935086841115611a5557600080fd5b602086015b848110156118d55780358352918301918301611a5a565b60008060408385031215611a8457600080fd5b823567ffffffffffffffff80821115611a9c57600080fd5b611aa886838701611a06565b93506020850135915080821115611abe57600080fd5b506115f485828601611a06565b7f417373657274696f6e4572726f723a2000000000000000000000000000000000815260008351611b038160108501602088016115fe565b7f206973206e6f7420657175616c20746f200000000000000000000000000000006010918401918201528351611b408160218401602088016115fe565b01602101949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015611ba357603f19888603018452611b91858351611622565b94509285019290850190600101611b75565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611bf15783516001600160a01b031683529284019291840191600101611bcc565b50909695505050505050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081527f20426f74682076616c7565732061726500000000000000000000000000000000601082015260008251611c5b8160208501602087016115fe565b9190910160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015611bf157835183529284019291840191600101611c84565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610df857610df8611ca0565b80820180821115610df857610df8611ca0565b634e487b7160e01b600052603260045260246000fd5b600081611d0557611d05611ca0565b506000190190565b600060033d1115611d265760046000803e5060005160e01c5b90565b600060443d1015611d375790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611d6757505050505090565b8285019150815181811115611d7f5750505050505090565b843d8701016020828501011115611d995750505050505090565b611da8602082860101876114f9565b509095945050505050565b600060018201611dc557611dc5611ca0565b5060010190565b600060208284031215611dde57600080fd5b815161ffff81168114610df557600080fd5b81810381811115610df857610df8611ca0565b60008351611e158184602088016115fe565b835190830190611e298183602088016115fe565b7f2c200000000000000000000000000000000000000000000000000000000000009101908152600201949350505050565b60008351611e6c8184602088016115fe565b835190830190611e808183602088016115fe565b7f5d000000000000000000000000000000000000000000000000000000000000009101908152600101949350505050565b600082611ece57634e487b7160e01b600052601260045260246000fd5b50049056fe417373657274696f6e4572726f723a20726573756c74206973206e6f742066616c7365417373657274696f6e4572726f723a20726573756c74206973206e6f742074727565a2646970667358221220e39a711be5704e133114169551bba88576496bece27326698d946b5d2a6a2f8464736f6c63430008170033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b88d4fde116100a2578063e7da4c7e11610071578063e7da4c7e14610431578063e985e9c514610444578063f2fde38b14610480578063fa084b9b1461049357600080fd5b8063b88d4fde146103e5578063c87b56dd146103f8578063d70968e71461040b578063e0df5b6f1461041e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103a657806395d89b41146103b7578063a22cb465146103bf578063acec338a146103d257600080fd5b806370a0823114610360578063714cff5614610381578063715018a61461038b57806374f130701461039357600080fd5b8063301916261161018757806346bdca9a1161015657806346bdca9a146102a857806360fb55d5146103275780636352211e1461033a5780636df864781461034d57600080fd5b806330191626146102db57806331495d33146102ee578063410dbb8b1461030157806342842e0e1461031457600080fd5b8063081812fc116101c3578063081812fc1461026a578063095ea7b314610295578063235266d2146102a857806323b872dd146102c857600080fd5b806301ffc9a7146101f5578063022914a71461021d57806306d82f291461024057806306fdde0314610255575b600080fd5b610208610203366004612688565b6104a6565b60405190151581526020015b60405180910390f35b61020861022b3660046126ba565b60096020526000908152604090205460ff1681565b61025361024e3660046126ba565b610543565b005b61025d6107fe565b6040516102149190612727565b61027d61027836600461273a565b610890565b6040516001600160a01b039091168152602001610214565b6102536102a3366004612753565b6108b7565b6102bb6102b6366004612890565b610a0b565b604051610214919061296b565b6102536102d636600461297e565b610aba565b6102bb6102e93660046129bf565b610b31565b6102bb6102fc3660046129e1565b610beb565b6102bb61030f366004612a38565b610cbc565b61025361032236600461297e565b610dbc565b6102bb610335366004612b04565b610dd7565b61027d61034836600461273a565b610eb3565b6102bb61035b366004612bc6565b610f18565b61037361036e3660046126ba565b610ff4565b604051908152602001610214565b6008546103739081565b61025361108e565b6102bb6103a1366004612a38565b6110a2565b6006546001600160a01b031661027d565b61025d6111a3565b6102536103cd366004612c20565b6111b2565b6102536103e0366004612a38565b6111c1565b6102536103f3366004612c4e565b6111dc565b61025d61040636600461273a565b611254565b6102bb6104193660046129e1565b6112e8565b61025361042c366004612cba565b6113af565b6102bb61043f366004612d4e565b6113c3565b6102086104523660046129e1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61025361048e3660046126ba565b61149f565b6102086104a1366004612da8565b61152f565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061050957506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061053d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b600b5460ff1661057f576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e5460609060009083906001600160a01b0316156106bb57600d546105a69060016130e5565b67ffffffffffffffff8111156105be576105be61277f565b6040519080825280602002602001820160405280156105f757816020015b6105e461263e565b8152602001906001900390816105dc5790505b50925081610604816130f8565b600e546040517f4c96a3890000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015292955091169150634c96a389906024016000604051808303816000875af115801561066c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106949190810190613328565b846000815181106106a7576106a761336f565b602002602001018193508290525050610713565b600d5467ffffffffffffffff8111156106d6576106d661277f565b60405190808252806020026020018201604052801561070f57816020015b6106fc61263e565b8152602001906001900390816106f45790505b5092505b600d548210156107ee57600d82815481106107305761073061336f565b6000918252602090912001546040517f4b64e4920000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634b64e492906024016000604051808303816000875af115801561079e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c69190810190613385565b8383815181106107d8576107d861336f565b6020908102919091010152600190910190610713565b6107f884846115cf565b50505050565b60606000805461080d906133ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610839906133ba565b80156108865780601f1061085b57610100808354040283529160200191610886565b820191906000526020600020905b81548152906001019060200180831161086957829003601f168201915b5050505050905090565b600061089b826116d6565b506000908152600460205260409020546001600160a01b031690565b60006108c282610eb3565b9050806001600160a01b0316836001600160a01b0316036109505760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b038216148061098a57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6109fc5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610947565b610a06838361173a565b505050565b610a3f6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b815160208084019190912084519185019190912014808252610a84578282604051602001610a6e9291906133f4565b60408051601f1981840301815291905260208201525b604080820193909352606081019190915281518083019092526005825264195c5d585b60da1b6020830152608081019190915290565b610ac433826117b5565b610b265760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610947565b610a06838383611834565b610b656040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b828214808252610ba857610b7883611a47565b610b8183611a47565b604051602001610b929291906133f4565b60408051601f1981840301815291905260208201525b610bb183611a47565b6040820152610bbf82611a47565b6060820152604080518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b610c1f6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b0383811690831681148252600090610c3f906014611ae7565b90506000610c57846001600160a01b03166014611ae7565b8351909150610c89578181604051602001610c739291906133f4565b60408051601f1981840301815291905260208401525b604080840192909252606083015280518082019091526005815264195c5d585b60da1b6020820152608082015292915050565b610cf06040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8115808252610d18576040518060600160405280602381526020016139176023913960208201525b600182151514610d45576040518060400160405280600581526020016466616c736560d81b815250610d63565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600782527f697346616c736500000000000000000000000000000000000000000000000000908201526080820152919050565b610a06838383604051806020016040528060008152506111dc565b610e0b6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610e1c9190613475565b6040516020818303038152906040528051906020012083604051602001610e439190613475565b60408051601f19818403018152919052805160209091012014808252610e9c57610e6c83611ccf565b610e7583611ccf565b604051602001610e869291906133f4565b60408051601f1981840301815291905260208201525b610ea583611ccf565b6040820152610bbf82611ccf565b6000818152600260205260408120546001600160a01b03168061053d5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610947565b610f4c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b81604051602001610f5d91906134d9565b6040516020818303038152906040528051906020012083604051602001610f8491906134d9565b60408051601f19818403018152919052805160209091012014808252610fdd57610fad83611d9a565b610fb683611d9a565b604051602001610fc79291906133f4565b60408051601f1981840301815291905260208201525b610fe683611d9a565b6040820152610bbf82611d9a565b60006001600160a01b0382166110725760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610947565b506001600160a01b031660009081526003602052604090205490565b611096611e6c565b6110a06000611ec6565b565b6110d66040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8115158082526110ff5760405180606001604052806022815260200161393a6022913960208201525b60018215151461112c576040518060400160405280600581526020016466616c736560d81b81525061114a565b604051806040016040528060048152602001637472756560e01b8152505b6040808301919091528051602080820183526000825260608401919091528151808301909252600682527f6973547275650000000000000000000000000000000000000000000000000000908201526080820152919050565b60606001805461080d906133ba565b6111bd338383611f25565b5050565b6111c9611e6c565b600b805460ff1916911515919091179055565b6111e633836117b5565b6112485760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610947565b6107f884848484611ff3565b6060600c8054611263906133ba565b80601f016020809104026020016040519081016040528092919081815260200182805461128f906133ba565b80156112dc5780601f106112b1576101008083540402835291602001916112dc565b820191906000526020600020905b8154815290600101906020018083116112bf57829003601f168201915b50505050509050919050565b61131c6040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b03838116908316811415825260009061133d906014611ae7565b825190915061136d57806040516020016113579190613526565b60408051601f1981840301815291905260208301525b60408083019190915280516020808201835260008252606084019190915281518083019092526005825264195c5d585b60da1b90820152608082015292915050565b6113b7611e6c565b600c6111bd82826135e1565b6113f76040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b8160405160200161140891906136a1565b604051602081830303815290604052805190602001208360405160200161142f91906136a1565b60408051601f198184030181529190528051602090910120148082526114885761145883612071565b61146183612071565b6040516020016114729291906133f4565b60408051601f1981840301815291905260208201525b61149183612071565b6040820152610bbf82612071565b6114a7611e6c565b6001600160a01b0381166115235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610947565b61152c81611ec6565b50565b6000805b82518110156115c65760005b8382815181106115515761155161336f565b602002602001015160200151602001518110156115bd5783828151811061157a5761157a61336f565b60200260200101516020015160000151818151811061159b5761159b61336f565b6020026020010151600001516115b5575060009392505050565b60010161153f565b50600101611533565b50600192915050565b6115d7612138565b60006115e28261152f565b90507f53d51c5f8eaf1bdbf1288871cbf97a9295da23a9868b15b526b4256ede348db9838284604051611617939291906136d9565b60405180910390a16001600160a01b0383166000908152600a602052604090205460ff1615801561165857503360009081526009602052604090205460ff16155b80156116615750805b156116a857611674600880546001019055565b600061167f60085490565b336000818152600960205260409020805460ff191660011790559091506116a69082612191565b505b506001600160a01b0382166000908152600a60205260409020805460ff191660011790556111bd6001600755565b6000818152600260205260409020546001600160a01b031661152c5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610947565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155819061177c82610eb3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806117c183610eb3565b9050806001600160a01b0316846001600160a01b0316148061180857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061182c5750836001600160a01b031661182184610890565b6001600160a01b0316145b949350505050565b826001600160a01b031661184782610eb3565b6001600160a01b0316146118ab5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610947565b6001600160a01b0382166119265760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610947565b61193383838360016121ab565b826001600160a01b031661194682610eb3565b6001600160a01b0316146119aa5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610947565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60606000611a54836121ec565b600101905060008167ffffffffffffffff811115611a7457611a7461277f565b6040519080825280601f01601f191660200182016040528015611a9e576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611aa857509392505050565b60606000611af68360026137ce565b611b019060026130e5565b67ffffffffffffffff811115611b1957611b1961277f565b6040519080825280601f01601f191660200182016040528015611b43576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611b7a57611b7a61336f565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611bc557611bc561336f565b60200101906001600160f81b031916908160001a9053506000611be98460026137ce565b611bf49060016130e5565b90505b6001811115611c79577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611c3557611c3561336f565b1a60f81b828281518110611c4b57611c4b61336f565b60200101906001600160f81b031916908160001a90535060049490941c93611c72816137e5565b9050611bf7565b508315611cc85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610947565b9392505050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015611d935760018451611d0491906137fc565b811015611d4d5781848281518110611d1e57611d1e61336f565b6020026020010151604051602001611d3792919061380f565b6040516020818303038152906040529150611d8b565b81848281518110611d6057611d6061336f565b6020026020010151604051602001611d79929190613866565b60405160208183030381529060405291505b600101611ced565b5092915050565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015611d935760018451611dcf91906137fc565b811015611e2b5781611e04858381518110611dec57611dec61336f565b60200260200101516001600160a01b03166014611ae7565b604051602001611e1592919061380f565b6040516020818303038152906040529150611e64565b81611e41858381518110611dec57611dec61336f565b604051602001611e52929190613866565b60405160208183030381529060405291505b600101611db8565b6006546001600160a01b031633146110a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610947565b600680546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f865760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610947565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611ffe848484611834565b61200a848484846122ce565b6107f85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610947565b6040805180820190915260018152605b60f81b602082015260609060005b8351811015611d9357600184516120a691906137fc565b8110156120f757816120d08583815181106120c3576120c361336f565b6020026020010151611a47565b6040516020016120e192919061380f565b6040516020818303038152906040529150612130565b8161210d8583815181106120c3576120c361336f565b60405160200161211e929190613866565b60405160208183030381529060405291505b60010161208f565b60026007540361218a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610947565b6002600755565b6111bd82826040518060200160405280600081525061241a565b6001600160a01b038416156107f8576040517f6e10574900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612235577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612261576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061227f57662386f26fc10000830492506010015b6305f5e1008310612297576305f5e100830492506008015b61271083106122ab57612710830492506004015b606483106122bd576064830492506002015b600a831061053d5760010192915050565b60006001600160a01b0384163b1561240f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906123129033908990889088906004016138bd565b6020604051808303816000875af192505050801561234d575060408051601f3d908101601f1916820190925261234a918101906138f9565b60015b6123f5573d80801561237b576040519150601f19603f3d011682016040523d82523d6000602084013e612380565b606091505b5080516000036123ed5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610947565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061182c565b506001949350505050565b6124248383612498565b61243160008484846122ce565b610a065760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610947565b6001600160a01b0382166124ee5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610947565b6000818152600260205260409020546001600160a01b0316156125535760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610947565b6125616000838360016121ab565b6000818152600260205260409020546001600160a01b0316156125c65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610947565b6001600160a01b0382166000818152600360209081526040808320805460010190558483526002909152808220805473ffffffffffffffffffffffffffffffffffffffff19168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60405180604001604052806060815260200161266d604051806040016040528060608152602001600081525090565b905290565b6001600160e01b03198116811461152c57600080fd5b60006020828403121561269a57600080fd5b8135611cc881612672565b6001600160a01b038116811461152c57600080fd5b6000602082840312156126cc57600080fd5b8135611cc8816126a5565b60005b838110156126f25781810151838201526020016126da565b50506000910152565b600081518084526127138160208601602086016126d7565b601f01601f19169290920160200192915050565b602081526000611cc860208301846126fb565b60006020828403121561274c57600080fd5b5035919050565b6000806040838503121561276657600080fd5b8235612771816126a5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156127b8576127b861277f565b60405290565b60405160a0810167ffffffffffffffff811182821017156127b8576127b861277f565b604051601f8201601f1916810167ffffffffffffffff8111828210171561280a5761280a61277f565b604052919050565b600067ffffffffffffffff82111561282c5761282c61277f565b50601f01601f191660200190565b600082601f83011261284b57600080fd5b813561285e61285982612812565b6127e1565b81815284602083860101111561287357600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156128a357600080fd5b823567ffffffffffffffff808211156128bb57600080fd5b6128c78683870161283a565b935060208501359150808211156128dd57600080fd5b506128ea8582860161283a565b9150509250929050565b8051151582526000602082015160a0602085015261291560a08501826126fb565b90506040830151848203604086015261292e82826126fb565b9150506060830151848203606086015261294882826126fb565b9150506080830151848203608086015261296282826126fb565b95945050505050565b602081526000611cc860208301846128f4565b60008060006060848603121561299357600080fd5b833561299e816126a5565b925060208401356129ae816126a5565b929592945050506040919091013590565b600080604083850312156129d257600080fd5b50508035926020909101359150565b600080604083850312156129f457600080fd5b82356129ff816126a5565b91506020830135612a0f816126a5565b809150509250929050565b801515811461152c57600080fd5b8035612a3381612a1a565b919050565b600060208284031215612a4a57600080fd5b8135611cc881612a1a565b600067ffffffffffffffff821115612a6f57612a6f61277f565b5060051b60200190565b600082601f830112612a8a57600080fd5b81356020612a9a61285983612a55565b82815260059290921b84018101918181019086841115612ab957600080fd5b8286015b84811015612af957803567ffffffffffffffff811115612add5760008081fd5b612aeb8986838b010161283a565b845250918301918301612abd565b509695505050505050565b60008060408385031215612b1757600080fd5b823567ffffffffffffffff80821115612b2f57600080fd5b612b3b86838701612a79565b93506020850135915080821115612b5157600080fd5b506128ea85828601612a79565b600082601f830112612b6f57600080fd5b81356020612b7f61285983612a55565b8083825260208201915060208460051b870101935086841115612ba157600080fd5b602086015b84811015612af9578035612bb9816126a5565b8352918301918301612ba6565b60008060408385031215612bd957600080fd5b823567ffffffffffffffff80821115612bf157600080fd5b612bfd86838701612b5e565b93506020850135915080821115612c1357600080fd5b506128ea85828601612b5e565b60008060408385031215612c3357600080fd5b8235612c3e816126a5565b91506020830135612a0f81612a1a565b60008060008060808587031215612c6457600080fd5b8435612c6f816126a5565b93506020850135612c7f816126a5565b925060408501359150606085013567ffffffffffffffff811115612ca257600080fd5b612cae8782880161283a565b91505092959194509250565b600060208284031215612ccc57600080fd5b813567ffffffffffffffff811115612ce357600080fd5b61182c8482850161283a565b600082601f830112612d0057600080fd5b81356020612d1061285983612a55565b8083825260208201915060208460051b870101935086841115612d3257600080fd5b602086015b84811015612af95780358352918301918301612d37565b60008060408385031215612d6157600080fd5b823567ffffffffffffffff80821115612d7957600080fd5b612d8586838701612cef565b93506020850135915080821115612d9b57600080fd5b506128ea85828601612cef565b600060208284031215612dba57600080fd5b67ffffffffffffffff82351115612dd057600080fd5b82601f833584010112612de257600080fd5b612df26128598335840135612a55565b8235830180358083526020808401939260059290921b90910101851015612e1857600080fd5b602084358501015b84358501803560051b016020018110156130c65767ffffffffffffffff81351115612e4a57600080fd5b6040853586018235018703601f19011215612e6457600080fd5b612e6c612795565b67ffffffffffffffff60208335883589010101351115612e8b57600080fd5b612ea3876020843589358a010181810135010161283a565b815267ffffffffffffffff60408335883589010101351115612ec457600080fd5b60408635870183350180820135018803601f19011215612ee357600080fd5b612eeb612795565b67ffffffffffffffff87358801843501604081013501602001351115612f1057600080fd5b86358701833501604081013501602081013501603f81018913612f3257600080fd5b612f426128596020830135612a55565b602082810135808352908201919060051b83016040018b1015612f6457600080fd5b604083015b6040602085013560051b8501018110156130945767ffffffffffffffff81351115612f9357600080fd5b8035840160a0818e03603f19011215612fab57600080fd5b612fb36127be565b612fbf60408301612a28565b815267ffffffffffffffff60608301351115612fda57600080fd5b612fed8e6040606085013585010161283a565b602082015267ffffffffffffffff6080830135111561300b57600080fd5b61301e8e6040608085013585010161283a565b604082015267ffffffffffffffff60a0830135111561303c57600080fd5b61304f8e604060a085013585010161283a565b606082015267ffffffffffffffff60c0830135111561306d57600080fd5b6130808e604060c085013585010161283a565b608082015284525060209283019201612f69565b508352505060408335883589010181810135010135602080830191909152828101919091529084529283019201612e20565b50949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561053d5761053d6130cf565b60006001820161310a5761310a6130cf565b5060010190565b600082601f83011261312257600080fd5b815161313061285982612812565b81815284602083860101111561314557600080fd5b61182c8260208301602087016126d7565b8051612a3381612a1a565b60006040828403121561317357600080fd5b61317b612795565b9050815167ffffffffffffffff8082111561319557600080fd5b6131a185838601613111565b83526020915081840151818111156131b857600080fd5b8401604081870312156131ca57600080fd5b6131d2612795565b8151838111156131e157600080fd5b8201601f810188136131f257600080fd5b805161320061285982612a55565b81815260059190911b8201860190868101908a83111561321f57600080fd5b8784015b8381101561330c5780518881111561323a57600080fd5b850160a0818e03601f1901121561325057600080fd5b6132586127be565b6132638b8301613156565b815260408201518a81111561327757600080fd5b6132858f8d83860101613111565b8c8301525060608201518a81111561329c57600080fd5b6132aa8f8d83860101613111565b60408301525060808201518a8111156132c35760008081fd5b6132d18f8d83860101613111565b60608301525060a08201518a8111156132ea5760008081fd5b6132f88f8d83860101613111565b608083015250845250918801918801613223565b5084525050509083015183820152918301919091525092915050565b6000806040838503121561333b57600080fd5b825167ffffffffffffffff81111561335257600080fd5b61335e85828601613161565b9250506020830151612a0f816126a5565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561339757600080fd5b815167ffffffffffffffff8111156133ae57600080fd5b61182c84828501613161565b600181811c908216806133ce57607f821691505b6020821081036133ee57634e487b7160e01b600052602260045260246000fd5b50919050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081526000835161342c8160108501602088016126d7565b7f206973206e6f7420657175616c20746f2000000000000000000000000000000060109184019182015283516134698160218401602088016126d7565b01602101949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156134cc57603f198886030184526134ba8583516126fb565b9450928501929085019060010161349e565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561351a5783516001600160a01b0316835292840192918401916001016134f5565b50909695505050505050565b7f417373657274696f6e4572726f723a200000000000000000000000000000000081527f20426f74682076616c75657320617265000000000000000000000000000000006010820152600082516135848160208501602087016126d7565b9190910160200192915050565b601f821115610a06576000816000526020600020601f850160051c810160208610156135ba5750805b601f850160051c820191505b818110156135d9578281556001016135c6565b505050505050565b815167ffffffffffffffff8111156135fb576135fb61277f565b61360f8161360984546133ba565b84613591565b602080601f831160018114613644576000841561362c5750858301515b600019600386901b1c1916600185901b1785556135d9565b600085815260208120601f198616915b8281101561367357888601518255948401946001909101908401613654565b50858210156136915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252825182820181905260009190848201906040850190845b8181101561351a578351835292840192918401916001016136bd565b600060608083016001600160a01b038716845260208615158186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b838110156137bc578a8803607f1901855282518051878a52613740888b01826126fb565b918901518a83038b8b0152805189845280518a850181905291939250600582901b83018d0191908b01908d840190875b8181101561379e57605f1986860301835261378c8585516128f4565b9450928d0192918d0191600101613770565b5050505091890151908901529750938601939186019160010161371c565b50959c9b505050505050505050505050565b808202811582820484141761053d5761053d6130cf565b6000816137f4576137f46130cf565b506000190190565b8181038181111561053d5761053d6130cf565b600083516138218184602088016126d7565b8351908301906138358183602088016126d7565b7f2c200000000000000000000000000000000000000000000000000000000000009101908152600201949350505050565b600083516138788184602088016126d7565b83519083019061388c8183602088016126d7565b7f5d000000000000000000000000000000000000000000000000000000000000009101908152600101949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526138ef60808301846126fb565b9695505050505050565b60006020828403121561390b57600080fd5b8151611cc88161267256fe417373657274696f6e4572726f723a20726573756c74206973206e6f742066616c7365417373657274696f6e4572726f723a20726573756c74206973206e6f742074727565a2646970667358221220544c4e0c430c90443a421ae62565ca3d73d34b3d66ee4055a78625f862aa227664736f6c63430008170033
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

