6080604052620000126012600a620002a6565b6200002190620f4240620002be565b6200002e906002620002be565b6004556000600681905560056007556008556002600d55600e805460ff191690553480156200005c57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b03191673ad3776023e44ab1f13995d40e4b7b366feb8b22217815533600090815260036020526040808220805460ff199081166001908117909255308452828420805482168317905593546001600160a01b0316835291208054909216179055620001176012600a620002a6565b62000127906305f5e100620002be565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200016a6012600a620002a6565b6200017a906305f5e100620002be565b60405190815260200160405180910390a3620002d8565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001e8578160001904821115620001cc57620001cc62000191565b80851615620001da57918102915b93841c9390800290620001ac565b509250929050565b6000826200020157506001620002a0565b816200021057506000620002a0565b8160018114620002295760028114620002345762000254565b6001915050620002a0565b60ff84111562000248576200024862000191565b50506001821b620002a0565b5060208310610133831016604e8410600b841016171562000279575081810a620002a0565b620002858383620001a7565b80600019048211156200029c576200029c62000191565b0290505b92915050565b6000620002b760ff841683620001f0565b9392505050565b8082028115828204841417620002a057620002a062000191565b6118a580620002e86000396000f3fe60806040526004361061014f5760003560e01c80638124f7ac116100b6578063aa4bde281161006f578063aa4bde28146103cb578063cc1776d3146103e1578063cd0d8661146103f7578063d10a08911461040c578063dd62ed3e1461042c578063f2fde38b1461047257600080fd5b80638124f7ac1461031e5780638a8c523c146103345780638da5cb5b1461034957806395d89b4114610367578063a26fe56614610396578063a9059cbb146103ab57600080fd5b806349bd5a5e1161010857806349bd5a5e146102665780634de132cd146102865780634f7041a5146102a857806360cad12a146102be57806370a08231146102d3578063715018a61461030957600080fd5b806306fdde031461015b57806307aa90ca1461019f578063095ea7b3146101d757806318160ddd1461020757806323b872dd1461022a578063313ce5671461024a57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506040805180820190915260098152685365646f6e6120414960b81b60208201525b604051610196919061147b565b60405180910390f35b3480156101ab57600080fd5b50600b546101bf906001600160a01b031681565b6040516001600160a01b039091168152602001610196565b3480156101e357600080fd5b506101f76101f23660046114de565b610492565b6040519015158152602001610196565b34801561021357600080fd5b5061021c6104a9565b604051908152602001610196565b34801561023657600080fd5b506101f761024536600461150a565b6104ca565b34801561025657600080fd5b5060405160128152602001610196565b34801561027257600080fd5b50600a546101bf906001600160a01b031681565b34801561029257600080fd5b506102a66102a136600461154b565b610564565b005b3480156102b457600080fd5b5061021c60065481565b3480156102ca57600080fd5b506102a66105a2565b3480156102df57600080fd5b5061021c6102ee36600461156d565b6001600160a01b031660009081526001602052604090205490565b34801561031557600080fd5b506102a661064b565b34801561032a57600080fd5b5061021c60085481565b34801561034057600080fd5b506102a66106bf565b34801561035557600080fd5b506000546001600160a01b03166101bf565b34801561037357600080fd5b506040805180820190915260068152655345444f4e4160d01b6020820152610189565b3480156103a257600080fd5b506102a66106fc565b3480156103b757600080fd5b506101f76103c63660046114de565b610a8b565b3480156103d757600080fd5b5061021c60045481565b3480156103ed57600080fd5b5061021c60075481565b34801561040357600080fd5b506102a6610a98565b34801561041857600080fd5b506102a661042736600461158a565b610ae1565b34801561043857600080fd5b5061021c6104473660046115a3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561047e57600080fd5b506102a661048d36600461156d565b610b10565b600061049f338484610bdb565b5060015b92915050565b60006104b76012600a6116d6565b6104c5906305f5e1006116e5565b905090565b60006104d7848484610c9f565b61055a8433610555856040518060400160405280600d81526020016c6c6f7720616c6c6f77616e636560981b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006105343390565b6001600160a01b03168152602081019190915260400160002054919061113e565b610bdb565b5060019392505050565b6000546001600160a01b031633146105975760405162461bcd60e51b815260040161058e906116fc565b60405180910390fd5b600691909155600755565b6000546001600160a01b031633146105cc5760405162461bcd60e51b815260040161058e906116fc565b6000471161061c5760405162461bcd60e51b815260206004820152601760248201527f4e6f2042616c616e636520746f20776974686472617721000000000000000000604482015260640161058e565b60405133904780156108fc02916000818181858888f19350505050158015610648573d6000803e3d6000fd5b50565b6000546001600160a01b031633146106755760405162461bcd60e51b815260040161058e906116fc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106e95760405162461bcd60e51b815260040161058e906116fc565b600e805460ff1916600117905543600c55565b6000546001600160a01b031633146107265760405162461bcd60e51b815260040161058e906116fc565b600e5460ff161561076d5760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b604482015260640161058e565b600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107b69030906107a86012600a6116d6565b610555906305f5e1006116e5565b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d9190611733565b6001600160a01b031663c9c6539630600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b39190611733565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109249190611733565b600a80546001600160a01b039283166001600160a01b03199091161790556009541663f305d719473061096c816001600160a01b031660009081526001602052604090205490565b6000806109816000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109e9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a0e9190611750565b5050600a5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610648919061177e565b600061049f338484610c9f565b6000546001600160a01b03163314610ac25760405162461bcd60e51b815260040161058e906116fc565b610ace6012600a6116d6565b610adc906305f5e1006116e5565b600455565b6000546001600160a01b03163314610b0b5760405162461bcd60e51b815260040161058e906116fc565b600d55565b6000546001600160a01b03163314610b3a5760405162461bcd60e51b815260040161058e906116fc565b6001600160a01b038116610b905760405162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161058e565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b03831615801590610bfb57506001600160a01b03821615155b610c3e5760405162461bcd60e51b8152602060048201526014602482015273617070726f7665207a65726f206164647265737360601b604482015260640161058e565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161058e565b6001600160a01b038216610d655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161058e565b60008111610dc75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161058e565b6000546001600160a01b0384811691161480610deb57506001600160a01b03831630145b15610e0257610dfd8383836001611178565b505050565b6001600160a01b03831660009081526003602052604090205460ff1615610e38576000600581905550610dfd8383836000611178565b600e5460ff16610e8a5760405162461bcd60e51b815260206004820152601760248201527f576169742074696c6c205365646f6e61204c61756e6368000000000000000000604482015260640161058e565b600d54600c54610e9a91906117a0565b431015610eab57602d600555611033565b600a546001600160a01b0390811690841603610f475760045481610ee4846001600160a01b031660009081526001602052604090205490565b610eee91906117a0565b1115610f3c5760405162461bcd60e51b815260206004820152601760248201527f4d61782077616c6c6574203225206174206c61756e6368000000000000000000604482015260640161058e565b600654600555611033565b600a546001600160a01b039081169083160361102c5730600090815260016020526040902054610a8c610f7c6012600a6116d6565b610f8990620f42406116e5565b610f9391906117b3565b81118015610fa95750600e54610100900460ff16155b1561102057610fba6012600a6116d6565b610fc790620f42406116e5565b811115610fea57610fda6012600a6116d6565b610fe790620f42406116e5565b90505b610a8c610ff96012600a6116d6565b61100690620f42406116e5565b61101091906117b3565b821115611020576110208161126f565b50600754600555611033565b6008546005555b600060646005548361104591906116e5565b61104f91906117b3565b9050600061105d82846117d5565b6001600160a01b0386166000908152600160205260409020549091506110849084906117d5565b6001600160a01b0380871660009081526001602052604080822093909355908616815220546110b49082906117a0565b6001600160a01b0385166000908152600160205260408082209290925530815220546110e19083906117a0565b3060009081526001602090815260409182902092909255518281526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b600081848411156111625760405162461bcd60e51b815260040161058e919061147b565b50600061116f84866117d5565b95945050505050565b80156111ea576040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600190915291909120546111d091849061113e565b6001600160a01b0385166000908152600160205260409020555b6001600160a01b03831660009081526001602052604090205461120d9083611421565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112619086815260200190565b60405180910390a350505050565b600e805461ff00191661010017905560408051600280825260608201835260009260208301908036833701905050905030816000815181106112b3576112b36117e8565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561130c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113309190611733565b81600181518110611343576113436117e8565b6001600160a01b0392831660209182029290920101526009546113699130911684610bdb565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906113a29085906000908690309042906004016117fe565b600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b5050600b546040514793506001600160a01b03909116915082156108fc029083906000818181858888f19350505050158015611410573d6000803e3d6000fd5b5050600e805461ff00191690555050565b60008061142e83856117a0565b9050838110156114745760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640161058e565b9392505050565b600060208083528351808285015260005b818110156114a85785810183015185820160400152820161148c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461064857600080fd5b600080604083850312156114f157600080fd5b82356114fc816114c9565b946020939093013593505050565b60008060006060848603121561151f57600080fd5b833561152a816114c9565b9250602084013561153a816114c9565b929592945050506040919091013590565b6000806040838503121561155e57600080fd5b50508035926020909101359150565b60006020828403121561157f57600080fd5b8135611474816114c9565b60006020828403121561159c57600080fd5b5035919050565b600080604083850312156115b657600080fd5b82356115c1816114c9565b915060208301356115d1816114c9565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561162d578160001904821115611613576116136115dc565b8085161561162057918102915b93841c93908002906115f7565b509250929050565b600082611644575060016104a3565b81611651575060006104a3565b816001811461166757600281146116715761168d565b60019150506104a3565b60ff841115611682576116826115dc565b50506001821b6104a3565b5060208310610133831016604e8410600b84101617156116b0575081810a6104a3565b6116ba83836115f2565b80600019048211156116ce576116ce6115dc565b029392505050565b600061147460ff841683611635565b80820281158282048414176104a3576104a36115dc565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b60006020828403121561174557600080fd5b8151611474816114c9565b60008060006060848603121561176557600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561179057600080fd5b8151801515811461147457600080fd5b808201808211156104a3576104a36115dc565b6000826117d057634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104a3576104a36115dc565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561184e5784516001600160a01b031683529383019391830191600101611829565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122007e9ba88e4067b3458a30696fc71a9b98da1e0415a001b7a7423bb9efe30a2b964736f6c63430008130033