0x60806040523480156200001157600080fd5b50600054610100900460ff16806200002e57506200002e62000168565b806200003d575060005460ff16155b6200007a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806200544d602e913960400191505060405180910390fd5b600054610100900460ff16158015620000a6576000805460ff1961ff0019909116610100171660011790555b8015620000b9576000805461ff00191690555b50600054610100900460ff1680620000d65750620000d662000168565b80620000e5575060005460ff16155b620001225760405162461bcd60e51b815260040180806020018281038252602e8152602001806200544d602e913960400191505060405180910390fd5b600054610100900460ff161580156200014e576000805460ff1961ff0019909116610100171660011790555b801562000161576000805461ff00191690555b506200018c565b600062000180306200018660201b6200217e1760201c565b15905090565b3b151590565b6152b1806200019c6000396000f3fe608060405234801561001057600080fd5b50600436106102725760003560e01c80638da5cb5b11610151578063d95c69e8116100c3578063e985e9c511610087578063e985e9c51461052a578063ed721a8f1461053d578063f242432a14610550578063f2fde38b14610563578063f46fbe2014610576578063f5298aca1461058957610272565b8063d95c69e8146104d6578063e2cfaab1146104e9578063e57f6f24146104f1578063e59df0ce14610504578063e818356b1461051757610272565b8063b3ab15fb11610115578063b3ab15fb1461047a578063bb08c4d31461048d578063c0ac9983146104a0578063c87b56dd146104a8578063d24d8b56146104bb578063d48e638a146104c357610272565b80638da5cb5b1461043157806395d89b4114610439578063a22cb46514610441578063a920e0f114610454578063b390c0ab1461046757610272565b80632eb2c2d6116101ea57806355f804b3116101ae57806355f804b3146103d3578063570ca735146103e65780636b20c454146103fb578063715018a61461040e578063782b3afd14610416578063783a5bad1461041e57610272565b80632eb2c2d6146103725780634093a46b146103855780634b2f073a146103985780634b39b801146103a05780634e1273f4146103b357610272565b80630bffc4381161023c5780630bffc438146102f25780630dd68717146103055780630e89341c14610318578063152873021461032b57806317ce55931461033e5780632a55205a1461035157610272565b80620ed58f14610277578062fdd58e1461029557806301ffc9a7146102a857806302f3a1f4146102c857806306fdde03146102dd575b600080fd5b61027f61059c565b60405161028c9190614d2a565b60405180910390f35b61027f6102a336600461459a565b6105a3565b6102bb6102b63660046147af565b6105fc565b60405161028c9190614b62565b6102db6102d6366004614a52565b61061f565b005b6102e5610709565b60405161028c9190614b84565b61027f61030036600461496c565b6107a1565b6102db6103133660046144d0565b61081d565b6102e5610326366004614a3a565b6108ea565b6102db6103393660046146b8565b6108f5565b6102db61034c366004614809565b6109bc565b61036461035f366004614a76565b610ac4565b60405161028c929190614b36565b6102db61038036600461434f565b610b04565b61027f6103933660046148d3565b610e2e565b6102bb610ef1565b6102db6103ae3660046142fb565b610f02565b6103c66103c13660046145f9565b610fc7565b60405161028c9190614b4f565b6102db6103e13660046147d7565b6110b2565b6103ee611120565b60405161028c9190614b22565b6102db61040936600461445e565b611130565b6102db6111a9565b6103ee611255565b6102db61042c3660046146b8565b611265565b6103ee611301565b6102e5611310565b6102db61044f36600461456d565b611372565b6103ee610462366004614a3a565b611461565b6102db610475366004614a76565b6114fe565b6102db6104883660046142fb565b61150d565b6102bb61049b3660046142fb565b6115ba565b6102e56115d9565b6102e56104b6366004614a3a565b611666565b6103ee61196e565b6103ee6104d1366004614a3a565b61197e565b6102db6104e436600461456d565b611988565b6102db611a4f565b6102db6104ff3660046144d0565b611a61565b6102db6105123660046149e9565b611aeb565b61027f610525366004614a97565b611b51565b6102bb610538366004614317565b611c0d565b6102db61054b3660046146f7565b611c3b565b6102db61055e3660046143f8565b611cf6565b6102db6105713660046142fb565b611f82565b6102db6105843660046142fb565b612085565b6102db6105973660046145c5565b61210a565b6101035481565b60006105ae82612184565b6105e95760405162461bcd60e51b81526004018080602001828103825260348152602001806150c66034913960400191505060405180910390fd5b6105f38383612191565b90505b92915050565b6001600160e01b0319811660009081526033602052604090205460ff165b919050565b306001600160a01b031663d48e638a836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561066357600080fd5b505afa158015610677573d6000803e3d6000fd5b505050506040513d602081101561068d57600080fd5b50516001600160a01b031633146106da576040805162461bcd60e51b815260206004820152600c60248201526b27b7363c9031b932b0ba37b960a11b604482015290519081900360640190fd5b6000918252610105602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6101018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107965780601f1061076b57610100808354040283529160200191610796565b820191906000526020600020905b81548152906001019060200180831161077957829003601f168201915b505050505090505b90565b60006107ab611301565b6001600160a01b0316336001600160a01b031614806107d55750610138546001600160a01b031633145b6107fa5760405162461bcd60e51b81526004016107f190614c80565b60405180910390fd5b61081287868686600061080b611301565b888d612200565b979650505050505050565b610825611301565b6001600160a01b0316336001600160a01b0316148061084f5750610138546001600160a01b031633145b61086b5760405162461bcd60e51b81526004016107f190614c80565b61089d8561013960009054906101000a90046001600160a01b0316868660405180602001604052806000815250610b04565b6108a78282611265565b6040517f8143c12f92bc58f86e84ae3a58600a14be90eaf38e6d6276252c00f6e7366f90906108db90839087908790614d33565b60405180910390a15050505050565b60606105f682611666565b6108fd611301565b6001600160a01b0316336001600160a01b031614806109275750610138546001600160a01b031633145b6109435760405162461bcd60e51b81526004016107f190614c80565b8060005b818110156109b6576109ae84848381811061095e57fe5b90506020028101906109709190614dac565b61097a9080614dcb565b85858481811061098657fe5b90506020028101906109989190614dac565b6109a99060408101906020016142fb565b6122a1565b600101610947565b50505050565b600054610100900460ff16806109d557506109d561234d565b806109e3575060005460ff16155b610a1e5760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff16158015610a49576000805460ff1961ff0019909116610100171660011790555b610a5488888861235e565b610138805461010480546001600160a01b03199081166001600160a01b03898116919091179092559182168882161760ff60a01b1916600160a01b871515021790925561013980549091169184169190911790558015610aba576000805461ff00191690555b5050505050505050565b600080610ad084611461565b600085815260fc6020526040902054610af8906103e890610af2908790612464565b906124bd565b915091505b9250929050565b600083838360405160200180806020018060200180602001806020018581038552600a81526020018069062626a6abec4c2e8c6d60b31b815250602001858103845288818151815260200191508051906020019060200280838360005b83811015610b79578181015183820152602001610b61565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015610bb8578181015183820152602001610ba0565b50505050905001858103825286818151815260200191508051906020019080838360005b83811015610bf4578181015183820152602001610bdc565b50505050905090810190601f168015610c215780820380516001836020036101000a031916815260200191505b509750505050505050506040516020818303038152906040529050600061010460009054906101000a90046001600160a01b03166001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8d57600080fd5b505afa158015610ca1573d6000803e3d6000fd5b505050506040513d6020811015610cb757600080fd5b505190506001600160a01b03811663d7775fda8888610cd4612524565b866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d4e578181015183820152602001610d36565b50505050905090810190601f168015610d7b5780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015610d9b57600080fd5b505afa158015610daf573d6000803e3d6000fd5b505050506040513d6020811015610dc557600080fd5b5051610e18576040805162461bcd60e51b815260206004820152601b60248201527f4261746368207472616e73666572206e6f7420617070726f7665640000000000604482015290519081900360640190fd5b610e258787878787612528565b50505050505050565b6000610e39336115ba565b610e745760405162461bcd60e51b8152600401808060200182810382526028815260200180614fbf6028913960400191505060405180910390fd5b610e7c611301565b6001600160a01b0316846001600160a01b03161480610ea95750610138546001600160a01b038581169116145b80610eb85750610eb88461281e565b610ed45760405162461bcd60e51b81526004016107f190614bd7565b610ee48989898989898989612200565b9998505050505050505050565b61013854600160a01b900460ff1681565b610f0a611301565b6001600160a01b0316336001600160a01b03161480610f345750610138546001600160a01b031633145b610f505760405162461bcd60e51b81526004016107f190614c80565b6001600160a01b038116610f765760405162461bcd60e51b81526004016107f190614cfb565b61013980546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fda9faea04cb9e1fa55630a3c0878c0d9f7641b534fe6a1bf6a0796f0a9c78c0090600090a250565b606081518351146110095760405162461bcd60e51b815260040180806020018281038252602981526020018061520a6029913960400191505060405180910390fd5b600083516001600160401b038111801561102257600080fd5b5060405190808252806020026020018201604052801561104c578160200160208202803683370190505b50905060005b84518110156110aa5761108b85828151811061106a57fe5b602002602001015185838151811061107e57fe5b60200260200101516105a3565b82828151811061109757fe5b6020908102919091010152600101611052565b509392505050565b6110ba612524565b6001600160a01b03166110cb611301565b6001600160a01b031614611114576040805162461bcd60e51b81526020600482018190526024820152600080516020615168833981519152604482015290519081900360640190fd5b61111d81612946565b50565b610138546001600160a01b031681565b611138612524565b6001600160a01b0316836001600160a01b0316148061115e575061115e83610538612524565b6111995760405162461bcd60e51b8152600401808060200182810382526029815260200180614fe76029913960400191505060405180910390fd5b6111a48383836129f7565b505050565b6111b1612524565b6001600160a01b03166111c2611301565b6001600160a01b03161461120b576040805162461bcd60e51b81526020600482018190526024820152600080516020615168833981519152604482015290519081900360640190fd5b60c9546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360c980546001600160a01b0319169055565b610104546001600160a01b031681565b61126d611301565b6001600160a01b0316336001600160a01b031614806112975750610138546001600160a01b031633145b6112b35760405162461bcd60e51b81526004016107f190614c80565b8060006112be611301565b905060005b828110156112fa576112f28585838181106112da57fe5b90506020028101906112ec9190614dcb565b836122a1565b6001016112c3565b5050505050565b60c9546001600160a01b031690565b6101028054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107965780601f1061076b57610100808354040283529160200191610796565b816001600160a01b0316611384612524565b6001600160a01b031614156113ca5760405162461bcd60e51b81526004018080602001828103825260298152602001806151e16029913960400191505060405180910390fd5b80606660006113d7612524565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561141b612524565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b600081815261010560205260408120546001600160a01b0316801561148657806114f7565b306001600160a01b031663d48e638a846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114ca57600080fd5b505afa1580156114de573d6000803e3d6000fd5b505050506040513d60208110156114f457600080fd5b50515b9392505050565b611509338383612c65565b5050565b611515612524565b6001600160a01b0316611526611301565b6001600160a01b03161461156f576040805162461bcd60e51b81526020600482018190526024820152600080516020615168833981519152604482015290519081900360640190fd5b61013880546001600160a01b0319166001600160a01b0383169081179091556040517f4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e5490600090a250565b6001600160a01b03166000908152610106602052604090205460ff1690565b61010080546040805160206002600185161586026000190190941693909304601f8101849004840282018401909252818152929183018282801561165e5780601f106116335761010080835404028352916020019161165e565b820191906000526020600020905b81548152906001019060200180831161164157829003601f168201915b505050505081565b606061167182612184565b6116ac5760405162461bcd60e51b81526004018080602001828103825260308152602001806151886030913960400191505060405180910390fd5b600082815260fd602090815260408083208054825160026001831615610100026000190190921691909104601f81018590048502820185019093528281529290919083018282801561173f5780601f106117145761010080835404028352916020019161173f565b820191906000526020600020905b81548152906001019060200180831161172257829003601f168201915b50506101008054604080516020601f6002600019600187161588020190951694909404938401819004810282018101909252828152969750600096955091935091508301828280156117d25780601f106117a7576101008083540402835291602001916117d2565b820191906000526020600020905b8154815290600101906020018083116117b557829003601f168201915b505050505090508051600014156117eb5750905061061a565b8151156118ac5780826040516020018083805190602001908083835b602083106118265780518252601f199092019160209182019101611807565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b6020831061186e5780518252601f19909201916020918201910161184f565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529250505061061a565b806118b685612cb4565b6040516020018083805190602001908083835b602083106118e85780518252601f1990920191602091820191016118c9565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106119305780518252601f199092019160209182019101611911565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b610139546001600160a01b031681565b60006105f6611301565b611990612524565b6001600160a01b03166119a1611301565b6001600160a01b0316146119ea576040805162461bcd60e51b81526020600482018190526024820152600080516020615168833981519152604482015290519081900360640190fd5b6001600160a01b03821660008181526101066020908152604091829020805460ff191685151590811790915582519384529083015280517f4b4c7d4f549ad6ad645ff2d6c49ad37cc47dbc233bbeaa249025e9010008af689281900390910190a15050565b611a5f63152a902d60e11b612d8e565b565b611a69611301565b6001600160a01b0316336001600160a01b03161480611a935750610138546001600160a01b031633145b611aaf5760405162461bcd60e51b81526004016107f190614c80565b611ae18561013960009054906101000a90046001600160a01b0316868660405180602001604052806000815250610b04565b6108a782826108f5565b611af3611301565b6001600160a01b0316336001600160a01b03161480611b1d5750610138546001600160a01b031633145b611b395760405162461bcd60e51b81526004016107f190614c80565b6112fa848333336000611b4a611301565b878a612200565b6000611b5c336115ba565b611b975760405162461bcd60e51b8152600401808060200182810382526028815260200180614fbf6028913960400191505060405180910390fd5b611b9f611301565b6001600160a01b0316836001600160a01b03161480611bcc5750610138546001600160a01b038481169116145b80611bdb5750611bdb8361281e565b611bf75760405162461bcd60e51b81526004016107f190614bd7565b611c0386858785612e12565b5093949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b611c43612524565b6001600160a01b0316611c54611301565b6001600160a01b031614611c9d576040805162461bcd60e51b81526020600482018190526024820152600080516020615168833981519152604482015290519081900360640190fd5b8260005b81811015611cee57838382818110611cb557fe5b9050602002013560fc6000888885818110611ccc57fe5b6020908102929092013583525081019190915260400160002055600101611ca1565b505050505050565b600083838360405160200180806020018581526020018481526020018060200183810383526004815260200180633131353560e01b815250602001838103825284818151815260200191508051906020019080838360005b83811015611d66578181015183820152602001611d4e565b50505050905090810190601f168015611d935780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815282825261010454635c60da1b60e01b84529151909950600098506001600160a01b039091169650635c60da1b9550600480830195506020945090925090829003018186803b158015611df257600080fd5b505afa158015611e06573d6000803e3d6000fd5b505050506040513d6020811015611e1c57600080fd5b505190506001600160a01b03811663d7775fda8888611e39612524565b866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611eb3578181015183820152602001611e9b565b50505050905090810190601f168015611ee05780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015611f0057600080fd5b505afa158015611f14573d6000803e3d6000fd5b505050506040513d6020811015611f2a57600080fd5b5051611f75576040805162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c881b9bdd08185c1c1c9bdd9959605a1b604482015290519081900360640190fd5b610e258787878787612ec6565b611f8a612524565b6001600160a01b0316611f9b611301565b6001600160a01b031614611fe4576040805162461bcd60e51b81526020600482018190526024820152600080516020615168833981519152604482015290519081900360640190fd5b6001600160a01b0381166120295760405162461bcd60e51b8152600401808060200182810382526026815260200180614f756026913960400191505060405180910390fd5b60c9546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360c980546001600160a01b0319166001600160a01b0392909216919091179055565b61208d612524565b6001600160a01b031661209e611301565b6001600160a01b0316146120e7576040805162461bcd60e51b81526020600482018190526024820152600080516020615168833981519152604482015290519081900360640190fd5b61010480546001600160a01b0319166001600160a01b0392909216919091179055565b612112612524565b6001600160a01b0316836001600160a01b03161480612138575061213883610538612524565b6121735760405162461bcd60e51b8152600401808060200182810382526029815260200180614fe76029913960400191505060405180910390fd5b6111a4838383612c65565b3b151590565b60006105f660fe83613091565b60006001600160a01b0383166121d85760405162461bcd60e51b815260040180806020018281038252602b815260200180614f4a602b913960400191505060405180910390fd5b5060009081526065602090815260408083206001600160a01b03949094168352929052205490565b61013854600090600160a01b900460ff166122405761221e83612184565b1561223b5760405162461bcd60e51b81526004016107f190614cb0565b61225e565b821561225e5760405162461bcd60e51b81526004016107f190614c22565b61013854600090600160a01b900460ff166122795783612281565b61228161309d565b90506122938a8a8a8a8a8a878a6130ac565b509998505050505050505050565b6122b1604083016020840161475f565b1561232c576123266122c660a0840184614d68565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060808401358361231060608701604088016142fb565b600061231a611301565b883560608a0135612200565b50611509565b611509823561234160608501604086016142fb565b84606001356000612e12565b60006123583061217e565b15905090565b600054610100900460ff1680612377575061237761234d565b80612385575060005460ff16155b6123c05760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff161580156123eb576000805460ff1961ff0019909116610100171660011790555b6123f4826133f2565b6123fc6134ad565b612404613566565b835161241890610101906020870190614133565b50825161242d90610102906020860190614133565b5060016101035561243d82612946565b61244d63152a902d60e11b612d8e565b80156109b6576000805461ff001916905550505050565b600082612473575060006105f6565b8282028284828161248057fe5b04146105f35760405162461bcd60e51b81526004018080602001828103825260218152602001806151476021913960400191505060405180910390fd5b6000808211612513576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161251c57fe5b049392505050565b3390565b81518351146125685760405162461bcd60e51b81526004018080602001828103825260288152602001806152336028913960400191505060405180910390fd5b6001600160a01b0384166125ad5760405162461bcd60e51b81526004018080602001828103825260258152602001806150416025913960400191505060405180910390fd5b6125b5612524565b6001600160a01b0316856001600160a01b031614806125db57506125db85610538612524565b6126165760405162461bcd60e51b81526004018080602001828103825260328152602001806150666032913960400191505060405180910390fd5b6000612620612524565b9050612630818787878787611cee565b60005b845181101561273657600085828151811061264a57fe5b60200260200101519050600085838151811061266257fe5b602002602001015190506126cf816040518060600160405280602a815260200161511d602a91396065600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546136039092919063ffffffff16565b60008381526065602090815260408083206001600160a01b038e811685529252808320939093558a1681522054612706908261369a565b60009283526065602090815260408085206001600160a01b038c1686529091529092209190915550600101612633565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156127bc5781810151838201526020016127a4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156127fb5781810151838201526020016127e3565b5050505090500194505050505060405180910390a4611cee8187878787876136f4565b610138546000906001600160a01b031661283a5750600061061a565b610138546040805163a1ebf35d60e01b815290516001600160a01b0390921691600091839163a1ebf35d91600480820192602092909190829003018186803b15801561288557600080fd5b505afa158015612899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bd9190614797565b604051632474521560e21b81529091506001600160a01b038316906391d14854906128ee9084908890600401614b6d565b60206040518083038186803b15801561290657600080fd5b505afa15801561291a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293e919061477b565b949350505050565b805161295a90610100906020840190614133565b507fec96733b46044f250aa02da367b67f5349b9742717df5406f38f7dd5d2874bc7816040518080602001828103825283818151815260200191508051906020019080838360005b838110156129ba5781810151838201526020016129a2565b50505050905090810190601f1680156129e75780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6001600160a01b038316612a3c5760405162461bcd60e51b81526004018080602001828103825260238152602001806150fa6023913960400191505060405180910390fd5b8051825114612a7c5760405162461bcd60e51b81526004018080602001828103825260288152602001806152336028913960400191505060405180910390fd5b6000612a86612524565b9050612aa681856000868660405180602001604052806000815250611cee565b60005b8351811015612b8457612b3b838281518110612ac157fe5b6020026020010151604051806060016040528060248152602001614f9b6024913960656000888681518110612af257fe5b602002602001015181526020019081526020016000206000896001600160a01b03166001600160a01b03168152602001908152602001600020546136039092919063ffffffff16565b60656000868481518110612b4b57fe5b602090810291909101810151825281810192909252604090810160009081206001600160a01b038a168252909252902055600101612aa9565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612c0b578181015183820152602001612bf3565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612c4a578181015183820152602001612c32565b5050505090500194505050505060405180910390a450505050565b612c6e82612184565b612ca95760405162461bcd60e51b81526004018080602001828103825260318152602001806150106031913960400191505060405180910390fd5b6111a483838361396a565b606081612cd957506040805180820190915260018152600360fc1b602082015261061a565b8160005b8115612cf157600101600a82049150612cdd565b6000816001600160401b0381118015612d0957600080fd5b506040519080825280601f01601f191660200182016040528015612d34576020820181803683370190505b50859350905060001982015b8315612d8557600a840660300160f81b82828060019003935081518110612d6357fe5b60200101906001600160f81b031916908160001a905350600a84049350612d40565b50949350505050565b6001600160e01b03198082161415612ded576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152603360205260409020805460ff19166001179055565b612e1b84612184565b612e565760405162461bcd60e51b81526004018080602001828103825260298152602001806151b86029913960400191505060405180910390fd5b612e7183858460405180602001604052806000815250613a9d565b604080518581526001600160a01b03851660208201528082018490526060810183905290517f5c4e9c7705bb9ef97ed4d3269e8ecae1956fc1830d08b3737160f6c542a4f9019181900360800190a150505050565b6001600160a01b038416612f0b5760405162461bcd60e51b81526004018080602001828103825260258152602001806150416025913960400191505060405180910390fd5b612f13612524565b6001600160a01b0316856001600160a01b03161480612f395750612f3985610538612524565b612f745760405162461bcd60e51b8152600401808060200182810382526029815260200180614fe76029913960400191505060405180910390fd5b6000612f7e612524565b9050612f9e818787612f8f88613b9e565b612f9888613b9e565b87611cee565b612fe5836040518060600160405280602a815260200161511d602a913960008781526065602090815260408083206001600160a01b038d1684529091529020549190613603565b60008581526065602090815260408083206001600160a01b038b8116855292528083209390935587168152205461301c908461369a565b60008581526065602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4611cee818787878787613be3565b60006105f38383613d54565b61010380546001810190915590565b60006130b783612184565b15613109576040805162461bcd60e51b815260206004820152601d60248201527f455243313135353a20746f6b656e20616c7265616479206d696e746564000000604482015290519081900360640190fd5b61311560fe8488613d6c565b613166576040805162461bcd60e51b815260206004820152601d60248201527f455243313135353a20746f6b656e20616c7265616479206d696e746564000000604482015290519081900360640190fd5b816131b8576040805162461bcd60e51b815260206004820152601960248201527f537570706c792073686f756c6420626520706f73697469766500000000000000604482015290519081900360640190fd5b6000895111613202576040805162461bcd60e51b81526020600482015260116024820152701d5c9a481cda1bdd5b19081899481cd95d607a1b604482015290519081900360640190fd5b61321d86848460405180602001604052806000815250613a9d565b613227838a613d82565b827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8a6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561328757818101518382015260200161326f565b50505050905090810190601f1680156132b45780820380516001836020036101000a031916815260200191505b509250505060405180910390a27f23e77e14a793af6dbebbafd6dfaabe06c9a23237e1efa4ef57b1e547f4dea9298385888c868d8d8c60405180898152602001886001600160a01b03168152602001876001600160a01b0316815260200180602001868152602001858152602001846001600160a01b03168152602001838152602001828103825287818151815260200191508051906020019080838360005b8381101561336c578181015183820152602001613354565b50505050905090810190601f1680156133995780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a150600082815260fc602090815260408083208a9055610105909152902080546001600160a01b0388166001600160a01b03199091161790558198975050505050505050565b600054610100900460ff168061340b575061340b61234d565b80613419575060005460ff16155b6134545760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff1615801561347f576000805460ff1961ff0019909116610100171660011790555b613487613da1565b61348f613e41565b61349882613ede565b8015611509576000805461ff00191690555050565b600054610100900460ff16806134c657506134c661234d565b806134d4575060005460ff16155b61350f5760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff1615801561353a576000805460ff1961ff0019909116610100171660011790555b613542613da1565b61354a613e41565b613552613da1565b801561111d576000805461ff001916905550565b600054610100900460ff168061357f575061357f61234d565b8061358d575060005460ff16155b6135c85760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff161580156135f3576000805460ff1961ff0019909116610100171660011790555b6135fb613da1565b613552613f94565b600081848411156136925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561365757818101518382015260200161363f565b50505050905090810190601f1680156136845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156105f3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b613706846001600160a01b031661217e565b15611cee57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561379457818101518382015260200161377c565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156137d35781810151838201526020016137bb565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561380f5781810151838201526020016137f7565b50505050905090810190601f16801561383c5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561386157600080fd5b505af192505050801561388657506040513d602081101561388157600080fd5b505160015b61391b57613892614e26565b8061389d57506138e4565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561365757818101518382015260200161363f565b60405162461bcd60e51b8152600401808060200182810382526034815260200180614eee6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b14610e255760405162461bcd60e51b8152600401808060200182810382526028815260200180614f226028913960400191505060405180910390fd5b6001600160a01b0383166139af5760405162461bcd60e51b81526004018080602001828103825260238152602001806150fa6023913960400191505060405180910390fd5b60006139b9612524565b90506139e9818560006139cb87613b9e565b6139d487613b9e565b60405180602001604052806000815250611cee565b613a3082604051806060016040528060248152602001614f9b6024913960008681526065602090815260408083206001600160a01b038b1684529091529020549190613603565b60008481526065602090815260408083206001600160a01b03808a16808652918452828520959095558151888152928301879052815193949093908616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a450505050565b6001600160a01b038416613ae25760405162461bcd60e51b815260040180806020018281038252602181526020018061525b6021913960400191505060405180910390fd5b6000613aec612524565b9050613afe81600087612f8f88613b9e565b60008481526065602090815260408083206001600160a01b0389168452909152902054613b2b908461369a565b60008581526065602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a46112fa81600087878787613be3565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613bd257fe5b602090810291909101015292915050565b613bf5846001600160a01b031661217e565b15611cee57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613c84578181015183820152602001613c6c565b50505050905090810190601f168015613cb15780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015613cd457600080fd5b505af1925050508015613cf957506040513d6020811015613cf457600080fd5b505160015b613d0557613892614e26565b6001600160e01b0319811663f23a6e6160e01b14610e255760405162461bcd60e51b8152600401808060200182810382526028815260200180614f226028913960400191505060405180910390fd5b60009081526001919091016020526040902054151590565b600061293e84846001600160a01b03851661408d565b600082815260fd6020908152604090912082516111a492840190614133565b600054610100900460ff1680613dba5750613dba61234d565b80613dc8575060005460ff16155b613e035760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff16158015613552576000805460ff1961ff001990911661010017166001179055801561111d576000805461ff001916905550565b600054610100900460ff1680613e5a5750613e5a61234d565b80613e68575060005460ff16155b613ea35760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff16158015613ece576000805460ff1961ff0019909116610100171660011790555b6135526301ffc9a760e01b612d8e565b600054610100900460ff1680613ef75750613ef761234d565b80613f05575060005460ff16155b613f405760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff16158015613f6b576000805460ff1961ff0019909116610100171660011790555b613f7482614124565b613f84636cdb3d1360e11b612d8e565b6134986303a24d0760e21b612d8e565b600054610100900460ff1680613fad5750613fad61234d565b80613fbb575060005460ff16155b613ff65760405162461bcd60e51b815260040180806020018281038252602e815260200180615098602e913960400191505060405180910390fd5b600054610100900460ff16158015614021576000805460ff1961ff0019909116610100171660011790555b600061402b612524565b60c980546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561111d576000805461ff001916905550565b6000828152600184016020526040812054806140f25750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556114f7565b8285600001600183038154811061410557fe5b90600052602060002090600202016001018190555060009150506114f7565b80516115099060679060208401905b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261416957600085556141af565b82601f1061418257805160ff19168380011785556141af565b828001600101855582156141af579182015b828111156141af578251825591602001919060010190614194565b506141bb9291506141bf565b5090565b5b808211156141bb57600081556001016141c0565b803561061a81614eca565b60008083601f8401126141f0578182fd5b5081356001600160401b03811115614206578182fd5b6020830191508360208083028501011115610afd57600080fd5b600082601f830112614230578081fd5b8135602061424561424083614e03565b614de0565b8281528181019085830183850287018401881015614261578586fd5b855b8581101561427f57813584529284019290840190600101614263565b5090979650505050505050565b803561061a81614edf565b600082601f8301126142a7578081fd5b81356001600160401b038111156142ba57fe5b6142cd601f8201601f1916602001614de0565b8181528460208386010111156142e1578283fd5b816020850160208301379081016020019190915292915050565b60006020828403121561430c578081fd5b81356105f381614eca565b60008060408385031215614329578081fd5b823561433481614eca565b9150602083013561434481614eca565b809150509250929050565b600080600080600060a08688031215614366578081fd5b853561437181614eca565b9450602086013561438181614eca565b935060408601356001600160401b038082111561439c578283fd5b6143a889838a01614220565b945060608801359150808211156143bd578283fd5b6143c989838a01614220565b935060808801359150808211156143de578283fd5b506143eb88828901614297565b9150509295509295909350565b600080600080600060a0868803121561440f578081fd5b853561441a81614eca565b9450602086013561442a81614eca565b9350604086013592506060860135915060808601356001600160401b03811115614452578182fd5b6143eb88828901614297565b600080600060608486031215614472578283fd5b833561447d81614eca565b925060208401356001600160401b0380821115614498578384fd5b6144a487838801614220565b935060408601359150808211156144b9578283fd5b506144c686828701614220565b9150509250925092565b6000806000806000608086880312156144e7578283fd5b85356144f281614eca565b945060208601356001600160401b038082111561450d578485fd5b61451989838a01614220565b9550604088013591508082111561452e578485fd5b61453a89838a01614220565b9450606088013591508082111561454f578283fd5b5061455c888289016141df565b969995985093965092949392505050565b6000806040838503121561457f578182fd5b823561458a81614eca565b9150602083013561434481614edf565b600080604083850312156145ac578182fd5b82356145b781614eca565b946020939093013593505050565b6000806000606084860312156145d9578081fd5b83356145e481614eca565b95602085013595506040909401359392505050565b6000806040838503121561460b578182fd5b82356001600160401b0380821115614621578384fd5b818501915085601f830112614634578384fd5b8135602061464461424083614e03565b82815281810190858301838502870184018b1015614660578889fd5b8896505b8487101561468b57803561467781614eca565b835260019690960195918301918301614664565b50965050860135925050808211156146a1578283fd5b506146ae85828601614220565b9150509250929050565b600080602083850312156146ca578182fd5b82356001600160401b038111156146df578283fd5b6146eb858286016141df565b90969095509350505050565b6000806000806040858703121561470c578182fd5b84356001600160401b0380821115614722578384fd5b61472e888389016141df565b90965094506020870135915080821115614746578384fd5b50614753878288016141df565b95989497509550505050565b600060208284031215614770578081fd5b81356105f381614edf565b60006020828403121561478c578081fd5b81516105f381614edf565b6000602082840312156147a8578081fd5b5051919050565b6000602082840312156147c0578081fd5b81356001600160e01b0319811681146105f3578182fd5b6000602082840312156147e8578081fd5b81356001600160401b038111156147fd578182fd5b61293e84828501614297565b600080600080600080600060e0888a031215614823578485fd5b87356001600160401b0380821115614839578687fd5b6148458b838c01614297565b985060208a013591508082111561485a578687fd5b6148668b838c01614297565b975060408a013591508082111561487b578687fd5b506148888a828b01614297565b955050606088013561489981614eca565b935060808801356148a981614eca565b92506148b760a0890161428c565b91506148c560c089016141d4565b905092959891949750929550565b600080600080600080600080610100898b0312156148ef578182fd5b88356001600160401b03811115614904578283fd5b6149108b828c01614297565b98505060208901359650604089013561492881614eca565b9550606089013561493881614eca565b94506080890135935060a089013561494f81614eca565b979a969950949793969295929450505060c08201359160e0013590565b60008060008060008060c08789031215614984578384fd5b86356001600160401b03811115614999578485fd5b6149a589828a01614297565b965050602087013594506040870135935060608701356149c481614eca565b925060808701356149d481614eca565b8092505060a087013590509295509295509295565b600080600080608085870312156149fe578182fd5b84356001600160401b03811115614a13578283fd5b614a1f87828801614297565b97602087013597506040870135966060013595509350505050565b600060208284031215614a4b578081fd5b5035919050565b60008060408385031215614a64578182fd5b82359150602083013561434481614eca565b60008060408385031215614a88578182fd5b50508035926020909101359150565b600080600080600060a08688031215614aae578283fd5b85359450602086013593506040860135614ac781614eca565b92506060860135614ad781614eca565b949793965091946080013592915050565b6000815180845260208085019450808401835b83811015614b1757815187529582019590820190600101614afb565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6000602082526105f36020830184614ae8565b901515815260200190565b9182526001600160a01b0316602082015260400190565b6000602080835283518082850152825b81811015614bb057858101830151858201604001528201614b94565b81811115614bc15783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602b908201527f456e69676d6155736572546f6b656e313135353a204e6f7420617574686f726960408201526a1e9959081d1bc81b5a5b9d60aa1b606082015260800190565b602080825260409082018190527f456e69676d6155736572546f6b656e313135353a204e657720746f6b656e2069908201527f642073706563696669656420627574206175746f496420697320616374697665606082015260800190565b6020808252601690820152752737ba1037bbb732b9103737b91037b832b930ba37b960511b604082015260600190565b6020808252602b908201527f456e69676d6155736572546f6b656e313135353a20546f6b656e49642065786960408201526a73747320616c726561647960a81b606082015260800190565b60208082526015908201527443616e6e6f7420626520307830206164647265737360581b604082015260600190565b90815260200190565b600084825260606020830152614d4c6060830185614ae8565b8281036040840152614d5e8185614ae8565b9695505050505050565b6000808335601e19843603018112614d7e578283fd5b8301803591506001600160401b03821115614d97578283fd5b602001915036819003821315610afd57600080fd5b60008235603e19833603018112614dc1578182fd5b9190910192915050565b6000823560be19833603018112614dc1578182fd5b6040518181016001600160401b0381118282101715614dfb57fe5b604052919050565b60006001600160401b03821115614e1657fe5b5060209081020190565b60e01c90565b600060443d1015614e365761079e565b600481823e6308c379a0614e4a8251614e20565b14614e545761079e565b6040513d600319016004823e80513d6001600160401b038160248401118184111715614e83575050505061079e565b82840192508251915080821115614e9d575050505061079e565b503d83016020828401011115614eb55750505061079e565b601f01601f1916810160200160405291505090565b6001600160a01b038116811461111d57600080fd5b801515811461111d57600080fdfe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e636542617365456e69676d614e4654313135353a204e6f742065787465726e616c207665726966696572455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135354d657461646174613a206275726e20717565727920666f72206e6f6e6578697374656e7420746f6b656e455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564455243313135354d657461646174613a2062616c616e636520717565727920666f72206e6f6e6578697374656e7420746f6b656e455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572455243313135354d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e42617365456e69676d614e4654313135353a20546f6b656e496420646f6573206e6f74206578697374455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a2646970667358221220bb150c662402b414077d81a66543f81d76c32654288ebe462c849d64a5f10bc264736f6c63430007060033496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564