60e060405260018055620000166009600a62000498565b6200002690633b9aca00620004b0565b60025560016007819055600060088190556200004291620004ca565b60099081556000600a9081556064600b819055600c819055600e805460ff60a01b1916600160a01b17905591620000799162000498565b6200008990633b9aca00620004b0565b620000959190620004e0565b600f55348015620000a557600080fd5b50600080546001600160a01b03191633179055737a250d5630b4cf539739df2c5dacb4c659f2488d60a0819052604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200010e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000134919062000503565b6001600160a01b03166080816001600160a01b03168152505060a0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b4919062000503565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000206573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022c919062000503565b6001600160a01b0390811660c05230600081815260046020908152604080832060a05190951683529381528382206000199055600d805473fd0ed82d4c5b68d8e34246c6f86e38c503105ed56001600160a01b03199182168117909255600e8054909116909117905533825260058152838220805460ff19908116600190811790925560069092528483208054831682179055928252928120805484168317905561dead90527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054909216179055620003096009600a62000498565b6200031990633b9aca00620004b0565b33600081815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200035c6009600a62000498565b6200036c90633b9aca00620004b0565b60405190815260200160405180910390a36200052e565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003da578160001904821115620003be57620003be62000383565b80851615620003cc57918102915b93841c93908002906200039e565b509250929050565b600082620003f35750600162000492565b81620004025750600062000492565b81600181146200041b5760028114620004265762000446565b600191505062000492565b60ff8411156200043a576200043a62000383565b50506001821b62000492565b5060208310610133831016604e8410600b84101617156200046b575081810a62000492565b62000477838362000399565b80600019048211156200048e576200048e62000383565b0290505b92915050565b6000620004a960ff841683620003e2565b9392505050565b808202811582820484141762000492576200049262000383565b8082018082111562000492576200049262000383565b600082620004fe57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200051657600080fd5b81516001600160a01b0381168114620004a957600080fd5b60805160a05160c05161179b620005816000396000818161044f01528181610afd01528181610df6015281816110b001526110f80152600081816105390152610f1a01526000610ec0015261179b6000f3fe6080604052600436106101855760003560e01c80636ce46bc3116100d157806395d89b411161008a578063c867d60b11610064578063c867d60b14610491578063dd62ed3e146104c1578063df20fd4914610507578063f887ea401461052757600080fd5b806395d89b4114610191578063a8aa1b311461043d578063a9059cbb1461047157600080fd5b80636ce46bc31461037357806370a0823114610393578063715018a6146103c057806377b54bad146103d557806378109e54146103f5578063893d20e81461040b57600080fd5b80631df4ccfc1161013e5780632f54bf6e116101185780632f54bf6e146102cd578063313ce567146102fc5780633f4218e014610323578063571ac8b01461035357600080fd5b80631df4ccfc1461028257806323b872dd146102985780632b112e49146102b857600080fd5b806306fdde031461019157806309302dc6146101d8578063095ea7b3146101fa578063180b0d7e1461022a57806318160ddd1461024d5780631da1db5e1461026257600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506101c2604051806040016040528060058152602001644e455a484160d81b81525081565b6040516101cf919061138e565b60405180910390f35b3480156101e457600080fd5b506101f86101f33660046113dc565b61055b565b005b34801561020657600080fd5b5061021a610215366004611411565b610622565b60405190151581526020016101cf565b34801561023657600080fd5b5061023f606481565b6040519081526020016101cf565b34801561025957600080fd5b5061023f61068f565b34801561026e57600080fd5b506101f861027d3660046113dc565b6106ac565b34801561028e57600080fd5b5061023f60095481565b3480156102a457600080fd5b5061021a6102b336600461143b565b610700565b3480156102c457600080fd5b5061023f6107c2565b3480156102d957600080fd5b5061021a6102e8366004611477565b6000546001600160a01b0391821691161490565b34801561030857600080fd5b50610311600981565b60405160ff90911681526020016101cf565b34801561032f57600080fd5b5061021a61033e366004611477565b60056020526000908152604090205460ff1681565b34801561035f57600080fd5b5061021a61036e366004611477565b610849565b34801561037f57600080fd5b506101f861038e366004611492565b610857565b34801561039f57600080fd5b5061023f6103ae366004611477565b60036020526000908152604090205481565b3480156103cc57600080fd5b506101f861088f565b3480156103e157600080fd5b5061021a6103f0366004611411565b6108cb565b34801561040157600080fd5b5061023f60025481565b34801561041757600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101cf565b34801561044957600080fd5b506104257f000000000000000000000000000000000000000000000000000000000000000081565b34801561047d57600080fd5b5061021a61048c366004611411565b6109da565b34801561049d57600080fd5b5061021a6104ac366004611477565b60066020526000908152604090205460ff1681565b3480156104cd57600080fd5b5061023f6104dc3660046114be565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561051357600080fd5b506101f8610522366004611502565b6109e7565b34801561053357600080fd5b506104257f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316331461058e5760405162461bcd60e51b815260040161058590611520565b60405180910390fd5b600a8110156105ea5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574204d61782057616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610585565b6103e8816105fa6009600a61163a565b61060890633b9aca00611649565b6106129190611649565b61061c9190611660565b60025550565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061067d9086815260200190565b60405180910390a35060015b92915050565b61069b6009600a61163a565b6106a990633b9aca00611649565b81565b47600060646106bb8484611649565b6106c59190611660565b604051909150339082156108fc029083906000818181858888f193505050501580156106f5573d6000803e3d6000fd5b505060006001555050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146107ad576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600482528381203382529091529190912054610788918490610a58565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6107b8848484610a92565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead60009081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c549091906108226009600a61163a565b61083090633b9aca00611649565b61083a9190611682565b6108449190611682565b905090565b600061068982600019610622565b6000546001600160a01b031633146108815760405162461bcd60e51b815260040161058590611520565b600a92909255600b55600c55565b6000546001600160a01b031633146108b95760405162461bcd60e51b815260040161058590611520565b600080546001600160a01b0319169055565b600080546001600160a01b031633146108f65760405162461bcd60e51b815260040161058590611520565b81600003610969576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109669190611695565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb91906116ae565b60006107bb338484610a92565b6000546001600160a01b03163314610a115760405162461bcd60e51b815260040161058590611520565b80610a1e6009600a61163a565b610a2c90633b9aca00611649565b610a369190611660565b600f5550600e8054911515600160a01b0260ff60a01b19909216919091179055565b60008184841115610a7c5760405162461bcd60e51b8152600401610585919061138e565b506000610a898486611682565b95945050505050565b60105460009060ff1615610ab257610aab848484610d03565b90506107bb565b6001600160a01b03841660009081526006602052604090205460ff16158015610af457506001600160a01b03831660009081526006602052604090205460ff16155b8015610b3257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15610bac576002546001600160a01b038416600090815260036020526040902054610b5e9084906116cb565b1115610bac5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610585565b610bb4610de9565b15610bc157610bc1610e5c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260039091529190912054610c13918490610a58565b6001600160a01b038516600090815260036020908152604080832093909355600590529081205460ff1680610c6057506001600160a01b03841660009081526005602052604090205460ff165b610c7457610c6f858486611088565b610c76565b825b6001600160a01b038516600090815260036020526040902054909150610c9c90826111fb565b6001600160a01b0380861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cf09085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600390915291822054610d54918490610a58565b6001600160a01b038086166000908152600360205260408082209390935590851681522054610d8390836111fb565b6001600160a01b0380851660008181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dd79086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610e27575060105460ff16155b8015610e3c5750600e54600160a01b900460ff165b8015610844575050600f5430600090815260036020526040902054101590565b6010805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e9e57610e9e6116de565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610ef257610ef26116de565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163791ac94791610f58916000908690309042906004016116f4565b600060405180830381600087803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b505060095460075447935060009250610f9f9084611649565b610fa99190611660565b9050600060095460085484610fbe9190611649565b610fc89190611660565b600d546040519192506000916001600160a01b039091169084908381818185875af1925050503d806000811461101a576040519150601f19603f3d011682016040523d82523d6000602084013e61101f565b606091505b5050600e546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461106f576040519150601f19603f3d011682016040523d82523d6000602084013e611074565b606091505b50506010805460ff19169055505050505050565b60008215806110975750600954155b156110a35750816107bb565b600c546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036110f6576001546001036110ec5750600b54611134565b50620186a0611134565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036111345750600a545b600061116b61114660646103e8611649565b6111658461115f6009548a61125a90919063ffffffff16565b9061125a565b906112dc565b905080156111e7573060009081526003602052604090205461118d90826111fb565b30600081815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111de9085815260200190565b60405180910390a35b6111f1858261131e565b9695505050505050565b60008061120883856116cb565b9050838110156107bb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610585565b60008260000361126c57506000610689565b60006112788385611649565b9050826112858583611660565b146107bb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610585565b60006107bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611360565b60006107bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a58565b600081836113815760405162461bcd60e51b8152600401610585919061138e565b506000610a898486611660565b600060208083528351808285015260005b818110156113bb5785810183015185820160400152820161139f565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156113ee57600080fd5b5035919050565b80356001600160a01b038116811461140c57600080fd5b919050565b6000806040838503121561142457600080fd5b61142d836113f5565b946020939093013593505050565b60008060006060848603121561145057600080fd5b611459846113f5565b9250611467602085016113f5565b9150604084013590509250925092565b60006020828403121561148957600080fd5b6107bb826113f5565b6000806000606084860312156114a757600080fd5b505081359360208301359350604090920135919050565b600080604083850312156114d157600080fd5b6114da836113f5565b91506114e8602084016113f5565b90509250929050565b80151581146114ff57600080fd5b50565b6000806040838503121561151557600080fd5b823561142d816114f1565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561159157816000190482111561157757611577611540565b8085161561158457918102915b93841c939080029061155b565b509250929050565b6000826115a857506001610689565b816115b557506000610689565b81600181146115cb57600281146115d5576115f1565b6001915050610689565b60ff8411156115e6576115e6611540565b50506001821b610689565b5060208310610133831016604e8410600b8410161715611614575081810a610689565b61161e8383611556565b806000190482111561163257611632611540565b029392505050565b60006107bb60ff841683611599565b808202811582820484141761068957610689611540565b60008261167d57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561068957610689611540565b6000602082840312156116a757600080fd5b5051919050565b6000602082840312156116c057600080fd5b81516107bb816114f1565b8082018082111561068957610689611540565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117445784516001600160a01b03168352938301939183019160010161171f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c80d89db401aa55e5a13064f339b2484e86aabe1ee967fa2dca65aad419385e764736f6c63430008120033