0x60806040526004361061013f575f3560e01c80637db52a7b116100b3578063c9567bf91161006d578063c9567bf914610377578063db602efd1461038b578063dd62ed3e146103aa578063e0f3ccf5146103ee578063e4748b9e14610403578063e57a35b714610418575f80fd5b80637db52a7b146102f557806382247ec0146103095780638da5cb5b1461031e57806395d89b411461014a5780639b2f5d8614610344578063a9059cbb14610358575f80fd5b806323b872dd1161010457806323b872dd14610211578063313ce567146102305780634ada218b1461024b578063525474351461026b5780635342acb41461028a57806370a08231146102c1575f80fd5b806306fdde031461014a578063095ea7b31461018b57806318160ddd146101ba5780631b300e46146101dc57806323b63585146101f2575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50604080518082018252600a81526914da185c995cc8109bdd60b21b602082015290516101829190610f46565b60405180910390f35b348015610196575f80fd5b506101aa6101a5366004610fa8565b610437565b6040519015158152602001610182565b3480156101c5575f80fd5b506101ce61044d565b604051908152602001610182565b3480156101e7575f80fd5b506101f061046c565b005b3480156101fd575f80fd5b506101aa61020c366004610fd2565b6104c5565b34801561021c575f80fd5b506101aa61022b366004610fe9565b6104db565b34801561023b575f80fd5b5060405160128152602001610182565b348015610256575f80fd5b506005546101aa90600160a01b900460ff1681565b348015610276575f80fd5b506101f0610285366004610fd2565b610542565b348015610295575f80fd5b506101aa6102a4366004611027565b6001600160a01b03165f9081526002602052604090205460ff1690565b3480156102cc575f80fd5b506101ce6102db366004611027565b6001600160a01b03165f9081526003602052604090205490565b348015610300575f80fd5b506101f06105bf565b348015610314575f80fd5b506101ce600a5481565b348015610329575f80fd5b505f546040516001600160a01b039091168152602001610182565b34801561034f575f80fd5b506101f0610610565b348015610363575f80fd5b506101aa610372366004610fa8565b610681565b348015610382575f80fd5b506101f061068d565b348015610396575f80fd5b506101f06103a5366004610fd2565b6106cf565b3480156103b5575f80fd5b506101ce6103c4366004611042565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156103f9575f80fd5b506101ce60095481565b34801561040e575f80fd5b506101ce60085481565b348015610423575f80fd5b506101f0610432366004610fd2565b610740565b5f6104433384846107b1565b5060015b92915050565b5f61045a6012600a61116d565b610467906298968061117b565b905090565b5f546001600160a01b0316331461049e5760405162461bcd60e51b815260040161049590611192565b60405180910390fd5b6104aa6012600a61116d565b6104b7906298968061117b565b600a555f6008819055600955565b5f6104d33361dead84610811565b506001919050565b5f6104e7848484610811565b6105388433610533856040518060600160405280602881526020016112ab602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190610b95565b6107b1565b5060019392505050565b5f546001600160a01b0316331461056b5760405162461bcd60e51b815260040161049590611192565b5f81116105ba5760405162461bcd60e51b815260206004820152601960248201527f616d6f756e742073686f756c64206e6f74206265207a65726f000000000000006044820152606401610495565b600655565b5f546001600160a01b031633146105e85760405162461bcd60e51b815260040161049590611192565b6105f46012600a61116d565b610601906298968061117b565b600a5560036008819055600955565b5f546001600160a01b031633146106395760405162461bcd60e51b815260040161049590611192565b60058054600160b01b60ff600160b81b8084048216150260ff60b81b1984168117839004909116151590910260ff60b01b1990911661ffff60b01b1990921691909117179055565b5f610443338484610811565b5f546001600160a01b031633146106b65760405162461bcd60e51b815260040161049590611192565b6005805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b031633146106f85760405162461bcd60e51b815260040161049590611192565b606481111561073b5760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206e65772046656560881b6044820152606401610495565b600955565b5f546001600160a01b031633146107695760405162461bcd60e51b815260040161049590611192565b60648111156107ac5760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206e65772046656560881b6044820152606401610495565b600855565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116108725760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610495565b6001600160a01b0383165f90815260026020526040812054819060ff16806108b157506001600160a01b0384165f9081526002602052604090205460ff165b905080610a5757600554600160a01b900460ff1661090a5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b6044820152606401610495565b6005546001600160a01b03908116908616036109bd57600a5483610942866001600160a01b03165f9081526003602052604090205490565b61094c91906111c7565b111561099a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610495565b6109ba60646109b460085486610bcd90919063ffffffff16565b90610c52565b91505b6005546001600160a01b03908116908516036109f0576109ed60646109b460095486610bcd90919063ffffffff16565b91505b600554600160a81b900460ff16158015610a1757506005546001600160a01b038581169116145b8015610a2c5750600554600160b01b900460ff165b8015610a475750600654305f90815260036020526040902054115b15610a5757610a57600654610c93565b8115610acf57305f90815260036020526040902054610a769083610cf3565b305f81815260036020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ac69086815260200190565b60405180910390a35b6001600160a01b0385165f90815260036020526040902054610af19084610d51565b6001600160a01b0386165f90815260036020526040902055610b34610b168484610d51565b6001600160a01b0386165f9081526003602052604090205490610cf3565b6001600160a01b038086165f8181526003602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610b7d8686610d51565b60405190815260200160405180910390a35050505050565b5f8184841115610bb85760405162461bcd60e51b81526004016104959190610f46565b505f610bc484866111da565b95945050505050565b5f825f03610bdc57505f610447565b5f610be7838561117b565b905082610bf485836111ed565b14610c4b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610495565b9392505050565b5f610c4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d92565b5f610c9d82610dbe565b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610ce7576040519150601f19603f3d011682016040523d82523d5f602084013e610cec565b606091505b5050505050565b5f80610cff83856111c7565b905083811015610c4b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610495565b5f610c4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b95565b5f8183610db25760405162461bcd60e51b81526004016104959190610f46565b505f610bc484866111ed565b6005805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e0457610e0461120c565b60200260200101906001600160a01b031690816001600160a01b03168152505060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e989190611220565b81600181518110610eab57610eab61120c565b6001600160a01b039283166020918202929092010152600454610ed191309116846107b1565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791610f089186915f918791309142910161123b565b5f604051808303815f87803b158015610f1f575f80fd5b505af1158015610f31573d5f803e3d5ffd5b50506005805460ff60a81b1916905550505050565b5f6020808352835180828501525f5b81811015610f7157858101830151858201604001528201610f55565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610fa5575f80fd5b50565b5f8060408385031215610fb9575f80fd5b8235610fc481610f91565b946020939093013593505050565b5f60208284031215610fe2575f80fd5b5035919050565b5f805f60608486031215610ffb575f80fd5b833561100681610f91565b9250602084013561101681610f91565b929592945050506040919091013590565b5f60208284031215611037575f80fd5b8135610c4b81610f91565b5f8060408385031215611053575f80fd5b823561105e81610f91565b9150602083013561106e81610f91565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156110c757815f19048211156110ad576110ad611079565b808516156110ba57918102915b93841c9390800290611092565b509250929050565b5f826110dd57506001610447565b816110e957505f610447565b81600181146110ff576002811461110957611125565b6001915050610447565b60ff84111561111a5761111a611079565b50506001821b610447565b5060208310610133831016604e8410600b8410161715611148575081810a610447565b611152838361108d565b805f190482111561116557611165611079565b029392505050565b5f610c4b60ff8416836110cf565b808202811582820484141761044757610447611079565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561044757610447611079565b8181038181111561044757610447611079565b5f8261120757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611230575f80fd5b8151610c4b81610f91565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156112895784516001600160a01b031683529383019391830191600101611264565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a594225a6a91e71e46188f9282ad46bc2da18ab27ff6d05c3287bc7e9f13036f64736f6c63430008150033
0x60806040526005805463ffffffff60a01b1916905560c8620000246012600a620004ad565b620000339062989680620004c4565b6200003f9190620004de565b6006556005600881905560095560646200005c6012600a620004ad565b6200006b9062989680620004c4565b62000078906002620004c4565b620000849190620004de565b600a5534801562000093575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556040805163c45a015560e01b81529051919263c45a01559282820192602092908290030181865afa15801562000134573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015a9190620004fe565b6001600160a01b031663c9c653963060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e09190620004fe565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200022b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002519190620004fe565b600580546001600160a01b0319166001600160a01b0392909216919091179055620002793390565b600780546001600160a01b0319166001600160a01b0392909216919091179055620002a76012600a620004ad565b620002b69062989680620004c4565b335f81815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002f86012600a620004ad565b620003079062989680620004c4565b60405190815260200160405180910390a3600160025f6200032f5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260029093528183208054851660019081179091556004549091168352912080549092161790556005805460ff60b81b1916600160b81b17905562000526565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f257815f1904821115620003d657620003d66200039e565b80851615620003e457918102915b93841c9390800290620003b7565b509250929050565b5f826200040a57506001620004a7565b816200041857505f620004a7565b81600181146200043157600281146200043c576200045c565b6001915050620004a7565b60ff8411156200045057620004506200039e565b50506001821b620004a7565b5060208310610133831016604e8410600b841016171562000481575081810a620004a7565b6200048d8383620003b2565b805f1904821115620004a357620004a36200039e565b0290505b92915050565b5f620004bd60ff841683620003fa565b9392505050565b8082028115828204841417620004a757620004a76200039e565b5f82620004f957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200050f575f80fd5b81516001600160a01b0381168114620004bd575f80fd5b61130880620005345f395ff3fe60806040526004361061013f575f3560e01c80637db52a7b116100b3578063c9567bf91161006d578063c9567bf914610377578063db602efd1461038b578063dd62ed3e146103aa578063e0f3ccf5146103ee578063e4748b9e14610403578063e57a35b714610418575f80fd5b80637db52a7b146102f557806382247ec0146103095780638da5cb5b1461031e57806395d89b411461014a5780639b2f5d8614610344578063a9059cbb14610358575f80fd5b806323b872dd1161010457806323b872dd14610211578063313ce567146102305780634ada218b1461024b578063525474351461026b5780635342acb41461028a57806370a08231146102c1575f80fd5b806306fdde031461014a578063095ea7b31461018b57806318160ddd146101ba5780631b300e46146101dc57806323b63585146101f2575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50604080518082018252600a81526914da185c995cc8109bdd60b21b602082015290516101829190610f46565b60405180910390f35b348015610196575f80fd5b506101aa6101a5366004610fa8565b610437565b6040519015158152602001610182565b3480156101c5575f80fd5b506101ce61044d565b604051908152602001610182565b3480156101e7575f80fd5b506101f061046c565b005b3480156101fd575f80fd5b506101aa61020c366004610fd2565b6104c5565b34801561021c575f80fd5b506101aa61022b366004610fe9565b6104db565b34801561023b575f80fd5b5060405160128152602001610182565b348015610256575f80fd5b506005546101aa90600160a01b900460ff1681565b348015610276575f80fd5b506101f0610285366004610fd2565b610542565b348015610295575f80fd5b506101aa6102a4366004611027565b6001600160a01b03165f9081526002602052604090205460ff1690565b3480156102cc575f80fd5b506101ce6102db366004611027565b6001600160a01b03165f9081526003602052604090205490565b348015610300575f80fd5b506101f06105bf565b348015610314575f80fd5b506101ce600a5481565b348015610329575f80fd5b505f546040516001600160a01b039091168152602001610182565b34801561034f575f80fd5b506101f0610610565b348015610363575f80fd5b506101aa610372366004610fa8565b610681565b348015610382575f80fd5b506101f061068d565b348015610396575f80fd5b506101f06103a5366004610fd2565b6106cf565b3480156103b5575f80fd5b506101ce6103c4366004611042565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156103f9575f80fd5b506101ce60095481565b34801561040e575f80fd5b506101ce60085481565b348015610423575f80fd5b506101f0610432366004610fd2565b610740565b5f6104433384846107b1565b5060015b92915050565b5f61045a6012600a61116d565b610467906298968061117b565b905090565b5f546001600160a01b0316331461049e5760405162461bcd60e51b815260040161049590611192565b60405180910390fd5b6104aa6012600a61116d565b6104b7906298968061117b565b600a555f6008819055600955565b5f6104d33361dead84610811565b506001919050565b5f6104e7848484610811565b6105388433610533856040518060600160405280602881526020016112ab602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190610b95565b6107b1565b5060019392505050565b5f546001600160a01b0316331461056b5760405162461bcd60e51b815260040161049590611192565b5f81116105ba5760405162461bcd60e51b815260206004820152601960248201527f616d6f756e742073686f756c64206e6f74206265207a65726f000000000000006044820152606401610495565b600655565b5f546001600160a01b031633146105e85760405162461bcd60e51b815260040161049590611192565b6105f46012600a61116d565b610601906298968061117b565b600a5560036008819055600955565b5f546001600160a01b031633146106395760405162461bcd60e51b815260040161049590611192565b60058054600160b01b60ff600160b81b8084048216150260ff60b81b1984168117839004909116151590910260ff60b01b1990911661ffff60b01b1990921691909117179055565b5f610443338484610811565b5f546001600160a01b031633146106b65760405162461bcd60e51b815260040161049590611192565b6005805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b031633146106f85760405162461bcd60e51b815260040161049590611192565b606481111561073b5760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206e65772046656560881b6044820152606401610495565b600955565b5f546001600160a01b031633146107695760405162461bcd60e51b815260040161049590611192565b60648111156107ac5760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206e65772046656560881b6044820152606401610495565b600855565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116108725760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610495565b6001600160a01b0383165f90815260026020526040812054819060ff16806108b157506001600160a01b0384165f9081526002602052604090205460ff165b905080610a5757600554600160a01b900460ff1661090a5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b6044820152606401610495565b6005546001600160a01b03908116908616036109bd57600a5483610942866001600160a01b03165f9081526003602052604090205490565b61094c91906111c7565b111561099a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610495565b6109ba60646109b460085486610bcd90919063ffffffff16565b90610c52565b91505b6005546001600160a01b03908116908516036109f0576109ed60646109b460095486610bcd90919063ffffffff16565b91505b600554600160a81b900460ff16158015610a1757506005546001600160a01b038581169116145b8015610a2c5750600554600160b01b900460ff165b8015610a475750600654305f90815260036020526040902054115b15610a5757610a57600654610c93565b8115610acf57305f90815260036020526040902054610a769083610cf3565b305f81815260036020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ac69086815260200190565b60405180910390a35b6001600160a01b0385165f90815260036020526040902054610af19084610d51565b6001600160a01b0386165f90815260036020526040902055610b34610b168484610d51565b6001600160a01b0386165f9081526003602052604090205490610cf3565b6001600160a01b038086165f8181526003602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610b7d8686610d51565b60405190815260200160405180910390a35050505050565b5f8184841115610bb85760405162461bcd60e51b81526004016104959190610f46565b505f610bc484866111da565b95945050505050565b5f825f03610bdc57505f610447565b5f610be7838561117b565b905082610bf485836111ed565b14610c4b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610495565b9392505050565b5f610c4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d92565b5f610c9d82610dbe565b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610ce7576040519150601f19603f3d011682016040523d82523d5f602084013e610cec565b606091505b5050505050565b5f80610cff83856111c7565b905083811015610c4b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610495565b5f610c4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b95565b5f8183610db25760405162461bcd60e51b81526004016104959190610f46565b505f610bc484866111ed565b6005805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e0457610e0461120c565b60200260200101906001600160a01b031690816001600160a01b03168152505060045f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e989190611220565b81600181518110610eab57610eab61120c565b6001600160a01b039283166020918202929092010152600454610ed191309116846107b1565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791610f089186915f918791309142910161123b565b5f604051808303815f87803b158015610f1f575f80fd5b505af1158015610f31573d5f803e3d5ffd5b50506005805460ff60a81b1916905550505050565b5f6020808352835180828501525f5b81811015610f7157858101830151858201604001528201610f55565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610fa5575f80fd5b50565b5f8060408385031215610fb9575f80fd5b8235610fc481610f91565b946020939093013593505050565b5f60208284031215610fe2575f80fd5b5035919050565b5f805f60608486031215610ffb575f80fd5b833561100681610f91565b9250602084013561101681610f91565b929592945050506040919091013590565b5f60208284031215611037575f80fd5b8135610c4b81610f91565b5f8060408385031215611053575f80fd5b823561105e81610f91565b9150602083013561106e81610f91565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156110c757815f19048211156110ad576110ad611079565b808516156110ba57918102915b93841c9390800290611092565b509250929050565b5f826110dd57506001610447565b816110e957505f610447565b81600181146110ff576002811461110957611125565b6001915050610447565b60ff84111561111a5761111a611079565b50506001821b610447565b5060208310610133831016604e8410600b8410161715611148575081810a610447565b611152838361108d565b805f190482111561116557611165611079565b029392505050565b5f610c4b60ff8416836110cf565b808202811582820484141761044757610447611079565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561044757610447611079565b8181038181111561044757610447611079565b5f8261120757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611230575f80fd5b8151610c4b81610f91565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156112895784516001600160a01b031683529383019391830191600101611264565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a594225a6a91e71e46188f9282ad46bc2da18ab27ff6d05c3287bc7e9f13036f64736f6c63430008150033