60806040523480156200001157600080fd5b5060408051808201909152600c81526b213ab9372130b13ca13ab93760a11b602082015260059062000044908262000197565b5060408051808201909152600381526221212160e91b60208201526006906200006e908262000197565b506200007d6012600a62000378565b6200008d90633b9aca0062000390565b6003819055336000818152600160209081526040808320859055600780546001600160a01b0319168517905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620003aa565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011d57607f821691505b6020821081036200013e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200019257600081815260208120601f850160051c810160208610156200016d5750805b601f850160051c820191505b818110156200018e5782815560010162000179565b5050505b505050565b81516001600160401b03811115620001b357620001b3620000f2565b620001cb81620001c4845462000108565b8462000144565b602080601f831160018114620002035760008415620001ea5750858301515b600019600386901b1c1916600185901b1785556200018e565b600085815260208120601f198616915b82811015620002345788860151825594840194600190910190840162000213565b5085821015620002535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002ba5781600019048211156200029e576200029e62000263565b80851615620002ac57918102915b93841c93908002906200027e565b509250929050565b600082620002d35750600162000372565b81620002e25750600062000372565b8160018114620002fb5760028114620003065762000326565b600191505062000372565b60ff8411156200031a576200031a62000263565b50506001821b62000372565b5060208310610133831016604e8410600b84101617156200034b575081810a62000372565b62000357838362000279565b80600019048211156200036e576200036e62000263565b0290505b92915050565b60006200038960ff841683620002c2565b9392505050565b808202811582820484141762000372576200037262000263565b6110f980620003ba6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d714610217578063a9059cbb1461022a578063c204642c1461023d578063dd62ed3e14610250578063f2fde38b1461028957600080fd5b806370a08231146101cb57806379cc6790146101f45780638456cb591461020757806395d89b411461020f57600080fd5b8063313ce567116100e9578063313ce5671461018157806339509351146101905780633f4ba83a146101a35780635c975abb146101ad5780636d1b229d146101b857600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd1461016e575b600080fd5b61012361029c565b6040516101309190610d5c565b60405180910390f35b61014c610147366004610dc6565b61032e565b6040519015158152602001610130565b6003545b604051908152602001610130565b61014c61017c366004610df0565b610370565b60405160128152602001610130565b61014c61019e366004610dc6565b6103f6565b6101ab610450565b005b60005460ff1661014c565b6101ab6101c6366004610e2c565b61048d565b6101606101d9366004610e45565b6001600160a01b031660009081526001602052604090205490565b6101ab610202366004610dc6565b6104ec565b6101ab610588565b6101236105c3565b61014c610225366004610dc6565b6105d2565b61014c610238366004610dc6565b61062c565b6101ab61024b366004610e7d565b61066d565b61016061025e366004610f48565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101ab610297366004610e45565b6107a1565b6060600580546102ab90610f7b565b80601f01602080910402602001604051908101604052809291908181526020018280546102d790610f7b565b80156103245780601f106102f957610100808354040283529160200191610324565b820191906000526020600020905b81548152906001019060200180831161030757829003601f168201915b5050505050905090565b6000805460ff161561035b5760405162461bcd60e51b815260040161035290610fb5565b60405180910390fd5b610366338484610857565b5060015b92915050565b6000805460ff16156103945760405162461bcd60e51b815260040161035290610fb5565b61039d8461097b565b6103a68361097b565b6103b18484846109da565b6001600160a01b0384166000908152600260209081526040808320338085529252909120546103ec9186916103e7908690610ff5565b610857565b5060019392505050565b6000805460ff161561041a5760405162461bcd60e51b815260040161035290610fb5565b3360008181526002602090815260408083206001600160a01b0388168452909152902054610366919085906103e7908690611008565b6007546001600160a01b0316336001600160a01b0316146104835760405162461bcd60e51b81526004016103529061101b565b61048b610b86565b565b60005460ff16156104b05760405162461bcd60e51b815260040161035290610fb5565b336000908152600160205260409020548111156104df5760405162461bcd60e51b815260040161035290611052565b6104e93382610c19565b50565b60005460ff161561050f5760405162461bcd60e51b815260040161035290610fb5565b6007546001600160a01b0316336001600160a01b0316146105425760405162461bcd60e51b81526004016103529061101b565b6001600160a01b03821660009081526001602052604090205481111561057a5760405162461bcd60e51b815260040161035290611052565b6105848282610c19565b5050565b6007546001600160a01b0316336001600160a01b0316146105bb5760405162461bcd60e51b81526004016103529061101b565b61048b610d04565b6060600680546102ab90610f7b565b6000805460ff16156105f65760405162461bcd60e51b815260040161035290610fb5565b3360008181526002602090815260408083206001600160a01b0388168452909152902054610366919085906103e7908690610ff5565b6000805460ff16156106505760405162461bcd60e51b815260040161035290610fb5565b6106593361097b565b6106628361097b565b6103663384846109da565b6007546001600160a01b0316336001600160a01b0316146106a05760405162461bcd60e51b81526004016103529061101b565b60005b825181101561079c5781600160008584815181106106c3576106c3611094565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546106fa9190611008565b9250508190555082818151811061071357610713611094565b60200260200101516001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161076091815260200190565b60405180910390a361078a83828151811061077d5761077d611094565b602002602001015161097b565b80610794816110aa565b9150506106a3565b505050565b6007546001600160a01b0316336001600160a01b0316146107d45760405162461bcd60e51b81526004016103529061101b565b6001600160a01b0381166108355760405162461bcd60e51b815260206004820152602260248201527f4242423a206e6577206f776e657220697320746865207a65726f206164647265604482015261737360f01b6064820152608401610352565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108b95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610352565b6001600160a01b03821661091a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610352565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03811660009081526004602052604090205442906109a4906234bc0090611008565b116104e9576001600160a01b03166000908152600460208181526040808420428155600180845291909420549290915290910155565b6001600160a01b038316610a3e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610352565b6001600160a01b038216610aa05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610352565b6001600160a01b03831660009081526001602052604090205481811015610b185760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610352565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b789086815260200190565b60405180910390a350505050565b60005460ff16610bcf5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610352565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610c795760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610352565b6001600160a01b03821660009081526001602052604081208054839290610ca1908490610ff5565b925050819055508060036000828254610cba9190610ff5565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60005460ff1615610d275760405162461bcd60e51b815260040161035290610fb5565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610bfc3390565b600060208083528351808285015260005b81811015610d8957858101830151858201604001528201610d6d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610dc157600080fd5b919050565b60008060408385031215610dd957600080fd5b610de283610daa565b946020939093013593505050565b600080600060608486031215610e0557600080fd5b610e0e84610daa565b9250610e1c60208501610daa565b9150604084013590509250925092565b600060208284031215610e3e57600080fd5b5035919050565b600060208284031215610e5757600080fd5b610e6082610daa565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610e9057600080fd5b823567ffffffffffffffff80821115610ea857600080fd5b818501915085601f830112610ebc57600080fd5b8135602082821115610ed057610ed0610e67565b8160051b604051601f19603f83011681018181108682111715610ef557610ef5610e67565b604052928352818301935084810182019289841115610f1357600080fd5b948201945b83861015610f3857610f2986610daa565b85529482019493820193610f18565b9997909101359750505050505050565b60008060408385031215610f5b57600080fd5b610f6483610daa565b9150610f7260208401610daa565b90509250929050565b600181811c90821680610f8f57607f821691505b602082108103610faf57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561036a5761036a610fdf565b8082018082111561036a5761036a610fdf565b6020808252601c908201527f4242423a2063616c6c6572206973206e6f7420746865206f776e657200000000604082015260600190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016110bc576110bc610fdf565b506001019056fea264697066735822122082c92adb2b8a3cb181cdfb5da21b4f39ade8a84a234ff706d8238f4ae2fdb0bb64736f6c63430008110033