0x608060405260043610610241575f3560e01c8063893d20e811610134578063bc337182116100b3578063d51ed1c811610078578063d51ed1c81461069f578063d78e139d146106be578063dd62ed3e146106dd578063f2fde38b14610721578063f6a78e1714610740578063f887ea4014610754575f80fd5b8063bc3371821461060f578063ccf8c0361461062e578063cec10c111461064d578063cfdbe8231461066c578063d148b74c1461068b575f80fd5b80639acb773e116100f95780639acb773e146105755780639f11080e14610594578063a8aa1b31146105b3578063a9059cbb146105d2578063b2bdfa7b146105f1575f80fd5b8063893d20e8146104c95780638a4068dd146104f95780638da5cb5b1461050d578063918924761461052957806395d89b4114610548575f80fd5b80632b112e49116101c0578063715018a611610185578063715018a61461044d57806377b54bad1461046157806378109e54146104805780637bae52e1146104955780637d1db4a5146104b4575f80fd5b80632b112e49146103ab578063313ce567146103bf5780635d0044ca146103da5780636ddd1713146103f957806370a0823114610419575f80fd5b8063095ea7b311610206578063095ea7b3146103255780631161ae391461034457806318160ddd146103635780631df4ccfc1461037757806323b872dd1461038c575f80fd5b806304368f651461024c5780630445b6671461026d5780630621472c1461029557806306fdde03146102c457806308fd3d0514610305575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5061026b610266366004611c99565b610773565b005b348015610278575f80fd5b5061028260235481565b6040519081526020015b60405180910390f35b3480156102a0575f80fd5b506102b46102af366004611cde565b6107c7565b604051901515815260200161028c565b3480156102cf575f80fd5b5060408051808201909152601081526f4d6f6e61436f696e20436c617373696360801b60208201525b60405161028c9190611cf7565b348015610310575f80fd5b506022546102b490600160a01b900460ff1681565b348015610330575f80fd5b506102b461033f366004611d42565b6107d9565b34801561034f575f80fd5b506102b461035e366004611d5c565b610844565b34801561036e575f80fd5b50600554610282565b348015610382575f80fd5b5061028260115481565b348015610397575f80fd5b506102b46103a6366004611d7c565b610857565b3480156103b6575f80fd5b50610282610915565b3480156103ca575f80fd5b506040516009815260200161028c565b3480156103e5575f80fd5b5061026b6103f4366004611db5565b610965565b348015610404575f80fd5b506022546102b490600160a81b900460ff1681565b348015610424575f80fd5b50610282610433366004611cde565b6001600160a01b03165f9081526008602052604090205490565b348015610458575f80fd5b5061026b6109cc565b34801561046c575f80fd5b506102b461047b366004611d42565b610a3d565b34801561048b575f80fd5b5061028260075481565b3480156104a0575f80fd5b5061026b6104af366004611dcc565b610b35565b3480156104bf575f80fd5b5061028260065481565b3480156104d4575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b348015610504575f80fd5b5061026b610bbd565b348015610518575f80fd5b505f546001600160a01b03166104e1565b348015610534575f80fd5b5061026b610543366004611e2d565b610c03565b348015610553575f80fd5b506040805180820190915260058152644d6f6e614360d81b60208201526102f8565b348015610580575f80fd5b5061026b61058f366004611e6c565b610cc8565b34801561059f575f80fd5b5061026b6105ae366004611d5c565b610d1b565b3480156105be575f80fd5b506022546104e1906001600160a01b031681565b3480156105dd575f80fd5b506102b46105ec366004611d42565b610d4f565b3480156105fc575f80fd5b505f546104e1906001600160a01b031681565b34801561061a575f80fd5b5061026b610629366004611db5565b610d5b565b348015610639575f80fd5b5061026b610648366004611e6c565b610dc2565b348015610658575f80fd5b5061026b610667366004611ea1565b610e28565b348015610677575f80fd5b5061026b610686366004611ea1565b610e62565b348015610696575f80fd5b5061026b610eac565b3480156106aa575f80fd5b506102826106b9366004611db5565b610edf565b3480156106c9575f80fd5b5061026b6106d8366004611db5565b610f24565b3480156106e8575f80fd5b506102826106f7366004611eca565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561072c575f80fd5b5061026b61073b366004611cde565b610f75565b34801561074b575f80fd5b5061026b61105c565b34801561075f575f80fd5b506020546104e1906001600160a01b031681565b5f546001600160a01b031633146107a55760405162461bcd60e51b815260040161079c90611efb565b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b5f6107d3825f196107d9565b92915050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108339086815260200190565b60405180910390a350600192915050565b5f8261084f83610edf565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610900576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108dc918490611092565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b61090b8484846110ca565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610960906003546001600160a01b03165f9081526008602052604090205461095a9060055490611424565b90611424565b905090565b5f546001600160a01b0316331461098e5760405162461bcd60e51b815260040161079c90611efb565b6103e860055461099e9190611f44565b60075410156109ab575f80fd5b6103e8816005546109bc9190611f63565b6109c69190611f44565b60075550565b5f546001600160a01b031633146109f55760405162461bcd60e51b815260040161079c90611efb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f908152600b602052604081205460ff16610a57575f80fd5b815f03610ac7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610aa0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac49190611f7a565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610b11573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090e9190611f91565b5f546001600160a01b03163314610b5e5760405162461bcd60e51b815260040161079c90611efb565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b335f908152600b602052604090205460ff16610bd7575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610c00573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610c2c5760405162461bcd60e51b815260040161079c90611efb565b600c869055600f859055600d849055600e8390556010829055610c5d82610c57858188818c8c611465565b90611465565b6011556012819055610c70600582611f44565b60115410610cc05760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161079c565b505050505050565b5f546001600160a01b03163314610cf15760405162461bcd60e51b815260040161079c90611efb565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610d445760405162461bcd60e51b815260040161079c90611efb565b601e91909155601f55565b5f61090e3384846110ca565b5f546001600160a01b03163314610d845760405162461bcd60e51b815260040161079c90611efb565b6103e8600554610d949190611f44565b6006541015610da1575f80fd5b6103e881600554610db29190611f63565b610dbc9190611f44565b60065550565b5f546001600160a01b03163314610deb5760405162461bcd60e51b815260040161079c90611efb565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610e515760405162461bcd60e51b815260040161079c90611efb565b601391909155601491909155601555565b5f546001600160a01b03163314610e8b5760405162461bcd60e51b815260040161079c90611efb565b6022805460ff60a01b1916600160a01b179055601492909255601355601555565b5f546001600160a01b03163314610ed55760405162461bcd60e51b815260040161079c90611efb565b610edd6114c3565b565b5f6107d3610eeb610915565b6022546001600160a01b03165f90815260086020526040902054610f1e90610f17906002905b9061188d565b859061188d565b9061190b565b60195447906001600160a01b03166108fc6064610f418585611f63565b610f4b9190611f44565b6040518115909202915f818181858888f19350505050158015610f70573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161079c90611efb565b6001600160a01b0381166110035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110855760405162461bcd60e51b815260040161079c90611efb565b6005546007819055600655565b5f81848411156110b55760405162461bcd60e51b815260040161079c9190611cf7565b505f6110c18486611fac565b95945050505050565b6024545f9060ff16156110e9576110e284848461194c565b905061090e565b6001600160a01b0384165f9081526001602052604090205460ff1615801561112957506001600160a01b0383165f9081526001602052604090205460ff16155b1561117e57602254600160a01b900460ff1661117e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161079c565b6001600160a01b0384165f9081526001602052604090205460ff161580156111af57506001600160a01b0383163014155b80156111c957506003546001600160a01b03848116911614155b80156111e357506022546001600160a01b03848116911614155b80156111fd5750601a546001600160a01b03848116911614155b801561121757506017546001600160a01b03848116911614155b801561123b57506001600160a01b0383165f908152600b602052604090205460ff16155b156112db576001600160a01b0383165f908152600860205260409020546007546112658483611fbf565b11156112d95760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161079c565b505b6112e58483611a1c565b6112ed611a88565b156112fa576112fa6114c3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461134b918490611092565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061139657506001600160a01b0384165f908152600a602052604090205460ff165b6113aa576113a5858486611adc565b6113ac565b825b6001600160a01b0385165f908152600860205260409020549091506113d19082611465565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020612081833981519152906114119085815260200190565b60405180910390a3506001949350505050565b5f61090e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611092565b5f806114718385611fbf565b90508381101561090e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161079c565b6024805460ff19166001179055601e54601f545f916114e191610844565b6114ed57600c546114ef565b5f5b90505f6115126002610f1e601154610f1e8660235461188d90919063ffffffff16565b90505f61152a8260235461142490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061156257611562611fd2565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061159357611593611fd2565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac947906115de9086905f90879030904290600401611fe6565b5f604051808303815f87803b1580156115f5575f80fd5b505af1158015611607573d5f803e3d5ffd5b505050505f61161f824761142490919063ffffffff16565b90505f61163961163088600261190b565b60115490611424565b90505f61164d6002610f1e8481878d61188d565b90505f61166983610f1e600d548761188d90919063ffffffff16565b90505f61168584610f1e600f548861188d90919063ffffffff16565b90505f6116a185610f1e600e548961188d90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116f0576040519150601f19603f3d011682016040523d82523d5f602084013e6116f5565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611742576040519150601f19603f3d011682016040523d82523d5f602084013e611747565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611794576040519150601f19603f3d011682016040523d82523d5f602084013e611799565b606091505b505f9250508b1590506118755760205460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611813573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118389190612055565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b5f825f0361189c57505f6107d3565b5f6118a78385611f63565b9050826118b48583611f44565b1461090e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161079c565b5f61090e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c60565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461199c918490611092565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546119ca9083611465565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f8051602061208183398151915290611a0a9086815260200190565b60405180910390a35060019392505050565b60065481111580611a4457506001600160a01b0382165f908152600b602052604090205460ff165b611a845760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161079c565b5050565b6022545f906001600160a01b03163314801590611aa8575060245460ff16155b8015611abd5750602254600160a81b900460ff165b8015610960575050602354305f90815260086020526040902054101590565b6015546022545f91906001600160a01b0390811690841603611b015750601354611b1c565b6022546001600160a01b0390811690861603611b1c57506014545b5f611b486012546064611b2f9190611f63565b610f1e84610f116011548a61188d90919063ffffffff16565b90505f611b66601154610f1e6010548561188d90919063ffffffff16565b90505f611b738383611424565b305f90815260086020526040902054909150611b8f9082611465565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611bbc9083611465565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612081833981519152910160405180910390a38115611c4a57600554611c149083611424565b6005556004546040518381526001600160a01b03918216918a16905f805160206120818339815191529060200160405180910390a35b611c548784611424565b98975050505050505050565b5f8183611c805760405162461bcd60e51b815260040161079c9190611cf7565b505f6110c18486611f44565b8015158114610c00575f80fd5b5f8060408385031215611caa575f80fd5b8235611cb581611c8c565b946020939093013593505050565b80356001600160a01b0381168114611cd9575f80fd5b919050565b5f60208284031215611cee575f80fd5b61090e82611cc3565b5f6020808352835180828501525f5b81811015611d2257858101830151858201604001528201611d06565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611d53575f80fd5b611cb583611cc3565b5f8060408385031215611d6d575f80fd5b50508035926020909101359150565b5f805f60608486031215611d8e575f80fd5b611d9784611cc3565b9250611da560208501611cc3565b9150604084013590509250925092565b5f60208284031215611dc5575f80fd5b5035919050565b5f805f805f60a08688031215611de0575f80fd5b611de986611cc3565b9450611df760208701611cc3565b9350611e0560408701611cc3565b9250611e1360608701611cc3565b9150611e2160808701611cc3565b90509295509295909350565b5f805f805f8060c08789031215611e42575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f8060408385031215611e7d575f80fd5b611e8683611cc3565b91506020830135611e9681611c8c565b809150509250929050565b5f805f60608486031215611eb3575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611edb575f80fd5b611ee483611cc3565b9150611ef260208401611cc3565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f5e57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107d3576107d3611f30565b5f60208284031215611f8a575f80fd5b5051919050565b5f60208284031215611fa1575f80fd5b815161090e81611c8c565b818103818111156107d3576107d3611f30565b808201808211156107d3576107d3611f30565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120345784516001600160a01b03168352938301939183019160010161200f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612067575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200d92b70f48d4f3115ae7f3f71d8af971b6d31f88af49877e02a8b034dd11887364736f6c63430008140033
0x6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006a9565b6200004290633b9aca00620006b9565b600581905562000063906064906200005c90600262000486565b9062000519565b6006556005546200007e906064906200005c90600262000486565b6007555f600c556001600d555f600e556001600f555f601055601054600e54600c54600d54600f54620000b29190620006d3565b620000be9190620006d3565b620000ca9190620006d3565b620000d69190620006d3565b60115560646012819055601381905560148181556015829055601e55601f8190556022805461ffff60a01b1916600160a81b179055600554612710916200011e9190620006b9565b6200012a9190620006e9565b60235534801562000139575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255604080516315ab88c960e31b81529051919263ad5c4648926004808401938290030181865afa158015620001f1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000217919062000709565b600280546001600160a01b0319166001600160a01b03928316179055602080546040805163c45a015560e01b81529051919093169263c45a01559260048083019391928290030181865afa15801562000272573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000298919062000709565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002e7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030d919062000709565b602280546001600160a01b039283166001600160a01b0319918216811783556021805483169091179055305f81815260096020908152604080832082548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b16875284872080548316841790559686528386208054909116909117905560168054871682179055845486167309610fb26b056bac6bb42c018d98de0a4aad4d1617909455855485168417909555601980548516731311cfd536265390d9ec632b57026479e2898a45179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200077e565b5f825f036200049757505f62000513565b5f620004a48385620006b9565b905082620004b38583620006e9565b14620005105760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200051083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200056260201b60201c565b5f8183620005855760405162461bcd60e51b815260040162000507919062000731565b505f620005938486620006e9565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005f057815f1904821115620005d457620005d46200059c565b80851615620005e257918102915b93841c9390800290620005b5565b509250929050565b5f82620006085750600162000513565b816200061657505f62000513565b81600181146200062f57600281146200063a576200065a565b600191505062000513565b60ff8411156200064e576200064e6200059c565b50506001821b62000513565b5060208310610133831016604e8410600b84101617156200067f575081810a62000513565b6200068b8383620005b0565b805f1904821115620006a157620006a16200059c565b029392505050565b5f6200051060ff841683620005f8565b80820281158282048414176200051357620005136200059c565b808201808211156200051357620005136200059c565b5f826200070457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200071a575f80fd5b81516001600160a01b038116811462000510575f80fd5b5f6020808352835180828501525f5b818110156200075e5785810183015185820160400152820162000740565b505f604082860101526040601f19601f8301168501019250505092915050565b6120d6806200078c5f395ff3fe608060405260043610610241575f3560e01c8063893d20e811610134578063bc337182116100b3578063d51ed1c811610078578063d51ed1c81461069f578063d78e139d146106be578063dd62ed3e146106dd578063f2fde38b14610721578063f6a78e1714610740578063f887ea4014610754575f80fd5b8063bc3371821461060f578063ccf8c0361461062e578063cec10c111461064d578063cfdbe8231461066c578063d148b74c1461068b575f80fd5b80639acb773e116100f95780639acb773e146105755780639f11080e14610594578063a8aa1b31146105b3578063a9059cbb146105d2578063b2bdfa7b146105f1575f80fd5b8063893d20e8146104c95780638a4068dd146104f95780638da5cb5b1461050d578063918924761461052957806395d89b4114610548575f80fd5b80632b112e49116101c0578063715018a611610185578063715018a61461044d57806377b54bad1461046157806378109e54146104805780637bae52e1146104955780637d1db4a5146104b4575f80fd5b80632b112e49146103ab578063313ce567146103bf5780635d0044ca146103da5780636ddd1713146103f957806370a0823114610419575f80fd5b8063095ea7b311610206578063095ea7b3146103255780631161ae391461034457806318160ddd146103635780631df4ccfc1461037757806323b872dd1461038c575f80fd5b806304368f651461024c5780630445b6671461026d5780630621472c1461029557806306fdde03146102c457806308fd3d0514610305575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5061026b610266366004611c99565b610773565b005b348015610278575f80fd5b5061028260235481565b6040519081526020015b60405180910390f35b3480156102a0575f80fd5b506102b46102af366004611cde565b6107c7565b604051901515815260200161028c565b3480156102cf575f80fd5b5060408051808201909152601081526f4d6f6e61436f696e20436c617373696360801b60208201525b60405161028c9190611cf7565b348015610310575f80fd5b506022546102b490600160a01b900460ff1681565b348015610330575f80fd5b506102b461033f366004611d42565b6107d9565b34801561034f575f80fd5b506102b461035e366004611d5c565b610844565b34801561036e575f80fd5b50600554610282565b348015610382575f80fd5b5061028260115481565b348015610397575f80fd5b506102b46103a6366004611d7c565b610857565b3480156103b6575f80fd5b50610282610915565b3480156103ca575f80fd5b506040516009815260200161028c565b3480156103e5575f80fd5b5061026b6103f4366004611db5565b610965565b348015610404575f80fd5b506022546102b490600160a81b900460ff1681565b348015610424575f80fd5b50610282610433366004611cde565b6001600160a01b03165f9081526008602052604090205490565b348015610458575f80fd5b5061026b6109cc565b34801561046c575f80fd5b506102b461047b366004611d42565b610a3d565b34801561048b575f80fd5b5061028260075481565b3480156104a0575f80fd5b5061026b6104af366004611dcc565b610b35565b3480156104bf575f80fd5b5061028260065481565b3480156104d4575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b348015610504575f80fd5b5061026b610bbd565b348015610518575f80fd5b505f546001600160a01b03166104e1565b348015610534575f80fd5b5061026b610543366004611e2d565b610c03565b348015610553575f80fd5b506040805180820190915260058152644d6f6e614360d81b60208201526102f8565b348015610580575f80fd5b5061026b61058f366004611e6c565b610cc8565b34801561059f575f80fd5b5061026b6105ae366004611d5c565b610d1b565b3480156105be575f80fd5b506022546104e1906001600160a01b031681565b3480156105dd575f80fd5b506102b46105ec366004611d42565b610d4f565b3480156105fc575f80fd5b505f546104e1906001600160a01b031681565b34801561061a575f80fd5b5061026b610629366004611db5565b610d5b565b348015610639575f80fd5b5061026b610648366004611e6c565b610dc2565b348015610658575f80fd5b5061026b610667366004611ea1565b610e28565b348015610677575f80fd5b5061026b610686366004611ea1565b610e62565b348015610696575f80fd5b5061026b610eac565b3480156106aa575f80fd5b506102826106b9366004611db5565b610edf565b3480156106c9575f80fd5b5061026b6106d8366004611db5565b610f24565b3480156106e8575f80fd5b506102826106f7366004611eca565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561072c575f80fd5b5061026b61073b366004611cde565b610f75565b34801561074b575f80fd5b5061026b61105c565b34801561075f575f80fd5b506020546104e1906001600160a01b031681565b5f546001600160a01b031633146107a55760405162461bcd60e51b815260040161079c90611efb565b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b5f6107d3825f196107d9565b92915050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108339086815260200190565b60405180910390a350600192915050565b5f8261084f83610edf565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610900576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108dc918490611092565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b61090b8484846110ca565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610960906003546001600160a01b03165f9081526008602052604090205461095a9060055490611424565b90611424565b905090565b5f546001600160a01b0316331461098e5760405162461bcd60e51b815260040161079c90611efb565b6103e860055461099e9190611f44565b60075410156109ab575f80fd5b6103e8816005546109bc9190611f63565b6109c69190611f44565b60075550565b5f546001600160a01b031633146109f55760405162461bcd60e51b815260040161079c90611efb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f908152600b602052604081205460ff16610a57575f80fd5b815f03610ac7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610aa0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac49190611f7a565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610b11573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090e9190611f91565b5f546001600160a01b03163314610b5e5760405162461bcd60e51b815260040161079c90611efb565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b335f908152600b602052604090205460ff16610bd7575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610c00573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610c2c5760405162461bcd60e51b815260040161079c90611efb565b600c869055600f859055600d849055600e8390556010829055610c5d82610c57858188818c8c611465565b90611465565b6011556012819055610c70600582611f44565b60115410610cc05760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161079c565b505050505050565b5f546001600160a01b03163314610cf15760405162461bcd60e51b815260040161079c90611efb565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610d445760405162461bcd60e51b815260040161079c90611efb565b601e91909155601f55565b5f61090e3384846110ca565b5f546001600160a01b03163314610d845760405162461bcd60e51b815260040161079c90611efb565b6103e8600554610d949190611f44565b6006541015610da1575f80fd5b6103e881600554610db29190611f63565b610dbc9190611f44565b60065550565b5f546001600160a01b03163314610deb5760405162461bcd60e51b815260040161079c90611efb565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610e515760405162461bcd60e51b815260040161079c90611efb565b601391909155601491909155601555565b5f546001600160a01b03163314610e8b5760405162461bcd60e51b815260040161079c90611efb565b6022805460ff60a01b1916600160a01b179055601492909255601355601555565b5f546001600160a01b03163314610ed55760405162461bcd60e51b815260040161079c90611efb565b610edd6114c3565b565b5f6107d3610eeb610915565b6022546001600160a01b03165f90815260086020526040902054610f1e90610f17906002905b9061188d565b859061188d565b9061190b565b60195447906001600160a01b03166108fc6064610f418585611f63565b610f4b9190611f44565b6040518115909202915f818181858888f19350505050158015610f70573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161079c90611efb565b6001600160a01b0381166110035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110855760405162461bcd60e51b815260040161079c90611efb565b6005546007819055600655565b5f81848411156110b55760405162461bcd60e51b815260040161079c9190611cf7565b505f6110c18486611fac565b95945050505050565b6024545f9060ff16156110e9576110e284848461194c565b905061090e565b6001600160a01b0384165f9081526001602052604090205460ff1615801561112957506001600160a01b0383165f9081526001602052604090205460ff16155b1561117e57602254600160a01b900460ff1661117e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161079c565b6001600160a01b0384165f9081526001602052604090205460ff161580156111af57506001600160a01b0383163014155b80156111c957506003546001600160a01b03848116911614155b80156111e357506022546001600160a01b03848116911614155b80156111fd5750601a546001600160a01b03848116911614155b801561121757506017546001600160a01b03848116911614155b801561123b57506001600160a01b0383165f908152600b602052604090205460ff16155b156112db576001600160a01b0383165f908152600860205260409020546007546112658483611fbf565b11156112d95760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161079c565b505b6112e58483611a1c565b6112ed611a88565b156112fa576112fa6114c3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461134b918490611092565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061139657506001600160a01b0384165f908152600a602052604090205460ff165b6113aa576113a5858486611adc565b6113ac565b825b6001600160a01b0385165f908152600860205260409020549091506113d19082611465565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020612081833981519152906114119085815260200190565b60405180910390a3506001949350505050565b5f61090e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611092565b5f806114718385611fbf565b90508381101561090e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161079c565b6024805460ff19166001179055601e54601f545f916114e191610844565b6114ed57600c546114ef565b5f5b90505f6115126002610f1e601154610f1e8660235461188d90919063ffffffff16565b90505f61152a8260235461142490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061156257611562611fd2565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061159357611593611fd2565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac947906115de9086905f90879030904290600401611fe6565b5f604051808303815f87803b1580156115f5575f80fd5b505af1158015611607573d5f803e3d5ffd5b505050505f61161f824761142490919063ffffffff16565b90505f61163961163088600261190b565b60115490611424565b90505f61164d6002610f1e8481878d61188d565b90505f61166983610f1e600d548761188d90919063ffffffff16565b90505f61168584610f1e600f548861188d90919063ffffffff16565b90505f6116a185610f1e600e548961188d90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116f0576040519150601f19603f3d011682016040523d82523d5f602084013e6116f5565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611742576040519150601f19603f3d011682016040523d82523d5f602084013e611747565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611794576040519150601f19603f3d011682016040523d82523d5f602084013e611799565b606091505b505f9250508b1590506118755760205460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611813573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118389190612055565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b5f825f0361189c57505f6107d3565b5f6118a78385611f63565b9050826118b48583611f44565b1461090e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161079c565b5f61090e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c60565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461199c918490611092565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546119ca9083611465565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f8051602061208183398151915290611a0a9086815260200190565b60405180910390a35060019392505050565b60065481111580611a4457506001600160a01b0382165f908152600b602052604090205460ff165b611a845760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161079c565b5050565b6022545f906001600160a01b03163314801590611aa8575060245460ff16155b8015611abd5750602254600160a81b900460ff165b8015610960575050602354305f90815260086020526040902054101590565b6015546022545f91906001600160a01b0390811690841603611b015750601354611b1c565b6022546001600160a01b0390811690861603611b1c57506014545b5f611b486012546064611b2f9190611f63565b610f1e84610f116011548a61188d90919063ffffffff16565b90505f611b66601154610f1e6010548561188d90919063ffffffff16565b90505f611b738383611424565b305f90815260086020526040902054909150611b8f9082611465565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611bbc9083611465565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612081833981519152910160405180910390a38115611c4a57600554611c149083611424565b6005556004546040518381526001600160a01b03918216918a16905f805160206120818339815191529060200160405180910390a35b611c548784611424565b98975050505050505050565b5f8183611c805760405162461bcd60e51b815260040161079c9190611cf7565b505f6110c18486611f44565b8015158114610c00575f80fd5b5f8060408385031215611caa575f80fd5b8235611cb581611c8c565b946020939093013593505050565b80356001600160a01b0381168114611cd9575f80fd5b919050565b5f60208284031215611cee575f80fd5b61090e82611cc3565b5f6020808352835180828501525f5b81811015611d2257858101830151858201604001528201611d06565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611d53575f80fd5b611cb583611cc3565b5f8060408385031215611d6d575f80fd5b50508035926020909101359150565b5f805f60608486031215611d8e575f80fd5b611d9784611cc3565b9250611da560208501611cc3565b9150604084013590509250925092565b5f60208284031215611dc5575f80fd5b5035919050565b5f805f805f60a08688031215611de0575f80fd5b611de986611cc3565b9450611df760208701611cc3565b9350611e0560408701611cc3565b9250611e1360608701611cc3565b9150611e2160808701611cc3565b90509295509295909350565b5f805f805f8060c08789031215611e42575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f8060408385031215611e7d575f80fd5b611e8683611cc3565b91506020830135611e9681611c8c565b809150509250929050565b5f805f60608486031215611eb3575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611edb575f80fd5b611ee483611cc3565b9150611ef260208401611cc3565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f5e57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107d3576107d3611f30565b5f60208284031215611f8a575f80fd5b5051919050565b5f60208284031215611fa1575f80fd5b815161090e81611c8c565b818103818111156107d3576107d3611f30565b808201808211156107d3576107d3611f30565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120345784516001600160a01b03168352938301939183019160010161200f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612067575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200d92b70f48d4f3115ae7f3f71d8af971b6d31f88af49877e02a8b034dd11887364736f6c63430008140033