60806040526007805460ff191660011790553480156200001e57600080fd5b5060006200002b620001f6565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600380825262554e4960e81b6020909201918252620000a191600691620001fa565b506040805180820190915260208082527f566973697420676574756e692e70726f20746f207377617020746f2055534454918101918252620000e691600591620001fa565b506004805460ff1916600a90811791829055620001079160ff169062000317565b620001189064174876e8006200040f565b60038190556200012b90600290620002a9565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad60005260016020527f1510d9214f227226d818ad648be7a2e0634db540481736675ac047ca90fe1cd7556004546200017d9060ff16600a62000317565b6200018b906101f46200040f565b33600090815260016020526040808220929092556003549151733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620001e89190620002a0565b60405180910390a362000484565b3390565b828054620002089062000431565b90600052602060002090601f0160209004810192826200022c576000855562000277565b82601f106200024757805160ff191683800117855562000277565b8280016001018555821562000277579182015b82811115620002775782518255916020019190600101906200025a565b506200028592915062000289565b5090565b5b808211156200028557600081556001016200028a565b90815260200190565b600082620002c557634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620002de57506200030e565b818704821115620002f357620002f36200046e565b808616156200030157918102915b9490941c938002620002cd565b94509492505050565b60006200032b60001960ff85168462000332565b9392505050565b60008262000343575060016200032b565b8162000352575060006200032b565b81600181146200036b57600281146200037657620003aa565b60019150506200032b565b60ff8411156200038a576200038a6200046e565b6001841b915084821115620003a357620003a36200046e565b506200032b565b5060208310610133831016604e8410600b8410161715620003e2575081810a83811115620003dc57620003dc6200046e565b6200032b565b620003f18484846001620002ca565b8086048211156200040657620004066200046e565b02949350505050565b60008160001904831182151516156200042c576200042c6200046e565b500290565b6002810460018216806200044657607f821691505b602082108114156200046857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61109080620004946000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063893d20e8116100ad578063a457c2d711610071578063a457c2d714610242578063a9059cbb14610255578063d29d44ee14610268578063dd62ed3e1461027b578063f2fde38b1461028e5761012c565b8063893d20e8146101f75780638da5cb5b1461020c57806395d89b41146102145780639a0446821461021c578063a0712d681461022f5761012c565b806339509351116100f457806339509351146101ac57806370a08231146101bf578063715018a6146101d2578063729ad39e146101dc57806381b2d07b146101ef5761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461016f57806323b872dd14610184578063313ce56714610197575b600080fd5b6101396102a1565b6040516101469190610cb5565b60405180910390f35b61016261015d366004610b94565b610333565b6040516101469190610caa565b610177610350565b6040516101469190610eff565b610162610192366004610b59565b610356565b61019f6103dd565b6040516101469190610f08565b6101626101ba366004610b94565b6103e6565b6101776101cd366004610b0d565b610434565b6101da61046e565b005b6101da6101ea366004610bbd565b6104f6565b610162610594565b6101ff6105e4565b6040516101469190610c96565b6101ff6105f3565b610139610602565b6101da61022a366004610bbd565b610611565b61016261023d366004610c7e565b6106aa565b610162610250366004610b94565b6106fa565b610162610263366004610b94565b610762565b6101da610276366004610b0d565b610776565b610177610289366004610b27565b6107f7565b6101da61029c366004610b0d565b610822565b6060600680546102b090610f45565b80601f01602080910402602001604051908101604052809291908181526020018280546102dc90610f45565b80156103295780601f106102fe57610100808354040283529160200191610329565b820191906000526020600020905b81548152906001019060200180831161030c57829003601f168201915b5050505050905090565b6000610347610340610863565b8484610867565b50600192915050565b60035490565b60006103638484846108df565b6103d38461036f610863565b6103ce85604051806060016040528060288152602001610fc8602891396001600160a01b038a166000908152600260205260408120906103ad610863565b6001600160a01b0316815260208101919091526040016000205491906109e4565b610867565b5060019392505050565b60045460ff1690565b60006103476103f3610863565b846103ce8560026000610404610863565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610a1e565b6001600160a01b03811660009081526001602052604081205460075460ff1661046357650ae9f7bcc000610465565b805b9150505b919050565b610476610863565b6000546001600160a01b039081169116146104ac5760405162461bcd60e51b81526004016104a390610e45565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b805160005b8181101561058f5782818151811061052357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad6001600160a01b0316600080516020611016833981519152650ae9f7bcc0006040516105759190610eff565b60405180910390a38061058781610f80565b9150506104fb565b505050565b600061059e610863565b6000546001600160a01b039081169116146105cb5760405162461bcd60e51b81526004016104a390610e45565b506007805460ff19811660ff9182161517918290551690565b60006105ee6105f3565b905090565b6000546001600160a01b031690565b6060600580546102b090610f45565b805160005b8181101561058f5782818151811061063e57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad6001600160a01b0316600080516020611016833981519152650ae9f7bcc0006040516106909190610eff565b60405180910390a3806106a281610f80565b915050610616565b60006106b4610863565b6000546001600160a01b039081169116146106e15760405162461bcd60e51b81526004016104a390610e45565b6106f26106ec610863565b83610a54565b506001919050565b6000610347610707610863565b846103ce856040518060600160405280602581526020016110366025913960026000610731610863565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906109e4565b600061034761076f610863565b84846108df565b6001600160a01b03811661079c5760405162461bcd60e51b81526004016104a390610d91565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61082a610863565b6000546001600160a01b039081169116146108575760405162461bcd60e51b81526004016104a390610e45565b61086081610776565b50565b3390565b6001600160a01b03831661088d5760405162461bcd60e51b81526004016104a390610d4d565b6001600160a01b0382166108b35760405162461bcd60e51b81526004016104a390610ebd565b6001600160a01b0392831660009081526002602090815260408083209490951682529290925291902055565b6001600160a01b0383166109055760405162461bcd60e51b81526004016104a390610d08565b6001600160a01b03821661092b5760405162461bcd60e51b81526004016104a390610e7a565b61096881604051806060016040528060268152602001610ff0602691396001600160a01b03861660009081526001602052604090205491906109e4565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546109979082610a1e565b6001600160a01b038084166000818152600160205260409081902093909355915190851690600080516020611016833981519152906109d7908590610eff565b60405180910390a3505050565b60008184841115610a085760405162461bcd60e51b81526004016104a39190610cb5565b506000610a158486610f2e565b95945050505050565b600080610a2b8385610f16565b905083811015610a4d5760405162461bcd60e51b81526004016104a390610dd7565b9392505050565b6001600160a01b038216610a7a5760405162461bcd60e51b81526004016104a390610e0e565b600354610a879082610a1e565b6003556001600160a01b038216600090815260016020526040902054610aad9082610a1e565b6001600160a01b03831660008181526001602052604080822093909355915190919060008051602061101683398151915290610aea908590610eff565b60405180910390a35050565b80356001600160a01b038116811461046957600080fd5b600060208284031215610b1e578081fd5b610a4d82610af6565b60008060408385031215610b39578081fd5b610b4283610af6565b9150610b5060208401610af6565b90509250929050565b600080600060608486031215610b6d578081fd5b610b7684610af6565b9250610b8460208501610af6565b9150604084013590509250925092565b60008060408385031215610ba6578182fd5b610baf83610af6565b946020939093013593505050565b60006020808385031215610bcf578182fd5b823567ffffffffffffffff80821115610be6578384fd5b818501915085601f830112610bf9578384fd5b813581811115610c0b57610c0b610fb1565b83810260405185828201018181108582111715610c2a57610c2a610fb1565b604052828152858101935084860182860187018a1015610c48578788fd5b8795505b83861015610c7157610c5d81610af6565b855260019590950194938601938601610c4c565b5098975050505050505050565b600060208284031215610c8f578081fd5b5035919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610ce157858101830151858201604001528201610cc5565b81811115610cf25783604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526023908201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60008219821115610f2957610f29610f9b565b500190565b600082821015610f4057610f40610f9b565b500390565b600281046001821680610f5957607f821691505b60208210811415610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415610f9457610f94610f9b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122032802e997a84336f7ea96baf47a8c88816040c866d23b32c84ddd9512d3b81e164736f6c63430008000033