0x00000000000000000000000000000000000000000000000000000000000000006080604052600480546001600160a01b031916905534801561002057600080fd5b50604051610fda380380610fda83398101604081905261003f916100c9565b61004833610079565b61005181610079565b50600054600580546001600160a01b0319166001600160a01b039092169190911790556100f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100db57600080fd5b81516001600160a01b03811681146100f257600080fd5b9392505050565b610ed2806101086000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063a27ca9b31161008c578063c9564cbf11610066578063c9564cbf146101dd578063df034cd0146101e5578063f2967f3214610205578063f2fde38b1461023357600080fd5b8063a27ca9b3146101a2578063a2abd749146101b7578063c6e2a400146101ca57600080fd5b8063845affc8116100bd578063845affc8146101395780638da5cb5b146101715780639d54f4191461018f57600080fd5b806322175a32146100e4578063248fdf88146100f9578063715018a614610131575b600080fd5b6100f76100f2366004610d33565b610246565b005b61011c610107366004610d33565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f76106a9565b61014c610147366004610d70565b6106bd565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610128565b60005473ffffffffffffffffffffffffffffffffffffffff1661014c565b6100f761019d366004610d33565b6106f4565b6101aa610743565b6040516101289190610d89565b6100f76101c5366004610d33565b6107b2565b6100f76101d8366004610d33565b6108af565b61014c610a40565b60055461014c9073ffffffffffffffffffffffffffffffffffffffff1681565b610225610213366004610d33565b60036020526000908152604090205481565b604051908152602001610128565b6100f7610241366004610d33565b610b05565b61024e610bbc565b60045473ffffffffffffffffffffffffffffffffffffffff9081169082160361034a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152607760248201527f496d706c656d656e746174696f6e20746f2072656d6f7665206973207265636f60448201527f6d6d656e64656420696d706c656d656e746174696f6e2e506c6561736520736560648201527f74207265636f6d6d656e64656420696d706c656d656e746174696f6e20746f2060848201527f616e6f7468657220696d706c656d656e746174696f6e2e00000000000000000060a482015260c4015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166103ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496d706c656d656e746174696f6e206973206e6f742076616c69642c2063616e60448201527f27742062652072656d6f7665642e0000000000000000000000000000000000006064820152608401610341565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555133917f1cb2139d1289becebd320fb6166d82cf143e0c3ff452b2516f89c623d70c164991a373ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546104a390600190610e12565b6002549091506104b590600190610e12565b810361054e5773ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081205560028054806104f2576104f2610e2b565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555050565b600280546000919061056290600190610e12565b8154811061057257610572610e5a565b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff90921692508291849081106105ae576105ae610e5a565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055918516815260039091526040812055610615826001610e89565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902055600280548061064c5761064c610e2b565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505050565b6106b1610c3d565b6106bb6000610cbe565b565b600281815481106106cd57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6106fc610c3d565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606060028054806020026020016040519081016040528092919081815260200182805480156107a857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161077d575b5050505050905090565b6107ba610bbc565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1680610802575073ffffffffffffffffffffffffffffffffffffffff8116155b610868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d706c656d656e746174696f6e206e6f742076616c69642e000000000000006044820152606401610341565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6108b7610bbc565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496d706c656d656e746174696f6e20616c72656164792061646465642e0000006044820152606401610341565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555133917fdbdaf5db6b13929c6c989f4775f63678f49cf1f62cc57ce86a278972ff18009791a3600280546001810182557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff0000000000000000000000000000000000000000909316831790555460009182526003602052604090912055565b60045460009073ffffffffffffffffffffffffffffffffffffffff16610ae8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f546865726520617265206e6f207265636f6d6d656e64656420696d706c656d6560448201527f6e746174696f6e20696e207468652072656769737472792e00000000000000006064820152608401610341565b5060045473ffffffffffffffffffffffffffffffffffffffff1690565b610b0d610c3d565b73ffffffffffffffffffffffffffffffffffffffff8116610bb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610341565b610bb981610cbe565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1633146106bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6f6e6c79207570646174657200000000000000000000000000000000000000006044820152606401610341565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610341565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610d4557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610d6957600080fd5b9392505050565b600060208284031215610d8257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610dd757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610da5565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610e2557610e25610de3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610e2557610e25610de356fea264697066735822122081fe3a08e9156754dd5f2bfb831fd360e3b45dba40819ac02979b7b6d7e25c8e64736f6c63430008120033000000000000000000000000977958aba332656978c5dddda6fb007e9bf1d2d3