0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b1461016157806398f3f6371461018c578063c6d716f21461019f578063f2fde38b146101b2578063f3fe3bc3146101c557600080fd5b80630ddfca04146100a357806311a71493146100d65780633b58524d146100eb578063715018a614610127578063860d248a1461012f575b600080fd5b6100c36100b1366004610b1a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e96100e4366004610b4b565b6101ea565b005b6100e96100f9366004610c06565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6100e9610355565b6101546040518060400160405280600681526020016518189c18181960d11b81525081565b6040516100cd9190610c5d565b600054610174906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b6100e961019a366004610c90565b6103e9565b6100e96101ad366004610cba565b61043b565b6100e96101c0366004610b1a565b61049e565b6101546040518060400160405280600681526020016530313830303160d01b81525081565b6002546001600160a01b03166102375760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b229b4b3b732b960991b60448201526064015b60405180910390fd5b33600081815260036020526040902054831161025257505050565b600454604080516001600160a01b038416602082015290810185905260608101919091526000906080016040516020818303038152906040528051906020012090506102a6816102a185610588565b6107ae565b6002546001600160a01b039081169116146102fc5760405162461bcd60e51b81526020600482015260166024820152753932bbb0b9321d1034b73b30b634b21039b4b3b732b960511b604482015260640161022e565b6001600160a01b038216600090815260036020526040812054610320908690610837565b6001600160a01b03808516600090815260036020526040902087905560015491925061034e91168483610880565b5050505050565b60005460408051808201909152600681526530313830303160d01b6020820152906001600160a01b0316331461039e5760405162461bcd60e51b815260040161022e9190610c5d565b50600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600154610401906001600160a01b0316333084610994565b60405181906001600160a01b038416907fc2f81374d709d11d80804b6e1113eb9a9d0ddd895fe24bd220b15cdfdec16b0b90600090a35050565b60005460408051808201909152600681526530313830303160d01b6020820152906001600160a01b031633146104845760405162461bcd60e51b815260040161022e9190610c5d565b506104996001600160a01b0384168383610880565b505050565b60005460408051808201909152600681526530313830303160d01b6020820152906001600160a01b031633146104e75760405162461bcd60e51b815260040161022e9190610c5d565b5060408051808201909152600681526518189c18181960d11b60208201526001600160a01b03821661052c5760405162461bcd60e51b815260040161022e9190610c5d565b50600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606060008290506000815167ffffffffffffffff8111156105ab576105ab610b35565b6040519080825280602002602001820160405280156105d4578160200160208202803683370190505b50905060005b82518110156106a75760008382815181106105f7576105f7610cf6565b016020015160f81c9050606081111561064b57610615606182610d22565b61062090600a610d3b565b83838151811061063257610632610cf6565b602002602001019060ff16908160ff1681525050610694565b60428160ff16111561066257610615604182610d22565b61066d603082610d22565b83838151811061067f5761067f610cf6565b602002602001019060ff16908160ff16815250505b508061069f81610d54565b9150506105da565b506000600282516106b89190610d6d565b67ffffffffffffffff8111156106d0576106d0610b35565b6040519080825280601f01601f1916602001820160405280156106fa576020820181803683370190505b50905060005b82518110156107a55782610715826001610d8f565b8151811061072557610725610cf6565b602002602001015183828151811061073f5761073f610cf6565b602002602001015160106107539190610da2565b61075d9190610d3b565b60f81b8261076c600284610d6d565b8151811061077c5761077c610cf6565b60200101906001600160f81b031916908160001a90535061079e600282610d8f565b9050610700565b50949350505050565b6000815160410361082d57602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa158015610819573d6000803e3d6000fd5b505050602060405103519350505050610831565b5060005b92915050565b600061087983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ac4565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916108dc9190610dc5565b6000604051808303816000865af19150503d8060008114610919576040519150601f19603f3d011682016040523d82523d6000602084013e61091e565b606091505b50915091508180156109485750805115806109485750808060200190518101906109489190610de1565b61034e5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015260640161022e565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916109f89190610dc5565b6000604051808303816000865af19150503d8060008114610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b5091509150818015610a64575080511580610a64575080806020019051810190610a649190610de1565b610abc5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161022e565b505050505050565b60008184841115610ae85760405162461bcd60e51b815260040161022e9190610c5d565b506000610af58486610e03565b95945050505050565b80356001600160a01b0381168114610b1557600080fd5b919050565b600060208284031215610b2c57600080fd5b61087982610afe565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b5e57600080fd5b82359150602083013567ffffffffffffffff80821115610b7d57600080fd5b818501915085601f830112610b9157600080fd5b813581811115610ba357610ba3610b35565b604051601f8201601f19908116603f01168101908382118183101715610bcb57610bcb610b35565b81604052828152886020848701011115610be457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060408385031215610c1957600080fd5b610c2283610afe565b9150610c3060208401610afe565b90509250929050565b60005b83811015610c54578181015183820152602001610c3c565b50506000910152565b6020815260008251806020840152610c7c816040850160208701610c39565b601f01601f19169190910160400192915050565b60008060408385031215610ca357600080fd5b610cac83610afe565b946020939093013593505050565b600080600060608486031215610ccf57600080fd5b610cd884610afe565b9250610ce660208501610afe565b9150604084013590509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561083157610831610d0c565b60ff818116838216019081111561083157610831610d0c565b600060018201610d6657610d66610d0c565b5060010190565b600082610d8a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561083157610831610d0c565b60ff8181168382160290811690818114610dbe57610dbe610d0c565b5092915050565b60008251610dd7818460208701610c39565b9190910192915050565b600060208284031215610df357600080fd5b8151801515811461087957600080fd5b8181038181111561083157610831610d0c56fea264697066735822122050a2382d9817cb90446f6b44df2e5e043164308e118219219c74605f3e00772764736f6c63430008110033
0x608060405234801561001057600080fd5b50604051610f25380380610f2583398101604081905261002f9161008e565b600080546001600160a01b03199081163317909155600180546001600160a01b0395861690831617905560028054939094169216919091179091556004556100ca565b80516001600160a01b038116811461008957600080fd5b919050565b6000806000606084860312156100a357600080fd5b6100ac84610072565b92506100ba60208501610072565b9150604084015190509250925092565b610e4c806100d96000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b1461016157806398f3f6371461018c578063c6d716f21461019f578063f2fde38b146101b2578063f3fe3bc3146101c557600080fd5b80630ddfca04146100a357806311a71493146100d65780633b58524d146100eb578063715018a614610127578063860d248a1461012f575b600080fd5b6100c36100b1366004610b1a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e96100e4366004610b4b565b6101ea565b005b6100e96100f9366004610c06565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6100e9610355565b6101546040518060400160405280600681526020016518189c18181960d11b81525081565b6040516100cd9190610c5d565b600054610174906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b6100e961019a366004610c90565b6103e9565b6100e96101ad366004610cba565b61043b565b6100e96101c0366004610b1a565b61049e565b6101546040518060400160405280600681526020016530313830303160d01b81525081565b6002546001600160a01b03166102375760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b229b4b3b732b960991b60448201526064015b60405180910390fd5b33600081815260036020526040902054831161025257505050565b600454604080516001600160a01b038416602082015290810185905260608101919091526000906080016040516020818303038152906040528051906020012090506102a6816102a185610588565b6107ae565b6002546001600160a01b039081169116146102fc5760405162461bcd60e51b81526020600482015260166024820152753932bbb0b9321d1034b73b30b634b21039b4b3b732b960511b604482015260640161022e565b6001600160a01b038216600090815260036020526040812054610320908690610837565b6001600160a01b03808516600090815260036020526040902087905560015491925061034e91168483610880565b5050505050565b60005460408051808201909152600681526530313830303160d01b6020820152906001600160a01b0316331461039e5760405162461bcd60e51b815260040161022e9190610c5d565b50600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600154610401906001600160a01b0316333084610994565b60405181906001600160a01b038416907fc2f81374d709d11d80804b6e1113eb9a9d0ddd895fe24bd220b15cdfdec16b0b90600090a35050565b60005460408051808201909152600681526530313830303160d01b6020820152906001600160a01b031633146104845760405162461bcd60e51b815260040161022e9190610c5d565b506104996001600160a01b0384168383610880565b505050565b60005460408051808201909152600681526530313830303160d01b6020820152906001600160a01b031633146104e75760405162461bcd60e51b815260040161022e9190610c5d565b5060408051808201909152600681526518189c18181960d11b60208201526001600160a01b03821661052c5760405162461bcd60e51b815260040161022e9190610c5d565b50600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606060008290506000815167ffffffffffffffff8111156105ab576105ab610b35565b6040519080825280602002602001820160405280156105d4578160200160208202803683370190505b50905060005b82518110156106a75760008382815181106105f7576105f7610cf6565b016020015160f81c9050606081111561064b57610615606182610d22565b61062090600a610d3b565b83838151811061063257610632610cf6565b602002602001019060ff16908160ff1681525050610694565b60428160ff16111561066257610615604182610d22565b61066d603082610d22565b83838151811061067f5761067f610cf6565b602002602001019060ff16908160ff16815250505b508061069f81610d54565b9150506105da565b506000600282516106b89190610d6d565b67ffffffffffffffff8111156106d0576106d0610b35565b6040519080825280601f01601f1916602001820160405280156106fa576020820181803683370190505b50905060005b82518110156107a55782610715826001610d8f565b8151811061072557610725610cf6565b602002602001015183828151811061073f5761073f610cf6565b602002602001015160106107539190610da2565b61075d9190610d3b565b60f81b8261076c600284610d6d565b8151811061077c5761077c610cf6565b60200101906001600160f81b031916908160001a90535061079e600282610d8f565b9050610700565b50949350505050565b6000815160410361082d57602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa158015610819573d6000803e3d6000fd5b505050602060405103519350505050610831565b5060005b92915050565b600061087983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ac4565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916108dc9190610dc5565b6000604051808303816000865af19150503d8060008114610919576040519150601f19603f3d011682016040523d82523d6000602084013e61091e565b606091505b50915091508180156109485750805115806109485750808060200190518101906109489190610de1565b61034e5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015260640161022e565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916109f89190610dc5565b6000604051808303816000865af19150503d8060008114610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b5091509150818015610a64575080511580610a64575080806020019051810190610a649190610de1565b610abc5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161022e565b505050505050565b60008184841115610ae85760405162461bcd60e51b815260040161022e9190610c5d565b506000610af58486610e03565b95945050505050565b80356001600160a01b0381168114610b1557600080fd5b919050565b600060208284031215610b2c57600080fd5b61087982610afe565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b5e57600080fd5b82359150602083013567ffffffffffffffff80821115610b7d57600080fd5b818501915085601f830112610b9157600080fd5b813581811115610ba357610ba3610b35565b604051601f8201601f19908116603f01168101908382118183101715610bcb57610bcb610b35565b81604052828152886020848701011115610be457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060408385031215610c1957600080fd5b610c2283610afe565b9150610c3060208401610afe565b90509250929050565b60005b83811015610c54578181015183820152602001610c3c565b50506000910152565b6020815260008251806020840152610c7c816040850160208701610c39565b601f01601f19169190910160400192915050565b60008060408385031215610ca357600080fd5b610cac83610afe565b946020939093013593505050565b600080600060608486031215610ccf57600080fd5b610cd884610afe565b9250610ce660208501610afe565b9150604084013590509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561083157610831610d0c565b60ff818116838216019081111561083157610831610d0c565b600060018201610d6657610d66610d0c565b5060010190565b600082610d8a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561083157610831610d0c565b60ff8181168382160290811690818114610dbe57610dbe610d0c565b5092915050565b60008251610dd7818460208701610c39565b9190910192915050565b600060208284031215610df357600080fd5b8151801515811461087957600080fd5b8181038181111561083157610831610d0c56fea264697066735822122050a2382d9817cb90446f6b44df2e5e043164308e118219219c74605f3e00772764736f6c63430008110033000000000000000000000000ddf6c38481002c6811566838739e61bcf82efeff000000000000000000000000fc749f24b597e63d1f88fffdfac8ac7d04836b9b0000000000000000000000000000000000000000000000000000000000000006