0x608060405260016005556064600755348015610019575f80fd5b506040516110a93803806110a983398101604081905261003891610141565b60015f55806001600160a01b03811661006b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61007481610084565b5061007e816100d5565b5061016e565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6100dd610112565b6001600160a01b03811661010657604051631e4fbdf760e01b81525f6004820152602401610062565b61010f81610084565b50565b6001546001600160a01b0316331461013f5760405163118cdaa760e01b8152336004820152602401610062565b565b5f60208284031215610151575f80fd5b81516001600160a01b0381168114610167575f80fd5b9392505050565b610f2e8061017b5f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c8063918b72d61161009e578063bf7c10d91161006e578063bf7c10d914610244578063ecbf21d614610267578063f262fbd01461027a578063f2fde38b1461028d578063f91022ed146102a0575f80fd5b8063918b72d61461019f578063a001ecdd146101a8578063acd6c98f146101b1578063b888879e14610231575f80fd5b8063715018a6116100d9578063715018a61461015757806373bbfe601461015f5780638adf9afb146101725780638da5cb5b1461017a575f80fd5b806303105b041461010a578063372aa2241461011f578063445a5554146101325780636d5716db1461014e575b5f80fd5b61011d610118366004610d19565b6102b3565b005b61011d61012d366004610d4a565b6103ac565b61013b60075481565b6040519081526020015b60405180910390f35b61013b60095481565b61011d610431565b61011d61016d366004610d19565b610444565b61011d6104e6565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610145565b61013b60065481565b61013b60055481565b6101fc6101bf366004610d6a565b60086020525f9081526040902080546001820154600283015460038401546004909401546001600160a01b03938416949390921692909160ff1685565b604080516001600160a01b0396871681529590941660208601529284019190915260608301521515608082015260a001610145565b600254610187906001600160a01b031681565b610257610252366004610d19565b61079b565b6040519015158152602001610145565b600354610187906001600160a01b031681565b600454610187906001600160a01b031681565b61011d61029b366004610d4a565b6108d9565b61011d6102ae366004610d95565b610916565b6102bb610b6a565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301525f919084169063dd62ed3e90604401602060405180830381865afa158015610308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032c9190610e83565b9050805f036103a75760405163095ea7b360e01b81526001600160a01b0383811660048301525f19602483015284169063095ea7b3906044016020604051808303815f875af1158015610381573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a59190610e9a565b505b505050565b6103b4610b6a565b6001600160a01b03811661040f5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642070726963652070726f76696465722061646472657373000060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b610439610b6a565b6104425f610b97565b565b61044c610b6a565b6001600160a01b0382161580159061046c57506001600160a01b03811615155b6104b85760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642065786368616e6765206164647265737300000000000000006044820152606401610406565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6104ee610b6a565b6104f6610be8565b5f600954116105475760405162461bcd60e51b815260206004820152601760248201527f4e6f206f70706f7274756e69746965732073746f7265640000000000000000006044820152606401610406565b5f60085f600160095461055a9190610ecd565b815260208101919091526040015f20600481015490915060ff16156105c15760405162461bcd60e51b815260206004820152601c60248201527f4f70706f7274756e69747920616c7265616479206578656375746564000000006044820152606401610406565b80545f906105d7906001600160a01b0316610c3f565b60018301549091505f906105f3906001600160a01b0316610c3f565b90507f3c5ad147104e56be34a9176a6692f7df8d2f4b29a5af06bc6b98970d329d65778260405161064a919060408082526009908201526842757920507269636560b81b6060820152602081019190915260800190565b60405180910390a160408051818152600a818301526953656c6c20507269636560b01b60608201526020810183905290517f3c5ad147104e56be34a9176a6692f7df8d2f4b29a5af06bc6b98970d329d65779181900360800190a181811115610727575f6106b88383610ecd565b60048501805460ff191660019081179091558581015486546009549394506001600160a01b03918216939116916106ee91610ecd565b6040518481527f4d8ed93024d44d20987d09aa797037f5d3d26a13e5ed3264af508992099fd5649060200160405180910390a45061078f565b7fcc8610635659273962514cbb1e149386cc83625cb5595394a01869a0c3fbf7cb6040516107869060208082526018908201527f4e6f20617262697472616765206f70706f7274756e6974790000000000000000604082015260600190565b60405180910390a15b50505061044260015f55565b6002545f906001600160a01b03166107ee5760405162461bcd60e51b8152602060048201526016602482015275141c9a58d9481c1c9bdd9a59195c881b9bdd081cd95d60521b6044820152606401610406565b600254604051630681320d60e51b81526001600160a01b0385811660048301525f92169063d02641a090602401602060405180830381865afa158015610836573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085a9190610e83565b600254604051630681320d60e51b81526001600160a01b0386811660048301529293505f929091169063d02641a090602401602060405180830381865afa1580156108a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190610e83565b919091119150505b92915050565b6108e1610b6a565b6001600160a01b03811661090a57604051631e4fbdf760e01b81525f6004820152602401610406565b61091381610b97565b50565b61091e610b6a565b5f8651116109675760405162461bcd60e51b815260206004820152601660248201527553796d626f6c2063616e6e6f7420626520656d70747960501b6044820152606401610406565b6001600160a01b0385161580159061098757506001600160a01b03841615155b6109d35760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e20616464726573736573206d7573742062652076616c69640000006044820152606401610406565b5f831180156109e157505f82115b610a2d5760405162461bcd60e51b815260206004820152601d60248201527f507269636573206d7573742062652067726561746572207468616e20300000006044820152606401610406565b5f8111610a7c5760405162461bcd60e51b815260206004820152601d60248201527f50726f666974206d7573742062652067726561746572207468616e20300000006044820152606401610406565b6040805160a0810182526001600160a01b0387811680835287821660208085018281528587018a8152606087018a81525f6080890181815260098054835260088752918b902099518a54908a166001600160a01b0319918216178b55945160018b01805491909a1695169490941790975590516002880155516003870155516004909501805495151560ff199096169590951790945591548451888152938401879052919390927fe147554c5bdeeda75ce8aa7132cd7f8bdbf569da6825ac3ff0593fd771694b65910160405180910390a460098054905f610b5d83610ee0565b9190505550505050505050565b6001546001600160a01b031633146104425760405163118cdaa760e01b8152336004820152602401610406565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60025f5403610c395760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610406565b60025f55565b6002545f906001600160a01b0316610c925760405162461bcd60e51b8152602060048201526016602482015275141c9a58d9481c1c9bdd9a59195c881b9bdd081cd95d60521b6044820152606401610406565b600254604051630681320d60e51b81526001600160a01b0384811660048301529091169063d02641a090602401602060405180830381865afa158015610cda573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d39190610e83565b80356001600160a01b0381168114610d14575f80fd5b919050565b5f8060408385031215610d2a575f80fd5b610d3383610cfe565b9150610d4160208401610cfe565b90509250929050565b5f60208284031215610d5a575f80fd5b610d6382610cfe565b9392505050565b5f60208284031215610d7a575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f805f8060c08789031215610daa575f80fd5b863567ffffffffffffffff811115610dc0575f80fd5b8701601f81018913610dd0575f80fd5b803567ffffffffffffffff811115610dea57610dea610d81565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610e1957610e19610d81565b6040528181528282016020018b1015610e30575f80fd5b816020840160208301375f60208383010152809850505050610e5460208801610cfe565b9450610e6260408801610cfe565b959894975094956060810135955060808101359460a0909101359350915050565b5f60208284031215610e93575f80fd5b5051919050565b5f60208284031215610eaa575f80fd5b81518015158114610d63575f80fd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156108d3576108d3610eb9565b5f60018201610ef157610ef1610eb9565b506001019056fea2646970667358221220e9643e0aaa773c2b9fcbadb7ebf8583472fa6f031e29db4a51b1ce44adcaaf8364736f6c634300081a00330000000000000000000000005c9b101bed7d1b0d289217f1821e65090a040411