60806040526031600b819055600c55600e805460ff60a81b1916600160a81b1790553480156200002e57600080fd5b506040518060400160405280600c81526020016b466f722074686520466f6d6f60a01b81525060405180604001604052806004815260200163212a21a360e11b81525062000081620004be60201b60201c565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38151620000de906005906020850190620005e4565b508051620000f4906006906020840190620005e4565b5062000102915050620004c2565b6200010f90600a62000796565b6200011d906103e862000881565b601155600a80546001600160a01b03191673a2d195766f4a374b87831bafae199af720aea0e21790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b1580156200019557600080fd5b505afa158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d091906200068a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021957600080fd5b505afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025491906200068a565b6040518363ffffffff1660e01b815260040162000273929190620006b3565b602060405180830381600087803b1580156200028e57600080fd5b505af1158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c991906200068a565b600e80546001600160a01b03199081166001600160a01b0393841617909155600d805490911691831691909117905560016007600062000308620004be565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155600a549091168352908220805490931681179092556008906200036f620004c7565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526008909352818320805485166001908117909155600a54909116835290822080549093168117909255600990620003d6620004c7565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526009909352818320805485166001908117909155600a54909116835291208054909216179055620004676200043b620004c7565b62000445620004c2565b6200045290600a62000796565b6200046190620f424062000881565b620004d6565b606462000473620005c4565b6200048090600362000881565b6200048c919062000728565b600f5560646200049b620005c4565b620004a890600362000881565b620004b4919062000728565b60105550620008f6565b3390565b601290565b6000546001600160a01b031690565b6001600160a01b038216620005085760405162461bcd60e51b8152600401620004ff90620006cd565b60405180910390fd5b6200051660008383620005ca565b6200053281600454620005cf60201b620012771790919060201c565b6004556001600160a01b0382166000908152600260209081526040909120546200056791839062001277620005cf821b17901c565b6001600160a01b0383166000818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620005b890859062000704565b60405180910390a35050565b60045490565b505050565b6000620005dd82846200070d565b9392505050565b828054620005f290620008a3565b90600052602060002090601f01602090048101928262000616576000855562000661565b82601f106200063157805160ff191683800117855562000661565b8280016001018555821562000661579182015b828111156200066157825182559160200191906001019062000644565b506200066f92915062000673565b5090565b5b808211156200066f576000815560010162000674565b6000602082840312156200069c578081fd5b81516001600160a01b0381168114620005dd578182fd5b6001600160a01b0392831681529116602082015260400190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60008219821115620007235762000723620008e0565b500190565b6000826200074457634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116200075d57506200078d565b818704821115620007725762000772620008e0565b808616156200078057918102915b9490941c9380026200074c565b94509492505050565b6000620005dd60001960ff851684600082620007b557506001620005dd565b81620007c457506000620005dd565b8160018114620007dd5760028114620007e8576200081c565b6001915050620005dd565b60ff841115620007fc57620007fc620008e0565b6001841b915084821115620008155762000815620008e0565b50620005dd565b5060208310610133831016604e8410600b841016171562000854575081810a838111156200084e576200084e620008e0565b620005dd565b62000863848484600162000749565b808604821115620008785762000878620008e0565b02949350505050565b60008160001904831182151516156200089e576200089e620008e0565b500290565b600281046001821680620008b857607f821691505b60208210811415620008da57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61214180620009066000396000f3fe6080604052600436106102345760003560e01c80636dd3d39f1161012e578063a457c2d7116100ab578063d4a5af841161006f578063d4a5af8414610632578063dd62ed3e14610647578063ea50cf4e14610667578063ec28438a14610687578063f2fde38b146106a75761023b565b8063a457c2d7146105a8578063a9059cbb146105c8578063b425bac3146105e8578063c9cf7789146105fd578063ca14a523146106125761023b565b80638e4d62af116100f25780638e4d62af146105135780639063d77d1461053357806392777e2a1461055357806395d89b41146105735780639904a1c3146105885761023b565b80636dd3d39f1461049457806370a08231146104b4578063715018a6146104d45780637d1db4a5146104e95780638da5cb5b146104fe5761023b565b80633d0dbec0116101bc5780635342acb4116101805780635342acb4146103ff57806355874a791461041f5780635d729d8c1461043f578063620158521461045f57806368d71cbe146104745761023b565b80633d0dbec01461038057806341cb87fc1461039557806347de4c5d146103b557806348eb61b6146103ca57806349bd5a5e146103ea5761023b565b806318160ddd1161020357806318160ddd146102dc57806323b872dd146102fe578063313ce5671461031e57806339509351146103405780633a9e00de146103605761023b565b806306fdde0314610240578063095ea7b31461026b578063120a0612146102985780631694505e146102ba5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102556106c7565b6040516102629190611b34565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611a64565b610759565b6040516102629190611b29565b3480156102a457600080fd5b506102b86102b3366004611987565b610776565b005b3480156102c657600080fd5b506102cf6107e0565b6040516102629190611ae2565b3480156102e857600080fd5b506102f16107ef565b6040516102629190611e15565b34801561030a57600080fd5b5061028b6103193660046119f7565b6107f5565b34801561032a57600080fd5b5061033361087d565b6040516102629190611e8e565b34801561034c57600080fd5b5061028b61035b366004611a64565b610882565b34801561036c57600080fd5b506102b861037b366004611ac7565b6108d0565b34801561038c57600080fd5b5061028b610932565b3480156103a157600080fd5b506102b86103b0366004611987565b610942565b3480156103c157600080fd5b506102f1610b18565b3480156103d657600080fd5b506102b86103e5366004611a37565b610b1e565b3480156103f657600080fd5b506102cf610b88565b34801561040b57600080fd5b5061028b61041a366004611987565b610b97565b34801561042b57600080fd5b5061028b61043a366004611987565b610bb5565b34801561044b57600080fd5b5061028b61045a366004611a64565b610bd3565b34801561046b57600080fd5b506102f1610c94565b34801561048057600080fd5b506102b861048f366004611ac7565b610c9a565b3480156104a057600080fd5b5061028b6104af366004611987565b610cde565b3480156104c057600080fd5b506102f16104cf366004611987565b610cfc565b3480156104e057600080fd5b506102b8610d17565b3480156104f557600080fd5b506102f1610da0565b34801561050a57600080fd5b506102cf610da6565b34801561051f57600080fd5b506102b861052e366004611a37565b610db5565b34801561053f57600080fd5b506102b861054e366004611ac7565b610e1f565b34801561055f57600080fd5b506102b861056e366004611ac7565b610e81565b34801561057f57600080fd5b50610255610f45565b34801561059457600080fd5b506102b86105a3366004611a37565b610f54565b3480156105b457600080fd5b5061028b6105c3366004611a64565b610fbe565b3480156105d457600080fd5b5061028b6105e3366004611a64565b611026565b3480156105f457600080fd5b506102cf61103a565b34801561060957600080fd5b506102f1611049565b34801561061e57600080fd5b506102b861062d366004611ac7565b61104f565b34801561063e57600080fd5b506102f1611093565b34801561065357600080fd5b506102f16106623660046119bf565b611099565b34801561067357600080fd5b506102b8610682366004611a8f565b6110c4565b34801561069357600080fd5b506102b86106a2366004611ac7565b611155565b3480156106b357600080fd5b506102b86106c2366004611987565b6111b7565b6060600580546106d690612021565b80601f016020809104026020016040519081016040528092919081815260200182805461070290612021565b801561074f5780601f106107245761010080835404028352916020019161074f565b820191906000526020600020905b81548152906001019060200180831161073257829003601f168201915b5050505050905090565b600061076d610766611283565b8484611287565b50600192915050565b61077e611283565b6001600160a01b031661078f610da6565b6001600160a01b0316146107be5760405162461bcd60e51b81526004016107b590611ca1565b60405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031681565b60045490565b600061080284848461133b565b6108728461080e611283565b61086d856040518060600160405280602881526020016120bf602891396001600160a01b038a1660009081526003602052604081209061084c611283565b6001600160a01b031681526020810191909152604001600020549190611674565b611287565b5060015b9392505050565b601290565b600061076d61088f611283565b8461086d85600360006108a0611283565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611277565b6108d8611283565b6001600160a01b03166108e9610da6565b6001600160a01b03161461090f5760405162461bcd60e51b81526004016107b590611ca1565b61091761087d565b61092290600a611f1a565b61092c9082611feb565b600f5550565b600e54600160a81b900460ff1681565b61094a611283565b6001600160a01b031661095b610da6565b6001600160a01b0316146109815760405162461bcd60e51b81526004016107b590611ca1565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156109bf57600080fd5b505afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f791906119a3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3f57600080fd5b505afa158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7791906119a3565b6040518363ffffffff1660e01b8152600401610a94929190611af6565b602060405180830381600087803b158015610aae57600080fd5b505af1158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae691906119a3565b600e80546001600160a01b039283166001600160a01b031991821617909155600d805493909216921691909117905550565b60115481565b610b26611283565b6001600160a01b0316610b37610da6565b6001600160a01b031614610b5d5760405162461bcd60e51b81526004016107b590611ca1565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b600e546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b031660009081526009602052604090205460ff1690565b6000610bdd611283565b6001600160a01b0316610bee610da6565b6001600160a01b031614610c145760405162461bcd60e51b81526004016107b590611ca1565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610c429033908690600401611b10565b602060405180830381600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611aab565b600b5481565b610ca2611283565b6001600160a01b0316610cb3610da6565b6001600160a01b031614610cd95760405162461bcd60e51b81526004016107b590611ca1565b600c55565b6001600160a01b031660009081526008602052604090205460ff1690565b6001600160a01b031660009081526002602052604090205490565b610d1f611283565b6001600160a01b0316610d30610da6565b6001600160a01b031614610d565760405162461bcd60e51b81526004016107b590611ca1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60105481565b6000546001600160a01b031690565b610dbd611283565b6001600160a01b0316610dce610da6565b6001600160a01b031614610df45760405162461bcd60e51b81526004016107b590611ca1565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b610e27611283565b6001600160a01b0316610e38610da6565b6001600160a01b031614610e5e5760405162461bcd60e51b81526004016107b590611ca1565b610e6661087d565b610e7190600a611f1a565b610e7b9082611feb565b60115550565b610e89611283565b6001600160a01b0316610e9a610da6565b6001600160a01b031614610ec05760405162461bcd60e51b81526004016107b590611ca1565b600080546040516001600160a01b03909116908390610ede90611adf565b60006040518083038185875af1925050503d8060008114610f1b576040519150601f19603f3d011682016040523d82523d6000602084013e610f20565b606091505b5050905080610f415760405162461bcd60e51b81526004016107b590611d1f565b5050565b6060600680546106d690612021565b610f5c611283565b6001600160a01b0316610f6d610da6565b6001600160a01b031614610f935760405162461bcd60e51b81526004016107b590611ca1565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600061076d610fcb611283565b8461086d856040518060600160405280602581526020016120e76025913960036000610ff5611283565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611674565b600061076d611033611283565b848461133b565b600a546001600160a01b031681565b600c5481565b611057611283565b6001600160a01b0316611068610da6565b6001600160a01b03161461108e5760405162461bcd60e51b81526004016107b590611ca1565b600b55565b600f5481565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6110cc611283565b6001600160a01b03166110dd610da6565b6001600160a01b0316146111035760405162461bcd60e51b81526004016107b590611ca1565b600e805460ff60a81b1916600160a81b831515021790556040517f4a4d2d81da99ab5c8fa132c1c87d7b3cd070a00ab9b3baef07d19c615b035aea9061114a908390611b29565b60405180910390a150565b61115d611283565b6001600160a01b031661116e610da6565b6001600160a01b0316146111945760405162461bcd60e51b81526004016107b590611ca1565b61119c61087d565b6111a790600a611f1a565b6111b19082611feb565b60105550565b6111bf611283565b6001600160a01b03166111d0610da6565b6001600160a01b0316146111f65760405162461bcd60e51b81526004016107b590611ca1565b6001600160a01b03811661121c5760405162461bcd60e51b81526004016107b590611bca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006108768284611e9c565b3390565b6001600160a01b0383166112ad5760405162461bcd60e51b81526004016107b590611dd1565b6001600160a01b0382166112d35760405162461bcd60e51b81526004016107b590611c10565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061132e908590611e15565b60405180910390a3505050565b6001600160a01b0383166113615760405162461bcd60e51b81526004016107b590611d4b565b6001600160a01b0382166113875760405162461bcd60e51b81526004016107b590611b87565b600081116113a75760405162461bcd60e51b81526004016107b590611cd6565b6113af610da6565b6001600160a01b0316836001600160a01b0316141580156113e957506113d3610da6565b6001600160a01b0316826001600160a01b031614155b15611456576001600160a01b03831660009081526009602052604090205460ff168061142d57506001600160a01b03821660009081526009602052604090205460ff165b8061143a57506010548111155b6114565760405162461bcd60e51b81526004016107b590611c52565b61145e610da6565b6001600160a01b0316836001600160a01b03161415801561148857506001600160a01b0382163014155b80156114a25750600e546001600160a01b03838116911614155b156115055760006114b283610cfc565b6001600160a01b03841660009081526008602052604090205490915060ff16806114e75750600f546114e48383611e9c565b11155b6115035760405162461bcd60e51b81526004016107b590611d90565b505b600061151030610cfc565b601154909150811080159081906115315750600e54600160a01b900460ff16155b801561154b5750600e546001600160a01b03868116911614155b80156115605750600e54600160a81b900460ff165b15611573576011549150611573826116a0565b6001600160a01b03851660009081526007602052604090205460019060ff16806115b557506001600160a01b03851660009081526007602052604090205460ff165b156115cd576115c5868686611849565b50600061166c565b600e546001600160a01b038781169116141561162f57600061160560646115ff600b548861195e90919063ffffffff16565b9061196a565b90506116118582611976565b945061161e873083611849565b611629878787611849565b5061166c565b600e546001600160a01b038681169116141561166157600061160560646115ff600c548861195e90919063ffffffff16565b61166c868686611849565b505050505050565b600081848411156116985760405162461bcd60e51b81526004016107b59190611b34565b505050900390565b600e805460ff60a01b1916600160a01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106116f657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561174a57600080fd5b505afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178291906119a3565b816001815181106117a357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600d546117c99130911684611287565b600d54600a5460405163791ac94760e01b81526001600160a01b039283169263791ac9479261180692879260009288929116904290600401611e1e565b600060405180830381600087803b15801561182057600080fd5b505af1158015611834573d6000803e3d6000fd5b5050600e805460ff60a01b1916905550505050565b6001600160a01b03831661186f5760405162461bcd60e51b81526004016107b590611d4b565b6001600160a01b0382166118955760405162461bcd60e51b81526004016107b590611b87565b6118a0838383611982565b6118dd81604051806060016040528060268152602001612099602691396001600160a01b0386166000908152600260205260409020549190611674565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461190c9082611277565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061132e908590611e15565b60006108768284611feb565b60006108768284611eb4565b6000610876828461200a565b505050565b600060208284031215611998578081fd5b813561087681612072565b6000602082840312156119b4578081fd5b815161087681612072565b600080604083850312156119d1578081fd5b82356119dc81612072565b915060208301356119ec81612072565b809150509250929050565b600080600060608486031215611a0b578081fd5b8335611a1681612072565b92506020840135611a2681612072565b929592945050506040919091013590565b60008060408385031215611a49578182fd5b8235611a5481612072565b915060208301356119ec8161208a565b60008060408385031215611a76578182fd5b8235611a8181612072565b946020939093013593505050565b600060208284031215611aa0578081fd5b81356108768161208a565b600060208284031215611abc578081fd5b81516108768161208a565b600060208284031215611ad8578081fd5b5035919050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602080835283518082850152825b81811015611b6057858101830151858201604001528201611b44565b81811115611b715783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252602f908201527f45524332303a205472616e7366657220616d6f756e742065786365656473207460408201526e34329036b0bc2a3c20b6b7bab73a1760891b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b6020808252601290820152712330b4b632b2103a379039b2b7321021272160711b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526021908201527f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e6040820152606760f81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611e6d5784516001600160a01b031683529383019391830191600101611e48565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b60008219821115611eaf57611eaf61205c565b500190565b600082611ecf57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611611ee65750611f11565b818704821115611ef857611ef861205c565b80861615611f0557918102915b9490941c938002611ed7565b94509492505050565b600061087660001960ff851684600082611f3657506001610876565b81611f4357506000610876565b8160018114611f595760028114611f6357611f90565b6001915050610876565b60ff841115611f7457611f7461205c565b6001841b915084821115611f8a57611f8a61205c565b50610876565b5060208310610133831016604e8410600b8410161715611fc3575081810a83811115611fbe57611fbe61205c565b610876565b611fd08484846001611ed4565b808604821115611fe257611fe261205c565b02949350505050565b60008160001904831182151516156120055761200561205c565b500290565b60008282101561201c5761201c61205c565b500390565b60028104600182168061203557607f821691505b6020821081141561205657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461208757600080fd5b50565b801515811461208757600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206210aa1dc3ed7d0bd0897f42044a43c074c9bfaa5768ef6191512808168da8d364736f6c63430008000033