0x608060405234801561001057600080fd5b50600436106101825760003560e01c806349bd5a5e116100d85780638da5cb5b1161008c578063a9059cbb11610066578063a9059cbb14610314578063dd62ed3e14610327578063f2fde38b1461036057600080fd5b80638da5cb5b146102e857806395d89b41146102f9578063a457c2d71461030157600080fd5b8063715018a6116100bd578063715018a6146102ca578063860a32ec146102d257806389f9a1d3146102df57600080fd5b806349bd5a5e1461027657806370a08231146102a157600080fd5b806323b872dd1161013a5780633aa633aa116101145780633aa633aa1461023b578063404e51291461025057806342966c681461026357600080fd5b806323b872dd14610206578063313ce56714610219578063395093511461022857600080fd5b806316c021291161016b57806316c02129146101c857806318160ddd146101eb5780631ab99e12146101fd57600080fd5b806306fdde0314610187578063095ea7b3146101a5575b600080fd5b61018f610373565b60405161019c9190610fb2565b60405180910390f35b6101b86101b336600461101c565b610405565b604051901515815260200161019c565b6101b86101d6366004611046565b600a6020526000908152604090205460ff1681565b6003545b60405190815260200161019c565b6101ef60085481565b6101b8610214366004611068565b61041c565b6040516012815260200161019c565b6101b861023636600461101c565b6104e0565b61024e6102493660046110b4565b61051c565b005b61024e61025e3660046110f6565b6105be565b61024e610271366004611129565b610643565b600954610289906001600160a01b031681565b6040516001600160a01b03909116815260200161019c565b6101ef6102af366004611046565b6001600160a01b031660009081526001602052604090205490565b61024e610650565b6006546101b89060ff1681565b6101ef60075481565b6000546001600160a01b0316610289565b61018f6106b6565b6101b861030f36600461101c565b6106c5565b6101b861032236600461101c565b610776565b6101ef610335366004611142565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61024e61036e366004611046565b610783565b6060600480546103829061116c565b80601f01602080910402602001604051908101604052809291908181526020018280546103ae9061116c565b80156103fb5780601f106103d0576101008083540402835291602001916103fb565b820191906000526020600020905b8154815290600101906020018083116103de57829003601f168201915b5050505050905090565b6000610412338484610862565b5060015b92915050565b60006104298484846109bb565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104c85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104d58533858403610862565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916104129185906105179086906111bc565b610862565b6000546001600160a01b031633146105765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6006805460ff1916941515949094179093556009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155600755600855565b6000546001600160a01b031633146106185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61064d3382610bde565b50565b6000546001600160a01b031633146106aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6106b46000610d6c565b565b6060600580546103829061116c565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561075f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104bf565b61076c3385858403610862565b5060019392505050565b60006104123384846109bb565b6000546001600160a01b031633146107dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6001600160a01b0381166108595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104bf565b61064d81610d6c565b6001600160a01b0383166108dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b0382166109595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610a375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b038216610ab35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b610abe838383610dc9565b6001600160a01b03831660009081526001602052604090205481811015610b4d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b849084906111bc565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bd091815260200190565b60405180910390a350505050565b6001600160a01b038216610c5a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b610c6682600083610dc9565b6001600160a01b03821660009081526001602052604090205481811015610cf55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610d249084906111cf565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ae565b505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000908152600a602052604090205460ff16158015610e0b57506001600160a01b0383166000908152600a602052604090205460ff16155b610e575760405162461bcd60e51b815260206004820152600b60248201527f426c61636b6c697374656400000000000000000000000000000000000000000060448201526064016104bf565b6009546001600160a01b0316610edc576000546001600160a01b0384811691161480610e9057506000546001600160a01b038381169116145b610d675760405162461bcd60e51b815260206004820152601660248201527f74726164696e67206973206e6f7420737461727465640000000000000000000060448201526064016104bf565b60065460ff168015610efb57506009546001600160a01b038481169116145b15610d675760075481610f23846001600160a01b031660009081526001602052604090205490565b610f2d91906111bc565b11158015610f66575060085481610f59846001600160a01b031660009081526001602052604090205490565b610f6391906111bc565b10155b610d675760405162461bcd60e51b815260206004820152600660248201527f466f72626964000000000000000000000000000000000000000000000000000060448201526064016104bf565b600060208083528351808285015260005b81811015610fdf57858101830151858201604001528201610fc3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461101757600080fd5b919050565b6000806040838503121561102f57600080fd5b61103883611000565b946020939093013593505050565b60006020828403121561105857600080fd5b61106182611000565b9392505050565b60008060006060848603121561107d57600080fd5b61108684611000565b925061109460208501611000565b9150604084013590509250925092565b8035801515811461101757600080fd5b600080600080608085870312156110ca57600080fd5b6110d3856110a4565b93506110e160208601611000565b93969395505050506040820135916060013590565b6000806040838503121561110957600080fd5b61111283611000565b9150611120602084016110a4565b90509250929050565b60006020828403121561113b57600080fd5b5035919050565b6000806040838503121561115557600080fd5b61115e83611000565b915061112060208401611000565b600181811c9082168061118057607f821691505b6020821081036111a057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610416576104166111a6565b81810381811115610416576104166111a656fea2646970667358221220a7f1f4bfd3b9bb3832fdbdd0407611e82a9d766189e743c24059b2c794a0baa964736f6c63430008130033
0x60806040523480156200001157600080fd5b506040518060400160405280600681526020016515d05395115160d21b8152506040518060400160405280600681526020016515d05395115160d21b8152506200006a62000064620000af60201b60201c565b620000b3565b600462000078838262000475565b50600562000087828262000475565b505050620000a9336c01431e0fae6d7217caa00000006200010360201b60201c565b62000569565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200015f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200016d60008383620001fa565b806003600082825462000181919062000541565b90915550506001600160a01b03821660009081526001602052604081208054839290620001b090849062000541565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166000908152600a602052604090205460ff161580156200023d57506001600160a01b0383166000908152600a602052604090205460ff16155b620002795760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640162000156565b6009546001600160a01b031662000307576000546001600160a01b0384811691161480620002b457506000546001600160a01b038381169116145b620003025760405162461bcd60e51b815260206004820152601660248201527f74726164696e67206973206e6f74207374617274656400000000000000000000604482015260640162000156565b505050565b60065460ff1680156200032757506009546001600160a01b038481169116145b1562000302576007548162000351846001600160a01b031660009081526001602052604090205490565b6200035d919062000541565b111580156200039a5750600854816200038b846001600160a01b031660009081526001602052604090205490565b62000397919062000541565b10155b620003025760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b604482015260640162000156565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003fc57607f821691505b6020821081036200041d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200030257600081815260208120601f850160051c810160208610156200044c5750805b601f850160051c820191505b818110156200046d5782815560010162000458565b505050505050565b81516001600160401b03811115620004915762000491620003d1565b620004a981620004a28454620003e7565b8462000423565b602080601f831160018114620004e15760008415620004c85750858301515b600019600386901b1c1916600185901b1785556200046d565b600085815260208120601f198616915b828110156200051257888601518255948401946001909101908401620004f1565b5085821015620005315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200056357634e487b7160e01b600052601160045260246000fd5b92915050565b61121880620005796000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806349bd5a5e116100d85780638da5cb5b1161008c578063a9059cbb11610066578063a9059cbb14610314578063dd62ed3e14610327578063f2fde38b1461036057600080fd5b80638da5cb5b146102e857806395d89b41146102f9578063a457c2d71461030157600080fd5b8063715018a6116100bd578063715018a6146102ca578063860a32ec146102d257806389f9a1d3146102df57600080fd5b806349bd5a5e1461027657806370a08231146102a157600080fd5b806323b872dd1161013a5780633aa633aa116101145780633aa633aa1461023b578063404e51291461025057806342966c681461026357600080fd5b806323b872dd14610206578063313ce56714610219578063395093511461022857600080fd5b806316c021291161016b57806316c02129146101c857806318160ddd146101eb5780631ab99e12146101fd57600080fd5b806306fdde0314610187578063095ea7b3146101a5575b600080fd5b61018f610373565b60405161019c9190610fb2565b60405180910390f35b6101b86101b336600461101c565b610405565b604051901515815260200161019c565b6101b86101d6366004611046565b600a6020526000908152604090205460ff1681565b6003545b60405190815260200161019c565b6101ef60085481565b6101b8610214366004611068565b61041c565b6040516012815260200161019c565b6101b861023636600461101c565b6104e0565b61024e6102493660046110b4565b61051c565b005b61024e61025e3660046110f6565b6105be565b61024e610271366004611129565b610643565b600954610289906001600160a01b031681565b6040516001600160a01b03909116815260200161019c565b6101ef6102af366004611046565b6001600160a01b031660009081526001602052604090205490565b61024e610650565b6006546101b89060ff1681565b6101ef60075481565b6000546001600160a01b0316610289565b61018f6106b6565b6101b861030f36600461101c565b6106c5565b6101b861032236600461101c565b610776565b6101ef610335366004611142565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61024e61036e366004611046565b610783565b6060600480546103829061116c565b80601f01602080910402602001604051908101604052809291908181526020018280546103ae9061116c565b80156103fb5780601f106103d0576101008083540402835291602001916103fb565b820191906000526020600020905b8154815290600101906020018083116103de57829003601f168201915b5050505050905090565b6000610412338484610862565b5060015b92915050565b60006104298484846109bb565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104c85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104d58533858403610862565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916104129185906105179086906111bc565b610862565b6000546001600160a01b031633146105765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6006805460ff1916941515949094179093556009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155600755600855565b6000546001600160a01b031633146106185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61064d3382610bde565b50565b6000546001600160a01b031633146106aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6106b46000610d6c565b565b6060600580546103829061116c565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561075f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104bf565b61076c3385858403610862565b5060019392505050565b60006104123384846109bb565b6000546001600160a01b031633146107dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bf565b6001600160a01b0381166108595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104bf565b61064d81610d6c565b6001600160a01b0383166108dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b0382166109595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610a375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b038216610ab35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b610abe838383610dc9565b6001600160a01b03831660009081526001602052604090205481811015610b4d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b849084906111bc565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bd091815260200190565b60405180910390a350505050565b6001600160a01b038216610c5a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b610c6682600083610dc9565b6001600160a01b03821660009081526001602052604090205481811015610cf55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bf565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610d249084906111cf565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ae565b505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000908152600a602052604090205460ff16158015610e0b57506001600160a01b0383166000908152600a602052604090205460ff16155b610e575760405162461bcd60e51b815260206004820152600b60248201527f426c61636b6c697374656400000000000000000000000000000000000000000060448201526064016104bf565b6009546001600160a01b0316610edc576000546001600160a01b0384811691161480610e9057506000546001600160a01b038381169116145b610d675760405162461bcd60e51b815260206004820152601660248201527f74726164696e67206973206e6f7420737461727465640000000000000000000060448201526064016104bf565b60065460ff168015610efb57506009546001600160a01b038481169116145b15610d675760075481610f23846001600160a01b031660009081526001602052604090205490565b610f2d91906111bc565b11158015610f66575060085481610f59846001600160a01b031660009081526001602052604090205490565b610f6391906111bc565b10155b610d675760405162461bcd60e51b815260206004820152600660248201527f466f72626964000000000000000000000000000000000000000000000000000060448201526064016104bf565b600060208083528351808285015260005b81811015610fdf57858101830151858201604001528201610fc3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461101757600080fd5b919050565b6000806040838503121561102f57600080fd5b61103883611000565b946020939093013593505050565b60006020828403121561105857600080fd5b61106182611000565b9392505050565b60008060006060848603121561107d57600080fd5b61108684611000565b925061109460208501611000565b9150604084013590509250925092565b8035801515811461101757600080fd5b600080600080608085870312156110ca57600080fd5b6110d3856110a4565b93506110e160208601611000565b93969395505050506040820135916060013590565b6000806040838503121561110957600080fd5b61111283611000565b9150611120602084016110a4565b90509250929050565b60006020828403121561113b57600080fd5b5035919050565b6000806040838503121561115557600080fd5b61115e83611000565b915061112060208401611000565b600181811c9082168061118057607f821691505b6020821081036111a057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610416576104166111a6565b81810381811115610416576104166111a656fea2646970667358221220a7f1f4bfd3b9bb3832fdbdd0407611e82a9d766189e743c24059b2c794a0baa964736f6c63430008130033