60806040526000600581905560065568056bc75e2d631000006007556008805460ff1916905534801561003157600080fd5b50600160005561004033610045565b610097565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611411806100a66000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f95780638da5cb5b11610097578063bbcd5bbe11610071578063bbcd5bbe146103f4578063cb90b28b14610407578063d947ff691461041a578063f2fde38b1461042d57600080fd5b80638da5cb5b146103bd5780639b428e84146103ce5780639e4c4dd8146103e157600080fd5b80637c073ede116100d35780637c073ede146103655780637effd7951461036e5780637f3b09ca1461039757806389be7331146103aa57600080fd5b806370a0823114610337578063715018a61461034a5780637385204b1461035257600080fd5b8063438b63001161016657806367c20a7a1161014057806367c20a7a146102f557806367e69f00146103085780636999ac931461031b5780636ba4c1381461032457600080fd5b8063438b6300146102745780634e795b1c146102945780636352211e146102b457600080fd5b806318160ddd116101a257806318160ddd1461022d578063198df8da14610245578063257a0c3914610258578063314ca0391461026b57600080fd5b80631411dab0146101c9578063150b7a02146101de57806316c38b3c1461021a575b600080fd5b6101dc6101d73660046111bc565b610440565b005b6101fc6101ec366004611045565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b6101dc61022836600461119a565b61044d565b6009546102379081565b604051908152602001610211565b6101dc61025336600461100b565b610468565b6102376102663660046111bc565b610492565b61023760065481565b61028761028236600461100b565b6104a3565b6040516102119190611210565b6102376102a23660046111bc565b600b6020526000908152604090205481565b6102dd6102c23660046111bc565b6000908152600a60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610211565b6003546102dd906001600160a01b031681565b610237610316366004611125565b61066c565b61023760075481565b6101dc610332366004611125565b6106b1565b61023761034536600461100b565b6107cb565b6101dc61083a565b6101dc6103603660046111ee565b61084e565b61023760055481565b6102dd61037c3660046111bc565b600a602052600090815260409020546001600160a01b031681565b6101dc6103a5366004611125565b610861565b6101dc6103b8366004611125565b610a9b565b6001546001600160a01b03166102dd565b6102376103dc36600461100b565b610d3d565b6101dc6103ef36600461100b565b610d54565b6101dc61040236600461100b565b610d7e565b6004546102dd906001600160a01b031681565b6002546102dd906001600160a01b031681565b6101dc61043b36600461100b565b610da8565b610448610e21565b600755565b610455610e21565b6008805460ff1916911515919091179055565b610470610e21565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600061049d82610e7b565b92915050565b600480546040516370a0823160e01b81526001600160a01b038481169382019390935260609260009216906370a082319060240160206040518083038186803b1580156104ef57600080fd5b505afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052791906111d5565b905060008167ffffffffffffffff811115610544576105446113b0565b60405190808252806020026020018201604052801561056d578160200160208202803683370190505b509050600060015b600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c357600080fd5b505afa1580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb91906111d5565b811015610662576000818152600a60205260409020546001600160a01b038781169116141561065057808383815181106106375761063761139a565b60209081029190910101528161064c81611369565b9250505b8061065a81611369565b915050610575565b5090949350505050565b60006106aa838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610efc92505050565b9392505050565b3233146106d95760405162461bcd60e51b81526004016106d090611254565b60405180910390fd5b600260005414156106fc5760405162461bcd60e51b81526004016106d09061128b565b60026000908155805b828110156107b75760008484838181106107215761072161139a565b602090810292909201356000818152600a909352604090922054919250506001600160a01b031633146107665760405162461bcd60e51b81526004016106d0906112c2565b61078785858481811061077b5761077b61139a565b90506020020135610e7b565b61079190846112f9565b6000918252600b60205260409091204290559150806107af81611369565b915050610705565b506107c181610f52565b5050600160005550565b60008060006107d960095490565b905060015b6107e98260016112f9565b8111610831576000818152600a60205260409020546001600160a01b038681169116141561081f578261081b81611369565b9350505b8061082981611369565b9150506107de565b50909392505050565b610842610e21565b61084c6000610fb9565b565b610856610e21565b600591909155600655565b3233146108805760405162461bcd60e51b81526004016106d090611254565b600260005414156108a35760405162461bcd60e51b81526004016106d09061128b565b600260005560085460ff16156108f15760405162461bcd60e51b8152602060048201526013602482015272436f6e7472616374206973207061757365642160681b60448201526064016106d0565b6000805b828110156107b75760008484838181106109115761091161139a565b602090810292909201356000818152600a909352604090922054919250506001600160a01b031633146109565760405162461bcd60e51b81526004016106d0906112c2565b60048054604051630852cd8d60e31b81529182018390526001600160a01b0316906342966c6890602401600060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b50506002546040516323b872dd60e01b8152306004820152336024820152604481018590526001600160a01b0390911692506323b872dd9150606401600060405180830381600087803b158015610a0457600080fd5b505af1158015610a18573d6000803e3d6000fd5b5050506000828152600a6020526040902080546001600160a01b031916905550610a4181610e7b565b610a4b90846112f9565b6000828152600b602052604080822082905551919450829133917f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7591a35080610a9381611369565b9150506108f5565b323314610aba5760405162461bcd60e51b81526004016106d090611254565b60026000541415610add5760405162461bcd60e51b81526004016106d09061128b565b600260005560085460ff1615610b2b5760405162461bcd60e51b8152602060048201526013602482015272436f6e7472616374206973207061757365642160681b60448201526064016106d0565b60005b818110156107c1576000838383818110610b4a57610b4a61139a565b6002546040516331a9108f60e11b815260209290920293909301356004820181905293506001600160a01b0390921691636352211e915060240160206040518083038186803b158015610b9c57600080fd5b505afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd49190611028565b6001600160a01b0316336001600160a01b031614610c045760405162461bcd60e51b81526004016106d0906112c2565b6002546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610c5657600080fd5b505af1158015610c6a573d6000803e3d6000fd5b5050600480546040516340c10f1960e01b81523392810192909252602482018590526001600160a01b031692506340c10f199150604401600060405180830381600087803b158015610cbb57600080fd5b505af1158015610ccf573d6000803e3d6000fd5b5050506000828152600a6020908152604080832080546001600160a01b03191633908117909155600b9092528083204290555184935090917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d91a35080610d3581611369565b915050610b2e565b600080610d49836104a3565b90506106aa81610efc565b610d5c610e21565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610d86610e21565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610db0610e21565b6001600160a01b038116610e155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d0565b610e1e81610fb9565b50565b6001546001600160a01b0316331461084c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d0565b6000818152600b6020526040812054801580610e98575060065481115b80610ea4575060055481105b15610eb25750600092915050565b60004260065411610ec557600654610ec7565b425b90506000610ed58383611352565b90506201518060075482610ee99190611333565b610ef39190611311565b95945050505050565b60008060005b8351811015610f4b57610f2d848281518110610f2057610f2061139a565b6020026020010151610e7b565b610f3790836112f9565b915080610f4381611369565b915050610f02565b5092915050565b6003546040516340c10f1960e01b8152336004820152602481018390526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015610f9e57600080fd5b505af1158015610fb2573d6000803e3d6000fd5b5050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020828403121561101d57600080fd5b81356106aa816113c6565b60006020828403121561103a57600080fd5b81516106aa816113c6565b6000806000806080858703121561105b57600080fd5b8435611066816113c6565b93506020850135611076816113c6565b925060408501359150606085013567ffffffffffffffff8082111561109a57600080fd5b818701915087601f8301126110ae57600080fd5b8135818111156110c0576110c06113b0565b604051601f8201601f19908116603f011681019083821181831017156110e8576110e86113b0565b816040528281528a602084870101111561110157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806020838503121561113857600080fd5b823567ffffffffffffffff8082111561115057600080fd5b818501915085601f83011261116457600080fd5b81358181111561117357600080fd5b8660208260051b850101111561118857600080fd5b60209290920196919550909350505050565b6000602082840312156111ac57600080fd5b813580151581146106aa57600080fd5b6000602082840312156111ce57600080fd5b5035919050565b6000602082840312156111e757600080fd5b5051919050565b6000806040838503121561120157600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156112485783518352928401929184019160010161122c565b50909695505050505050565b6020808252601e908201527f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601a908201527f596f7520646f206e6f74206f776e207468697320746f6b656e21000000000000604082015260600190565b6000821982111561130c5761130c611384565b500190565b60008261132e57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561134d5761134d611384565b500290565b60008282101561136457611364611384565b500390565b600060001982141561137d5761137d611384565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610e1e57600080fdfea26469706673582212200fd441875aa33900fac4ee32c23bdc64d2fca8b9a5076a685af8093a5b091d7e64736f6c63430008070033