0x6080604052600436106100c2575f3560e01c806370a082311161007c578063a9059cbb11610057578063a9059cbb14610261578063c9567bf914610280578063dd62ed3e14610296578063e514aab1146102cc575f80fd5b806370a08231146101eb57806395d89b4114610216578063a8aa1b311461022a575f80fd5b806306fdde03146100cd578063095ea7b3146100f757806318160ddd1461012657806323b872dd14610148578063313ce567146101675780634abe30521461018d575f80fd5b366100c957005b5f80fd5b3480156100d8575f80fd5b506100e16102eb565b6040516100ee9190610aaf565b60405180910390f35b348015610102575f80fd5b50610116610111366004610b11565b61037a565b60405190151581526020016100ee565b348015610131575f80fd5b5061013a6103e6565b6040519081526020016100ee565b348015610153575f80fd5b50610116610162366004610b3b565b610402565b348015610172575f80fd5b5061017b601281565b60405160ff90911681526020016100ee565b348015610198575f80fd5b506002546101c2906001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b604080516001600160a01b03909416845260ff92831660208501529116908201526060016100ee565b3480156101f6575f80fd5b5061013a610205366004610b79565b60036020525f908152604090205481565b348015610221575f80fd5b506100e161044f565b348015610235575f80fd5b50600554610249906001600160a01b031681565b6040516001600160a01b0390911681526020016100ee565b34801561026c575f80fd5b5061011661027b366004610b11565b61045e565b34801561028b575f80fd5b50610294610471565b005b3480156102a1575f80fd5b5061013a6102b0366004610b94565b600460209081525f928352604080842090915290825290205481565b3480156102d7575f80fd5b506102946102e6366004610be0565b610627565b60605f80546102f990610c11565b80601f016020809104026020016040519081016040528092919081815260200182805461032590610c11565b80156103705780601f1061034757610100808354040283529160200191610370565b820191905f5260205f20905b81548152906001019060200180831161035357829003601f168201915b5050505050905090565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103d49086815260200190565b60405180910390a35060015b92915050565b6103f26012600a610d3d565b6103ff90620f4240610d4b565b81565b6001600160a01b0383165f908152600460209081526040808320338452909152812080548391908390610436908490610d62565b909155506104479050848484610685565b949350505050565b6060600180546102f990610c11565b5f61046a338484610685565b9392505050565b6002546001600160a01b03163314610487575f80fd5b600554600160a81b900460ff161561049d575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190610d75565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610565573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105899190610d75565b60405163e6a4390560e01b81523060048201526001600160a01b0380831660248301529192505f9184169063e6a4390590604401602060405180830381865afa1580156105d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fc9190610d75565b60058054600161ff0160a01b0319166001600160a01b0390921691909117600160a81b179055505050565b6002546001600160a01b0316331461065157604051629af2b160e81b815260040160405180910390fd5b6002805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b5f806106996002546001600160a01b031690565b600554909150600160a81b900460ff16806106c55750806001600160a01b0316856001600160a01b0316145b806106e15750806001600160a01b0316846001600160a01b0316145b6106e9575f80fd5b6001600160a01b0385165f9081526003602052604081208054859290610710908490610d62565b90915550506005546001600160a01b03858116911614801561073c5750600554600160a01b900460ff16155b801561077a575060646107516012600a610d3d565b61075e90620f4240610d4b565b6107689190610d90565b305f9081526003602052604090205410155b80156107985750806001600160a01b0316856001600160a01b031614155b15610975576005805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106107e3576107e3610daf565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108779190610d75565b8160018151811061088a5761088a610daf565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63eb6f613960646108ca6012600a610d3d565b6108d790620f4240610d4b565b6108e19190610d90565b5f8430426040518663ffffffff1660e01b8152600401610905959493929190610dc3565b5f604051808303815f87803b15801561091c575f80fd5b505af115801561092e573d5f803e3d5ffd5b50506040516001600160a01b03851692504780156108fc029250905f818181858888f19350505050158015610965573d5f803e3d5ffd5b50506005805460ff60a01b191690555b60025460ff600160a01b8204811691600160a81b9004166001600160a01b03871630148015906109b35750600554600160a81b900460ff1615156001145b15610a27576005545f906064906001600160a01b038981169116146109d857836109da565b825b6109e79060ff1688610d4b565b6109f19190610d90565b90506109fd8187610d62565b305f90815260036020526040812080549298508392909190610a20908490610e32565b9091555050505b6001600160a01b0386165f9081526003602052604081208054879290610a4e908490610e32565b92505081905550856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610a9a91815260200190565b60405180910390a35060019695505050505050565b5f6020808352835180828501525f5b81811015610ada57858101830151858201604001528201610abe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b0e575f80fd5b50565b5f8060408385031215610b22575f80fd5b8235610b2d81610afa565b946020939093013593505050565b5f805f60608486031215610b4d575f80fd5b8335610b5881610afa565b92506020840135610b6881610afa565b929592945050506040919091013590565b5f60208284031215610b89575f80fd5b813561046a81610afa565b5f8060408385031215610ba5575f80fd5b8235610bb081610afa565b91506020830135610bc081610afa565b809150509250929050565b803560ff81168114610bdb575f80fd5b919050565b5f8060408385031215610bf1575f80fd5b610bfa83610bcb565b9150610c0860208401610bcb565b90509250929050565b600181811c90821680610c2557607f821691505b602082108103610c4357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610c9757815f1904821115610c7d57610c7d610c49565b80851615610c8a57918102915b93841c9390800290610c62565b509250929050565b5f82610cad575060016103e0565b81610cb957505f6103e0565b8160018114610ccf5760028114610cd957610cf5565b60019150506103e0565b60ff841115610cea57610cea610c49565b50506001821b6103e0565b5060208310610133831016604e8410600b8410161715610d18575081810a6103e0565b610d228383610c5d565b805f1904821115610d3557610d35610c49565b029392505050565b5f61046a60ff841683610c9f565b80820281158282048414176103e0576103e0610c49565b818103818111156103e0576103e0610c49565b5f60208284031215610d85575f80fd5b815161046a81610afa565b5f82610daa57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015610e115784516001600160a01b031683529383019391830191600101610dec565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156103e0576103e0610c4956fea2646970667358221220ee9536e2ed60abc0cbb9d854972c8a481f12bb8f0aeced42ce6785a11fde52f464736f6c63430008140033
0x60c0604052601160809081527053656c66204f7065726174696e6720414960781b60a0525f906200003190826200020e565b50604080518082019091526004815263534f414960e01b60208201526001906200005c90826200020e565b5034801562000069575f80fd5b50604080516060810182523380825260056020830181905291909201819052600280546001600160a81b03191660ff60a01b1990931692909217600560a01b1760ff60a81b1916600560a81b1790915580620000c86012600a620003e5565b620000d790620f4240620003fc565b335f8181526003602090815260408083209490945530825260048152838220737a250d5630b4cf539739df2c5dacb4c659f2488d835290529182205f199055907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001466012600a620003e5565b6200015590620f4240620003fc565b60405190815260200160405180910390a3505062000416565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200019757607f821691505b602082108103620001b657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000209575f81815260208120601f850160051c81016020861015620001e45750805b601f850160051c820191505b818110156200020557828155600101620001f0565b5050505b505050565b81516001600160401b038111156200022a576200022a6200016e565b62000242816200023b845462000182565b84620001bc565b602080601f83116001811462000278575f8415620002605750858301515b5f19600386901b1c1916600185901b17855562000205565b5f85815260208120601f198616915b82811015620002a85788860151825594840194600190910190840162000287565b5085821015620002c657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200032a57815f19048211156200030e576200030e620002d6565b808516156200031c57918102915b93841c9390800290620002ef565b509250929050565b5f826200034257506001620003df565b816200035057505f620003df565b8160018114620003695760028114620003745762000394565b6001915050620003df565b60ff841115620003885762000388620002d6565b50506001821b620003df565b5060208310610133831016604e8410600b8410161715620003b9575081810a620003df565b620003c58383620002ea565b805f1904821115620003db57620003db620002d6565b0290505b92915050565b5f620003f560ff84168362000332565b9392505050565b8082028115828204841417620003df57620003df620002d6565b610e7b80620004245f395ff3fe6080604052600436106100c2575f3560e01c806370a082311161007c578063a9059cbb11610057578063a9059cbb14610261578063c9567bf914610280578063dd62ed3e14610296578063e514aab1146102cc575f80fd5b806370a08231146101eb57806395d89b4114610216578063a8aa1b311461022a575f80fd5b806306fdde03146100cd578063095ea7b3146100f757806318160ddd1461012657806323b872dd14610148578063313ce567146101675780634abe30521461018d575f80fd5b366100c957005b5f80fd5b3480156100d8575f80fd5b506100e16102eb565b6040516100ee9190610aaf565b60405180910390f35b348015610102575f80fd5b50610116610111366004610b11565b61037a565b60405190151581526020016100ee565b348015610131575f80fd5b5061013a6103e6565b6040519081526020016100ee565b348015610153575f80fd5b50610116610162366004610b3b565b610402565b348015610172575f80fd5b5061017b601281565b60405160ff90911681526020016100ee565b348015610198575f80fd5b506002546101c2906001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b604080516001600160a01b03909416845260ff92831660208501529116908201526060016100ee565b3480156101f6575f80fd5b5061013a610205366004610b79565b60036020525f908152604090205481565b348015610221575f80fd5b506100e161044f565b348015610235575f80fd5b50600554610249906001600160a01b031681565b6040516001600160a01b0390911681526020016100ee565b34801561026c575f80fd5b5061011661027b366004610b11565b61045e565b34801561028b575f80fd5b50610294610471565b005b3480156102a1575f80fd5b5061013a6102b0366004610b94565b600460209081525f928352604080842090915290825290205481565b3480156102d7575f80fd5b506102946102e6366004610be0565b610627565b60605f80546102f990610c11565b80601f016020809104026020016040519081016040528092919081815260200182805461032590610c11565b80156103705780601f1061034757610100808354040283529160200191610370565b820191905f5260205f20905b81548152906001019060200180831161035357829003601f168201915b5050505050905090565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103d49086815260200190565b60405180910390a35060015b92915050565b6103f26012600a610d3d565b6103ff90620f4240610d4b565b81565b6001600160a01b0383165f908152600460209081526040808320338452909152812080548391908390610436908490610d62565b909155506104479050848484610685565b949350505050565b6060600180546102f990610c11565b5f61046a338484610685565b9392505050565b6002546001600160a01b03163314610487575f80fd5b600554600160a81b900460ff161561049d575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190610d75565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610565573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105899190610d75565b60405163e6a4390560e01b81523060048201526001600160a01b0380831660248301529192505f9184169063e6a4390590604401602060405180830381865afa1580156105d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fc9190610d75565b60058054600161ff0160a01b0319166001600160a01b0390921691909117600160a81b179055505050565b6002546001600160a01b0316331461065157604051629af2b160e81b815260040160405180910390fd5b6002805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b5f806106996002546001600160a01b031690565b600554909150600160a81b900460ff16806106c55750806001600160a01b0316856001600160a01b0316145b806106e15750806001600160a01b0316846001600160a01b0316145b6106e9575f80fd5b6001600160a01b0385165f9081526003602052604081208054859290610710908490610d62565b90915550506005546001600160a01b03858116911614801561073c5750600554600160a01b900460ff16155b801561077a575060646107516012600a610d3d565b61075e90620f4240610d4b565b6107689190610d90565b305f9081526003602052604090205410155b80156107985750806001600160a01b0316856001600160a01b031614155b15610975576005805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106107e3576107e3610daf565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108779190610d75565b8160018151811061088a5761088a610daf565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63eb6f613960646108ca6012600a610d3d565b6108d790620f4240610d4b565b6108e19190610d90565b5f8430426040518663ffffffff1660e01b8152600401610905959493929190610dc3565b5f604051808303815f87803b15801561091c575f80fd5b505af115801561092e573d5f803e3d5ffd5b50506040516001600160a01b03851692504780156108fc029250905f818181858888f19350505050158015610965573d5f803e3d5ffd5b50506005805460ff60a01b191690555b60025460ff600160a01b8204811691600160a81b9004166001600160a01b03871630148015906109b35750600554600160a81b900460ff1615156001145b15610a27576005545f906064906001600160a01b038981169116146109d857836109da565b825b6109e79060ff1688610d4b565b6109f19190610d90565b90506109fd8187610d62565b305f90815260036020526040812080549298508392909190610a20908490610e32565b9091555050505b6001600160a01b0386165f9081526003602052604081208054879290610a4e908490610e32565b92505081905550856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610a9a91815260200190565b60405180910390a35060019695505050505050565b5f6020808352835180828501525f5b81811015610ada57858101830151858201604001528201610abe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b0e575f80fd5b50565b5f8060408385031215610b22575f80fd5b8235610b2d81610afa565b946020939093013593505050565b5f805f60608486031215610b4d575f80fd5b8335610b5881610afa565b92506020840135610b6881610afa565b929592945050506040919091013590565b5f60208284031215610b89575f80fd5b813561046a81610afa565b5f8060408385031215610ba5575f80fd5b8235610bb081610afa565b91506020830135610bc081610afa565b809150509250929050565b803560ff81168114610bdb575f80fd5b919050565b5f8060408385031215610bf1575f80fd5b610bfa83610bcb565b9150610c0860208401610bcb565b90509250929050565b600181811c90821680610c2557607f821691505b602082108103610c4357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610c9757815f1904821115610c7d57610c7d610c49565b80851615610c8a57918102915b93841c9390800290610c62565b509250929050565b5f82610cad575060016103e0565b81610cb957505f6103e0565b8160018114610ccf5760028114610cd957610cf5565b60019150506103e0565b60ff841115610cea57610cea610c49565b50506001821b6103e0565b5060208310610133831016604e8410600b8410161715610d18575081810a6103e0565b610d228383610c5d565b805f1904821115610d3557610d35610c49565b029392505050565b5f61046a60ff841683610c9f565b80820281158282048414176103e0576103e0610c49565b818103818111156103e0576103e0610c49565b5f60208284031215610d85575f80fd5b815161046a81610afa565b5f82610daa57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015610e115784516001600160a01b031683529383019391830191600101610dec565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156103e0576103e0610c4956fea2646970667358221220ee9536e2ed60abc0cbb9d854972c8a481f12bb8f0aeced42ce6785a11fde52f464736f6c63430008140033