60806040523480156200001157600080fd5b5060405162001af238038062001af2833981016040819052620000349162000253565b6040518060400160405280600981526020016850756c7365646f676560b81b8152506040518060400160405280600381526020016214131160ea1b815250816003908162000083919062000329565b50600462000092828262000329565b5050506001600160a01b038116620000f15760405162461bcd60e51b815260206004820152601860248201527f4d616e616765723a2061646472657373206973207a65726f000000000000000060448201526064015b60405180910390fd5b6200010130633ab5e84062000169565b620001103362e4e1c062000169565b6008805460ff60a01b1916600160a01b1790556000600555620001374262278d00620003f5565b600655600780546001600160a01b039092166001600160a01b031992831617905560088054909116331790556200041d565b6001600160a01b038216620001c15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000e8565b8060026000828254620001d59190620003f5565b90915550506001600160a01b0382166000908152602081905260408120805483929062000204908490620003f5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b6000602082840312156200026657600080fd5b81516001600160a01b03811681146200027e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002b057607f821691505b602082108103620002d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200024e57600081815260208120601f850160051c81016020861015620003005750805b601f850160051c820191505b8181101562000321578281556001016200030c565b505050505050565b81516001600160401b0381111562000345576200034562000285565b6200035d816200035684546200029b565b84620002d7565b602080601f8311600181146200039557600084156200037c5750858301515b600019600386901b1c1916600185901b17855562000321565b600085815260208120601f198616915b82811015620003c657888601518255948401946001909101908401620003a5565b5085821015620003e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200041757634e487b7160e01b600052601160045260246000fd5b92915050565b6116c5806200042d6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806370a16aa711610104578063a457c2d7116100a2578063cf73a1bc11610071578063cf73a1bc146103d1578063dd62ed3e146103e4578063e12f3a61146103f7578063edfd7e9a1461042057600080fd5b8063a457c2d714610375578063a9059cbb14610388578063bc80fd231461039b578063c0129d43146103ae57600080fd5b806391a4965e116100de57806391a4965e1461033e57806395d89b41146103515780639661cb0d1461035957806397e2b9af1461036257600080fd5b806370a16aa7146102f857806379cc6790146103005780638da5cb5b1461031357600080fd5b80633af32abf116101715780634e71d92d1161014b5780634e71d92d146102aa57806351fb012d146102b257806358408eb6146102c657806370a08231146102cf57600080fd5b80633af32abf14610271578063414319081461028457806342966c681461029757600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd1461023c578063313ce5671461024f578063395093511461025e57600080fd5b8063040b6583146101d457806306fdde03146101e9578063095ea7b314610207575b600080fd5b6101e76101e2366004611383565b610433565b005b6101f1610484565b6040516101fe91906113a7565b60405180910390f35b61021a610215366004611411565b610516565b60405190151581526020016101fe565b6002545b6040519081526020016101fe565b61021a61024a36600461143b565b610530565b604051600081526020016101fe565b61021a61026c366004611411565b610554565b61021a61027f366004611477565b610576565b6101e7610292366004611477565b6105f5565b6101e76102a5366004611492565b610724565b6101e7610731565b60085461021a90600160a01b900460ff1681565b61022e60065481565b61022e6102dd366004611477565b6001600160a01b031660009081526020819052604090205490565b6101e7610848565b6101e761030e366004611411565b610932565b600854610326906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b6101e761034c3660046114f7565b61094b565b6101f1610ad8565b61022e60055481565b61021a610370366004611563565b610ae7565b61021a610383366004611411565b610b6e565b61021a610396366004611411565b610be9565b6101e76103a9366004611477565b610bf7565b604080518082019091526007815266474d20f09fa49d60c81b60208201526101f1565b600754610326906001600160a01b031681565b61022e6103f2366004611563565b610ccc565b61022e610405366004611477565b6001600160a01b031660009081526009602052604090205490565b6101e761042e366004611477565b610cf7565b6008546001600160a01b031633146104665760405162461bcd60e51b815260040161045d90611596565b60405180910390fd5b60088054911515600160a01b0260ff60a01b19909216919091179055565b606060038054610493906115cd565b80601f01602080910402602001604051908101604052809291908181526020018280546104bf906115cd565b801561050c5780601f106104e15761010080835404028352916020019161050c565b820191906000526020600020905b8154815290600101906020018083116104ef57829003601f168201915b5050505050905090565b600033610524818585610dca565b60019150505b92915050565b60003361053e858285610eee565b610549858585610f68565b506001949350505050565b6000336105248185856105678383610ccc565b610571919061161d565b610dca565b60006001823b1515146105d65760405162461bcd60e51b815260206004820152602260248201527f41646472657373206973206e6f74206120636f6e747261637420616464726573604482015261399760f11b606482015260840161045d565b506001600160a01b03166000908152600a602052604090205460ff1690565b6008546001600160a01b0316331461061f5760405162461bcd60e51b815260040161045d90611596565b6007546001600160a01b0380831691160361067c5760405162461bcd60e51b815260206004820152601860248201527f4d616e616765723a20616464726573732069732073616d650000000000000000604482015260640161045d565b6001600160a01b0381166106d25760405162461bcd60e51b815260206004820152601860248201527f4d616e616765723a2061646472657373206973207a65726f0000000000000000604482015260640161045d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a35050565b61072e3382611059565b50565b600654421061077a5760405162461bcd60e51b815260206004820152601560248201527410db185a5b5a5b99c81c195c9a5bd908195b991959605a1b604482015260640161045d565b33600090815260096020526040902054806107d75760405162461bcd60e51b815260206004820152601b60248201527f4e6f206275726e20726567697374657265642066726f6d204253430000000000604482015260640161045d565b6107e23033836111a7565b80600560008282546107f4919061161d565b90915550503360008181526009602052604080822091909155517fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9061083d9084815260200190565b60405180910390a250565b6008546001600160a01b031633146108725760405162461bcd60e51b815260040161045d90611596565b60065442116108b35760405162461bcd60e51b815260206004820152600d60248201526c10d85b9d08189d5c9b881e595d609a1b604482015260640161045d565b6000600554633ab5e8406108c79190611630565b306000908152602081905260408120549192501080156108e75750600081115b6109285760405162461bcd60e51b8152602060048201526012602482015271105b1b081d1bdad95b9cc818db185a5b595960721b604482015260640161045d565b61072e3082611059565b61093d823383610eee565b6109478282611059565b5050565b6007546001600160a01b031633146109a55760405162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206d616e6167657200000000000000604482015260640161045d565b60c983106109ec5760405162461bcd60e51b81526020600482015260146024820152734d61786c696d6974206f6620726571756573747360601b604482015260640161045d565b828114610a3b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964206e756d626572206f66207265717565737473000000000000604482015260640161045d565b60005b83811015610ad157828282818110610a5857610a58611643565b9050602002013560096000878785818110610a7557610a75611643565b9050602002016020810190610a8a9190611477565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610ab9919061161d565b90915550819050610ac981611659565b915050610a3e565b5050505050565b606060048054610493906115cd565b60006001833b1515148015610b1a57506001600160a01b0383166000908152600a602052604090205460ff161515600114155b15610b275750600061052a565b6001823b1515148015610b5857506001600160a01b0382166000908152600a602052604090205460ff161515600114155b15610b655750600061052a565b50600192915050565b60003381610b7c8286610ccc565b905083811015610bdc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161045d565b6105498286868403610dca565b600033610524818585610f68565b6008546001600160a01b03163314610c215760405162461bcd60e51b815260040161045d90611596565b6001813b151514610ca85760405162461bcd60e51b8152602060048201526044602482018190527f41646472657373206973206e6f74206120636f6e747261637420616464726573908201527f732e2057686974656c697374696e67206973206f6e6c79206f6e20636f6e74726064820152636163747360e01b608482015260a40161045d565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6008546001600160a01b03163314610d215760405162461bcd60e51b815260040161045d90611596565b6001813b151514610da95760405162461bcd60e51b815260206004820152604660248201527f41646472657373206973206e6f74206120636f6e74726163742061646472657360448201527f732e20556e57686974656c697374696e67206973206f6e6c79206f6e20636f6e60648201526574726163747360d01b608482015260a40161045d565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6001600160a01b038316610e2c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161045d565b6001600160a01b038216610e8d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161045d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610efa8484610ccc565b90506000198114610f625781811015610f555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161045d565b610f628484848403610dca565b50505050565b600854600160a01b900460ff1615611049576040516397e2b9af60e01b81526001600160a01b0380851660048301528316602482015230906397e2b9af90604401602060405180830381865afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fea9190611672565b6110495760405162461bcd60e51b815260206004820152602a60248201527f5472616e73666572206e6f7420616c6c6f7765642064756520746f20626f7420604482015269383937ba32b1ba34b7b760b11b606482015260840161045d565b6110548383836111a7565b505050565b6001600160a01b0382166110b95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161045d565b6001600160a01b0382166000908152602081905260409020548181101561112d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161045d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061115c908490611630565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b03831661120b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161045d565b6001600160a01b03821661126d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161045d565b6001600160a01b038316600090815260208190526040902054818110156112e55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161045d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061131c90849061161d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161136891815260200190565b60405180910390a3610f62565b801515811461072e57600080fd5b60006020828403121561139557600080fd5b81356113a081611375565b9392505050565b600060208083528351808285015260005b818110156113d4578581018301518582016040015282016113b8565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461140c57600080fd5b919050565b6000806040838503121561142457600080fd5b61142d836113f5565b946020939093013593505050565b60008060006060848603121561145057600080fd5b611459846113f5565b9250611467602085016113f5565b9150604084013590509250925092565b60006020828403121561148957600080fd5b6113a0826113f5565b6000602082840312156114a457600080fd5b5035919050565b60008083601f8401126114bd57600080fd5b50813567ffffffffffffffff8111156114d557600080fd5b6020830191508360208260051b85010111156114f057600080fd5b9250929050565b6000806000806040858703121561150d57600080fd5b843567ffffffffffffffff8082111561152557600080fd5b611531888389016114ab565b9096509450602087013591508082111561154a57600080fd5b50611557878288016114ab565b95989497509550505050565b6000806040838503121561157657600080fd5b61157f836113f5565b915061158d602084016113f5565b90509250929050565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b600181811c908216806115e157607f821691505b60208210810361160157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561052a5761052a611607565b8181038181111561052a5761052a611607565b634e487b7160e01b600052603260045260246000fd5b60006001820161166b5761166b611607565b5060010190565b60006020828403121561168457600080fd5b81516113a08161137556fea26469706673582212201bb158d75672ba69cddf0168a2bf9fc9df27c09546e3057d05d5cc90b7b4051d64736f6c63430008110033000000000000000000000000a0b059840e7645946db22f1062eec130f03ae899