0x60806040526002805460ff1916905534801561001a57600080fd5b5061166e8061002a6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639559c0bd11610097578063ca15c87311610066578063ca15c873146103bb578063d547741f146103d8578063e375b64e14610404578063ec87621c1461049357610100565b80639559c0bd1461037d578063a217fddf14610385578063b017a30f1461038d578063c4d66de81461039557610100565b8063609c92b8116100d3578063609c92b8146102395780638274664f146102415780639010d07c146102fe57806391d148541461033d57610100565b8063150b7a0214610105578063248a9ca3146101b05780632f2ff15d146101df57806336568abe1461020d575b600080fd5b6101936004803603608081101561011b57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561015557600080fd5b82018360208201111561016757600080fd5b803590602001918460018302840111600160201b8311171561018857600080fd5b50909250905061049b565b604080516001600160e01b03199092168252519081900360200190f35b6101cd600480360360208110156101c657600080fd5b50356104ac565b60408051918252519081900360200190f35b61020b600480360360408110156101f557600080fd5b50803590602001356001600160a01b03166104c4565b005b61020b6004803603604081101561022357600080fd5b50803590602001356001600160a01b0316610530565b6101cd610591565b61020b6004803603606081101561025757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460018302840111600160201b831117156102bd57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105af945050505050565b6103216004803603604081101561031457600080fd5b5080359060200135610875565b604080516001600160a01b039092168252519081900360200190f35b6103696004803603604081101561035357600080fd5b50803590602001356001600160a01b031661089c565b604080519115158252519081900360200190f35b6101cd6108ba565b6101cd6108bf565b6101cd6108c4565b61020b600480360360208110156103ab57600080fd5b50356001600160a01b03166108e8565b6101cd600480360360208110156103d157600080fd5b50356109a7565b61020b600480360360408110156103ee57600080fd5b50803590602001356001600160a01b03166109be565b61020b6004803603608081101561041a57600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b81111561045557600080fd5b82018360208201111561046757600080fd5b803590602001918460018302840111600160201b8311171561048857600080fd5b509092509050610a17565b6101cd610dd1565b630a85bd0160e11b95945050505050565b6000818152602081905260409020600201545b919050565b6000828152602081905260409020600201546104e7906104e2610df5565b61089c565b6105225760405162461bcd60e51b815260040180806020018281038252602f815260200180611544602f913960400191505060405180910390fd5b61052c8282610dfa565b5050565b610538610df5565b6001600160a01b0316816001600160a01b0316146105875760405162461bcd60e51b815260040180806020018281038252602f81526020018061160a602f913960400191505060405180910390fd5b61052c8282610e69565b604080516545524337323160d01b8152905190819003600601902081565b604080516b4d414e414745525f524f4c4560a01b8152905190819003600c0190206105dc816104e2610df5565b60019061067c5760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561066d5780601f106106425761010080835404028352916020019161066d565b820191906000526020600020905b81548152906001019060200180831161065057829003601f168201915b50509250505060405180910390fd5b50606061069061068b84610ed8565b610efd565b905060606106b1826001815181106106a457fe5b6020026020010151610efd565b905060006106d2826001815181106106c557fe5b6020026020010151610fe5565b90507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60001b610708836000815181106106c557fe5b146107445760405162461bcd60e51b81526004018080602001828103825260228152602001806115c76022913960400191505060405180910390fd5b60006001600160a01b031661075f836002815181106106c557fe5b6001600160a01b0316146107a45760405162461bcd60e51b81526004018080602001828103825260218152602001806115e96021913960400191505060405180910390fd5b60006107b6836003815181106106c557fe5b60408051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490529151929350908916916342842e0e9160648082019260009290919082900301818387803b15801561081157600080fd5b505af1158015610825573d6000803e3d6000fd5b50506040805184815290516001600160a01b03808c169450861692507fe9ae525a9512e4ebce82a4301c43bc0915b47778d50e13d49319952b6881f7a99181900360200190a35050505050505050565b6000828152602081905260408120610893908363ffffffff61103316565b90505b92915050565b6000828152602081905260408120610893908363ffffffff61103f16565b601481565b600081565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef81565b60025460ff1615610931576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b6109616040518060400160405280600f81526020016e45524337323150726564696361746560881b815250611054565b61096c600082610522565b604080516b4d414e414745525f524f4c4560a01b8152905190819003600c0190206109979082610522565b506002805460ff19166001179055565b6000818152602081905260408120610896906110f2565b6000828152602081905260409020600201546109dc906104e2610df5565b6105875760405162461bcd60e51b81526004018080602001828103825260308152602001806115736030913960400191505060405180910390fd5b604080516b4d414e414745525f524f4c4560a01b8152905190819003600c019020610a44816104e2610df5565b600190610aaa5760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561066d5780601f106106425761010080835404028352916020019161066d565b506020821415610b8957600083836020811015610ac657600080fd5b5060408051913580835290519092506001600160a01b038088169289821692918b16917f8357472e13612a8c3d6f3e9d71fbba8a78ab77dbdcc7fcf3b7b645585f0bbbfc9181900360200190a460408051632142170760e11b81526001600160a01b038981166004830152306024830152604482018490529151918716916342842e0e9160648082019260009290919082900301818387803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b5050505050610dc9565b606083836020811015610b9b57600080fd5b810190602081018135600160201b811115610bb557600080fd5b820183602082011115610bc757600080fd5b803590602001918460208302840111600160201b83111715610be857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050509050846001600160a01b0316866001600160a01b0316886001600160a01b03167f5345c2beb0e49c805f42bb70c4ec5c3c3d9680ce45b8f4529c028d5f3e0f7a0d846040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610cb4578181015183820152602001610c9c565b505050509050019250505060405180910390a480516014811115610d095760405162461bcd60e51b81526004018080602001828103825260248152602001806115a36024913960400191505060405180910390fd5b60005b81811015610dc557866001600160a01b03166342842e0e8a30868581518110610d3157fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610da157600080fd5b505af1158015610db5573d6000803e3d6000fd5b505060019092019150610d0c9050565b5050505b505050505050565b604080516b4d414e414745525f524f4c4560a01b8152905190819003600c01902081565b335b90565b6000828152602081905260409020610e18908263ffffffff6110fd16565b1561052c57610e25610df5565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081905260409020610e87908263ffffffff61111216565b1561052c57610e94610df5565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b610ee061146f565b506040805180820190915281518152602082810190820152919050565b6060610f0882611127565b610f1157600080fd5b6000610f1c83611161565b905060608167ffffffffffffffff81118015610f3757600080fd5b50604051908082528060200260200182016040528015610f7157816020015b610f5e61146f565b815260200190600190039081610f565790505b5090506000610f8385602001516111bd565b60208601510190506000805b84811015610fda57610fa083611220565b9150604051806040016040528083815260200184815250848281518110610fc357fe5b602090810291909101015291810191600101610f8f565b509195945050505050565b805160009015801590610ffa57508151602110155b61100357600080fd5b60008061100f846112b9565b81519193509150602082101561102b5760208290036101000a90045b949350505050565b600061089383836112df565b6000610893836001600160a01b038416611343565b806040516020018082805190602001908083835b602083106110875780518252601f199092019160209182019101611068565b51815160209384036101000a60001901801990921691161790527f3a20494e53554646494349454e545f5045524d495353494f4e530000000000009190930190815260408051808303600519018152601a9092019052805161052c9550600194509201919050611489565b60006108968261135b565b6000610893836001600160a01b03841661135f565b6000610893836001600160a01b0384166113a9565b8051600090611138575060006104bf565b6020820151805160001a9060c0821015611157576000925050506104bf565b5060019392505050565b8051600090611172575060006104bf565b6000809050600061118684602001516111bd565b602085015185519181019250015b808210156111b4576111a582611220565b60019093019290910190611194565b50909392505050565b8051600090811a60808110156111d75760009150506104bf565b60b88110806111f2575060c081108015906111f2575060f881105b156112015760019150506104bf565b60c08110156112155760b5190190506104bf565b60f5190190506104bf565b80516000908190811a608081101561123b57600191506112b2565b60b881101561125057607e19810191506112b2565b60c081101561127d5760b78103600185019450806020036101000a855104600182018101935050506112b2565b60f88110156112925760be19810191506112b2565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b60008060006112cb84602001516111bd565b602085015194519481019594039392505050565b815460009082106113215760405162461bcd60e51b81526004018080602001828103825260228152602001806115226022913960400191505060405180910390fd5b82600001828154811061133057fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b600061136b8383611343565b6113a157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610896565b506000610896565b6000818152600183016020526040812054801561146557835460001980830191908101906000908790839081106113dc57fe5b90600052602060002001549050808760000184815481106113f957fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061142957fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610896565b6000915050610896565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114ca57805160ff19168380011785556114f7565b828001600101855582156114f7579182015b828111156114f75782518255916020019190600101906114dc565b50611503929150611507565b5090565b610df791905b80821115611503576000815560010161150d56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732315072656469636174653a20455843454544535f42415443485f4c494d49544552433732315072656469636174653a20494e56414c49445f5349474e41545552454552433732315072656469636174653a20494e56414c49445f5245434549564552416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212203e5a9de6c207883bf761095a27ab41edea086c72fa85799543ba5a947086add164736f6c63430006060033