0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61110b8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063894d973e11610104578063d578ceab116100a2578063f309edea11610071578063f309edea14610367578063f3f91fa014610393578063f6ed2017146103b3578063ff50abdc146103c657600080fd5b8063d578ceab1461035e578063d619658b14610367578063efbe1c1c14610378578063f2fde38b1461038057600080fd5b80639d76ea58116100de5780639d76ea5814610305578063a694fc3a14610320578063bec4de3f14610333578063c326bf4f1461033e57600080fd5b8063894d973e146102c55780638da5cb5b146102d8578063978bbdb9146102fd57600080fd5b8063583d42fd11610171578063715018a61161014b578063715018a61461028e5780637b0a47ee146102965780637b295b7f1461029f5780637ed88a06146102b257600080fd5b8063583d42fd146102455780636270cd18146102655780636c8b052a1461028557600080fd5b80632e17de78116101ad5780632e17de78146102165780634377971c1461022b5780634e52e597146102355780634e71d92d1461023d57600080fd5b80631115f2a7146101d457806312307917146101f157806312fa6feb146101f9575b600080fd5b6101de620d2f0081565b6040519081526020015b60405180910390f35b6101de6103cf565b6002546102069060ff1681565b60405190151581526020016101e8565b610229610224366004610f82565b6103ee565b005b6101de6276a70081565b6101de6105dc565b6102296105f6565b6101de610253366004610f9b565b60066020526000908152604090205481565b6101de610273366004610f9b565b60086020526000908152604090205481565b6101de60015481565b610229610657565b6101de610f3c81565b6101de6102ad366004610f9b565b610669565b6101de6102c0366004610f9b565b6106c1565b6101de6102d3366004610f9b565b610764565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101e8565b6101de606481565b6102e573e31fe8478e8efc5416b750cf7a452e613d8b20b681565b61022961032e366004610f82565b6107ea565b6101de6301e1338081565b6101de61034c366004610f9b565b60056020526000908152604090205481565b6101de60035481565b6101de69014542ba12a337c0000081565b6102296109be565b61022961038e366004610f9b565b6109d5565b6101de6103a1366004610f9b565b60076020526000908152604090205481565b6101de6103c1366004610f9b565b610a4e565b6101de60045481565b600060035469014542ba12a337c000006103e99190610fe1565b905090565b33600090815260056020526040902054811180159061040d5750600081115b6104485760405162461bcd60e51b815260206004820152600760248201526604572726f7220360cc1b60448201526064015b60405180910390fd5b336000908152600660205260409020546276a700906104679042610fe1565b1180610475575060025460ff165b6104ab5760405162461bcd60e51b8152602060048201526007602482015266139bdd081e595d60ca1b604482015260640161043f565b6104b433610af0565b60006127106104c4606484610ff4565b6104ce919061100b565b905060006104dc8284610fe1565b336000908152600560205260409020549091506104fa908490610fe1565b33600090815260056020526040902055600454610518908490610fe1565b60045561054c6105306000546001600160a01b031690565b73e31fe8478e8efc5416b750cf7a452e613d8b20b69084610bd0565b61056b73e31fe8478e8efc5416b750cf7a452e613d8b20b63383610bd0565b336000908152600560205260408120549003610593576001805461058f9190610fe1565b6001555b7f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75335b604080516001600160a01b039092168252602082018690520160405180910390a1505050565b600060045469014542ba12a337c000006103e99190610fe1565b33600090815260076020526040902054620d2f00906106159042610fe1565b1161064c5760405162461bcd60e51b8152602060048201526007602482015266139bdd081e595d60ca1b604482015260640161043f565b61065533610af0565b565b61065f610c38565b6106556000610c92565b336000908152600660205260408120546276a700906106889042610fe1565b108015610698575060025460ff16155b156106a557506000919050565b506001600160a01b031660009081526005602052604090205490565b6001600160a01b03811660009081526005602052604081205415806106e8575060025460ff165b156106f557506000919050565b6001600160a01b0382166000908152600660205260409020546276a7009061071d9042610fe1565b111561072b57506000919050565b6001600160a01b0382166000908152600660205260409020544290610754906276a7009061102d565b61075e9190610fe1565b92915050565b6001600160a01b038116600090815260056020526040812054810361078b57506000919050565b6001600160a01b038216600090815260076020526040902054620d2f00906107b39042610fe1565b11156107c157506000919050565b6001600160a01b038216600090815260076020526040902054429061075490620d2f009061102d565b60025460ff16156108255760405162461bcd60e51b8152602060048201526005602482015264115b99195960da1b604482015260640161043f565b670de0b6b3a76400008110156108675760405162461bcd60e51b81526020600482015260076024820152664572726f72203160c81b604482015260640161043f565b69014542ba12a337c0000081600454610880919061102d565b11156108ba5760405162461bcd60e51b815260206004820152600960248201526808ae4e4dee4409ac2f60bb1b604482015260640161043f565b6108da73e31fe8478e8efc5416b750cf7a452e613d8b20b6333084610ce2565b6108e333610af0565b60006127106108f3606484610ff4565b6108fd919061100b565b9050600061090b8284610fe1565b90506109226105306000546001600160a01b031690565b33600090815260056020526040812054900361094957600180546109459161102d565b6001555b3360009081526005602052604090205461096490829061102d565b3360009081526005602052604090205560045461098290829061102d565b6004553360008181526006602052604090204290557f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906105b6565b6109c6610c38565b6002805460ff19166001179055565b6109dd610c38565b6001600160a01b038116610a425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161043f565b610a4b81610c92565b50565b6001600160a01b0381166000908152600560205260408120548103610a7557506000919050565b6001600160a01b038216600090815260076020526040812054610a989042610fe1565b6001600160a01b0384166000908152600560205260408120549192506301e1338083612710610ac9610f3c86610ff4565b610ad3919061100b565b610add9190610ff4565b610ae7919061100b565b95945050505050565b6000610afb82610a4e565b90508015610bb3576001600160a01b038216600090815260086020526040902054610b2790829061102d565b6001600160a01b038316600090815260086020526040902055600354610b4e90829061102d565b600355610b7073e31fe8478e8efc5416b750cf7a452e613d8b20b68383610bd0565b604080516001600160a01b0384168152602081018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a15b506001600160a01b03166000908152600760205260409020429055565b6040516001600160a01b038316602482015260448101829052610c3390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610d20565b505050565b6000546001600160a01b031633146106555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052610d1a9085906323b872dd60e01b90608401610bfc565b50505050565b6000610d75826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610df29092919063ffffffff16565b805190915015610c335780806020019051810190610d939190611040565b610c335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161043f565b6060610e018484600085610e09565b949350505050565b606082471015610e6a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161043f565b600080866001600160a01b03168587604051610e869190611086565b60006040518083038185875af1925050503d8060008114610ec3576040519150601f19603f3d011682016040523d82523d6000602084013e610ec8565b606091505b5091509150610ed987838387610ee4565b979650505050505050565b60608315610f53578251600003610f4c576001600160a01b0385163b610f4c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161043f565b5081610e01565b610e018383815115610f685781518083602001fd5b8060405162461bcd60e51b815260040161043f91906110a2565b600060208284031215610f9457600080fd5b5035919050565b600060208284031215610fad57600080fd5b81356001600160a01b0381168114610fc457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075e5761075e610fcb565b808202811582820484141761075e5761075e610fcb565b60008261102857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561075e5761075e610fcb565b60006020828403121561105257600080fd5b81518015158114610fc457600080fd5b60005b8381101561107d578181015183820152602001611065565b50506000910152565b60008251611098818460208701611062565b9190910192915050565b60208152600082518060208401526110c1816040850160208701611062565b601f01601f1916919091016040019291505056fea26469706673582212208a8ac9e9b367441182473cc8e8e131f311f62762daddf242375befc4c532479364736f6c63430008120033