0x60806040526006805460ff19166001179055600f600781905560088190555f6009818155600a828155600b939093556014600c819055600d55600e91909155620000499162000352565b62000059906301312d0062000369565b600f556200006a6009600a62000352565b6200007a906301312d0062000369565b6010556200008b6009600a62000352565b6200009a90620f424062000369565b601155620000ab6009600a62000352565b620000ba9062f4240062000369565b6012556013805460ff191690556014805461ffff60a81b19169055348015620000e1575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060068054610100600160a81b0319166101003302179055620001476009600a62000352565b6200015790633b9aca0062000369565b335f908152600160208190526040822092909255600390620001805f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556006546101009004909116835291208054909216179055620001e33390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200021c6009600a62000352565b6200022c90633b9aca0062000369565b60405190815260200160405180910390a362000383565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200029757815f19048211156200027b576200027b62000243565b808516156200028957918102915b93841c93908002906200025c565b509250929050565b5f82620002af575060016200034c565b81620002bd57505f6200034c565b8160018114620002d65760028114620002e15762000301565b60019150506200034c565b60ff841115620002f557620002f562000243565b50506001821b6200034c565b5060208310610133831016604e8410600b841016171562000326575081810a6200034c565b62000332838362000257565b805f190482111562000348576200034862000243565b0290505b92915050565b5f6200036260ff8416836200029f565b9392505050565b80820281158282048414176200034c576200034c62000243565b611cf480620003915f395ff3fe608060405260043610610198575f3560e01c80638da5cb5b116100e7578063c9567bf911610087578063dd62ed3e11610062578063dd62ed3e14610447578063ec1f3f631461048b578063f4293890146104aa578063fbc18b6c146104be575f80fd5b8063c9567bf914610400578063d34628cc14610414578063dbb859c814610433575f80fd5b8063a1780c18116100c2578063a1780c181461039f578063a9059cbb146103b3578063bf474bed146103d2578063c876d0b9146103e7575f80fd5b80638da5cb5b146103645780638f9a55c01461038a57806395d89b41146101a3575f80fd5b806331c2d8471161015257806370a082311161012d57806370a08231146102ee578063715018a6146103225780637d1db4a514610336578063802f3caf1461034b575f80fd5b806331c2d847146102825780633bbac579146102a35780635e4ae81b146102da575f80fd5b806306fdde03146101a3578063095ea7b3146101e25780630faee56f1461021157806318160ddd1461023457806323b872dd14610248578063313ce56714610267575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820182526008815267135959d8535a5b9960c21b602082015290516101d991906117ec565b60405180910390f35b3480156101ed575f80fd5b506102016101fc36600461185c565b6104dd565b60405190151581526020016101d9565b34801561021c575f80fd5b5061022660125481565b6040519081526020016101d9565b34801561023f575f80fd5b506102266104f3565b348015610253575f80fd5b50610201610262366004611886565b610513565b348015610272575f80fd5b50604051600981526020016101d9565b34801561028d575f80fd5b506102a161029c3660046118d8565b61057a565b005b3480156102ae575f80fd5b506102016102bd366004611998565b6001600160a01b03165f9081526004602052604090205460ff1690565b3480156102e5575f80fd5b506102a161060a565b3480156102f9575f80fd5b50610226610308366004611998565b6001600160a01b03165f9081526001602052604090205490565b34801561032d575f80fd5b506102a16106d2565b348015610341575f80fd5b50610226600f5481565b348015610356575f80fd5b506013546102019060ff1681565b34801561036f575f80fd5b505f546040516001600160a01b0390911681526020016101d9565b348015610395575f80fd5b5061022660105481565b3480156103aa575f80fd5b506102a1610743565b3480156103be575f80fd5b506102016103cd36600461185c565b610795565b3480156103dd575f80fd5b5061022660115481565b3480156103f2575f80fd5b506006546102019060ff1681565b34801561040b575f80fd5b506102a16107a1565b34801561041f575f80fd5b506102a161042e3660046118d8565b610b66565b34801561043e575f80fd5b506102a1610bea565b348015610452575f80fd5b506102266104613660046119b3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610496575f80fd5b506102a16104a53660046119ea565b610c82565b3480156104b5575f80fd5b506102a1610cd1565b3480156104c9575f80fd5b506102a16104d83660046119ea565b610d04565b5f6104e9338484610d3c565b5060015b92915050565b5f6105006009600a611af5565b61050e90633b9aca00611b03565b905090565b5f61051f848484610e5f565b610570843361056b85604051806060016040528060288152602001611c97602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611441565b610d3c565b5060019392505050565b5f546001600160a01b031633146105ac5760405162461bcd60e51b81526004016105a390611b1a565b60405180910390fd5b5f5b8151811015610606575f60045f8484815181106105cd576105cd611b4f565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016105ae565b5050565b5f546001600160a01b031633146106335760405162461bcd60e51b81526004016105a390611b1a565b61063f6009600a611af5565b61064d90633b9aca00611b03565b600f5561065c6009600a611af5565b61066a90633b9aca00611b03565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106a46009600a611af5565b6106b290633b9aca00611b03565b60405190815260200160405180910390a16013805460ff19166001179055565b5f546001600160a01b031633146106fb5760405162461bcd60e51b81526004016105a390611b1a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60065461010090046001600160a01b0316336001600160a01b031614610767575f80fd5b305f9081526001602052604090205480156107855761078581611479565b478015610606576106068161160c565b5f6104e9338484610e5f565b5f546001600160a01b031633146107ca5760405162461bcd60e51b81526004016105a390611b1a565b601454600160a01b900460ff16156108245760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105a3565b60138054610100600160a81b031916744752ba5dbc23f44d87826276bf6fd6b1c372ad2400179081905561087d9030906001600160a01b036101009091041661086f6009600a611af5565b61056b90633b9aca00611b03565b601360019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f29190611b63565b6001600160a01b031663c9c6539630601360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610952573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109769190611b63565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e49190611b63565b601480546001600160a01b039283166001600160a01b031990911617905560135461010090041663f305d7194730610a30816001600160a01b03165f9081526001602052604090205490565b5f80610a435f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610aa9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ace9190611b7e565b505060145460135460405163095ea7b360e01b81526001600160a01b03610100909204821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4c9190611ba9565b506014805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610b8f5760405162461bcd60e51b81526004016105a390611b1a565b5f5b815181101561060657600160045f848481518110610bb157610bb1611b4f565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610b91565b5f4711610c325760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b60448201526064016105a3565b60065461010090046001600160a01b0316336001600160a01b031614610c56575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610c7f573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610cab5760405162461bcd60e51b81526004016105a390611b1a565b6009548111158015610cbf5750600a548111155b610cc7575f80fd5b6009819055600a55565b5f546001600160a01b03163314610cfa5760405162461bcd60e51b81526004016105a390611b1a565b47610c7f8161160c565b5f546001600160a01b03163314610d2d5760405162461bcd60e51b81526004016105a390611b1a565b600a8190556008556001600d55565b6001600160a01b038316610d9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a3565b6001600160a01b038216610dff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a3565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ec35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a3565b6001600160a01b038216610f255760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a3565b5f8111610f865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a3565b5f80546001600160a01b03858116911614801590610fb157505f546001600160a01b03848116911614155b1561130457601354610fe490606490610fde9060ff16610fd357600754610fd7565b6009545b8590611647565b906116cc565b60065490915060ff16156110cf576013546001600160a01b03848116610100909204161480159061102357506014546001600160a01b03848116911614155b156110cf57325f9081526005602052604090205443116110bd5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016105a3565b325f9081526005602052604090204390555b6014546001600160a01b0385811691161480156110ff57506013546001600160a01b038481166101009092041614155b801561112357506001600160a01b0383165f9081526003602052604090205460ff16155b1561120957600f5482111561117a5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105a3565b6010548261119c856001600160a01b03165f9081526001602052604090205490565b6111a69190611bc8565b11156111f45760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105a3565b600e8054905f61120383611bdb565b91905055505b6014546001600160a01b03848116911614801561122f57506001600160a01b0384163014155b1561125e5760135461125b90606490610fde9060ff1661125157600854610fd7565b600a548590611647565b90505b305f90815260016020526040902054601454600160a81b900460ff1615801561129457506014546001600160a01b038581169116145b80156112a95750601454600160b01b900460ff165b80156112b6575060115481115b80156112c55750600d54600e54115b15611302576112e76112e2846112dd8460125461170d565b61170d565b611479565b4766b1a2bc2ec50000811115611300576113004761160c565b505b505b801561137c57305f908152600160205260409020546113239082611721565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113739085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461139e908361177f565b6001600160a01b0385165f908152600160205260409020556113e16113c3838361177f565b6001600160a01b0385165f9081526001602052604090205490611721565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61142a858561177f565b60405190815260200160405180910390a350505050565b5f81848411156114645760405162461bcd60e51b81526004016105a391906117ec565b505f6114708486611bf3565b95945050505050565b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106114bf576114bf611b4f565b60200260200101906001600160a01b031690816001600160a01b031681525050601360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611530573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115549190611b63565b8160018151811061156757611567611b4f565b6001600160a01b03928316602091820292909201015260135461159291309161010090041684610d3c565b60135460405163791ac94760e01b81526101009091046001600160a01b03169063791ac947906115ce9085905f90869030904290600401611c06565b5f604051808303815f87803b1580156115e5575f80fd5b505af11580156115f7573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610606573d5f803e3d5ffd5b5f825f0361165657505f6104ed565b5f6116618385611b03565b90508261166e8583611c77565b146116c55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105a3565b9392505050565b5f6116c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117c0565b5f81831161171b57826116c5565b50919050565b5f8061172d8385611bc8565b9050838110156116c55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105a3565b5f6116c583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611441565b5f81836117e05760405162461bcd60e51b81526004016105a391906117ec565b505f6114708486611c77565b5f602080835283518060208501525f5b81811015611818578581018301518582016040015282016117fc565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c7f575f80fd5b803561185781611838565b919050565b5f806040838503121561186d575f80fd5b823561187881611838565b946020939093013593505050565b5f805f60608486031215611898575f80fd5b83356118a381611838565b925060208401356118b381611838565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156118e9575f80fd5b823567ffffffffffffffff80821115611900575f80fd5b818501915085601f830112611913575f80fd5b813581811115611925576119256118c4565b8060051b604051601f19603f8301168101818110858211171561194a5761194a6118c4565b604052918252848201925083810185019188831115611967575f80fd5b938501935b8285101561198c5761197d8561184c565b8452938501939285019261196c565b98975050505050505050565b5f602082840312156119a8575f80fd5b81356116c581611838565b5f80604083850312156119c4575f80fd5b82356119cf81611838565b915060208301356119df81611838565b809150509250929050565b5f602082840312156119fa575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a4f57815f1904821115611a3557611a35611a01565b80851615611a4257918102915b93841c9390800290611a1a565b509250929050565b5f82611a65575060016104ed565b81611a7157505f6104ed565b8160018114611a875760028114611a9157611aad565b60019150506104ed565b60ff841115611aa257611aa2611a01565b50506001821b6104ed565b5060208310610133831016604e8410600b8410161715611ad0575081810a6104ed565b611ada8383611a15565b805f1904821115611aed57611aed611a01565b029392505050565b5f6116c560ff841683611a57565b80820281158282048414176104ed576104ed611a01565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b73575f80fd5b81516116c581611838565b5f805f60608486031215611b90575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611bb9575f80fd5b815180151581146116c5575f80fd5b808201808211156104ed576104ed611a01565b5f60018201611bec57611bec611a01565b5060010190565b818103818111156104ed576104ed611a01565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c565784516001600160a01b031683529383019391830191600101611c31565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611c9157634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122088c0825552cbd5e19a18d88e85819e6728a8d1ab8102b75c7da231e87baca91364736f6c63430008180033