0x6080604052600436106100ab5760003560e01c806370a082311161006457806370a08231146101ae578063715018a6146101e45780638da5cb5b146101f957806395d89b4114610221578063a9059cbb14610251578063dd62ed3e1461027157600080fd5b806306fdde03146100b7578063095ea7b3146100fd57806318160ddd1461012d57806323b872dd14610150578063313ce56714610170578063502aafc11461018c57600080fd5b366100b257005b600080fd5b3480156100c357600080fd5b5060408051808201909152600b81526a5368696b617a7520496e7560a81b60208201525b6040516100f49190610bb9565b60405180910390f35b34801561010957600080fd5b5061011d610118366004610c23565b6102b7565b60405190151581526020016100f4565b34801561013957600080fd5b506101426102ce565b6040519081526020016100f4565b34801561015c57600080fd5b5061011d61016b366004610c4d565b6102ef565b34801561017c57600080fd5b50604051600981526020016100f4565b34801561019857600080fd5b506101ac6101a7366004610c89565b610358565b005b3480156101ba57600080fd5b506101426101c9366004610cc5565b6001600160a01b031660009081526001602052604090205490565b3480156101f057600080fd5b506101ac6103e4565b34801561020557600080fd5b506000546040516001600160a01b0390911681526020016100f4565b34801561022d57600080fd5b506040805180820190915260078152665348494b415a5560c81b60208201526100e7565b34801561025d57600080fd5b5061011d61026c366004610c23565b610488565b34801561027d57600080fd5b5061014261028c366004610ce0565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60006102c4338484610495565b5060015b92915050565b60006102dc6009600a610e0d565b6102ea90633b9aca00610e1c565b905090565b60006102fc8484846105ba565b61034e843361034985604051806060016040528060288152602001610e9b602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061088c565b610495565b5060019392505050565b6000546001600160a01b031633146103b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60058054911515600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b6000546001600160a01b0316331461043e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ae565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006102c43384846105ba565b6001600160a01b0383166104f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103ae565b6001600160a01b0382166105585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103ae565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316158015906105da57506001600160a01b03821615155b80156105e65750600081115b6106325760405162461bcd60e51b815260206004820152601c60248201527f5a65726f2061646472657373206f72207a65726f20616d6f756e742e0000000060448201526064016103ae565b6000546001600160a01b0384811691161480159061065e57506000546001600160a01b03838116911614155b156106bc57600554600160a01b900460ff166106bc5760405162461bcd60e51b815260206004820152601860248201527f53776170206973206e6f7420656e61626c6564207965742e000000000000000060448201526064016103ae565b6000806106c985856108c6565b90508015610788576005546001600160a01b03908116908516036107365761072f60646107296001600560159054906101000a900460ff1660ff16101561071157600061071f565b600554600160b81b900460ff165b869060ff1661090f565b90610991565b9150610777565b61077460646107296001600560159054906101000a900460ff1660ff16101561076057600061071f565b6005548690600160b01b900460ff1661090f565b91505b61078183836109d3565b9250610830565b6000546001600160a01b038581169116148015906107b357506005546001600160a01b038681169116145b80156107d757506001600160a01b03841660009081526003602052604090205460ff165b80156107f057506005546001600160a81b90910460ff16105b156108305760065460058054919350600160a81b90910460ff1690601561081683610e33565b91906101000a81548160ff021916908360ff160217905550505b811561086157306000908152600160205260409020546108509083610a15565b306000908152600160205260409020555b3060009081526001602052604090205461087a90610a74565b610885858585610ae5565b5050505050565b600081848411156108b05760405162461bcd60e51b81526004016103ae9190610bb9565b5060006108bd8486610e52565b95945050505050565b6001600160a01b03821660009081526003602052604081205460ff1615801561090857506001600160a01b03821660009081526003602052604090205460ff16155b9392505050565b600082600003610921575060006102c8565b600061092d8385610e1c565b90508261093a8583610e65565b146109085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103ae565b600061090883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b8b565b600061090883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061088c565b600080610a228385610e87565b9050838110156109085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ae565b600754811115610ae25730600090815260016020526040902054610a9890826109d3565b30600090815260016020526040808220929092556004546001600160a01b031681522054610ac69082610a15565b6004546001600160a01b03166000908152600160205260409020555b50565b6001600160a01b038316600090815260016020526040902054610b0890826109d3565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610b379082610a15565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105ad9085815260200190565b60008183610bac5760405162461bcd60e51b81526004016103ae9190610bb9565b5060006108bd8486610e65565b600060208083528351808285015260005b81811015610be657858101830151858201604001528201610bca565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c1e57600080fd5b919050565b60008060408385031215610c3657600080fd5b610c3f83610c07565b946020939093013593505050565b600080600060608486031215610c6257600080fd5b610c6b84610c07565b9250610c7960208501610c07565b9150604084013590509250925092565b60008060408385031215610c9c57600080fd5b610ca583610c07565b915060208301358015158114610cba57600080fd5b809150509250929050565b600060208284031215610cd757600080fd5b61090882610c07565b60008060408385031215610cf357600080fd5b610cfc83610c07565b9150610d0a60208401610c07565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610d64578160001904821115610d4a57610d4a610d13565b80851615610d5757918102915b93841c9390800290610d2e565b509250929050565b600082610d7b575060016102c8565b81610d88575060006102c8565b8160018114610d9e5760028114610da857610dc4565b60019150506102c8565b60ff841115610db957610db9610d13565b50506001821b6102c8565b5060208310610133831016604e8410600b8410161715610de7575081810a6102c8565b610df18383610d29565b8060001904821115610e0557610e05610d13565b029392505050565b600061090860ff841683610d6c565b80820281158282048414176102c8576102c8610d13565b600060ff821660ff8103610e4957610e49610d13565b60010192915050565b818103818111156102c8576102c8610d13565b600082610e8257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156102c8576102c8610d1356fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204c78f7e946d0221ce6d081c3fd9b35ab5220cfe3e0ad8e64b6f77e21bc4b9c1c64736f6c63430008130033
0x60806040526200003c60646200003560016200001e6009600a62000421565b6200002e90633b9aca0062000432565b90620001f1565b9062000288565b6007553480156200004c57600080fd5b506040516200141f3803806200141f8339810160408190526200006f9162000463565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000be6009600a62000421565b620000ce90633b9aca0062000432565b33600081815260016020526040902091909155600480546001600160a01b0319169091179055620001026009600a62000421565b6200010e908462000432565b6006556005805460ff838116600160b81b0260ff60b81b19918616600160b01b029190911661ffff60b01b19909216919091171790556001600360006200015d6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200018d3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001c76009600a62000421565b620001d790633b9aca0062000432565b60405190815260200160405180910390a350505062000517565b600082600003620002055750600062000282565b600062000213838562000432565b905082620002228583620004a4565b146200027f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200027f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620002d260201b60201c565b60008183620002f65760405162461bcd60e51b8152600401620002769190620004c7565b506000620003058486620004a4565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003655781600019048211156200034957620003496200030e565b808516156200035757918102915b93841c939080029062000329565b509250929050565b6000826200037e5750600162000282565b816200038d5750600062000282565b8160018114620003a65760028114620003b157620003d1565b600191505062000282565b60ff841115620003c557620003c56200030e565b50506001821b62000282565b5060208310610133831016604e8410600b8410161715620003f6575081810a62000282565b62000402838362000324565b80600019048211156200041957620004196200030e565b029392505050565b60006200027f60ff8416836200036d565b80820281158282048414176200028257620002826200030e565b805160ff811681146200045e57600080fd5b919050565b6000806000606084860312156200047957600080fd5b835192506200048b602085016200044c565b91506200049b604085016200044c565b90509250925092565b600082620004c257634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015620004f657858101830151858201604001528201620004d8565b506000604082860101526040601f19601f8301168501019250505092915050565b610ef880620005276000396000f3fe6080604052600436106100ab5760003560e01c806370a082311161006457806370a08231146101ae578063715018a6146101e45780638da5cb5b146101f957806395d89b4114610221578063a9059cbb14610251578063dd62ed3e1461027157600080fd5b806306fdde03146100b7578063095ea7b3146100fd57806318160ddd1461012d57806323b872dd14610150578063313ce56714610170578063502aafc11461018c57600080fd5b366100b257005b600080fd5b3480156100c357600080fd5b5060408051808201909152600b81526a5368696b617a7520496e7560a81b60208201525b6040516100f49190610bb9565b60405180910390f35b34801561010957600080fd5b5061011d610118366004610c23565b6102b7565b60405190151581526020016100f4565b34801561013957600080fd5b506101426102ce565b6040519081526020016100f4565b34801561015c57600080fd5b5061011d61016b366004610c4d565b6102ef565b34801561017c57600080fd5b50604051600981526020016100f4565b34801561019857600080fd5b506101ac6101a7366004610c89565b610358565b005b3480156101ba57600080fd5b506101426101c9366004610cc5565b6001600160a01b031660009081526001602052604090205490565b3480156101f057600080fd5b506101ac6103e4565b34801561020557600080fd5b506000546040516001600160a01b0390911681526020016100f4565b34801561022d57600080fd5b506040805180820190915260078152665348494b415a5560c81b60208201526100e7565b34801561025d57600080fd5b5061011d61026c366004610c23565b610488565b34801561027d57600080fd5b5061014261028c366004610ce0565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60006102c4338484610495565b5060015b92915050565b60006102dc6009600a610e0d565b6102ea90633b9aca00610e1c565b905090565b60006102fc8484846105ba565b61034e843361034985604051806060016040528060288152602001610e9b602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061088c565b610495565b5060019392505050565b6000546001600160a01b031633146103b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60058054911515600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b6000546001600160a01b0316331461043e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ae565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006102c43384846105ba565b6001600160a01b0383166104f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103ae565b6001600160a01b0382166105585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103ae565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316158015906105da57506001600160a01b03821615155b80156105e65750600081115b6106325760405162461bcd60e51b815260206004820152601c60248201527f5a65726f2061646472657373206f72207a65726f20616d6f756e742e0000000060448201526064016103ae565b6000546001600160a01b0384811691161480159061065e57506000546001600160a01b03838116911614155b156106bc57600554600160a01b900460ff166106bc5760405162461bcd60e51b815260206004820152601860248201527f53776170206973206e6f7420656e61626c6564207965742e000000000000000060448201526064016103ae565b6000806106c985856108c6565b90508015610788576005546001600160a01b03908116908516036107365761072f60646107296001600560159054906101000a900460ff1660ff16101561071157600061071f565b600554600160b81b900460ff165b869060ff1661090f565b90610991565b9150610777565b61077460646107296001600560159054906101000a900460ff1660ff16101561076057600061071f565b6005548690600160b01b900460ff1661090f565b91505b61078183836109d3565b9250610830565b6000546001600160a01b038581169116148015906107b357506005546001600160a01b038681169116145b80156107d757506001600160a01b03841660009081526003602052604090205460ff165b80156107f057506005546001600160a81b90910460ff16105b156108305760065460058054919350600160a81b90910460ff1690601561081683610e33565b91906101000a81548160ff021916908360ff160217905550505b811561086157306000908152600160205260409020546108509083610a15565b306000908152600160205260409020555b3060009081526001602052604090205461087a90610a74565b610885858585610ae5565b5050505050565b600081848411156108b05760405162461bcd60e51b81526004016103ae9190610bb9565b5060006108bd8486610e52565b95945050505050565b6001600160a01b03821660009081526003602052604081205460ff1615801561090857506001600160a01b03821660009081526003602052604090205460ff16155b9392505050565b600082600003610921575060006102c8565b600061092d8385610e1c565b90508261093a8583610e65565b146109085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103ae565b600061090883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b8b565b600061090883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061088c565b600080610a228385610e87565b9050838110156109085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ae565b600754811115610ae25730600090815260016020526040902054610a9890826109d3565b30600090815260016020526040808220929092556004546001600160a01b031681522054610ac69082610a15565b6004546001600160a01b03166000908152600160205260409020555b50565b6001600160a01b038316600090815260016020526040902054610b0890826109d3565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610b379082610a15565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105ad9085815260200190565b60008183610bac5760405162461bcd60e51b81526004016103ae9190610bb9565b5060006108bd8486610e65565b600060208083528351808285015260005b81811015610be657858101830151858201604001528201610bca565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c1e57600080fd5b919050565b60008060408385031215610c3657600080fd5b610c3f83610c07565b946020939093013593505050565b600080600060608486031215610c6257600080fd5b610c6b84610c07565b9250610c7960208501610c07565b9150604084013590509250925092565b60008060408385031215610c9c57600080fd5b610ca583610c07565b915060208301358015158114610cba57600080fd5b809150509250929050565b600060208284031215610cd757600080fd5b61090882610c07565b60008060408385031215610cf357600080fd5b610cfc83610c07565b9150610d0a60208401610c07565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610d64578160001904821115610d4a57610d4a610d13565b80851615610d5757918102915b93841c9390800290610d2e565b509250929050565b600082610d7b575060016102c8565b81610d88575060006102c8565b8160018114610d9e5760028114610da857610dc4565b60019150506102c8565b60ff841115610db957610db9610d13565b50506001821b6102c8565b5060208310610133831016604e8410600b8410161715610de7575081810a6102c8565b610df18383610d29565b8060001904821115610e0557610e05610d13565b029392505050565b600061090860ff841683610d6c565b80820281158282048414176102c8576102c8610d13565b600060ff821660ff8103610e4957610e49610d13565b60010192915050565b818103818111156102c8576102c8610d13565b600082610e8257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156102c8576102c8610d1356fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204c78f7e946d0221ce6d081c3fd9b35ab5220cfe3e0ad8e64b6f77e21bc4b9c1c64736f6c634300081300330000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064