0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6114068061007e6000396000f3fe6080604052600436106100705760003560e01c8063715018a61161004e578063715018a6146100fc5780637ca510a4146101115780638da5cb5b14610131578063f2fde38b1461014f57600080fd5b806314bc0a8b146100755780634ef23038146100975780636c8bc80a146100aa575b600080fd5b34801561008157600080fd5b50610095610090366004610f16565b61016f565b005b6100956100a5366004610f8e565b6101b2565b3480156100b657600080fd5b506100e06100c5366004610ff5565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b34801561010857600080fd5b50610095610718565b34801561011d57600080fd5b5061009561012c36600461100e565b61072c565b34801561013d57600080fd5b506000546001600160a01b03166100e0565b34801561015b57600080fd5b5061009561016a36600461107a565b61091a565b6101776109aa565b600091825260016020526040909120805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b6000858560008181106101c7576101c7611095565b90506020028101906101d991906110ab565b6101e79060208101906110cb565b60008181106101f8576101f8611095565b905060200281019061020a9190611115565b6102189060208101906110cb565b600081811061022957610229611095565b905060200201602081019061023e919061107a565b90506001600160a01b0381166102a7578334146102a25760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f494e5055545f414d4f554e5400000000000000000000000060448201526064015b60405180910390fd5b6102bc565b6102bc6001600160a01b038216333087610a04565b60005b8581101561053157368787838181106102da576102da611095565b90506020028101906102ec91906110ab565b9050803560005b61030060208401846110cb565b905081101561051d573661031760208501856110cb565b8381811061032757610327611095565b90506020028101906103399190611115565b905061034860408201826110cb565b61035491506001611141565b61036160208301836110cb565b905014801561037e5750600061037a60408301836110cb565b9050115b6103ca5760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f5355425f524f5554450000000000000000000000000000006044820152606401610299565b803560009081526001602090815260408220546001600160a01b03169190819083907f71dcac860000000000000000000000000000000000000000000000000000000090889061041c908801886110cb565b61042960408a018a6110cb565b61043660608c018c611154565b60405160240161044c97969594939291906111e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516104b7919061126c565b600060405180830381855af49150503d80600081146104f2576040519150601f19603f3d011682016040523d82523d6000602084013e6104f7565b606091505b50915091506105068282610abb565b955050505050806105169061127e565b90506102f3565b5050508061052a9061127e565b90506102bf565b50600061056a8787610544600182611297565b81811061055357610553611095565b905060200281019061056591906110ab565b610b21565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f191906112aa565b9050848110156106435760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e540000000000006044820152606401610299565b6001600160a01b0382166106fa576000846001600160a01b03168260405160006040518083038185875af1925050503d806000811461069e576040519150601f19603f3d011682016040523d82523d6000602084013e6106a3565b606091505b50509050806106f45760405162461bcd60e51b815260206004820152601560248201527f56414c55455f5452414e534645525f4641494c454400000000000000000000006044820152606401610299565b5061070e565b61070e6001600160a01b0383168583610bc0565b5050505050505050565b6107206109aa565b61072a6000610c0e565b565b600054600160a81b900460ff161580801561075457506000546001600160a01b90910460ff16105b806107755750303b1580156107755750600054600160a01b900460ff166001145b6107e75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610299565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055801561082f576000805460ff60a81b1916600160a81b1790555b61083833610c0e565b60005b848110156108ca5783838281811061085557610855611095565b905060200201602081019061086a919061107a565b6001600088888581811061088057610880611095565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806108c39061127e565b905061083b565b508015610913576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6109226109aa565b6001600160a01b03811661099e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610299565b6109a781610c0e565b50565b6000546001600160a01b0316331461072a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610299565b6040516001600160a01b0380851660248301528316604482015260648101829052610ab59085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c6b565b50505050565b600082610b0457604482511015610ad157600080fd5b60048201915081806020019051810190610aeb91906112d9565b60405162461bcd60e51b8152600401610299919061137b565b81806020019051810190610b1891906112aa565b90505b92915050565b600036610b3160208401846110cb565b6001610b4060208701876110cb565b610b4b929150611297565b818110610b5a57610b5a611095565b9050602002810190610b6c9190611115565b9050610b7b60208201826110cb565b6001610b8a60208501856110cb565b610b95929150611297565b818110610ba457610ba4611095565b9050602002016020810190610bb9919061107a565b9392505050565b6040516001600160a01b038316602482015260448101829052610c099084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610a51565b505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610cc0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610d539092919063ffffffff16565b9050805160001480610ce1575080806020019051810190610ce191906113ae565b610c095760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610299565b6060610d628484600085610d6a565b949350505050565b606082471015610de25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610299565b600080866001600160a01b03168587604051610dfe919061126c565b60006040518083038185875af1925050503d8060008114610e3b576040519150601f19603f3d011682016040523d82523d6000602084013e610e40565b606091505b5091509150610e5187838387610e5c565b979650505050505050565b60608315610ecb578251600003610ec4576001600160a01b0385163b610ec45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610299565b5081610d62565b610d628383815115610ee05781518083602001fd5b8060405162461bcd60e51b8152600401610299919061137b565b80356001600160a01b0381168114610f1157600080fd5b919050565b60008060408385031215610f2957600080fd5b82359150610f3960208401610efa565b90509250929050565b60008083601f840112610f5457600080fd5b50813567ffffffffffffffff811115610f6c57600080fd5b6020830191508360208260051b8501011115610f8757600080fd5b9250929050565b600080600080600060808688031215610fa657600080fd5b853567ffffffffffffffff811115610fbd57600080fd5b610fc988828901610f42565b9096509450506020860135925060408601359150610fe960608701610efa565b90509295509295909350565b60006020828403121561100757600080fd5b5035919050565b6000806000806040858703121561102457600080fd5b843567ffffffffffffffff8082111561103c57600080fd5b61104888838901610f42565b9096509450602087013591508082111561106157600080fd5b5061106e87828801610f42565b95989497509550505050565b60006020828403121561108c57600080fd5b610b1882610efa565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126110c157600080fd5b9190910192915050565b6000808335601e198436030181126110e257600080fd5b83018035915067ffffffffffffffff8211156110fd57600080fd5b6020019150600581901b3603821315610f8757600080fd5b60008235607e198336030181126110c157600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610b1b57610b1b61112b565b6000808335601e1984360301811261116b57600080fd5b83018035915067ffffffffffffffff82111561118657600080fd5b602001915036819003821315610f8757600080fd5b8183526000602080850194508260005b858110156111d7576001600160a01b036111c483610efa565b16875295820195908201906001016111ab565b509495945050505050565b8781526080602082015260006111fc60808301888a61119b565b828103604084015261120f81878961119b565b90508281036060840152838152838560208301376000602085830101526020601f19601f86011682010191505098975050505050505050565b60005b8381101561126357818101518382015260200161124b565b50506000910152565b600082516110c1818460208701611248565b6000600182016112905761129061112b565b5060010190565b81810381811115610b1b57610b1b61112b565b6000602082840312156112bc57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156112eb57600080fd5b815167ffffffffffffffff8082111561130357600080fd5b818401915084601f83011261131757600080fd5b815181811115611329576113296112c3565b604051601f8201601f19908116603f01168101908382118183101715611351576113516112c3565b8160405282815287602084870101111561136a57600080fd5b610e51836020830160208801611248565b602081526000825180602084015261139a816040850160208701611248565b601f01601f19169190910160400192915050565b6000602082840312156113c057600080fd5b81518015158114610bb957600080fdfea2646970667358221220480f629d3036c32fdd816c134f414535312754fe0d912baa7b601e4d8899a51a64736f6c63430008110033