0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638c0b5e22116100ad578063a9059cbb11610071578063a9059cbb14610278578063c0b0fda21461028b578063c373688214610294578063dd62ed3e146102a7578063f2fde38b146102e057600080fd5b80638c0b5e22146102265780638da5cb5b1461022f57806395d89b411461024a5780639b1f9e7414610252578063a457c2d71461026557600080fd5b806339509351116100f457806339509351146101ac5780635342acb4146101bf57806368adfb6d146101eb57806370a08231146101f5578063715018a61461021e57600080fd5b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017257806323b872dd14610184578063313ce56714610197575b600080fd5b6101396102f3565b6040516101469190610f54565b60405180910390f35b61016261015d366004610fc5565b610385565b6040519015158152602001610146565b6004545b604051908152602001610146565b610162610192366004610fef565b61039c565b60075460405160ff9091168152602001610146565b6101626101ba366004610fc5565b610452565b6101626101cd36600461102b565b6001600160a01b031660009081526003602052604090205460ff1690565b6101f3610489565b005b61017661020336600461102b565b6001600160a01b031660009081526001602052604090205490565b6101f361051a565b61017660095481565b6000546040516001600160a01b039091168152602001610146565b61013961058e565b6101f3610260366004611046565b61059d565b610162610273366004610fc5565b6106ed565b610162610286366004610fc5565b610788565b61017660085481565b6101f36102a236600461105f565b610795565b6101766102b536600461109b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101f36102ee36600461102b565b610840565b606060058054610302906110ce565b80601f016020809104026020016040519081016040528092919081815260200182805461032e906110ce565b801561037b5780601f106103505761010080835404028352916020019161037b565b820191906000526020600020905b81548152906001019060200180831161035e57829003601f168201915b5050505050905090565b60006103923384846109f5565b5060015b92915050565b60006103a9848484610b11565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104335760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104478533610442868561111e565b6109f5565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610392918590610442908690611135565b6000546001600160a01b031633146104b35760405162461bcd60e51b815260040161042a9061114d565b600a54156104fc5760405162461bcd60e51b8152602060048201526016602482015275151bdad95b88105b1c9958591e481b185d5b98da195960521b604482015260640161042a565b61050842610e10611135565b600a55600b805460ff19166001179055565b6000546001600160a01b031633146105445760405162461bcd60e51b815260040161042a9061114d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060068054610302906110ce565b33806105f55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161042a565b6001600160a01b038116600090815260016020526040902054828110156106695760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161042a565b610673838261111e565b6001600160a01b038316600090815260016020526040812091909155600480548592906106a190849061111e565b90915550506040518381526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561076f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161042a565b61077e3385610442868561111e565b5060019392505050565b6000610392338484610b11565b6000546001600160a01b031633146107bf5760405162461bcd60e51b815260040161042a9061114d565b6001600160a01b0382166108155760405162461bcd60e51b815260206004820152601e60248201527f596f752063616e2774206578636c756465207a65726f20616464726573730000604482015260640161042a565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461086a5760405162461bcd60e51b815260040161042a9061114d565b6001600160a01b0381166108cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361093c57506000610396565b60006109488385611182565b90508261095585836111a1565b146109ac5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161042a565b9392505050565b60006109ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610eaf565b6001600160a01b038316610a575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161042a565b6001600160a01b038216610ab85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161042a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106e0565b6001600160a01b038316610b755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161042a565b6001600160a01b038216610bd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161042a565b600754610be89060ff16600a6112a7565b610bf6906301406f40611182565b60045411610c045760006008555b600b5460ff1615610c525742600a541115610c4357610c3b612710610c35600a60045461092a90919063ffffffff16565b906109b3565b600955610c72565b600b805460ff19169055610c72565b610c6e612710610c35603260045461092a90919063ffffffff16565b6009555b6001600160a01b03831660009081526003602052604081205460ff1680610cb157506001600160a01b03831660009081526003602052604090205460ff165b15610cbe57506000610d2d565b600954821115610d105760405162461bcd60e51b815260206004820152601f60248201527f4d6178205472616e73616374696f6e20416d6f756e7420657863656564656400604482015260640161042a565b610d2a6064610c356008548561092a90919063ffffffff16565b90505b6001600160a01b03841660009081526001602052604090205482811015610da55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161042a565b610daf838261111e565b6001600160a01b038616600090815260016020526040902055610dd28383610ee6565b6001600160a01b03851660009081526001602052604081208054909190610dfa908490611135565b90915550508115610e5e578160046000828254610e17919061111e565b90915550506040518281526000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b038085169086167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e978686610ee6565b60405190815260200160405180910390a35050505050565b60008183610ed05760405162461bcd60e51b815260040161042a9190610f54565b506000610edd84866111a1565b95945050505050565b60006109ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115610f475760405162461bcd60e51b815260040161042a9190610f54565b506000610edd848661111e565b600060208083528351808285015260005b81811015610f8157858101830151858201604001528201610f65565b81811115610f93576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610fc057600080fd5b919050565b60008060408385031215610fd857600080fd5b610fe183610fa9565b946020939093013593505050565b60008060006060848603121561100457600080fd5b61100d84610fa9565b925061101b60208501610fa9565b9150604084013590509250925092565b60006020828403121561103d57600080fd5b6109ac82610fa9565b60006020828403121561105857600080fd5b5035919050565b6000806040838503121561107257600080fd5b61107b83610fa9565b91506020830135801515811461109057600080fd5b809150509250929050565b600080604083850312156110ae57600080fd5b6110b783610fa9565b91506110c560208401610fa9565b90509250929050565b600181811c908216806110e257607f821691505b60208210810361110257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561113057611130611108565b500390565b6000821982111561114857611148611108565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600081600019048311821515161561119c5761119c611108565b500290565b6000826111be57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156111fe5781600019048211156111e4576111e4611108565b808516156111f157918102915b93841c93908002906111c8565b509250929050565b60008261121557506001610396565b8161122257506000610396565b816001811461123857600281146112425761125e565b6001915050610396565b60ff84111561125357611253611108565b50506001821b610396565b5060208310610133831016604e8410600b8410161715611281575081810a610396565b61128b83836111c3565b806000190482111561129f5761129f611108565b029392505050565b60006109ac60ff84168361120656fea264697066735822122098e8e804aecfbf72bbf0bbcf6d8bcd16e6adc9af35148fbd7c02c23a297afe8664736f6c634300080e0033
0x6080604052600a600855600b805460ff191690553480156200002057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600b8082526a426974436f696e20496e7560a81b6020909201918252620000969160059162000392565b506040805180820190915260048082526342494e5560e01b6020909201918252620000c49160069162000392565b506007805460ff19166012179055600160036000620000eb6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200012a6200011f3390565b637d2b75006200016b565b620001626127106200014e600a6004546200027960201b6200092a1790919060201c565b6200030c60201b620009b31790919060201c565b60095562000650565b600754600090620001819060ff16600a6200054b565b6200018d90836200055c565b90506001600160a01b038316620001eb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060046000828254620001ff91906200057e565b90915550506001600160a01b038316600090815260016020526040812080548392906200022e9084906200057e565b90915550506040518181526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000826000036200028d5750600062000306565b60006200029b83856200055c565b905082620002aa858362000599565b14620003035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620001e2565b90505b92915050565b60006200030383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200035660201b60201c565b600081836200037a5760405162461bcd60e51b8152600401620001e29190620005bc565b50600062000389848662000599565b95945050505050565b828054620003a09062000614565b90600052602060002090601f016020900481019282620003c457600085556200040f565b82601f10620003df57805160ff19168380011785556200040f565b828001600101855582156200040f579182015b828111156200040f578251825591602001919060010190620003f2565b506200041d92915062000421565b5090565b5b808211156200041d576000815560010162000422565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200048f57816000190482111562000473576200047362000438565b808516156200048157918102915b93841c939080029062000453565b509250929050565b600082620004a85750600162000306565b81620004b75750600062000306565b8160018114620004d05760028114620004db57620004fb565b600191505062000306565b60ff841115620004ef57620004ef62000438565b50506001821b62000306565b5060208310610133831016604e8410600b841016171562000520575081810a62000306565b6200052c83836200044e565b806000190482111562000543576200054362000438565b029392505050565b60006200030360ff84168362000497565b600081600019048311821515161562000579576200057962000438565b500290565b6000821982111562000594576200059462000438565b500190565b600082620005b757634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015620005eb57858101830151858201604001528201620005cd565b81811115620005fe576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c908216806200062957607f821691505b6020821081036200064a57634e487b7160e01b600052602260045260246000fd5b50919050565b6112ec80620006606000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638c0b5e22116100ad578063a9059cbb11610071578063a9059cbb14610278578063c0b0fda21461028b578063c373688214610294578063dd62ed3e146102a7578063f2fde38b146102e057600080fd5b80638c0b5e22146102265780638da5cb5b1461022f57806395d89b411461024a5780639b1f9e7414610252578063a457c2d71461026557600080fd5b806339509351116100f457806339509351146101ac5780635342acb4146101bf57806368adfb6d146101eb57806370a08231146101f5578063715018a61461021e57600080fd5b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017257806323b872dd14610184578063313ce56714610197575b600080fd5b6101396102f3565b6040516101469190610f54565b60405180910390f35b61016261015d366004610fc5565b610385565b6040519015158152602001610146565b6004545b604051908152602001610146565b610162610192366004610fef565b61039c565b60075460405160ff9091168152602001610146565b6101626101ba366004610fc5565b610452565b6101626101cd36600461102b565b6001600160a01b031660009081526003602052604090205460ff1690565b6101f3610489565b005b61017661020336600461102b565b6001600160a01b031660009081526001602052604090205490565b6101f361051a565b61017660095481565b6000546040516001600160a01b039091168152602001610146565b61013961058e565b6101f3610260366004611046565b61059d565b610162610273366004610fc5565b6106ed565b610162610286366004610fc5565b610788565b61017660085481565b6101f36102a236600461105f565b610795565b6101766102b536600461109b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101f36102ee36600461102b565b610840565b606060058054610302906110ce565b80601f016020809104026020016040519081016040528092919081815260200182805461032e906110ce565b801561037b5780601f106103505761010080835404028352916020019161037b565b820191906000526020600020905b81548152906001019060200180831161035e57829003601f168201915b5050505050905090565b60006103923384846109f5565b5060015b92915050565b60006103a9848484610b11565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104335760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104478533610442868561111e565b6109f5565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610392918590610442908690611135565b6000546001600160a01b031633146104b35760405162461bcd60e51b815260040161042a9061114d565b600a54156104fc5760405162461bcd60e51b8152602060048201526016602482015275151bdad95b88105b1c9958591e481b185d5b98da195960521b604482015260640161042a565b61050842610e10611135565b600a55600b805460ff19166001179055565b6000546001600160a01b031633146105445760405162461bcd60e51b815260040161042a9061114d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060068054610302906110ce565b33806105f55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161042a565b6001600160a01b038116600090815260016020526040902054828110156106695760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161042a565b610673838261111e565b6001600160a01b038316600090815260016020526040812091909155600480548592906106a190849061111e565b90915550506040518381526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561076f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161042a565b61077e3385610442868561111e565b5060019392505050565b6000610392338484610b11565b6000546001600160a01b031633146107bf5760405162461bcd60e51b815260040161042a9061114d565b6001600160a01b0382166108155760405162461bcd60e51b815260206004820152601e60248201527f596f752063616e2774206578636c756465207a65726f20616464726573730000604482015260640161042a565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461086a5760405162461bcd60e51b815260040161042a9061114d565b6001600160a01b0381166108cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361093c57506000610396565b60006109488385611182565b90508261095585836111a1565b146109ac5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161042a565b9392505050565b60006109ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610eaf565b6001600160a01b038316610a575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161042a565b6001600160a01b038216610ab85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161042a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106e0565b6001600160a01b038316610b755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161042a565b6001600160a01b038216610bd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161042a565b600754610be89060ff16600a6112a7565b610bf6906301406f40611182565b60045411610c045760006008555b600b5460ff1615610c525742600a541115610c4357610c3b612710610c35600a60045461092a90919063ffffffff16565b906109b3565b600955610c72565b600b805460ff19169055610c72565b610c6e612710610c35603260045461092a90919063ffffffff16565b6009555b6001600160a01b03831660009081526003602052604081205460ff1680610cb157506001600160a01b03831660009081526003602052604090205460ff165b15610cbe57506000610d2d565b600954821115610d105760405162461bcd60e51b815260206004820152601f60248201527f4d6178205472616e73616374696f6e20416d6f756e7420657863656564656400604482015260640161042a565b610d2a6064610c356008548561092a90919063ffffffff16565b90505b6001600160a01b03841660009081526001602052604090205482811015610da55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161042a565b610daf838261111e565b6001600160a01b038616600090815260016020526040902055610dd28383610ee6565b6001600160a01b03851660009081526001602052604081208054909190610dfa908490611135565b90915550508115610e5e578160046000828254610e17919061111e565b90915550506040518281526000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b038085169086167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e978686610ee6565b60405190815260200160405180910390a35050505050565b60008183610ed05760405162461bcd60e51b815260040161042a9190610f54565b506000610edd84866111a1565b95945050505050565b60006109ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115610f475760405162461bcd60e51b815260040161042a9190610f54565b506000610edd848661111e565b600060208083528351808285015260005b81811015610f8157858101830151858201604001528201610f65565b81811115610f93576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610fc057600080fd5b919050565b60008060408385031215610fd857600080fd5b610fe183610fa9565b946020939093013593505050565b60008060006060848603121561100457600080fd5b61100d84610fa9565b925061101b60208501610fa9565b9150604084013590509250925092565b60006020828403121561103d57600080fd5b6109ac82610fa9565b60006020828403121561105857600080fd5b5035919050565b6000806040838503121561107257600080fd5b61107b83610fa9565b91506020830135801515811461109057600080fd5b809150509250929050565b600080604083850312156110ae57600080fd5b6110b783610fa9565b91506110c560208401610fa9565b90509250929050565b600181811c908216806110e257607f821691505b60208210810361110257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561113057611130611108565b500390565b6000821982111561114857611148611108565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600081600019048311821515161561119c5761119c611108565b500290565b6000826111be57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156111fe5781600019048211156111e4576111e4611108565b808516156111f157918102915b93841c93908002906111c8565b509250929050565b60008261121557506001610396565b8161122257506000610396565b816001811461123857600281146112425761125e565b6001915050610396565b60ff84111561125357611253611108565b50506001821b610396565b5060208310610133831016604e8410600b8410161715611281575081810a610396565b61128b83836111c3565b806000190482111561129f5761129f611108565b029392505050565b60006109ac60ff84168361120656fea264697066735822122098e8e804aecfbf72bbf0bbcf6d8bcd16e6adc9af35148fbd7c02c23a297afe8664736f6c634300080e0033