60806040526007805460ff191660011790553480156200001e57600080fd5b5060006200002b620001df565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805180820190915260048082526324554e4960e01b6020909201918252620000a291600691620001e3565b506040518060600160405280602181526020016200144a602191398051620000d391600591602090910190620001e3565b506004805460ff1916600a90811791829055620000f49160ff169062000300565b6200010490631fb80f48620003f8565b6003818155620001149162000292565b73643770e279d5d0733f21d6dc03a8efbabf3255b460005260016020527f0eca1338f69115a060e2ba22a7d82e0b46775d8ca6ff71dc6bf479a464da7cea55600454620001669060ff16600a62000300565b6200017490610144620003f8565b3360009081526001602052604080822092909255600354915173643770e279d5d0733f21d6dc03a8efbabf3255b4927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620001d1919062000289565b60405180910390a36200046d565b3390565b828054620001f1906200041a565b90600052602060002090601f01602090048101928262000215576000855562000260565b82601f106200023057805160ff191683800117855562000260565b8280016001018555821562000260579182015b828111156200026057825182559160200191906001019062000243565b506200026e92915062000272565b5090565b5b808211156200026e576000815560010162000273565b90815260200190565b600082620002ae57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620002c75750620002f7565b818704821115620002dc57620002dc62000457565b80861615620002ea57918102915b9490941c938002620002b6565b94509492505050565b60006200031460001960ff8516846200031b565b9392505050565b6000826200032c5750600162000314565b816200033b5750600062000314565b81600181146200035457600281146200035f5762000393565b600191505062000314565b60ff84111562000373576200037362000457565b6001841b9150848211156200038c576200038c62000457565b5062000314565b5060208310610133831016604e8410600b8410161715620003cb575081810a83811115620003c557620003c562000457565b62000314565b620003da8484846001620002b3565b808604821115620003ef57620003ef62000457565b02949350505050565b600081600019048311821515161562000415576200041562000457565b500290565b6002810460018216806200042f57607f821691505b602082108114156200045157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b610fcd806200047d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806381b2d07b116100a2578063a457c2d711610071578063a457c2d714610211578063a9059cbb14610224578063d29d44ee14610237578063dd62ed3e1461024a578063f2fde38b1461025d57610116565b806381b2d07b146101d95780638da5cb5b146101e157806395d89b41146101f6578063a0712d68146101fe57610116565b8063313ce567116100e9578063313ce56714610181578063395093511461019657806370a08231146101a9578063715018a6146101bc578063729ad39e146101c657610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015957806323b872dd1461016e575b600080fd5b610123610270565b6040516101309190610c12565b60405180910390f35b61014c610147366004610af1565b610302565b6040516101309190610c07565b61016161031f565b6040516101309190610e5c565b61014c61017c366004610ab6565b610325565b6101896103ac565b6040516101309190610e65565b61014c6101a4366004610af1565b6103b5565b6101616101b7366004610a6a565b610403565b6101c461043d565b005b6101c46101d4366004610b1a565b6104c5565b61014c610575565b6101e96105c5565b6040516101309190610bf3565b6101236105d4565b61014c61020c366004610bdb565b6105e3565b61014c61021f366004610af1565b610633565b61014c610232366004610af1565b61069b565b6101c4610245366004610a6a565b6106af565b610161610258366004610a84565b610730565b6101c461026b366004610a6a565b61075b565b60606006805461027f90610ea2565b80601f01602080910402602001604051908101604052809291908181526020018280546102ab90610ea2565b80156102f85780601f106102cd576101008083540402835291602001916102f8565b820191906000526020600020905b8154815290600101906020018083116102db57829003601f168201915b5050505050905090565b600061031661030f61079c565b84846107a0565b50600192915050565b60035490565b6000610332848484610818565b6103a28461033e61079c565b61039d85604051806060016040528060288152602001610f25602891396001600160a01b038a1660009081526002602052604081209061037c61079c565b6001600160a01b03168152602081019190915260400160002054919061092f565b6107a0565b5060019392505050565b60045460ff1690565b60006103166103c261079c565b8461039d85600260006103d361079c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610969565b6001600160a01b03811660009081526001602052604081205460075460ff1661043257650ae9f7bcc000610434565b805b9150505b919050565b61044561079c565b6000546001600160a01b0390811691161461047b5760405162461bcd60e51b815260040161047290610da2565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b805160005b81811015610570578281815181106104f257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031673643770e279d5d0733f21d6dc03a8efbabf3255b46001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef650ae9f7bcc0006040516105569190610e5c565b60405180910390a38061056881610edd565b9150506104ca565b505050565b600061057f61079c565b6000546001600160a01b039081169116146105ac5760405162461bcd60e51b815260040161047290610da2565b506007805460ff19811660ff9182161517918290551690565b6000546001600160a01b031690565b60606005805461027f90610ea2565b60006105ed61079c565b6000546001600160a01b0390811691161461061a5760405162461bcd60e51b815260040161047290610da2565b61062b61062561079c565b8361099f565b506001919050565b600061031661064061079c565b8461039d85604051806060016040528060258152602001610f73602591396002600061066a61079c565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061092f565b60006103166106a861079c565b8484610818565b6001600160a01b0381166106d55760405162461bcd60e51b815260040161047290610cee565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61076361079c565b6000546001600160a01b039081169116146107905760405162461bcd60e51b815260040161047290610da2565b610799816106af565b50565b3390565b6001600160a01b0383166107c65760405162461bcd60e51b815260040161047290610caa565b6001600160a01b0382166107ec5760405162461bcd60e51b815260040161047290610e1a565b6001600160a01b0392831660009081526002602090815260408083209490951682529290925291902055565b6001600160a01b03831661083e5760405162461bcd60e51b815260040161047290610c65565b6001600160a01b0382166108645760405162461bcd60e51b815260040161047290610dd7565b6108a181604051806060016040528060268152602001610f4d602691396001600160a01b038616600090815260016020526040902054919061092f565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546108d09082610969565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610922908590610e5c565b60405180910390a3505050565b600081848411156109535760405162461bcd60e51b81526004016104729190610c12565b5060006109608486610e8b565b95945050505050565b6000806109768385610e73565b9050838110156109985760405162461bcd60e51b815260040161047290610d34565b9392505050565b6001600160a01b0382166109c55760405162461bcd60e51b815260040161047290610d6b565b6003546109d29082610969565b6003556001600160a01b0382166000908152600160205260409020546109f89082610969565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a47908590610e5c565b60405180910390a35050565b80356001600160a01b038116811461043857600080fd5b600060208284031215610a7b578081fd5b61099882610a53565b60008060408385031215610a96578081fd5b610a9f83610a53565b9150610aad60208401610a53565b90509250929050565b600080600060608486031215610aca578081fd5b610ad384610a53565b9250610ae160208501610a53565b9150604084013590509250925092565b60008060408385031215610b03578182fd5b610b0c83610a53565b946020939093013593505050565b60006020808385031215610b2c578182fd5b823567ffffffffffffffff80821115610b43578384fd5b818501915085601f830112610b56578384fd5b813581811115610b6857610b68610f0e565b83810260405185828201018181108582111715610b8757610b87610f0e565b604052828152858101935084860182860187018a1015610ba5578788fd5b8795505b83861015610bce57610bba81610a53565b855260019590950194938601938601610ba9565b5098975050505050505050565b600060208284031215610bec578081fd5b5035919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610c3e57858101830151858201604001528201610c22565b81811115610c4f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526023908201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60008219821115610e8657610e86610ef8565b500190565b600082821015610e9d57610e9d610ef8565b500390565b600281046001821680610eb657607f821691505b60208210811415610ed757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415610ef157610ef1610ef8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122088ed427a9eb5a9ff682fbc1c771c584911245373b545257a043df16a87255e2a64736f6c63430008000033554e4920766973697420676574756e69632e70726f20746f207377617020455448