0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611865806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80638a6876ad11610130578063bb3d676a116100b8578063d5fcc7b61161007c578063d5fcc7b6146104a2578063df1dcaa9146104b5578063f2fde38b146104c8578063fe575a87146104db578063ffdf50ca146104fe57600080fd5b8063bb3d676a14610401578063bce3d22914610414578063cddb3e7b1461041d578063cfb5088014610482578063d135cc4b1461049557600080fd5b806399a03316116100ff57806399a03316146103b6578063a2061f08146103bf578063a8b38205146103d2578063aecb480c146103db578063b6b55f25146103ee57600080fd5b80638a6876ad146103765780638da5cb5b1461037f578063916c22e71461039057806391c61966146103a357600080fd5b806351ed6a30116101b357806378703f851161018257806378703f8514610320578063799adc921461033357806379ee54f71461033c5780637da066941461034f57806389daf7991461036357600080fd5b806351ed6a30146102e957806363d9df85146102fc5780636e8a4bd41461030f578063715018a61461031857600080fd5b80632c657d12116101fa5780632c657d121461028c5780633bcfc4b8146102ae5780633ccfd60b146102c557806343849634146102cd578063447bfda9146102e057600080fd5b80630397d4581461022c578063062287491461024157806324f45e67146102715780632be11ae214610284575b600080fd5b61023f61023a366004611543565b610511565b005b606f54610254906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61023f61027f366004611565565b61053b565b61023f610548565b606c5461029e90610100900460ff1681565b6040519015158152602001610268565b6102b7606a5481565b604051908152602001610268565b61023f6105ac565b61023f6102db366004611565565b6108e4565b6102b760715481565b606554610254906001600160a01b031681565b606654610254906001600160a01b031681565b6102b760705481565b61023f6108f1565b61023f61032e36600461158c565b610903565b6102b760725481565b6102b761034a366004611543565b610944565b606f5461029e90600160a01b900460ff1681565b61023f6103713660046115c1565b610aac565b6102b760675481565b6033546001600160a01b0316610254565b61023f61039e366004611636565b610b2b565b61023f6103b1366004611653565b610b4d565b6102b760685481565b606c5461029e9062010000900460ff1681565b6102b760695481565b61023f6103e9366004611636565b610d23565b61023f6103fc366004611565565b610d47565b61023f61040f3660046115c1565b610ed0565b6102b7606b5481565b61045a61042b366004611543565b606d60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610268565b61023f61049036600461167d565b610f4a565b606c5461029e9060ff1681565b61023f6104b0366004611543565b610f60565b61023f6104c3366004611565565b610f8a565b61023f6104d6366004611543565b610f97565b61029e6104e9366004611543565b606e6020526000908152604090205460ff1681565b61023f61050c366004611636565b611010565b61051961102b565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b61054361102b565b606a55565b606c5462010000900460ff16156105a15760405162461bcd60e51b8152602060048201526018602482015277111a5c9958dd081cdd185ada5b99c81a5cc81b1bd8dad95960421b60448201526064015b60405180910390fd5b6105aa33611085565b565b336000908152606e602052604090205460ff16156105dc5760405162461bcd60e51b8152600401610598906116a9565b606c5460ff16156106275760405162461bcd60e51b815260206004820152601560248201527415da5d1a191c9dd85b1cc8185c9948131bd8dad959605a1b6044820152606401610598565b60705461066c5760405162461bcd60e51b81526020600482015260136024820152721b995dd31bd8dad51a5b59481b9bdd081cd95d606a1b6044820152606401610598565b336000908152606d6020908152604091829020825160a081018452815480825260018301549382019390935260028201549381019390935260038101546060840152600401546080830152806107045760405162461bcd60e51b815260206004820152601d60248201527f576974686472617720616d6f756e742063616e2774206265207a65726f0000006044820152606401610598565b42607054836020015161071791906116f6565b1061084957606f54600160a01b900460ff166107755760405162461bcd60e51b815260206004820152601d60248201527f6561726c7920756e7374616b65206e6f7420656e61626c6564207965740000006044820152606401610598565b6000606b54607054606b54856020015142610790919061170e565b61079a9190611725565b6107a49085611725565b6107ae9190611744565b6107b89190611744565b604080518481526020810183905291925033917fb4115240622929227da67f15b4edda83e19401016eeac083f5435ae1098090f1910160405180910390a2606f54610823906001600160a01b0316610810838561170e565b6065546001600160a01b03169190611255565b60655461083a906001600160a01b03163383611255565b61084333611085565b5061089e565b61085233611085565b60405181815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a260655461089e906001600160a01b03163383611255565b80606860008282546108b0919061170e565b9091555050336000908152606d60205260408120818155600181018290556002810182905560038101829055600401555050565b6108ec61102b565b607055565b6108f961102b565b6105aa60006112b8565b61090b61102b565b606f80546001600160a81b031916600160a01b931515939093026001600160a01b031916929092176001600160a01b0391909116179055565b6001600160a01b0381166000908152606d60209081526040808320815160a08101835281548152600182015493810193909352600281015491830191909152600381015460608301526004015460808201819052606b5483916301e1338091906109ae904261170e565b6109b89190611725565b6109c29190611744565b905060006064606b548460000151606a54856109de9190611725565b6109e89190611725565b6109f29190611744565b6109fc9190611744565b905060725483608001511015610aa45760006072544211610a1d5742610a21565b6072545b905060006301e13380606b54866080015184610a3d919061170e565b610a479190611725565b610a519190611744565b90506064606b548660000151606a54607154610a6d919061170e565b610a779085611725565b610a819190611725565b610a8b9190611744565b610a959190611744565b610a9f90846116f6565b925050505b949350505050565b610ab461102b565b60005b81811015610b26576000606e6000858585818110610ad757610ad7611766565b9050602002016020810190610aec9190611543565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b1e8161177c565b915050610ab7565b505050565b610b3361102b565b606c80549115156101000261ff0019909216919091179055565b6066546001600160a01b03163314610bb85760405162461bcd60e51b815260206004820152602860248201527f54686973206d6574686f64206973206f6e6c7920666f722070726573616c652060448201526710dbdb9d1c9858dd60c21b6064820152608401610598565b6001600160a01b0382166000908152606e602052604090205460ff1615610bf15760405162461bcd60e51b8152600401610598906116a9565b60008111610c415760405162461bcd60e51b815260206004820152601c60248201527f4465706f73697420616d6f756e742063616e2774206265207a65726f000000006044820152606401610598565b6001600160a01b0382166000908152606d60205260409020610c6283611085565b81816000016000828254610c7691906116f6565b90915550504260018201819055606954610c8f916116f6565b81600301819055508160686000828254610ca991906116f6565b925050819055508160676000828254610cc291906116f6565b90915550506040518281526001600160a01b038416907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a2606654606554610b26916001600160a01b039182169116308561130a565b610d2b61102b565b606c8054911515620100000262ff000019909216919091179055565b336000908152606e602052604090205460ff1615610d775760405162461bcd60e51b8152600401610598906116a9565b60008111610dc75760405162461bcd60e51b815260206004820152601c60248201527f4465706f73697420616d6f756e742063616e2774206265207a65726f000000006044820152606401610598565b606c54610100900460ff1615610e1a5760405162461bcd60e51b8152602060048201526018602482015277111a5c9958dd081cdd185ada5b99c81a5cc81b1bd8dad95960421b6044820152606401610598565b336000818152606d6020526040902090610e3390611085565b81816000016000828254610e4791906116f6565b90915550504260018201819055606954610e60916116f6565b81600301819055508160686000828254610e7a91906116f6565b909155505060405182815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a2606554610ecc906001600160a01b031633308561130a565b5050565b610ed861102b565b60005b81811015610b26576001606e6000858585818110610efb57610efb611766565b9050602002016020810190610f109190611543565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f428161177c565b915050610edb565b610f5261102b565b607192909255607255606a55565b610f6861102b565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b610f9261102b565b606955565b610f9f61102b565b6001600160a01b0381166110045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610598565b61100d816112b8565b50565b61101861102b565b606c805460ff1916911515919091179055565b6033546001600160a01b031633146105aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610598565b6001600160a01b0381166000908152606e602052604090205460ff16156110be5760405162461bcd60e51b8152600401610598906116a9565b6001600160a01b0381166000908152606d60205260408120606b5460048201549192916301e1338091906110f2904261170e565b6110fc9190611725565b6111069190611744565b905060006064606b548460000154606a54856111229190611725565b61112c9190611725565b6111369190611744565b6111409190611744565b9050607254836004015410156111e857600060725442116111615742611165565b6072545b905060006301e13380606b54866004015484611181919061170e565b61118b9190611725565b6111959190611744565b90506064606b548660000154606a546071546111b1919061170e565b6111bb9085611725565b6111c59190611725565b6111cf9190611744565b6111d99190611744565b6111e390846116f6565b925050505b426004840155801561124f5760655461120b906001600160a01b03168583611255565b836001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe8260405161124691815260200190565b60405180910390a25b50505050565b6040516001600160a01b038316602482015260448101829052610b2690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611342565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261124f9085906323b872dd60e01b90608401611281565b6000611397826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114179092919063ffffffff16565b90508051600014806113b85750808060200190518101906113b89190611797565b610b265760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610598565b6060610aa4848460008585600080866001600160a01b0316858760405161143e91906117e0565b60006040518083038185875af1925050503d806000811461147b576040519150601f19603f3d011682016040523d82523d6000602084013e611480565b606091505b5091509150610a9f87838387606083156114f85782516114f1576001600160a01b0385163b6114f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610598565b5081610aa4565b610aa4838381511561150d5781518083602001fd5b8060405162461bcd60e51b815260040161059891906117fc565b80356001600160a01b038116811461153e57600080fd5b919050565b60006020828403121561155557600080fd5b61155e82611527565b9392505050565b60006020828403121561157757600080fd5b5035919050565b801515811461100d57600080fd5b6000806040838503121561159f57600080fd5b82356115aa8161157e565b91506115b860208401611527565b90509250929050565b600080602083850312156115d457600080fd5b823567ffffffffffffffff808211156115ec57600080fd5b818501915085601f83011261160057600080fd5b81358181111561160f57600080fd5b8660208260051b850101111561162457600080fd5b60209290920196919550909350505050565b60006020828403121561164857600080fd5b813561155e8161157e565b6000806040838503121561166657600080fd5b61166f83611527565b946020939093013593505050565b60008060006060848603121561169257600080fd5b505081359360208301359350604090920135919050565b6020808252601b908201527f54686973204164647265737320697320426c61636b6c69737465640000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611709576117096116e0565b500190565b600082821015611720576117206116e0565b500390565b600081600019048311821515161561173f5761173f6116e0565b500290565b60008261176157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611790576117906116e0565b5060010190565b6000602082840312156117a957600080fd5b815161155e8161157e565b60005b838110156117cf5781810151838201526020016117b7565b8381111561124f5750506000910152565b600082516117f28184602087016117b4565b9190910192915050565b602081526000825180602084015261181b8160408501602087016117b4565b601f01601f1916919091016040019291505056fea2646970667358221220d9f2e5975903143dd4600eca767cf43bbbf8c578b7ebbe659dffaf90e055290064736f6c63430008090033