0x60a060405234801561001057600080fd5b5060405161142738038061142783398101604081905261002f9161010a565b6001600160a01b03811660805261004461004a565b5061013a565b600054610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610108576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011c57600080fd5b81516001600160a01b038116811461013357600080fd5b9392505050565b6080516112bd61016a6000396000818161022201528181610367015281816107e40152610b3301526112bd6000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063701ac48311610104578063a22cb465116100a2578063e8a3d48511610071578063e8a3d485146103f5578063e985e9c5146103fd578063f178743814610410578063f2fde38b1461042357600080fd5b8063a22cb465146103b5578063b88d4fde146103c8578063c311c523146103db578063c87b56dd146103e257600080fd5b80637c68c784116100de5780637c68c784146103625780638da5cb5b1461038957806394bf804d1461039a57806395d89b41146103ad57600080fd5b8063701ac4831461033357806370a0823114610346578063715018a61461035a57600080fd5b80633c404a9c116101715780634b97aed91161014b5780634b97aed9146102705780635dd871a3146102fa5780636352211e1461030d5780636f307dc31461032057600080fd5b80633c404a9c146102cb5780633f34649e146102d457806342842e0e146102e757600080fd5b8063095ea7b3116101ad578063095ea7b31461025c57806318160ddd1461027057806323b872dd146102865780632a55205a1461029957600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004610d7b565b610436565b60405190151581526020015b60405180910390f35b61020461046d565b6040516101f39190610ddc565b61024461021f366004610e0f565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016101f3565b61026e61026a366004610e3d565b5050565b005b610278610503565b6040519081526020016101f3565b61026e610294366004610e69565b610576565b6102ac6102a7366004610eaa565b610585565b604080516001600160a01b0390931683526020830191909152016101f3565b61027860675481565b606654610244906001600160a01b031681565b61026e6102f5366004610e69565b6105c0565b6101e7610308366004610e0f565b6105cb565b61024461031b366004610e0f565b610646565b606554610244906001600160a01b031681565b61026e610341366004610f0e565b61065a565b610278610354366004610fa6565b50600190565b61026e6107c5565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610244565b61026e6103a8366004610fc3565b6107d9565b6102046108fc565b61026e6103c3366004610ff3565b610946565b61026e6103d6366004611026565b61098c565b60016101e7565b6102046103f0366004610e0f565b61099e565b610204610a10565b6101e761040b366004611099565b610a9e565b61026e61041e366004610eaa565b610b6a565b61026e610431366004610fa6565b610bbd565b60006001600160e01b031982166380ac58cd60e01b148061046757506001600160e01b03198216635b5e139f60e01b145b92915050565b606554604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa1580156104b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104df91908101906110dd565b6040516020016104ef919061118a565b604051602081830303815290604052905090565b60655460408051630cb2dac360e21b815290516000926001600160a01b0316916332cb6b0c9160048083019260209291908290030181865afa15801561054d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057191906111c8565b905090565b61058081836107d9565b505050565b60665460675460009182916001600160a01b0390911690612710906105aa90866111e1565b6105b4919061120e565b915091505b9250929050565b610580838383610576565b6065546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e90602401602060405180830381865afa925050508015610631575060408051601f3d908101601f1916820190925261062e91810190611230565b60015b61063d57506001919050565b50600092915050565b60006104676033546001600160a01b031690565b600054610100900460ff161580801561067a5750600054600160ff909116105b806106945750303b158015610694575060005460ff166001145b6106fc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561071f576000805461ff0019166101001790555b606580546001600160a01b038089166001600160a01b03199283161790925560668054928b1692909116919091179055606787905561075e8585610b6a565b61076a60688484610ce2565b5061077489610c36565b80156107ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6107cd610c88565b6107d76000610c36565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061081a57506033546001600160a01b031633145b60405166031b0b63632b9160cd1b60208201526bffffffffffffffffffffffff193360601b16602782015272081a5cc81b9bdd081d1a194810d3d391155255606a1b603b820152604e01604051602081830303815290604052906108915760405162461bcd60e51b81526004016106f39190610ddc565b50606554604051639b5979b960e01b81526001600160a01b0383811660048301526024820185905290911690639b5979b990604401600060405180830381600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b505050505050565b606554604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b419160048083019260009291908290030181865afa1580156104b7573d6000803e3d6000fd5b60405181151581526001600160a01b0383169033907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319060200160405180910390a35050565b610997858585610576565b5050505050565b60655460405163c87b56dd60e01b8152600481018390526060916001600160a01b03169063c87b56dd90602401600060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261046791908101906110dd565b60688054610a1d9061124d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a499061124d565b8015610a965780601f10610a6b57610100808354040283529160200191610a96565b820191906000526020600020905b815481529060010190602001808311610a7957829003601f168201915b505050505081565b6000826001600160a01b0316610abc6033546001600160a01b031690565b6001600160a01b0316148015610af45750816001600160a01b0316610ae96033546001600160a01b031690565b6001600160a01b0316145b80610b5d5750826001600160a01b0316610b166033546001600160a01b031690565b6001600160a01b0316148015610b5d5750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b1561063d57506001610467565b6000610b7e6033546001600160a01b031690565b90505b8183101561058057828160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183019250610b81565b610bc5610c88565b6001600160a01b038116610c2a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f3565b610c3381610c36565b50565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f3565b828054610cee9061124d565b90600052602060002090601f016020900481019282610d105760008555610d56565b82601f10610d295782800160ff19823516178555610d56565b82800160010185558215610d56579182015b82811115610d56578235825591602001919060010190610d3b565b50610d62929150610d66565b5090565b5b80821115610d625760008155600101610d67565b600060208284031215610d8d57600080fd5b81356001600160e01b031981168114610da557600080fd5b9392505050565b60005b83811015610dc7578181015183820152602001610daf565b83811115610dd6576000848401525b50505050565b6020815260008251806020840152610dfb816040850160208701610dac565b601f01601f19169190910160400192915050565b600060208284031215610e2157600080fd5b5035919050565b6001600160a01b0381168114610c3357600080fd5b60008060408385031215610e5057600080fd5b8235610e5b81610e28565b946020939093013593505050565b600080600060608486031215610e7e57600080fd5b8335610e8981610e28565b92506020840135610e9981610e28565b929592945050506040919091013590565b60008060408385031215610ebd57600080fd5b50508035926020909101359150565b60008083601f840112610ede57600080fd5b50813567ffffffffffffffff811115610ef657600080fd5b6020830191508360208285010111156105b957600080fd5b60008060008060008060008060e0898b031215610f2a57600080fd5b8835610f3581610e28565b97506020890135610f4581610e28565b9650604089013595506060890135610f5c81610e28565b94506080890135935060a0890135925060c089013567ffffffffffffffff811115610f8657600080fd5b610f928b828c01610ecc565b999c989b5096995094979396929594505050565b600060208284031215610fb857600080fd5b8135610da581610e28565b60008060408385031215610fd657600080fd5b823591506020830135610fe881610e28565b809150509250929050565b6000806040838503121561100657600080fd5b823561101181610e28565b915060208301358015158114610fe857600080fd5b60008060008060006080868803121561103e57600080fd5b853561104981610e28565b9450602086013561105981610e28565b935060408601359250606086013567ffffffffffffffff81111561107c57600080fd5b61108888828901610ecc565b969995985093965092949392505050565b600080604083850312156110ac57600080fd5b82356110b781610e28565b91506020830135610fe881610e28565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156110ef57600080fd5b815167ffffffffffffffff8082111561110757600080fd5b818401915084601f83011261111b57600080fd5b81518181111561112d5761112d6110c7565b604051601f8201601f19908116603f01168101908382118183101715611155576111556110c7565b8160405282815287602084870101111561116e57600080fd5b61117f836020830160208801610dac565b979650505050505050565b75026b4b73a34b7339021b7b73a3930b1ba103337b91d160551b8152600082516111bb816016850160208701610dac565b9190910160160192915050565b6000602082840312156111da57600080fd5b5051919050565b600081600019048311821515161561120957634e487b7160e01b600052601160045260246000fd5b500290565b60008261122b57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561124257600080fd5b8151610da581610e28565b600181811c9082168061126157607f821691505b60208210810361128157634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122073d6b133c63eae7f488ac4c53acc67cd4a942897d3f895b99d22cf49e9c5776f64736f6c634300080d00330000000000000000000000001e0049783f008a0085193e00003d00cd54003c71