60806040526006805460ff19166001179055620000266064670de0b6b3a7640000620001a4565b6007556200003e6064670de0b6b3a7640000620001a4565b6008555f6009819055600a55600b805460ff19169055670de0b6b3a7640000600d553480156200006c575f80fd5b505f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360068054610100600160a81b03191661010033908102919091179091555f9081526001602081905260408220670de0b6b3a7640000905590600390620000f85f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526003909252902080549091166001179055620001495f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200019691815260200190565b60405180910390a3620001c4565b5f82620001bf57634e487b7160e01b5f52601260045260245ffd5b500490565b611dd180620001d25f395ff3fe608060405260043610610164575f3560e01c80638da5cb5b116100cd578063c3c8cd8011610087578063d34628cc11610062578063d34628cc14610462578063dd62ed3e14610481578063f2fde38b146104c5578063f7448a31146104e4575f80fd5b8063c3c8cd8014610421578063c876d0b914610435578063c9567bf91461044e575f80fd5b80638da5cb5b1461037457806395d89b4114610390578063a70419d2146103bb578063a9059cbb146103cf578063a9f15ddc146103ee578063bb03d6b914610402575f80fd5b80633af32abf1161011e5780633af32abf1461026c5780633bbac579146102a35780635d60c7be146102da5780636fc3eaec1461031657806370a082311461032c578063751039fc14610360575f80fd5b806306fdde031461016f578063095ea7b3146101c65780630faee56f146101f557806318160ddd1461021857806323b872dd14610232578063313ce56714610251575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152601781527f5265616c205574696c6974792047756172616e7465656400000000000000000060208201525b6040516101bd9190611985565b60405180910390f35b3480156101d1575f80fd5b506101e56101e03660046119f4565b610503565b60405190151581526020016101bd565b348015610200575f80fd5b5061020a60085481565b6040519081526020016101bd565b348015610223575f80fd5b50670de0b6b3a764000061020a565b34801561023d575f80fd5b506101e561024c366004611a1e565b610519565b34801561025c575f80fd5b50604051600981526020016101bd565b348015610277575f80fd5b506101e5610286366004611a5c565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156102ae575f80fd5b506101e56102bd366004611a5c565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156102e5575f80fd5b506006546102fe9061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101bd565b348015610321575f80fd5b5061032a610580565b005b348015610337575f80fd5b5061020a610346366004611a5c565b6001600160a01b03165f9081526001602052604090205490565b34801561036b575f80fd5b5061032a6105c5565b34801561037f575f80fd5b505f546001600160a01b03166102fe565b34801561039b575f80fd5b5060408051808201909152600381526252554760e81b60208201526101b0565b3480156103c6575f80fd5b5061032a610714565b3480156103da575f80fd5b506101e56103e93660046119f4565b610749565b3480156103f9575f80fd5b5061032a610755565b34801561040d575f80fd5b5061032a61041c366004611a8b565b61078a565b34801561042c575f80fd5b5061032a610821565b348015610440575f80fd5b506006546101e59060ff1681565b348015610459575f80fd5b5061032a610868565b34801561046d575f80fd5b5061032a61047c366004611a8b565b610c7f565b34801561048c575f80fd5b5061020a61049b366004611b4b565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104d0575f80fd5b5061032a6104df366004611a5c565b610d13565b3480156104ef575f80fd5b5061032a6104fe3660046119f4565b610d95565b5f61050f338484610f60565b5060015b92915050565b5f610525848484611083565b610576843361057185604051806060016040528060288152602001611d74602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906114fe565b610f60565b5060019392505050565b60065461010090046001600160a01b031633146105b85760405162461bcd60e51b81526004016105af90611b82565b60405180910390fd5b476105c281611536565b50565b5f546001600160a01b031633146105ee5760405162461bcd60e51b81526004016105af90611bb7565b600c54600160a01b900460ff166106475760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105af565b670de0b6b3a7640000600d819055600781905560088190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1604051670de0b6b3a764000081527f9a67c283449381e8ee7fa29c87cef05ccedd0faaff767bf879b02d34290fdc7b9060200160405180910390a1604051670de0b6b3a764000081527f8731543e21093ca66ef786ff7b72c9887cea0eec2b8b9484b95429eaffc4903c9060200160405180910390a16006805460ff19169055565b5f546001600160a01b0316331461073d5760405162461bcd60e51b81526004016105af90611bb7565b60026009819055600a55565b5f61050f338484611083565b5f546001600160a01b0316331461077e5760405162461bcd60e51b81526004016105af90611bb7565b60626009556001600a55565b60065461010090046001600160a01b031633146107b95760405162461bcd60e51b81526004016105af90611b82565b5f5b815181101561081d575f60055f8484815181106107da576107da611bec565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061081581611c14565b9150506107bb565b5050565b60065461010090046001600160a01b031633146108505760405162461bcd60e51b81526004016105af90611b82565b305f908152600160205260409020546105c281611571565b5f546001600160a01b031633146108915760405162461bcd60e51b81526004016105af90611bb7565b600c54600160a01b900460ff16156108eb5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105af565b600b8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790819055737a250d5630b4cf539739df2c5dacb4c659f2488d9061094e9030906001600160a01b0361010090910416670de0b6b3a7640000610f60565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561098a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ae9190611c2c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1d9190611c2c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611c2c565b600c80546001600160a01b039283166001600160a01b0319909116179055600b5461010090041663f305d7194730610ad7816001600160a01b03165f9081526001602052604090205490565b5f80610aea5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b50573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b759190611c47565b5050506103e8670de0b6b3a76400006014610b909190611c72565b610b9a9190611c89565b600d556103e8610bb3670de0b6b3a76400006014611c72565b610bbd9190611c89565b6007556103e8610bd6670de0b6b3a76400006014611c72565b610be09190611c89565b60085560286009556015600a55600c54600b5460405163095ea7b360e01b81526001600160a01b03610100909204821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610c44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190611ca8565b5050600c805460ff60a01b1916600160a01b179055565b60065461010090046001600160a01b03163314610cae5760405162461bcd60e51b81526004016105af90611b82565b5f5b815181101561081d57600160055f848481518110610cd057610cd0611bec565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610d0b81611c14565b915050610cb0565b5f546001600160a01b03163314610d3c5760405162461bcd60e51b81526004016105af90611bb7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b60065461010090046001600160a01b03163314610dc45760405162461bcd60e51b81526004016105af90611b82565b306001600160a01b03831603610e365760405162461bcd60e51b815260206004820152603160248201527f596f752063616e277420776974686472617720746f6b656e732066726f6d206f6044820152703bb732b210313c9031b7b73a3930b1ba1760791b60648201526084016105af565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9e9190611cc7565b905080821115610ee15760405162461bcd60e51b815260206004820152600e60248201526d62616c616e6365206973206c6f7760901b60448201526064016105af565b60065460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015610f36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5a9190611ca8565b50505050565b6001600160a01b038316610fc25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105af565b6001600160a01b0382166110235760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105af565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116110e45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105af565b80611103846001600160a01b03165f9081526001602052604090205490565b10156111515760405162461bcd60e51b815260206004820152601a60248201527f42616c616e6365206c657373207468656e207472616e7366657200000000000060448201526064016105af565b6001600160a01b0383165f9081526005602052604090205460ff1615801561119157506001600160a01b0382165f9081526005602052604090205460ff16155b611199575f80fd5b6001600160a01b0383165f9081526003602052604081205460ff16806111d657506001600160a01b0383165f9081526003602052604090205460ff165b6114f257600c54600160a01b900460ff166112335760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105af565b600d548211156112855760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e7420657863656564206d61782074726e7820616d6f756e7400000060448201526064016105af565b60065460ff161561136d57600b546001600160a01b0384811661010090920416148015906112c15750600c546001600160a01b03848116911614155b1561136d57325f90815260046020526040902054431161135b5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016105af565b325f9081526004602052604090204390555b600c546001600160a01b038481169116146113fc57600754826113a4856001600160a01b03165f9081526001602052604090205490565b6113ae9190611cde565b11156113fc5760405162461bcd60e51b815260206004820152601960248201527f6d61782057616c6c6574206c696d69742065786365656465640000000000000060448201526064016105af565b47801561140c5761140c47611536565b600c546001600160a01b039081169086160361144957611442606461143c600a54866116fb90919063ffffffff16565b90611780565b91506114f0565b600c546001600160a01b03908116908516036114f057611479606461143c600954866116fb90919063ffffffff16565b305f90815260016020526040902054600b549193509060ff166114ee57600c54600160a81b900460ff16156114ca576114c56114c0856114bb846008546117c1565b6117c1565b611571565b6114ee565b6114de6103e8670de0b6b3a7640000611c89565b8111156114ee576114ee81611571565b505b505b610f5a848484846117d5565b5f81848411156115215760405162461bcd60e51b81526004016105af9190611985565b505f61152d8486611cf1565b95945050505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f1935050505015801561081d573d5f803e3d5ffd5b600b805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106115b1576115b1611bec565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611622573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116469190611c2c565b8160018151811061165957611659611bec565b6001600160a01b039283166020918202929092010152600b5461168491309161010090041684610f60565b600b5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac947906116c09085905f90869030904290600401611d04565b5f604051808303815f87803b1580156116d7575f80fd5b505af11580156116e9573d5f803e3d5ffd5b5050600b805460ff1916905550505050565b5f825f0361170a57505f610513565b5f6117158385611c72565b9050826117228583611c89565b146117795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105af565b9392505050565b5f61177983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118ba565b5f8183116117cf5782611779565b50919050565b5f6117e08284611cf1565b6001600160a01b0386165f9081526001602052604090205490915061180590846118e6565b6001600160a01b038087165f9081526001602052604080822093909355908616815220546118339082611927565b6001600160a01b0385165f9081526001602052604080822092909255308152205461185e9083611927565b305f9081526001602090815260409182902092909255518281526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b5f81836118da5760405162461bcd60e51b81526004016105af9190611985565b505f61152d8486611c89565b5f61177983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114fe565b5f806119338385611cde565b9050838110156117795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105af565b5f6020808352835180828501525f5b818110156119b057858101830151858201604001528201611994565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105c2575f80fd5b80356119ef816119d0565b919050565b5f8060408385031215611a05575f80fd5b8235611a10816119d0565b946020939093013593505050565b5f805f60608486031215611a30575f80fd5b8335611a3b816119d0565b92506020840135611a4b816119d0565b929592945050506040919091013590565b5f60208284031215611a6c575f80fd5b8135611779816119d0565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611a9c575f80fd5b823567ffffffffffffffff80821115611ab3575f80fd5b818501915085601f830112611ac6575f80fd5b813581811115611ad857611ad8611a77565b8060051b604051601f19603f83011681018181108582111715611afd57611afd611a77565b604052918252848201925083810185019188831115611b1a575f80fd5b938501935b82851015611b3f57611b30856119e4565b84529385019392850192611b1f565b98975050505050505050565b5f8060408385031215611b5c575f80fd5b8235611b67816119d0565b91506020830135611b77816119d0565b809150509250929050565b6020808252818101527f4f6e6c79207465616d2063616e2063616c6c20746869732066756e6374696f6e604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611c2557611c25611c00565b5060010190565b5f60208284031215611c3c575f80fd5b8151611779816119d0565b5f805f60608486031215611c59575f80fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761051357610513611c00565b5f82611ca357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611cb8575f80fd5b81518015158114611779575f80fd5b5f60208284031215611cd7575f80fd5b5051919050565b8082018082111561051357610513611c00565b8181038181111561051357610513611c00565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d525784516001600160a01b031683529383019391830191600101611d2d565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a9de7ec89a190e190179e858912ce3c2822db368f9c6ce36d7ce60b3535d669264736f6c63430008140033