6080604052600060045560006005553480156200001b57600080fd5b5060405162001b0038038062001b008339810160408190526200003e916200033c565b6001600081815581546001600160a81b031916336101008102919091179092556040518291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000097600a82620000d4565b60095550600280546001600160a01b039485166001600160a01b03199182161790915560038054939094169216919091179091556006556200044e565b600081600003620000e85750600162000182565b81600103620000f957508162000182565b600062000121846200011b6002866200018860201b62000f461790919060201c565b620000d4565b90506200013d8182620001d260201b62000f881790919060201c565b90506200015a6002846200026060201b6200100a1790919060201c565b6001036200017f576200017c8482620001d260201b62000f881790919060201c565b90505b90505b92915050565b60006200017f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620002aa60201b60201c565b600082600003620001e65750600062000182565b6000620001f4838562000384565b905082620002038583620003c8565b146200017f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b60006200017f83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250620002e660201b60201c565b60008183620002ce5760405162461bcd60e51b8152600401620002579190620003df565b506000620002dd8486620003c8565b95945050505050565b600081836200030a5760405162461bcd60e51b8152600401620002579190620003df565b5062000317838562000437565b949350505050565b80516001600160a01b03811681146200033757600080fd5b919050565b600080600080608085870312156200035357600080fd5b6200035e856200031f565b93506200036e602086016200031f565b6040860151606090960151949790965092505050565b6000816000190483118215151615620003ad57634e487b7160e01b600052601160045260246000fd5b500290565b634e487b7160e01b600052601260045260246000fd5b600082620003da57620003da620003b2565b500490565b600060208083528351808285015260005b818110156200040e57858101830151858201604001528201620003f0565b8181111562000421576000604083870101525b50601f01601f1916929092016040019392505050565b600082620004495762000449620003b2565b500690565b6116a2806200045e6000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637b0a47ee11610104578063c8f33c91116100a2578063df136d6511610071578063df136d65146103a7578063e9fad8ee146103b0578063ebe2b12b146103b8578063f2fde38b146103c157600080fd5b8063c8f33c9114610370578063cc1a378f14610379578063cd3daf9d1461038c578063d1af0c7d1461039457600080fd5b80638b876347116100de5780638b8763471461031e5780638da5cb5b1461033e578063a694fc3a14610354578063a85fe3b71461036757600080fd5b80637b0a47ee146102fa57806380faa57d146103035780638980f11f1461030b57600080fd5b80633c6b16ab1161017157806370a082311161014b57806370a082311461028b578063715018a6146102b457806372f702f3146102bc5780637ae2b5c7146102e757600080fd5b80633c6b16ab1461025a5780633d18b9121461026d5780635c975abb1461027557600080fd5b80631c1f78eb116101ad5780631c1f78eb146102215780632e1a7d4d146102295780632e4c697f1461023e578063386a95251461025157600080fd5b80628cc262146101d35780630700037d146101f957806318160ddd14610219575b600080fd5b6101e66101e1366004611428565b6103d4565b6040519081526020015b60405180910390f35b6101e6610207366004611428565b600c6020526000908152604090205481565b600d546101e6565b6101e661044b565b61023c610237366004611443565b610469565b005b6101e661024c36600461145c565b6105cd565b6101e660065481565b61023c610268366004611443565b610633565b61023c610844565b60015460ff1660405190151581526020016101f0565b6101e6610299366004611428565b6001600160a01b03166000908152600e602052604090205490565b61023c610940565b6003546102cf906001600160a01b031681565b6040516001600160a01b0390911681526020016101f0565b6101e66102f536600461145c565b6109c0565b6101e660055481565b6101e66109d6565b61023c61031936600461147e565b6109e4565b6101e661032c366004611428565b600b6020526000908152604090205481565b60015461010090046001600160a01b03166102cf565b61023c610362366004611443565b610b48565b6101e660095481565b6101e660075481565b61023c610387366004611443565b610cda565b6101e6610de2565b6002546102cf906001600160a01b031681565b6101e660085481565b61023c610e27565b6101e660045481565b61023c6103cf366004611428565b610e4a565b6001600160a01b0381166000908152600c6020908152604080832054600954600b909352908320546104459261043f916104399061041a90610414610de2565b9061104c565b6001600160a01b0388166000908152600e602052604090205490610f88565b90610f46565b9061108e565b92915050565b6000610464600654600554610f8890919063ffffffff16565b905090565b6002600054036104945760405162461bcd60e51b815260040161048b906114a8565b60405180910390fd5b6002600055336104a2610de2565b6008556104ad6109d6565b6007556001600160a01b038116156104f4576104c8816103d4565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b600082116105385760405162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015260640161048b565b600d54610545908361104c565b600d55336000908152600e6020526040902054610562908361104c565b336000818152600e602052604090209190915560035461058e916001600160a01b0390911690846110ed565b60405182815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a250506001600055565b6000816000036105df57506001610445565b816001036105ee575081610445565b60006105ff8461024c856002610f46565b905061060b8180610f88565b905061061883600261100a565b60010361062c576106298185610f88565b90505b9392505050565b6001546001600160a01b036101009091041633146106635760405162461bcd60e51b815260040161048b906114df565b600061066d610de2565b6008556106786109d6565b6007556001600160a01b038116156106bf57610693816103d4565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60045442106106de576006546106d6908390610f46565b600555610721565b6004546000906106ee904261104c565b9050600061070760055483610f8890919063ffffffff16565b60065490915061071b90610439868461108e565b60055550505b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e9190611514565b90506107a560065482610f4690919063ffffffff16565b60055411156107f65760405162461bcd60e51b815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015260640161048b565b426007819055600654610809919061108e565b6004556040518381527fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9060200160405180910390a1505050565b6002600054036108665760405162461bcd60e51b815260040161048b906114a8565b600260005533610874610de2565b60085561087f6109d6565b6007556001600160a01b038116156108c65761089a816103d4565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b336000908152600c6020526040902054801561093757336000818152600c6020526040812055600254610905916001600160a01b0390911690836110ed565b60405181815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486906020016105bc565b50506001600055565b6001546001600160a01b036101009091041633146109705760405162461bcd60e51b815260040161048b906114df565b60015460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360018054610100600160a81b0319169055565b60008183106109cf578161062c565b5090919050565b6000610464426004546109c0565b6001546001600160a01b03610100909104163314610a145760405162461bcd60e51b815260040161048b906114df565b6002546001600160a01b0390811690831603610a7d5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420776974686472617720746865207265776172647320746f6b656044820152616e7360f01b606482015260840161048b565b600d5415610aee576003546001600160a01b0390811690831603610aee5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420776974686472617720746865207374616b696e6720746f6b656044820152616e7360f01b606482015260840161048b565b610b026001600160a01b03831633836110ed565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a15050565b600260005403610b6a5760405162461bcd60e51b815260040161048b906114a8565b600260005560015460ff1615610bb55760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161048b565b33610bbe610de2565b600855610bc96109d6565b6007556001600160a01b03811615610c1057610be4816103d4565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60008211610c515760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015260640161048b565b600d54610c5e908361108e565b600d55336000908152600e6020526040902054610c7b908361108e565b336000818152600e6020526040902091909155600354610ca8916001600160a01b03909116903085611155565b60405182815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906020016105bc565b6001546001600160a01b03610100909104163314610d0a5760405162461bcd60e51b815260040161048b906114df565b6004544211610da75760405162461bcd60e51b815260206004820152605860248201527f50726576696f7573207265776172647320706572696f64206d7573742062652060448201527f636f6d706c657465206265666f7265206368616e67696e67207468652064757260648201527f6174696f6e20666f7220746865206e657720706572696f640000000000000000608482015260a40161048b565b60068190556040518181527ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d39060200160405180910390a150565b6000600d54600003610df5575060085490565b610464610e1e600d54610439600954610e18600554610e186007546104146109d6565b90610f88565b6008549061108e565b336000908152600e6020526040902054610e4090610469565b610e48610844565b565b6001546001600160a01b03610100909104163314610e7a5760405162461bcd60e51b815260040161048b906114df565b6001600160a01b038116610edf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161048b565b6001546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600061062c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611193565b600082600003610f9a57506000610445565b6000610fa68385611543565b905082610fb38583611578565b1461062c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161048b565b600061062c83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506111ca565b600061062c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111fe565b60008061109b838561158c565b90508381101561062c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161048b565b6040516001600160a01b03831660248201526044810182905261115090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261122f565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261118d9085906323b872dd60e01b90608401611119565b50505050565b600081836111b45760405162461bcd60e51b815260040161048b91906115d0565b5060006111c18486611578565b95945050505050565b600081836111eb5760405162461bcd60e51b815260040161048b91906115d0565b506111f68385611603565b949350505050565b600081848411156112225760405162461bcd60e51b815260040161048b91906115d0565b5060006111c18486611617565b6000611284826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113019092919063ffffffff16565b80519091501561115057808060200190518101906112a2919061162e565b6111505760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161048b565b60606111f6848460008585843b61135a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161048b565b600080866001600160a01b031685876040516113769190611650565b60006040518083038185875af1925050503d80600081146113b3576040519150601f19603f3d011682016040523d82523d6000602084013e6113b8565b606091505b50915091506113c88282866113d3565b979650505050505050565b606083156113e257508161062c565b8251156113f25782518084602001fd5b8160405162461bcd60e51b815260040161048b91906115d0565b80356001600160a01b038116811461142357600080fd5b919050565b60006020828403121561143a57600080fd5b61062c8261140c565b60006020828403121561145557600080fd5b5035919050565b6000806040838503121561146f57600080fd5b50508035926020909101359150565b6000806040838503121561149157600080fd5b61149a8361140c565b946020939093013593505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561152657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561155d5761155d61152d565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261158757611587611562565b500490565b6000821982111561159f5761159f61152d565b500190565b60005b838110156115bf5781810151838201526020016115a7565b8381111561118d5750506000910152565b60208152600082518060208401526115ef8160408501602087016115a4565b601f01601f19169190910160400192915050565b60008261161257611612611562565b500690565b6000828210156116295761162961152d565b500390565b60006020828403121561164057600080fd5b8151801515811461062c57600080fd5b600082516116628184602087016115a4565b919091019291505056fea264697066735822122006531b418737e5910bfa3ffcb2f8eebb351e91a1a6f32a99eed7f7bd93ac839d64736f6c634300080d0033000000000000000000000000a6e2e5394989de01123157623c6e70b6f5eb08ab000000000000000000000000a6e2e5394989de01123157623c6e70b6f5eb08ab00000000000000000000000000000000000000000000000000000000009e34000000000000000000000000000000000000000000000000000000000000000012