0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611631806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806383c62d96116100b8578063a14fe5391161007c578063a14fe539146103a4578063a5927c56146103b7578063b7b9f7d5146103ca578063be87ead7146103dd578063c4d66de8146103e6578063f2fde38b146103f957600080fd5b806383c62d96146103525780638456cb5914610365578063847a75c61461036d5780638da5cb5b146103805780639f5a96721461039157600080fd5b80635c975abb116100ff5780635c975abb1461027b578063637e7006146102865780636fb24f3a146102fe578063715018a61461031f57806371edb84d1461032757600080fd5b80632ee70dc31461013c57806335961b2c146102285780633f4ba83a1461024b57806347ab8b8814610255578063483293d814610268575b600080fd5b6101d161014a366004611245565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260986020908152604091829020825160a08101845281548152600182015492810192909252600281015463ffffffff80821694840194909452600160201b90049092166060820152600390910154608082015290565b60405161021f9190600060a0820190508251825260208301516020830152604083015163ffffffff808216604085015280606086015116606085015250506080830151608083015292915050565b60405180910390f35b61023b6102363660046112ee565b61040c565b604051901515815260200161021f565b61025361041f565b005b6102536102633660046113f7565b610431565b61025361027636600461143d565b610646565b60655460ff1661023b565b6102cd610294366004611245565b60986020526000908152604090208054600182015460028301546003909301549192909163ffffffff80831692600160201b9004169085565b60408051958652602086019490945263ffffffff92831693850193909352166060830152608082015260a00161021f565b61031161030c36600461145a565b61071d565b60405190815260200161021f565b610253610747565b609a5461033a906001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b610311610360366004611245565b610759565b6102536107c1565b61031161037b3660046112ee565b6107d1565b6033546001600160a01b031661033a565b61025361039f366004611245565b6107f4565b61023b6103b23660046112ee565b610808565b61023b6103c5366004611245565b6108a6565b61023b6103d8366004611486565b610920565b61031160975481565b6102536103f436600461143d565b610c4d565b61025361040736600461143d565b610e33565b600080610418836107d1565b1192915050565b610427610ea9565b61042f610f03565b565b610439610ea9565b8163ffffffff168163ffffffff16116104885760405162461bcd60e51b815260206004820152600c60248201526b115391080f0f4814d510549560a21b60448201526064015b60405180910390fd5b609b54609a546040516370a0823160e01b81526001600160a01b039182166004820152869291909116906370a0823190602401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc919061150f565b10156105375760405162461bcd60e51b815260206004820152600a6024820152694d4158203e204155584f60b01b604482015260640161047f565b60975415610556576105566001609754610551919061153e565b610f55565b6040805160a0810182528581526000602080830182815263ffffffff80881685870190815287821660608701908152608087018b8152609780548852609890965297862096518755925160018701555160028601805493518316600160201b0267ffffffffffffffff1990941691909216179190911790559251600390920191909155815491906105e683611551565b919050555060016097546105fa919061153e565b6040805186815263ffffffff858116602083015284168183015290517f1735d0464d49c0084545207937cf26043d4aa0f44b77af79b96d2f04bce8937e9181900360600190a250505050565b61064e610ea9565b609a80546001600160a01b0319166001600160a01b03831690811790915560408051633ed4c35960e21b8152905163fb530d64916004808201926020929091908290030181865afa1580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb919061156a565b609b80546001600160a01b0319166001600160a01b03928316908117909155609a54604051919216907f8aa25c42d6816634a26be4be3857fdfbc7122ff3ccd135d8bf5512262b58db4c90600090a350565b60008181526099602090815260408083206001600160a01b03861684529091529020545b92915050565b61074f610ea9565b61042f6000610fd7565b6000818152609860209081526040808320815160a08101835281548082526001830154948201859052600283015463ffffffff80821695840195909552600160201b900490931660608201526003909101546080820152916107ba9161153e565b9392505050565b6107c9610ea9565b61042f611029565b60006107e58260600151836000015161071d565b8260200151610741919061153e565b6107fc610ea9565b61080581610f55565b50565b600080826060015183600001518460200151604051602001610848939291906001600160a01b039390931683526020830191909152604082015260600190565b60408051601f19818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090506107ba836040015160986000866000015181526020019081526020016000206003015483611066565b6000609754600014806108c7575060016097546108c3919061153e565b8214155b156108d457506000919050565b60008281526098602052604090206002015463ffffffff164310801590610741575050600090815260986020526040902060020154600160201b900463ffffffff16431090565b919050565b600061092a61107c565b609a546001600160a01b0316336001600160a01b0316146109765760405162461bcd60e51b815260040161047f9060208082526004908201526310a8292b60e11b604082015260600190565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825160c0111591506109e890505760405162461bcd60e51b8152602060048201526005602482015264214441544160d81b604482015260640161047f565b838360006109f8828401846112ee565b519050610a04816108a6565b610a3a5760405162461bcd60e51b81526020600482015260076024820152662157494e444f5760c81b604482015260640161047f565b886000609860006001609754610a50919061153e565b81526020808201929092526040908101600020815160a08101835281548082526001830154948201859052600283015463ffffffff80821695840195909552600160201b9004909316606082015260039091015460808201529250610ab5919061153e565b821115610aee5760405162461bcd60e51b81526020600482015260076024820152660850955111d15560ca1b604482015260640161047f565b6000610afc898b018b6112ee565b9050610b0781610808565b610b3c5760405162461bcd60e51b815260206004820152600660248201526508559053125160d21b604482015260640161047f565b8a6001600160a01b031681606001516001600160a01b031614610b8d5760405162461bcd60e51b81526020600482015260096024820152680850d310525350539560ba1b604482015260640161047f565b610b96816107d1565b8c1115610bd65760405162461bcd60e51b815260206004820152600e60248201526d0869882929abea89e9ebe90928e960931b604482015260640161047f565b8051600090815260996020908152604080832060608501516001600160a01b03168452909152812080548e9290610c0e908490611587565b90915550508051600090815260986020526040812060010180548e9290610c36908490611587565b9091555060019d9c50505050505050505050505050565b600054610100900460ff1615808015610c6d5750600054600160ff909116105b80610c875750303b158015610c87575060005460ff166001145b610cea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161047f565b6000805460ff191660011790558015610d0d576000805461ff0019166101001790555b610d156110c2565b610d1d6110f1565b609a80546001600160a01b0319166001600160a01b03841690811790915560408051633ed4c35960e21b8152905163fb530d64916004808201926020929091908290030181865afa158015610d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9a919061156a565b609b80546001600160a01b0319166001600160a01b03928316908117909155609a54604051919216907f8aa25c42d6816634a26be4be3857fdfbc7122ff3ccd135d8bf5512262b58db4c90600090a38015610e2f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b610e3b610ea9565b6001600160a01b038116610ea05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047f565b61080581610fd7565b6033546001600160a01b0316331461042f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161047f565b610f0b611120565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600081815260986020526040902060020154600160201b900463ffffffff1615610805576000818152609860205260408082208281556001810183905560028101805467ffffffffffffffff1916905560030182905551339183917f583fb77351fb686504f2a0b584a1dbb9952aae409ebe77c8e5ffd855b54850b99190a350565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61103161107c565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f383390565b6000826110738584611169565b14949350505050565b60655460ff161561042f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161047f565b600054610100900460ff166110e95760405162461bcd60e51b815260040161047f9061159a565b61042f6111b6565b600054610100900460ff166111185760405162461bcd60e51b815260040161047f9061159a565b61042f6111e6565b60655460ff1661042f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161047f565b600081815b84518110156111ae5761119a8286838151811061118d5761118d6115e5565b6020026020010151611219565b9150806111a681611551565b91505061116e565b509392505050565b600054610100900460ff166111dd5760405162461bcd60e51b815260040161047f9061159a565b61042f33610fd7565b600054610100900460ff1661120d5760405162461bcd60e51b815260040161047f9061159a565b6065805460ff19169055565b60008183106112355760008281526020849052604090206107ba565b5060009182526020526040902090565b60006020828403121561125757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156112975761129761125e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156112c6576112c661125e565b604052919050565b6001600160a01b038116811461080557600080fd5b803561091b816112ce565b6000602080838503121561130157600080fd5b823567ffffffffffffffff8082111561131957600080fd5b908401906080828703121561132d57600080fd5b611335611274565b82358152838301358482015260408301358281111561135357600080fd5b8301601f8101881361136457600080fd5b8035838111156113765761137661125e565b8060051b935061138786850161129d565b818152938201860193868101908a8611156113a157600080fd5b928701925b858410156113bf578335825292870192908701906113a6565b6040850152506113d4915050606084016112e3565b60608201529695505050505050565b803563ffffffff8116811461091b57600080fd5b6000806000806080858703121561140d57600080fd5b8435935060208501359250611424604086016113e3565b9150611432606086016113e3565b905092959194509250565b60006020828403121561144f57600080fd5b81356107ba816112ce565b6000806040838503121561146d57600080fd5b8235611478816112ce565b946020939093013593505050565b6000806000806060858703121561149c57600080fd5b8435935060208501356114ae816112ce565b9250604085013567ffffffffffffffff808211156114cb57600080fd5b818701915087601f8301126114df57600080fd5b8135818111156114ee57600080fd5b88602082850101111561150057600080fd5b95989497505060200194505050565b60006020828403121561152157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074157610741611528565b60006001820161156357611563611528565b5060010190565b60006020828403121561157c57600080fd5b81516107ba816112ce565b8082018082111561074157610741611528565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603260045260246000fdfea264697066735822122077b916339f12b6a2e3627eb1d35529d9d2e9d34e02adfd15cb2685e5855b3bcd64736f6c63430008100033