0x608060405234801561001057600080fd5b50610d19806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806351a4099414610051578063644cb0f31461007757806375bf24441461008c578063dc0b3f52146100ac575b600080fd5b61006461005f36600461092d565b6100cc565b6040519081526020015b60405180910390f35b61008a61008536600461096e565b6100e5565b005b61009f61009a366004610a0c565b61013e565b60405161006e9190610a73565b6100bf6100ba36600461092d565b61028d565b60405161006e9190610ac1565b60006100df6100da836102ff565b61038c565b92915050565b6100ed610435565b6100f681610477565b8060a001516001600160a01b03167fefc23317f58afd6b22480bd22174cc7da0913bce25c03d9859216dacddebe6fe826040516101339190610ac1565b60405180910390a250565b6060600061014a610637565b90506000610157826106cb565b905060008167ffffffffffffffff81111561017457610174610948565b6040519080825280602002602001820160405280156101ad57816020015b61019a6108c6565b8152602001906001900390816101925790505b509050600060015b8381116102825760006101c886836106d5565b905060006101d5826102ff565b90508815806101e55750805460ff165b1561026d576040805160e081018252825460ff161515815260018301546020820152600283015491810191909152600382015460608201526004820154608082015260058201546001600160a01b031660a0820152600682015460c0820152858561024f81610ae5565b96508151811061026157610261610afe565b60200260200101819052505b5050808061027a90610ae5565b9150506101b5565b509095945050505050565b6102956108c6565b61029e826102ff565b6040805160e081018252825460ff161515815260018301546020820152600283015491810191909152600382015460608201526004820154608082015260058201546001600160a01b031660a082015260069091015460c082015292915050565b6000808260405160200161036d91906040808252602e908201527f696f2e73796e7468657469782e73796e7468657469782e436f6c6c617465726160608201526d3621b7b73334b3bab930ba34b7b760911b60808201526001600160a01b0391909116602082015260a00190565b60408051601f1981840301815291905280516020909101209392505050565b6000806103976106ee565b6040805160208101825291546001600160a01b03168083526004808701549251632a952b2d60e01b81529394506000939192632a952b2d926103dd920190815260200190565b608060405180830381865afa1580156103fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041e9190610b14565b905061042d816000015161073f565b949350505050565b61043d610766565b6001600160a01b0316336001600160a01b0316146104755760405163472511eb60e11b81523360048201526024015b60405180910390fd5b565b6000610481610637565b905061049a8260a001518261077f90919063ffffffff16565b6104ae5760a08201516104ae9082906107a1565b81606001518260c00151101561053c5760408051634bab873760e11b81526004810191909152600d60448201526c36b4b72232b632b3b0ba34b7b760991b606482015260806024820152602660848201527f6d7573742062652067726561746572207468616e206c69717569646174696f6e60a48201526514995dd85c9960d21b60c482015260e40161046c565b670de0b6b3a764000082602001511161056857604051634bab873760e11b815260040161046c90610b88565b670de0b6b3a764000082604001511161059457604051634bab873760e11b815260040161046c90610bf0565b8160400151826020015110156105bd57604051634bab873760e11b815260040161046c90610c53565b60006105cc8360a001516102ff565b60a08401516005820180546001600160a01b0319166001600160a01b039092169190911790556020840151600182015560408401516002820155608084015160048201556060840151600382015560c084015160068201559251835460ff1916901515179092555050565b6000806040516020016106ad9060208082526043908201527f696f2e73796e7468657469782e73796e7468657469782e436f6c6c617465726160408201527f6c436f6e66696775726174696f6e5f617661696c61626c65436f6c6c61746572606082015262616c7360e81b608082015260a00190565b60408051601f19818403018152919052805160209091012092915050565b60006100df825490565b60006106e76106e484846107b8565b90565b9392505050565b6000806040516020016106ad9060208082526024908201527f696f2e73796e7468657469782e73796e7468657469782e4f7261636c654d616e60408201526330b3b2b960e11b606082015260800190565b6000808212156107625760405163029f024d60e31b815260040160405180910390fd5b5090565b600061077061081d565b546001600160a01b0316919050565b6001600160a01b038116600090815260018301602052604081205415156106e7565b6107b4826001600160a01b03831661086d565b5050565b60008115806107c75750825482115b156107e55760405163eb9bc44760e01b815260040160405180910390fd5b60006107f2600184610cd0565b905083600001818154811061080957610809610afe565b906000526020600020015491505092915050565b6000806040516020016106ad9060208082526023908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e61604082015262626c6560e81b606082015260800190565b60008181526001830160205260409020541561089c5760405163682ad32d60e01b815260040160405180910390fd5b81546001818101845560008481526020808220909301849055845493815293019052604090912055565b6040518060e001604052806000151581526020016000815260200160008152602001600081526020016000801916815260200160006001600160a01b03168152602001600081525090565b80356001600160a01b038116811461092857600080fd5b919050565b60006020828403121561093f57600080fd5b6106e782610911565b634e487b7160e01b600052604160045260246000fd5b8035801515811461092857600080fd5b600060e0828403121561098057600080fd5b60405160e0810181811067ffffffffffffffff821117156109b157634e487b7160e01b600052604160045260246000fd5b6040526109bd8361095e565b8152602083013560208201526040830135604082015260608301356060820152608083013560808201526109f360a08401610911565b60a082015260c083013560c08201528091505092915050565b600060208284031215610a1e57600080fd5b6106e78261095e565b8051151582526020808201519083015260408082015190830152606080820151908301526080808201519083015260a0808201516001600160a01b03169083015260c090810151910152565b6020808252825182820181905260009190848201906040850190845b81811015610ab557610aa2838551610a27565b9284019260e09290920191600101610a8f565b50909695505050505050565b60e081016100df8284610a27565b634e487b7160e01b600052601160045260246000fd5b600060018201610af757610af7610acf565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060808284031215610b2657600080fd5b6040516080810181811067ffffffffffffffff82111715610b5757634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b604081526000610bb860408301601081526f0d2e6e6eac2dcc6caa4c2e8d2de8862760831b602082015260400190565b82810360208401526106e78160198152786d7573742062652067726561746572207468616e203130302560381b602082015260400190565b6040815260136040820152720d8d2e2ead2c8c2e8d2dedca4c2e8d2de88627606b1b60608201526080602082015260006100df6080830160198152786d7573742062652067726561746572207468616e203130302560381b602082015260400190565b604081526000610c8360408301601081526f0d2e6e6eac2dcc6caa4c2e8d2de8862760831b602082015260400190565b828103602093840152602881527f6d7573742062652067726561746572207468616e206c69717569646174696f6e9281019290925250670a4c2e8d2de8862760c31b604082015260600190565b818103818111156100df576100df610acf56fea2646970667358221220f38fd2dfe0f5a759338f58c83ae0db614135c70982446e4b6d1859bd92258e1664736f6c63430008110033