0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146100fd5780639cfc625e146101185780639fb7f6041461013b578063ea8ab3b81461014e578063f2fde38b1461016e57600080fd5b80630aaffd2a14610098578063715018a6146100ad5780637cc1f867146100b557806386d1a69f146100f5575b600080fd5b6100ab6100a6366004610b3e565b610181565b005b6100ab61025e565b6100bd6102d2565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0015b60405180910390f35b6100ab610379565b6000546040516001600160a01b0390911681526020016100ec565b6101206104c9565b604080519384526020840192909252908201526060016100ec565b6100ab610149366004610b6e565b610576565b61016161015c366004610c0d565b6107b3565b6040516100ec9190610c2f565b6100ab61017c366004610b3e565b610990565b6000546001600160a01b031633146101b45760405162461bcd60e51b81526004016101ab90610c8b565b60405180910390fd5b6001600160a01b03811661020a5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4c6f636b3a206164647265737320697320696e76616c696400000060448201526064016101ab565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527feee59a71c694e68368a1cb0d135c448051bbfb12289e6c2223b0ceb100c2321d9060200160405180910390a150565b6000546001600160a01b031633146102885760405162461bcd60e51b81526004016101ab90610c8b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600154600254600480546040516370a0823160e01b8152309281019290925260009384938493849384936001600160a01b0390811693169183906370a082319060240160206040518083038186803b15801561032d57600080fd5b505afa158015610341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103659190610bf4565b600354945094509450945094509091929394565b60008060006103866104c9565b9250925092508282116103db5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e4c6f636b3a2063616e206e6f742072656c6561736500000000000060448201526064016101ab565b600382905580156104705760015460025460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561043657600080fd5b505af115801561044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046e9190610bd2565b505b600254604080516001600160a01b039092168252602082018390528101849052606081018390527f7b381718bec1e0dbc1241809ee9b55f3d783b95880307f002707fad981fa50699060800160405180910390a1505050565b600454600354600091829182918291429080805b84811015610566576000818152600560209081526040918290208251808401909352546001600160801b03808216808552600160801b909204169183019190915285101561052b5750610566565b6020810151610543906001600160801b031688610cc0565b96508261054f81610cef565b93505050808061055e90610cef565b9150506104dd565b5090979096509294509192505050565b6000546001600160a01b031633146105a05760405162461bcd60e51b81526004016101ab90610c8b565b8151815181146105fd5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4c6f636b3a206172726179206c656e67746820697320696e76616c6044820152611a5960f21b60648201526084016101ab565b600454600081156106365760056000610617600185610cd8565b81526020810191909152604001600020546001600160801b0316610639565b60005b905060005b8381101561079c57600086828151811061065a5761065a610d20565b60200260200101519050600086838151811061067857610678610d20565b60200260200101519050816001600160801b0316846001600160801b0316106106e35760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e4c6f636b3a2074696d6520697320696e76616c696400000000000060448201526064016101ab565b604080518082019091526001600160801b03808416825282166020820152600560008761070f81610cef565b90825260208083019390935260409182016000208451948401516001600160801b03958616600160801b91871691909102179055815186851681529385169284019290925290965092945084927fc82347da04930d6ffa550345be398d839f8b760aa7edae486329e458770e8e3d910160405180910390a15050808061079490610cef565b91505061063e565b5081600454146107ac5760048290555b5050505050565b60606000806107c28585610cd8565b6107cd906001610cc0565b905060008167ffffffffffffffff8111156107ea576107ea610d36565b60405190808252806020026020018201604052801561082f57816020015b60408051808201909152600080825260208201528152602001906001900390816108085790505b509050855b8581116108cc576000818152600560205260409020546001600160801b031661085c576108cc565b6000818152600560209081526040918290208251808401909352546001600160801b038082168452600160801b9091041690820152828561089c81610cef565b9650815181106108ae576108ae610d20565b602002602001018190525080806108c490610cef565b915050610834565b5060008367ffffffffffffffff8111156108e8576108e8610d36565b60405190808252806020026020018201604052801561092d57816020015b60408051808201909152600080825260208201528152602001906001900390816109065790505b50905060005b848110156109855782818151811061094d5761094d610d20565b602002602001015182828151811061096757610967610d20565b6020026020010181905250808061097d90610cef565b915050610933565b509695505050505050565b6000546001600160a01b031633146109ba5760405162461bcd60e51b81526004016101ab90610c8b565b6001600160a01b038116610a1f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ab565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082601f830112610a8b57600080fd5b8135602067ffffffffffffffff80831115610aa857610aa8610d36565b8260051b604051601f19603f83011681018181108482111715610acd57610acd610d36565b60405284815283810192508684018288018501891015610aec57600080fd5b600092505b85831015610b1657610b0281610b22565b845292840192600192909201918401610af1565b50979650505050505050565b80356001600160801b0381168114610b3957600080fd5b919050565b600060208284031215610b5057600080fd5b81356001600160a01b0381168114610b6757600080fd5b9392505050565b60008060408385031215610b8157600080fd5b823567ffffffffffffffff80821115610b9957600080fd5b610ba586838701610a7a565b93506020850135915080821115610bbb57600080fd5b50610bc885828601610a7a565b9150509250929050565b600060208284031215610be457600080fd5b81518015158114610b6757600080fd5b600060208284031215610c0657600080fd5b5051919050565b60008060408385031215610c2057600080fd5b50508035926020909101359150565b602080825282518282018190526000919060409081850190868401855b82811015610c7e57815180516001600160801b0390811686529087015116868501529284019290850190600101610c4c565b5091979650505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610cd357610cd3610d0a565b500190565b600082821015610cea57610cea610d0a565b500390565b6000600019821415610d0357610d03610d0a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220fcb49020f1e0cb950115a5bbdb7a8af10302be5e8a69c00c2c3e230cab15309564736f6c63430008070033
0x608060405234801561001057600080fd5b50604051610e81380380610e8183398101604081905261002f916100bd565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100f0565b80516001600160a01b03811681146100b857600080fd5b919050565b600080604083850312156100d057600080fd5b6100d9836100a1565b91506100e7602084016100a1565b90509250929050565b610d82806100ff6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146100fd5780639cfc625e146101185780639fb7f6041461013b578063ea8ab3b81461014e578063f2fde38b1461016e57600080fd5b80630aaffd2a14610098578063715018a6146100ad5780637cc1f867146100b557806386d1a69f146100f5575b600080fd5b6100ab6100a6366004610b3e565b610181565b005b6100ab61025e565b6100bd6102d2565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0015b60405180910390f35b6100ab610379565b6000546040516001600160a01b0390911681526020016100ec565b6101206104c9565b604080519384526020840192909252908201526060016100ec565b6100ab610149366004610b6e565b610576565b61016161015c366004610c0d565b6107b3565b6040516100ec9190610c2f565b6100ab61017c366004610b3e565b610990565b6000546001600160a01b031633146101b45760405162461bcd60e51b81526004016101ab90610c8b565b60405180910390fd5b6001600160a01b03811661020a5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4c6f636b3a206164647265737320697320696e76616c696400000060448201526064016101ab565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527feee59a71c694e68368a1cb0d135c448051bbfb12289e6c2223b0ceb100c2321d9060200160405180910390a150565b6000546001600160a01b031633146102885760405162461bcd60e51b81526004016101ab90610c8b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600154600254600480546040516370a0823160e01b8152309281019290925260009384938493849384936001600160a01b0390811693169183906370a082319060240160206040518083038186803b15801561032d57600080fd5b505afa158015610341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103659190610bf4565b600354945094509450945094509091929394565b60008060006103866104c9565b9250925092508282116103db5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e4c6f636b3a2063616e206e6f742072656c6561736500000000000060448201526064016101ab565b600382905580156104705760015460025460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561043657600080fd5b505af115801561044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046e9190610bd2565b505b600254604080516001600160a01b039092168252602082018390528101849052606081018390527f7b381718bec1e0dbc1241809ee9b55f3d783b95880307f002707fad981fa50699060800160405180910390a1505050565b600454600354600091829182918291429080805b84811015610566576000818152600560209081526040918290208251808401909352546001600160801b03808216808552600160801b909204169183019190915285101561052b5750610566565b6020810151610543906001600160801b031688610cc0565b96508261054f81610cef565b93505050808061055e90610cef565b9150506104dd565b5090979096509294509192505050565b6000546001600160a01b031633146105a05760405162461bcd60e51b81526004016101ab90610c8b565b8151815181146105fd5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4c6f636b3a206172726179206c656e67746820697320696e76616c6044820152611a5960f21b60648201526084016101ab565b600454600081156106365760056000610617600185610cd8565b81526020810191909152604001600020546001600160801b0316610639565b60005b905060005b8381101561079c57600086828151811061065a5761065a610d20565b60200260200101519050600086838151811061067857610678610d20565b60200260200101519050816001600160801b0316846001600160801b0316106106e35760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e4c6f636b3a2074696d6520697320696e76616c696400000000000060448201526064016101ab565b604080518082019091526001600160801b03808416825282166020820152600560008761070f81610cef565b90825260208083019390935260409182016000208451948401516001600160801b03958616600160801b91871691909102179055815186851681529385169284019290925290965092945084927fc82347da04930d6ffa550345be398d839f8b760aa7edae486329e458770e8e3d910160405180910390a15050808061079490610cef565b91505061063e565b5081600454146107ac5760048290555b5050505050565b60606000806107c28585610cd8565b6107cd906001610cc0565b905060008167ffffffffffffffff8111156107ea576107ea610d36565b60405190808252806020026020018201604052801561082f57816020015b60408051808201909152600080825260208201528152602001906001900390816108085790505b509050855b8581116108cc576000818152600560205260409020546001600160801b031661085c576108cc565b6000818152600560209081526040918290208251808401909352546001600160801b038082168452600160801b9091041690820152828561089c81610cef565b9650815181106108ae576108ae610d20565b602002602001018190525080806108c490610cef565b915050610834565b5060008367ffffffffffffffff8111156108e8576108e8610d36565b60405190808252806020026020018201604052801561092d57816020015b60408051808201909152600080825260208201528152602001906001900390816109065790505b50905060005b848110156109855782818151811061094d5761094d610d20565b602002602001015182828151811061096757610967610d20565b6020026020010181905250808061097d90610cef565b915050610933565b509695505050505050565b6000546001600160a01b031633146109ba5760405162461bcd60e51b81526004016101ab90610c8b565b6001600160a01b038116610a1f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ab565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082601f830112610a8b57600080fd5b8135602067ffffffffffffffff80831115610aa857610aa8610d36565b8260051b604051601f19603f83011681018181108482111715610acd57610acd610d36565b60405284815283810192508684018288018501891015610aec57600080fd5b600092505b85831015610b1657610b0281610b22565b845292840192600192909201918401610af1565b50979650505050505050565b80356001600160801b0381168114610b3957600080fd5b919050565b600060208284031215610b5057600080fd5b81356001600160a01b0381168114610b6757600080fd5b9392505050565b60008060408385031215610b8157600080fd5b823567ffffffffffffffff80821115610b9957600080fd5b610ba586838701610a7a565b93506020850135915080821115610bbb57600080fd5b50610bc885828601610a7a565b9150509250929050565b600060208284031215610be457600080fd5b81518015158114610b6757600080fd5b600060208284031215610c0657600080fd5b5051919050565b60008060408385031215610c2057600080fd5b50508035926020909101359150565b602080825282518282018190526000919060409081850190868401855b82811015610c7e57815180516001600160801b0390811686529087015116868501529284019290850190600101610c4c565b5091979650505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610cd357610cd3610d0a565b500190565b600082821015610cea57610cea610d0a565b500390565b6000600019821415610d0357610d03610d0a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220fcb49020f1e0cb950115a5bbdb7a8af10302be5e8a69c00c2c3e230cab15309564736f6c63430008070033000000000000000000000000692accdd8b86692427e0aa4752ae917df01cc56f00000000000000000000000017a132b9b070bedb920a5f5d5160248f87587aec