608060405234801561000f575f80fd5b506100193361001e565b61006d565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61454e8061007a5f395ff3fe608060405234801562000010575f80fd5b50600436106200018b575f3560e01c8063715018a611620000eb57806399d2041f116200009f578063d0fb02031162000077578063d0fb020314620003a0578063d1a79cee14620003b4578063e10a312d14620003cb578063f2fde38b14620003e2575f80fd5b806399d2041f146200034a578063a4bf26b61462000375578063b2b64625146200038c575f80fd5b8063715018a614620002e057806375bea16614620002ea5780637a08345614620003015780638ce9cc55146200030b5780638da5cb5b1462000322578063962705f31462000333575f80fd5b80633ad791d111620001435780633ad791d11462000254578063472d35b9146200026b578063631a423114620002825780636c0360eb14620002995780636cd2e50614620002b25780636d44a3b214620002c9575f80fd5b8062a331d1146200018f57806304a124c314620001a857806313e7c9d814620001bf57806324f91d8314620001f95780633957f45314620002105780633ab25c3c146200023d575b5f80fd5b620001a6620001a0366004620017c6565b620003f9565b005b620001a6620001b9366004620017fc565b62000561565b620001e4620001d036600462001838565b60066020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b620001a66200020a36600462001937565b620005cb565b60035462000224906001600160a01b031681565b6040516001600160a01b039091168152602001620001f0565b620002246200024e36600462001838565b62000683565b620001a66200026536600462001afa565b620007bd565b620001a66200027c36600462001838565b620007cf565b620001a66200029336600462001b60565b620007fb565b620002a3620009c3565b604051620001f0919062001c0d565b620001a6620002c336600462001838565b62000a57565b620001a6620002da36600462001c21565b62000a83565b620001a662000ae0565b62000224620002fb36600462001c55565b62000af7565b620001a662000b20565b620001a66200031c366004620017fc565b62000b9f565b5f546001600160a01b031662000224565b620001a66200034436600462001c6d565b62000c90565b620002246200035b36600462001838565b60056020525f90815260409020546001600160a01b031681565b620001a662000386366004620017c6565b62000cfb565b60025462000224906001600160a01b031681565b60015462000224906001600160a01b031681565b620001a6620003c536600462001cfb565b62000e35565b620001a6620003dc36600462001da1565b62000e4d565b620001a6620003f336600462001838565b62000f3c565b6200040362000fbb565b815b818110156200055c57600354604051633adf50b360e11b8152600481018390526001600160a01b03909116906375bea16690602401602060405180830381865afa92505050801562000476575060408051601f3d908101601f19168201909252620004739181019062001dde565b60015b620004f2576200048562001dfc565b806308c379a003620004e857506200049c62001e16565b80620004a95750620004ea565b7f1a105f82e7a73e98ff8b7e5e0479a23ba4df818edeafeec2e4bdfe52624b3ba181604051620004da919062001ea4565b60405180910390a150505050565b505b3d5f803e3d5ffd5b6003546200050b9082906001600160a01b031662000561565b600354604080516001600160a01b03808516825290921660208301527f844985ce6880ca51e25a6d4ecc8af37a5de880279f2081af96d0e875c42b7082910160405180910390a15060010162000405565b505050565b6200056b62000fbb565b6040516329605e7760e01b81526001600160a01b0382811660048301528391908216906329605e77906024015f604051808303815f87803b158015620005af575f80fd5b505af1158015620005c2573d5f803e3d5ffd5b50505050505050565b60075460ff16156200061a5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b6007805460ff19166001908117909155600380546001600160a01b038088166001600160a01b0319928316179092558254868316908216179092556002805491851691909216179055600862000671828262001f66565b506200067d3362001016565b50505050565b6001600160a01b038181165f9081526005602052604081205490911615620006c357506001600160a01b039081165f908152600560205260409020541690565b6003546040516399d2041f60e01b81526001600160a01b0384811660048301525f9216906399d2041f90602401602060405180830381865afa1580156200070c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000732919062001dde565b6001600160a01b031614620007b6576003546040516399d2041f60e01b81526001600160a01b038481166004830152909116906399d2041f90602401602060405180830381865afa1580156200078a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007b0919062001dde565b92915050565b505f919050565b620007cb8282333362001065565b5050565b620007d962000fbb565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f620008073362000683565b6001600160a01b0316146200085f5760405162461bcd60e51b815260206004820152601e60248201527f596f757220636f6e747261637420686173206265656e20637265617465640000604482015260640162000611565b5f828233306040516200087290620017b8565b6200088194939291906200202e565b604051809103905ff0801580156200089b573d5f803e3d5ffd5b50335f90815260056020526040812080546001600160a01b0384166001600160a01b03199182168117909255600480546001810182559084527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054909116821790559192509060089062000913906014620015fe565b604051602001620009269291906200207b565b60408051601f19818403018152908290526355f804b360e01b825291506001600160a01b038316906355f804b3906200096490849060040162001c0d565b5f604051808303815f87803b1580156200097c575f80fd5b505af11580156200098f573d5f803e3d5ffd5b50506040513392507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31291505f90a250505050565b60088054620009d29062001edd565b80601f016020809104026020016040519081016040528092919081815260200182805462000a009062001edd565b801562000a4f5780601f1062000a255761010080835404028352916020019162000a4f565b820191905f5260205f20905b81548152906001019060200180831162000a3157829003601f168201915b505050505081565b62000a6162000fbb565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b62000a8d62000fbb565b6001600160a01b0382165f81815260066020526040808220805460ff191685151590811790915590519092917f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d91a35050565b62000aea62000fbb565b62000af55f62001016565b565b6004818154811062000b07575f80fd5b5f918252602090912001546001600160a01b0316905081565b62000b2a62000fbb565b6003546001600160a01b031663f2fde38b62000b4d5f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b15801562000b8c575f80fd5b505af11580156200067d573d5f803e3d5ffd5b62000ba962000fbb565b5f62000bb58362000683565b60405163f2fde38b60e01b81526001600160a01b0384811660048301529192509082169063f2fde38b906024015f604051808303815f87803b15801562000bfa575f80fd5b505af115801562000c0d573d5f803e3d5ffd5b505050506001600160a01b038381165f81815260056020908152604080832080546001600160a01b031990811690915587861680855293829020805490911695871695861790558051938452908301919091527fc580cc8512925d90067d733f94ef062e5a3034681bf3c98be58de1282db5bc41910160405180910390a2505050565b335f9081526006602052604090205460ff16151560011462000ced5760405162461bcd60e51b81526020600482015260156024820152744f70657261746f72206163636f756e74206f6e6c7960581b604482015260640162000611565b6200067d8484848462001065565b62000d0562000fbb565b815b818110156200055c57600354604051633adf50b360e11b8152600481018390526001600160a01b03909116906375bea16690602401602060405180830381865afa92505050801562000d78575060408051601f3d908101601f1916820190925262000d759181019062001dde565b60015b62000d87576200048562001dfc565b6003546040516378f5689360e11b81526001600160a01b0383811660048301523060248301529091169063f1ead126906044015f604051808303815f87803b15801562000dd2575f80fd5b505af115801562000de5573d5f803e3d5ffd5b5050604080516001600160a01b03851681523060208201527f844985ce6880ca51e25a6d4ecc8af37a5de880279f2081af96d0e875c42b7082935001905060405180910390a15060010162000d07565b62000e418484620007fb565b6200067d8282620007bd565b62000e5762000fbb565b600862000e65828262001f66565b505f805b6004548110156200055c576004818154811062000e8a5762000e8a62002114565b5f9182526020822001546001600160a01b03169250600862000eae846014620015fe565b60405160200162000ec19291906200207b565b60408051601f19818403018152908290526355f804b360e01b825291506001600160a01b038416906355f804b39062000eff90849060040162001c0d565b5f604051808303815f87803b15801562000f17575f80fd5b505af115801562000f2a573d5f803e3d5ffd5b50506001909301925062000e69915050565b62000f4662000fbb565b6001600160a01b03811662000fad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000611565b62000fb88162001016565b50565b5f546001600160a01b0316331462000af55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000611565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f80620010728462000683565b6001600160a01b031603620010ca5760405162461bcd60e51b815260206004820152601a60248201527f43726561746520796f757220636f6e7472616374206669727374000000000000604482015260640162000611565b620010d58362000683565b90505f5b8451811015620015f6575f858281518110620010f957620010f962002114565b60200260200101511115620013b1576002546001600160a01b0316620011625760405162461bcd60e51b815260206004820152601f60248201527f4d61726b6574706c61636520636f6e7472616374206973206e6f742073657400604482015260640162000611565b6040516335313c2160e11b81523060048201526001600160a01b03831690636a627842906024015f604051808303815f87803b158015620011a1575f80fd5b505af1158015620011b4573d5f803e3d5ffd5b50505050816001600160a01b031663095ea7b360025f9054906101000a90046001600160a01b0316846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001219573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200123f919062002128565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b15801562001283575f80fd5b505af115801562001296573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b031663bb5b27428484856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001322919062002128565b89868151811062001337576200133762002114565b60209081029190910101516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084015f604051808303815f87803b15801562001394575f80fd5b505af1158015620013a7573d5f803e3d5ffd5b505050506200140a565b6040516335313c2160e11b81526001600160a01b038481166004830152831690636a627842906024015f604051808303815f87803b158015620013f2575f80fd5b505af115801562001405573d5f803e3d5ffd5b505050505b816001600160a01b0316846001600160a01b03167f4295d2b1367fb5160623fff2bc74d02d4d2bd5f449ee8c23b060f42a94ce460f846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200147c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620014a2919062002128565b60405190815260200160405180910390a3855115620015ed576001546001600160a01b0316620015155760405162461bcd60e51b815260206004820152601e60248201527f4665654d616e6167657220636f6e7472616374206973206e6f74207365740000604482015260640162000611565b60015f9054906101000a90046001600160a01b03166001600160a01b031663f182214e8784856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001577573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200159d919062002128565b6040518463ffffffff1660e01b8152600401620015bd9392919062002140565b5f604051808303815f87803b158015620015d5575f80fd5b505af1158015620015e8573d5f803e3d5ffd5b505050505b600101620010d9565b505050505050565b60605f6200160e836002620021c1565b6200161b906002620021db565b6001600160401b0381111562001635576200163562001856565b6040519080825280601f01601f19166020018201604052801562001660576020820181803683370190505b509050600360fc1b815f815181106200167d576200167d62002114565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110620016ae57620016ae62002114565b60200101906001600160f81b03191690815f1a9053505f620016d2846002620021c1565b620016df906001620021db565b90505b600181111562001760576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062001717576200171762002114565b1a60f81b82828151811062001730576200173062002114565b60200101906001600160f81b03191690815f1a90535060049490941c936200175881620021f1565b9050620016e2565b508315620017b15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000611565b9392505050565b61230f806200220a83390190565b5f8060408385031215620017d8575f80fd5b50508035926020909101359150565b6001600160a01b038116811462000fb8575f80fd5b5f80604083850312156200180e575f80fd5b82356200181b81620017e7565b915060208301356200182d81620017e7565b809150509250929050565b5f6020828403121562001849575f80fd5b8135620017b181620017e7565b634e487b7160e01b5f52604160045260245ffd5b604081018181106001600160401b03821117156200188c576200188c62001856565b60405250565b601f8201601f191681016001600160401b0381118282101715620018ba57620018ba62001856565b6040525050565b5f82601f830112620018d1575f80fd5b81356001600160401b03811115620018ed57620018ed62001856565b60405162001906601f8301601f19166020018262001892565b8181528460208386010111156200191b575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156200194b575f80fd5b84356200195881620017e7565b935060208501356200196a81620017e7565b925060408501356200197c81620017e7565b915060608501356001600160401b0381111562001997575f80fd5b620019a587828801620018c1565b91505092959194509250565b5f6001600160401b03821115620019cc57620019cc62001856565b5060051b60200190565b5f82601f830112620019e6575f80fd5b81356020620019f582620019b1565b6040805162001a05838262001892565b84815260069490941b860183019383810192508785111562001a25575f80fd5b8387015b8581101562001a735782818a03121562001a41575f80fd5b825162001a4e816200186a565b813562001a5b81620017e7565b81528186013586820152845292840192820162001a29565b50979650505050505050565b5f82601f83011262001a8f575f80fd5b8135602062001a9e82620019b1565b60405162001aad828262001892565b80915083815260208101915060208460051b87010193508684111562001ad1575f80fd5b602086015b8481101562001aef578035835291830191830162001ad6565b509695505050505050565b5f806040838503121562001b0c575f80fd5b82356001600160401b038082111562001b23575f80fd5b62001b3186838701620019d6565b9350602085013591508082111562001b47575f80fd5b5062001b568582860162001a7f565b9150509250929050565b5f806040838503121562001b72575f80fd5b82356001600160401b038082111562001b89575f80fd5b62001b9786838701620018c1565b9350602085013591508082111562001bad575f80fd5b5062001b5685828601620018c1565b5f5b8381101562001bd857818101518382015260200162001bbe565b50505f910152565b5f815180845262001bf981602086016020860162001bbc565b601f01601f19169290920160200192915050565b602081525f620017b1602083018462001be0565b5f806040838503121562001c33575f80fd5b823562001c4081620017e7565b9150602083013580151581146200182d575f80fd5b5f6020828403121562001c66575f80fd5b5035919050565b5f805f806080858703121562001c81575f80fd5b84356001600160401b038082111562001c98575f80fd5b62001ca688838901620019d6565b9550602087013591508082111562001cbc575f80fd5b5062001ccb8782880162001a7f565b935050604085013562001cde81620017e7565b9150606085013562001cf081620017e7565b939692955090935050565b5f805f806080858703121562001d0f575f80fd5b84356001600160401b038082111562001d26575f80fd5b62001d3488838901620018c1565b9550602087013591508082111562001d4a575f80fd5b62001d5888838901620018c1565b9450604087013591508082111562001d6e575f80fd5b62001d7c88838901620019d6565b9350606087013591508082111562001d92575f80fd5b50620019a58782880162001a7f565b5f6020828403121562001db2575f80fd5b81356001600160401b0381111562001dc8575f80fd5b62001dd684828501620018c1565b949350505050565b5f6020828403121562001def575f80fd5b8151620017b181620017e7565b5f60033d111562001e135760045f803e505f5160e01c5b90565b5f60443d101562001e245790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171562001e5457505050505090565b828501915081518181111562001e6d5750505050505090565b843d870101602082850101111562001e885750505050505090565b62001e996020828601018762001892565b509095945050505050565b60408152600e60408201526d7265766572742f7265717569726560901b6060820152608060208201525f620017b1608083018462001be0565b600181811c9082168062001ef257607f821691505b60208210810362001f1157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200055c57805f5260205f20601f840160051c8101602085101562001f3e5750805b601f840160051c820191505b8181101562001f5f575f815560010162001f4a565b5050505050565b81516001600160401b0381111562001f825762001f8262001856565b62001f9a8162001f93845462001edd565b8462001f17565b602080601f83116001811462001fd0575f841562001fb85750858301515b5f19600386901b1c1916600185901b178555620015f6565b5f85815260208120601f198616915b82811015620020005788860151825594840194600190910190840162001fdf565b50858210156200201e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b608081525f62002042608083018762001be0565b828103602084015262002056818762001be0565b6001600160a01b03958616604085015293909416606090920191909152509392505050565b5f8084546200208a8162001edd565b60018281168015620020a55760018114620020bb57620020e9565b60ff1984168752821515830287019450620020e9565b885f526020805f205f5b85811015620020e05781548a820152908401908201620020c5565b50505082870194505b505050508351620020ff81836020880162001bbc565b602f60f81b9101908152600101949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121562002139575f80fd5b5051919050565b606080825284519082018190525f906020906080840190828801845b828110156200218e57815180516001600160a01b0316855285015185850152604090930192908401906001016200215c565b5050506001600160a01b03959095166020840152505060400152919050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620007b057620007b0620021ad565b80820180821115620007b057620007b0620021ad565b5f81620022025762002202620021ad565b505f19019056fe608060405234801562000010575f80fd5b506040516200230f3803806200230f8339810160408190526200003391620002c0565b83835f620000428382620003d4565b506001620000518282620003d4565b5050506200006e62000068620000a360201b60201c565b620000a7565b6001600b55600c80546001600160a01b0319166001600160a01b0383161790556200009982620000f8565b50505050620004a0565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600a546001600160a01b03163314806200011c5750600c546001600160a01b031633145b6200016e5760405162461bcd60e51b815260206004820152601460248201527f4f776e6572206f7220617274697374206f6e6c7900000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620001d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000165565b620001e081620000a7565b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000207575f80fd5b81516001600160401b0380821115620002245762000224620001e3565b604051601f8301601f19908116603f011681019082821181831017156200024f576200024f620001e3565b81604052838152602092508660208588010111156200026c575f80fd5b5f91505b838210156200028f578582018301518183018401529082019062000270565b5f602085830101528094505050505092915050565b80516001600160a01b0381168114620002bb575f80fd5b919050565b5f805f8060808587031215620002d4575f80fd5b84516001600160401b0380821115620002eb575f80fd5b620002f988838901620001f7565b955060208701519150808211156200030f575f80fd5b506200031e87828801620001f7565b9350506200032f60408601620002a4565b91506200033f60608601620002a4565b905092959194509250565b600181811c908216806200035f57607f821691505b6020821081036200037e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003cf57805f5260205f20601f840160051c81016020851015620003ab5750805b601f840160051c820191505b81811015620003cc575f8155600101620003b7565b50505b505050565b81516001600160401b03811115620003f057620003f0620001e3565b62000408816200040184546200034a565b8462000384565b602080601f8311600181146200043e575f8415620004265750858301515b5f19600386901b1c1916600185901b17855562000498565b5f85815260208120601f198616915b828110156200046e578886015182559484019460019091019084016200044d565b50858210156200048c57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b611e6180620004ae5f395ff3fe608060405234801561000f575f80fd5b506004361061016d575f3560e01c806355f804b3116100d95780638da5cb5b11610093578063b88d4fde1161006e578063b88d4fde1461030d578063c87b56dd14610320578063e985e9c514610333578063f2fde38b1461036e575f80fd5b80638da5cb5b146102e157806395d89b41146102f2578063a22cb465146102fa575f80fd5b806355f804b3146102855780636352211e146102985780636a627842146102ab5780636c0360eb146102be57806370a08231146102c6578063715018a6146102d9575f80fd5b8063248b71fc1161012a578063248b71fc1461021357806329605e77146102265780632f745c591461023957806342842e0e1461024c57806342966c681461025f5780634f6ccce714610272575f80fd5b806301ffc9a71461017157806306fdde0314610199578063081812fc146101ae578063095ea7b3146101d957806318160ddd146101ee57806323b872dd14610200575b5f80fd5b61018461017f366004611784565b610381565b60405190151581526020015b60405180910390f35b6101a16103ab565b60405161019091906117ec565b6101c16101bc3660046117fe565b61043a565b6040516001600160a01b039091168152602001610190565b6101ec6101e7366004611830565b61045f565b005b6008545b604051908152602001610190565b6101ec61020e366004611858565b610578565b6101ec610221366004611830565b6105aa565b6101ec610234366004611891565b610618565b6101f2610247366004611830565b6106ef565b6101ec61025a366004611858565b610783565b6101ec61026d3660046117fe565b61079d565b6101f26102803660046117fe565b610814565b6101ec610293366004611931565b6108a4565b6101c16102a63660046117fe565b610927565b6101ec6102b9366004611891565b610986565b6101a16109d2565b6101f26102d4366004611891565b610a5e565b6101ec610ae2565b600a546001600160a01b03166101c1565b6101a1610af5565b6101ec610308366004611976565b610b04565b6101ec61031b3660046119af565b610b13565b6101a161032e3660046117fe565b610b4b565b610184610341366004611a26565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b6101ec61037c366004611891565b610baf565b5f6001600160e01b0319821663780e9d6360e01b14806103a557506103a582610c5c565b92915050565b60605f80546103b990611a57565b80601f01602080910402602001604051908101604052809291908181526020018280546103e590611a57565b80156104305780601f1061040757610100808354040283529160200191610430565b820191905f5260205f20905b81548152906001019060200180831161041357829003601f168201915b5050505050905090565b5f61044482610cab565b505f908152600460205260409020546001600160a01b031690565b5f61046982610927565b9050806001600160a01b0316836001600160a01b0316036104db5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104f757506104f78133610341565b6105695760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104d2565b6105738383610d09565b505050565b610583335b82610d76565b61059f5760405162461bcd60e51b81526004016104d290611a8f565b610573838383610df3565b600a546001600160a01b03163314806105cd5750600c546001600160a01b031633145b6105e95760405162461bcd60e51b81526004016104d290611add565b5f5b81811015610573576106108361060060085490565b61060b906001611b1f565b610f96565b6001016105eb565b600c546001600160a01b0316331461065e5760405162461bcd60e51b815260206004820152600960248201526810b7b832b930ba37b960b91b60448201526064016104d2565b6001600160a01b03811661069a5760405162461bcd60e51b815260206004820152600360248201526202121360ec1b60448201526064016104d2565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527fdbebfba65bd6398fb722063efc10c99f624f9cd8ba657201056af918a676d5ee906020015b60405180910390a150565b5f6106f983610a5e565b821061075b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016104d2565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b61057383838360405180602001604052805f815250610b13565b6107a63361057d565b6108085760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016104d2565b610811816110e0565b50565b5f61081e60085490565b82106108815760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016104d2565b6008828154811061089457610894611b32565b905f5260205f2001549050919050565b600c546001600160a01b031633146108ea5760405162461bcd60e51b815260206004820152600960248201526810b7b832b930ba37b960b91b60448201526064016104d2565b600d6108f68282611b91565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6600d6040516106e49190611c51565b5f818152600260205260408120546001600160a01b0316806103a55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016104d2565b600a546001600160a01b03163314806109a95750600c546001600160a01b031633145b6109c55760405162461bcd60e51b81526004016104d290611add565b6108118161060060085490565b600d80546109df90611a57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0b90611a57565b8015610a565780601f10610a2d57610100808354040283529160200191610a56565b820191905f5260205f20905b815481529060010190602001808311610a3957829003601f168201915b505050505081565b5f6001600160a01b038216610ac75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016104d2565b506001600160a01b03165f9081526003602052604090205490565b610aea611182565b610af35f6111dc565b565b6060600180546103b990611a57565b610b0f33838361122d565b5050565b610b1d3383610d76565b610b395760405162461bcd60e51b81526004016104d290611a8f565b610b45848484846112fa565b50505050565b6060610b5682610cab565b5f610b5f61132d565b90505f815111610b7d5760405180602001604052805f815250610ba8565b80610b878461133c565b604051602001610b98929190611cdb565b6040516020818303038152906040525b9392505050565b600a546001600160a01b0316331480610bd25750600c546001600160a01b031633145b610bee5760405162461bcd60e51b81526004016104d290611add565b6001600160a01b038116610c535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d2565b610811816111dc565b5f6001600160e01b031982166380ac58cd60e01b1480610c8c57506001600160e01b03198216635b5e139f60e01b145b806103a557506301ffc9a760e01b6001600160e01b03198316146103a5565b5f818152600260205260409020546001600160a01b03166108115760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016104d2565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610d3d82610927565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f80610d8183610927565b9050806001600160a01b0316846001600160a01b03161480610dc757506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b80610deb5750836001600160a01b0316610de08461043a565b6001600160a01b0316145b949350505050565b826001600160a01b0316610e0682610927565b6001600160a01b031614610e6a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016104d2565b6001600160a01b038216610ecc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016104d2565b610ed7838383611439565b610ee15f82610d09565b6001600160a01b0383165f908152600360205260408120805460019290610f09908490611d09565b90915550506001600160a01b0382165f908152600360205260408120805460019290610f36908490611b1f565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610fec5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104d2565b5f818152600260205260409020546001600160a01b0316156110505760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104d2565b61105b5f8383611439565b6001600160a01b0382165f908152600360205260408120805460019290611083908490611b1f565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f6110ea82610927565b90506110f7815f84611439565b6111015f83610d09565b6001600160a01b0381165f908152600360205260408120805460019290611129908490611d09565b90915550505f8281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600a546001600160a01b03163314610af35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d2565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b816001600160a01b0316836001600160a01b03160361128e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104d2565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611305848484610df3565b611311848484846114f0565b610b455760405162461bcd60e51b81526004016104d290611d1c565b6060600d80546103b990611a57565b6060815f036113625750506040805180820190915260018152600360fc1b602082015290565b815f5b811561138b578061137581611d6e565b91506113849050600a83611d9a565b9150611365565b5f8167ffffffffffffffff8111156113a5576113a56118aa565b6040519080825280601f01601f1916602001820160405280156113cf576020820181803683370190505b5090505b8415610deb576113e4600183611d09565b91506113f1600a86611dad565b6113fc906030611b1f565b60f81b81838151811061141157611411611b32565b60200101906001600160f81b03191690815f1a905350611432600a86611d9a565b94506113d3565b6001600160a01b0383166114935761148e81600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6114b6565b816001600160a01b0316836001600160a01b0316146114b6576114b683826115ed565b6001600160a01b0382166114cd5761057381611686565b826001600160a01b0316826001600160a01b03161461057357610573828261172d565b5f6001600160a01b0384163b156115e257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611533903390899088908890600401611dc0565b6020604051808303815f875af192505050801561156d575060408051601f3d908101601f1916820190925261156a91810190611dfc565b60015b6115c8573d80801561159a576040519150601f19603f3d011682016040523d82523d5f602084013e61159f565b606091505b5080515f036115c05760405162461bcd60e51b81526004016104d290611d1c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610deb565b506001949350505050565b5f60016115f984610a5e565b6116039190611d09565b5f83815260076020526040902054909150808214611654576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b505f9182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008545f9061169790600190611d09565b5f83815260096020526040812054600880549394509092849081106116be576116be611b32565b905f5260205f200154905080600883815481106116dd576116dd611b32565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061171457611714611e17565b600190038181905f5260205f20015f9055905550505050565b5f61173783610a5e565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b031981168114610811575f80fd5b5f60208284031215611794575f80fd5b8135610ba88161176f565b5f5b838110156117b95781810151838201526020016117a1565b50505f910152565b5f81518084526117d881602086016020860161179f565b601f01601f19169290920160200192915050565b602081525f610ba860208301846117c1565b5f6020828403121561180e575f80fd5b5035919050565b80356001600160a01b038116811461182b575f80fd5b919050565b5f8060408385031215611841575f80fd5b61184a83611815565b946020939093013593505050565b5f805f6060848603121561186a575f80fd5b61187384611815565b925061188160208501611815565b9150604084013590509250925092565b5f602082840312156118a1575f80fd5b610ba882611815565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff808411156118d8576118d86118aa565b604051601f8501601f19908116603f01168101908282118183101715611900576119006118aa565b81604052809350858152868686011115611918575f80fd5b858560208301375f602087830101525050509392505050565b5f60208284031215611941575f80fd5b813567ffffffffffffffff811115611957575f80fd5b8201601f81018413611967575f80fd5b610deb848235602084016118be565b5f8060408385031215611987575f80fd5b61199083611815565b9150602083013580151581146119a4575f80fd5b809150509250929050565b5f805f80608085870312156119c2575f80fd5b6119cb85611815565b93506119d960208601611815565b925060408501359150606085013567ffffffffffffffff8111156119fb575f80fd5b8501601f81018713611a0b575f80fd5b611a1a878235602084016118be565b91505092959194509250565b5f8060408385031215611a37575f80fd5b611a4083611815565b9150611a4e60208401611815565b90509250929050565b600181811c90821680611a6b57607f821691505b602082108103611a8957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252601490820152734f776e6572206f7220617274697374206f6e6c7960601b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103a5576103a5611b0b565b634e487b7160e01b5f52603260045260245ffd5b601f82111561057357805f5260205f20601f840160051c81016020851015611b6b5750805b601f840160051c820191505b81811015611b8a575f8155600101611b77565b5050505050565b815167ffffffffffffffff811115611bab57611bab6118aa565b611bbf81611bb98454611a57565b84611b46565b602080601f831160018114611bf2575f8415611bdb5750858301515b5f19600386901b1c1916600185901b178555611c49565b5f85815260208120601f198616915b82811015611c2057888601518255948401946001909101908401611c01565b5085821015611c3d57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208083525f8454611c6381611a57565b806020870152604060018084165f8114611c845760018114611ca057611ccd565b60ff19851660408a0152604084151560051b8a01019550611ccd565b895f5260205f205f5b85811015611cc45781548b8201860152908301908801611ca9565b8a016040019650505b509398975050505050505050565b5f8351611cec81846020880161179f565b835190830190611d0081836020880161179f565b01949350505050565b818103818111156103a5576103a5611b0b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b5f60018201611d7f57611d7f611b0b565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f82611da857611da8611d86565b500490565b5f82611dbb57611dbb611d86565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611df2908301846117c1565b9695505050505050565b5f60208284031215611e0c575f80fd5b8151610ba88161176f565b634e487b7160e01b5f52603160045260245ffdfea264697066735822122049e1b0f23e4496e504af45859e1c2ebda2f44c71098db3eabb70f7c6c68a072864736f6c63430008160033a264697066735822122051b7f510b860f281d7f7146d589a9d3d2bcb8a76de7f04a03033ef856d426b7464736f6c63430008160033