0 txs
285 calls
constructor
constructor()
functions
currIFOAddress
viewfunction currIFOAddress() view returns (address)
MAX_BUFFER_SECONDS_VESTING
viewfunction MAX_BUFFER_SECONDS_VESTING() view returns (uint256)
MAX_BUFFER_SECONDS
viewfunction MAX_BUFFER_SECONDS() view returns (uint256)
owner
viewfunction owner() view returns (address)
createIFO
nonpayablefunction createIFO(address[] _addresses, uint256[] _startAndEndTimestamps, uint8 _maxPoolId, uint256 _pointThreshold, uint256 _vestingStartTime)
recoverWrongTokens
nonpayablefunction recoverWrongTokens(address _tokenAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateMaxBuffer
nonpayablefunction updateMaxBuffer(uint256 newMaxBuffer)
events
AdminTokenRecovery
event AdminTokenRecovery(address indexed tokenRecovered, uint256 amount)
NewIFOContract
event NewIFOContract(address indexed ifoAddress)
NewMaxBuffer
event NewMaxBuffer(uint256 maxBuffer)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
AdminAddressIsNull
error AdminAddressIsNull()
EndTimeTooFar
error EndTimeTooFar()
LpTokenSameWithOfferingToken
error LpTokenSameWithOfferingToken()
StartTimeMustGreaterThanCurrentBlockTime
error StartTimeMustGreaterThanCurrentBlockTime()
StartTimeMustInferiorToEndTime
error StartTimeMustInferiorToEndTime()
VestingStartTimeMustGreaterThanEndTime
error VestingStartTimeMustGreaterThanEndTime()
VestingStartTimeTooFar
error VestingStartTimeTooFar()
creation bytecode
0x608060405234801561001057600080fd5b5061001a33610026565b62278d00600155610076565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6156fc806100856000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c8063114c0fa81461008857806354070e39146100b1578063715018a6146100c8578063746268cc146100d257806387b7db5c146100e55780638da5cb5b146100f8578063d04cbeb314610100578063eec784bd1461010a578063f2fde38b1461011d575b600080fd5b60025461009b906001600160a01b031681565b6040516100a89190610bf3565b60405180910390f35b6100ba60015481565b6040519081526020016100a8565b6100d0610130565b005b6100d06100e0366004610c23565b610174565b6100d06100f3366004610c3e565b6102c0565b61009b61032a565b6100ba62278d0081565b6100d0610118366004610ca2565b610339565b6100d061012b366004610c23565b61084a565b3361013961032a565b6001600160a01b0316146101685760405162461bcd60e51b815260040161015f90610d3d565b60405180910390fd5b61017260006108ea565b565b3361017d61032a565b6001600160a01b0316146101a35760405162461bcd60e51b815260040161015f90610d3d565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906101d2903090600401610bf3565b602060405180830381865afa1580156101ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102139190610d72565b9050600081116102655760405162461bcd60e51b815260206004820152601f60248201527f4f7065726174696f6e733a2042616c616e6365206d757374206265203e203000604482015260640161015f565b6102796001600160a01b038316338361093a565b816001600160a01b03167f74545154aac348a3eac92596bd1971957ca94795f4e954ec5f613b55fab78129826040516102b491815260200190565b60405180910390a25050565b336102c961032a565b6001600160a01b0316146102ef5760405162461bcd60e51b815260040161015f90610d3d565b60018190556040518181527f6d0e750dce5e074f2672f12d0fd1de4bab34323530b02e094e59481a0850df609060200160405180910390a150565b6000546001600160a01b031690565b3361034261032a565b6001600160a01b0316146103685760405162461bcd60e51b815260040161015f90610d3d565b60008787600081811061037d5761037d610d8b565b90506020020160208101906103929190610c23565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f39190610d72565b10156103fe57600080fd5b60008787600181811061041357610413610d8b565b90506020020160208101906104289190610c23565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104899190610d72565b101561049457600080fd5b868660018181106104a7576104a7610d8b565b90506020020160208101906104bc9190610c23565b6001600160a01b0316878760008181106104d8576104d8610d8b565b90506020020160208101906104ed9190610c23565b6001600160a01b03160361051457604051637299907360e11b815260040160405180910390fd5b60008787600481811061052957610529610d8b565b905060200201602081019061053e9190610c23565b6001600160a01b03160361056557604051630e8f677560e21b815260040160405180910390fd5b6001546105729042610da1565b8585600181811061058557610585610d8b565b90506020020135106105aa5760405163eb47c4f360e01b815260040160405180910390fd5b848460018181106105bd576105bd610d8b565b90506020020135858560008181106105d7576105d7610d8b565b90506020020135106105fc576040516311af708560e21b815260040160405180910390fd5b428585600081811061061057610610610d8b565b90506020020135116106355760405163582314d560e11b815260040160405180910390fd5b80156106835762278d008585600181811061065257610652610d8b565b905060200201356106639190610da1565b8111156106835760405163934d841560e01b815260040160405180910390fd5b60006040518060200161069590610be6565b601f1982820381018352601f9091011660405290506000888882816106bc576106bc610d8b565b90506020020160208101906106d19190610c23565b898960018181106106e4576106e4610d8b565b90506020020160208101906106f99190610c23565b8888600081811061070c5761070c610d8b565b6040516001600160601b0319606096871b81166020838101919091529590961b90951660348601529290920201356048830152506068016040516020818303038152906040528051906020012090506000818351602085016000f5600154604051636865f6e960e01b81529192506001600160a01b03831691636865f6e9916107a5918e918e918e918e918e908e908e90600401610dc8565b600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b50506002546001600160a01b03848116911614915061080a905057600280546001600160a01b0319166001600160a01b0383161790555b6040516001600160a01b038216907f3b823f91f23e8f12a60f36282813ffed043efcb2101731734672a4726c08645490600090a250505050505050505050565b3361085361032a565b6001600160a01b0316146108795760405162461bcd60e51b815260040161015f90610d3d565b6001600160a01b0381166108de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161015f565b6108e7816108ea565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261098c908490610991565b505050565b60006109e6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a639092919063ffffffff16565b80519091501561098c5780806020019051810190610a049190610e68565b61098c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161015f565b6060610a728484600085610a7c565b90505b9392505050565b606082471015610add5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161015f565b6001600160a01b0385163b610b345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161015f565b600080866001600160a01b03168587604051610b509190610eae565b60006040518083038185875af1925050503d8060008114610b8d576040519150601f19603f3d011682016040523d82523d6000602084013e610b92565b606091505b5091509150610ba2828286610bad565b979650505050505050565b60608315610bbc575081610a75565b825115610bcc5782518084602001fd5b8160405162461bcd60e51b815260040161015f9190610eca565b6147c980610efe83390190565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b610a7582610c07565b600060208284031215610c5057600080fd5b5035919050565b60008083601f840112610c6957600080fd5b5081356001600160401b03811115610c8057600080fd5b6020830191508360208260051b8501011115610c9b57600080fd5b9250929050565b600080600080600080600060a0888a031215610cbd57600080fd5b87356001600160401b0380821115610cd457600080fd5b610ce08b838c01610c57565b909950975060208a0135915080821115610cf957600080fd5b50610d068a828b01610c57565b909650945050604088013560ff81168114610d2057600080fd5b969995985093969295946060840135945060809093013592915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215610d8457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b80820180821115610dc257634e487b7160e01b600052601160045260246000fd5b92915050565b60c0808252810188905260008960e08301825b8b811015610e09576001600160a01b03610df484610c07565b16825260209283019290910190600101610ddb565b5083810360208501528881526001600160fb1b03891115610e2957600080fd5b8860051b9150818a602083013760408401889052016020019050610e52606083018660ff169052565b608082019390935260a001529695505050505050565b600060208284031215610e7a57600080fd5b81518015158114610a7557600080fd5b60005b83811015610ea5578181015183820152602001610e8d565b50506000910152565b60008251610ec0818460208701610e8a565b9190910192915050565b6020815260008251806020840152610ee9816040850160208701610e8a565b601f01601f1916919091016040019291505056fe60a06040523480156200001157600080fd5b50600160005562000022336200002c565b336080526200007e565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60805161472f6200009a6000396000611297015261472f6000f3fe608060405234801561001057600080fd5b506004361061023b5760003560e01c806306cec8571461024057806313083617146102685780631e3bba081461027a5780632374876c1461028d57806324953eaa146102a2578063286dd3f5146102b557806328fddfaf146102c857806337f859b8146102d55780633af32abf146102e85780633f138d4b146102fb57806346ab91bf1461030e57806348deb4711461033457806349032cdb1461033c5780634af3c9b71461035c57806354070e391461037d57806367d42a8b146103865780636865f6e914610399578063715018a6146103ac578063760b3180146103b457806379795108146103bd5780637b9417c8146103c55780637f1bdd76146103d85780638518b3c5146103eb5780638af104da146104215780638da5cb5b146104345780639ef346b41461043c5780639f1b52481461049a578063a47ff7e5146104ad578063a85adeab146104ce578063a8660a78146104d7578063ae8973a0146104e0578063b0adb220146104f3578063b1ced5e7146104fc578063b6549f751461051b578063b86c6f1414610523578063c029773714610556578063ca463ca414610569578063caa7f23214610589578063d04dac151461059c578063e2ec6ec3146105af578063e6fd48bc146105c2578063e9050763146105cb578063ea1bb3d5146105de578063edf26d9b146105f1578063f2fde38b14610604578063f51321d714610617578063f7c469f01461062a578063f9cd5c121461063d578063feebf5291461065d575b600080fd5b61025361024e366004613e32565b61067d565b60405190151581526020015b60405180910390f35b6032545b60405190815260200161025f565b61026c610288366004613e60565b61068e565b6102a061029b366004613e95565b61073c565b005b6102a06102b0366004613efb565b610b71565b6102a06102c3366004613e32565b610c61565b6031546102539060ff1681565b61026c6102e3366004613f3c565b610cc7565b6102536102f6366004613e32565b610d78565b6102a0610309366004613f55565b610d96565b61032161031c366004613f3c565b610e4d565b60405161025f9796959493929190613f97565b60345461026c565b61026c61034a366004613e32565b602f6020526000908152604090205481565b61036f61036a366004613ff2565b610f30565b60405161025f929190614081565b61026c600c5481565b6102a0610394366004613f3c565b6110cd565b6102a06103a73660046140da565b61128b565b6102a0611574565b61026c60125481565b61026c6115af565b6102a06103d3366004613e32565b611634565b6102a06103e6366004614175565b61169d565b6104146103f9366004613f3c565b602e602052600090815260409020546001600160a01b031681565b60405161025f9190614198565b61026c61042f366004613f55565b611c98565b610414611cda565b61044f61044a366004613f3c565b611ce9565b60405161025f91908151151581526020808301516001600160a01b03169082015260408083015160ff1690820152606080830151908201526080918201519181019190915260a00190565b6102a06104a83660046141ac565b611d55565b600f546010546011546104bf92919083565b60405161025f939291906141ce565b61026c600b5481565b61026c60305481565b6102a06104ee3660046141e4565b611ea0565b61026c600e5481565b600d546105099060ff1681565b60405160ff909116815260200161025f565b6102a0611f0a565b610536610531366004613f3c565b611f6e565b60408051948552602085019390935291830152606082015260800161025f565b610253610564366004613e32565b611ffb565b61057c610577366004613ff2565b6121ef565b60405161025f91906141fc565b6102a0610597366004613efb565b61233a565b6102536105aa366004613e32565b612427565b6102a06105bd366004613efb565b61262a565b61026c600a5481565b6102a06105d9366004614274565b612715565b61026c6105ec366004613f3c565b61297a565b6104146105ff366004613f3c565b6129fe565b6102a0610612366004613e32565b612a1e565b61044f610625366004613f55565b612abe565b61026c610638366004613e32565b612ad3565b61065061064b366004613ff2565b612af7565b60405161025f9190614303565b61026c61066b366004613e32565b602d6020526000908152604090205481565b600061068882610d78565b92915050565b600d5460009060ff90811690831611156106aa57506000610688565b60006106b7846000611c98565b600081815260336020908152604091829020825160a081018452815460ff808216151583526001600160a01b0361010083041694830194909452600160a81b900483169381018490526001820154606082015260029091015460808201529293508516900361072857509050610688565b610733856001611c98565b95945050505050565b6002600054036107675760405162461bcd60e51b815260040161075e90614316565b60405180910390fd5b600260005561077581612bb2565b600b54336000908152602c6020908152604080832060ff8681168552925290912080546001909101546107a9939216612bdc565b336000908152602f60205260409020541561090757600080806004600201546001600160a01b031663987ee1566004600301546040516316fc4fd560e01b81526001600160a01b03909116906316fc4fd590610809903390600401614198565b602060405180830381865afa158015610826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084a9190614363565b6040518263ffffffff1660e01b81526004016108669190614198565b60c060405180830381865afa158015610883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a79190614380565b9550955095505050508015806108cb57506009546001600160a01b03848116911614155b806108e55750336000908152602f60205260409020548214155b15610903576040516319a9a2ef60e01b815260040160405180910390fd5b5050505b61091033612c3c565b336000908152602c6020908152604080832060ff8516845290915281206001908101805460ff19169091179055603054900361094b57426030555b600080600061095a3385612dfc565b9194509250905080156109b2578060138560ff166002811061097e5761097e61434d565b600c02016006015461099091906143f5565b60138560ff16600281106109a6576109a661434d565b600c0201600601819055505b8215610b5257600060138560ff16600281106109d0576109d061434d565b600c02016008016000015460646109e79190614408565b1115610a99576000606460138660ff1660028110610a0757610a0761434d565b600c0201600801600001546064610a1e9190614408565b610a28908661441b565b610a329190614432565b9050610a503382600460015b01546001600160a01b0316919061303c565b8460ff16336001600160a01b03167f51524c2e5edfedf8b01b29719c661e4fbe27e71734e7cd773dabb7cb712fb3b38386604051610a8f929190614454565b60405180910390a3505b600060138560ff1660028110610ab157610ab161434d565b600c0201600801600001541115610b52576000606460138660ff1660028110610adc57610adc61434d565b600c02016008016000015485610af2919061441b565b610afc9190614432565b9050610b09338683613092565b8460ff16336001600160a01b03167f4b386667138d87683f75b2e46ad8ac192b053af4c8875da8689415997663a9508386604051610b48929190614454565b60405180910390a3505b8115610b6657610b66338360046000610a3e565b505060016000555050565b33610b7a611cda565b6001600160a01b031614610ba05760405162461bcd60e51b815260040161075e90614462565b60005b81811015610c5c57600060026000858585818110610bc357610bc361434d565b9050602002016020810190610bd89190613e32565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055828282818110610c1257610c1261434d565b9050602002016020810190610c279190613e32565b6001600160a01b03166000805160206146da83398151915260405160405180910390a280610c5481614497565b915050610ba3565b505050565b33610c6a611cda565b6001600160a01b031614610c905760405162461bcd60e51b815260040161075e90614462565b6001600160a01b038116600081815260026020526040808220805460ff19169055516000805160206146da8339815191529190a250565b600060138260028110610cdc57610cdc61434d565b600c02016003015460ff16610cf357506000919050565b600060138360028110610d0857610d0861434d565b600c0201600401541115610d385760138260028110610d2957610d2961434d565b600c0201600401549050919050565b61068860138360028110610d4e57610d4e61434d565b600c02016005015460138460028110610d6957610d6961434d565b600c02015461329a565b919050565b6001600160a01b031660009081526002602052604090205460ff1690565b610d9e613338565b6004546001600160a01b0390811690831603610dcd576040516310da472360e01b815260040160405180910390fd5b6005546001600160a01b0390811690831603610dfc5760405163a8dfadb960e01b815260040160405180910390fd5b610e106001600160a01b038316338361303c565b7f74545154aac348a3eac92596bd1971957ca94795f4e954ec5f613b55fab781298282604051610e419291906144b0565b60405180910390a15050565b600080600080600080600060138860028110610e6b57610e6b61434d565b600c02015460138960028110610e8357610e8361434d565b600c02016001015460138a60028110610e9e57610e9e61434d565b600c02016002015460138b60028110610eb957610eb961434d565b600c02016003015460ff1660138c60028110610ed757610ed761434d565b600c02016005015460138d60028110610ef257610ef261434d565b600c02016006015460138e60028110610f0d57610f0d61434d565b600c020160070154959e949d50929b509099509750955060ff9091169350915050565b6060806000836001600160401b03811115610f4d57610f4d6144c9565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000846001600160401b03811115610f9357610f936144c9565b604051908082528060200260200182016040528015610fbc578160200160208202803683370190505b50905060005b60ff81168611156110c057600087878360ff16818110610fe457610fe461434d565b9050602002016020810190610ff99190613e95565b600d5490915060ff908116908216116110ad576001600160a01b0389166000908152602c6020908152604080832060ff808616855292529091205485519091869190851690811061104c5761104c61434d565b6020908102919091018101919091526001600160a01b038a166000908152602c8252604080822060ff80861684529352902060010154845190821691859190851690811061109c5761109c61434d565b911515602092830291909101909101525b50806110b8816144df565b915050610fc2565b5090969095509350505050565b6002600054036110ef5760405162461bcd60e51b815260040161075e90614316565b600260009081558181526033602052604090205461110f9060ff16613368565b6000818152603360205260408120805490916101009091046001600160a01b031633149061113b611cda565b6001600160a01b0316336001600160a01b03161490508115801561115d575080155b1561117b576040516361c042c160e01b815260040160405180910390fd5b6040805160a081018252845460ff808216151583526001600160a01b036101008304166020840152600160a81b909104169181019190915260018401546060820152600284015460808201526000906111d390613386565b9050600081116111f657604051632d973f4d60e11b815260040160405180910390fd5b80846002015461120691906143f5565b6002850155603454611219908290614408565b603455835461123a9061010090046001600160a01b03168260046001610a3e565b83546040518281526101009091046001600160a01b0316907fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e9060200160405180910390a250506001600055505050565b6003546112be9060ff167f00000000000000000000000000000000000000000000000000000000000000008988876134db565b6003805460ff191660011790556000888860028181106112e0576112e061434d565b90506020020160208101906112f59190613e32565b6001600160a01b0316146113a057878760028181106113165761131661434d565b905060200201602081019061132b9190613e32565b60405163aee2f47f60e01b8152600160048201526001600160a01b03919091169063aee2f47f90602401600060405180830381865afa158015611372573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261139a91908101906145a9565b50505050505b6000888860038181106113b5576113b561434d565b90506020020160208101906113ca9190613e32565b6001600160a01b03161461146357878760038181106113eb576113eb61434d565b90506020020160208101906114009190613e32565b6001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114619190614363565b505b60005b60ff81168811156114e25788888260ff168181106114865761148661434d565b905060200201602081019061149b9190613e32565b60048260ff16600681106114b1576114b161434d565b0180546001600160a01b0319166001600160a01b0392909216919091179055806114da816144df565b915050611466565b50858560008181106114f6576114f661434d565b6020029190910135600a5550858560018181106115155761151561434d565b6020029190910135600b5550600c849055600d805460ff191660ff8516179055600e829055603081905561156a888860048181106115555761155561434d565b90506020020160208101906106129190613e32565b5050505050505050565b3361157d611cda565b6001600160a01b0316146115a35760405162461bcd60e51b815260040161075e90614462565b6115ad600061358f565b565b6034546005546040516370a0823160e01b8152600092916001600160a01b0316906370a08231906115e4903090600401614198565b602060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116259190614634565b61162f9190614408565b905090565b3361163d611cda565b6001600160a01b0316146116635760405162461bcd60e51b815260040161075e90614462565b6001600160a01b038116600081815260026020526040808220805460ff19166001179055516000805160206146ba8339815191529190a250565b6002600054036116bf5760405162461bcd60e51b815260040161075e90614316565b60026000556116cd81612bb2565b6007546040516316fc4fd560e01b81526000916001600160a01b0316906316fc4fd5906116fe903390600401614198565b602060405180830381865afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f9190614363565b90506001600160a01b03811661176857604051630a3a7b5760e21b815260040160405180910390fd5b6117eb81846004600201546001600160a01b0316601360ff8716600281106117925761179261434d565b600c020160070160009054906101000a900460ff1660138760ff16600281106117bd576117bd61434d565b600c02016001015460138860ff16600281106117db576117db61434d565b600c020154600a54600b546135e1565b6012546005546040516370a0823160e01b81526001600160a01b03909116906370a082319061181e903090600401614198565b602060405180830381865afa15801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f9190614634565b101561187e5760405163726da7d560e11b815260040160405180910390fd5b600060138360ff16600281106118965761189661434d565b600c02016007015460ff1660028111156118b2576118b2613f81565b14806118ef5750600260138360ff16600281106118d1576118d161434d565b600c02016007015460ff1660028111156118ed576118ed613f81565b145b15611a73576007546001600160a01b0316158015906119405750600260138360ff16600281106119215761192161434d565b600c02016007015460ff16600281111561193d5761193d613f81565b14155b156119f8576007546040516336b5bc3760e21b81526000916001600160a01b03169063dad6f0dc90611976903390600401614198565b602060405180830381865afa158015611993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b79190614634565b336000908152602d602052604090205490915081906119d79086906143f5565b11156119f657604051630448a42b60e21b815260040160405180910390fd5b505b611a028383613725565b600060138360ff1660028110611a1a57611a1a61434d565b600c02016007015460ff166002811115611a3657611a36613f81565b14611a42576000611a44565b825b336000908152602d6020526040902054611a5e91906143f5565b336000908152602d6020526040902055611c8e565b6006546001600160a01b031615611c84576000808080600460020154604051634c3f70ab60e11b81526001600160a01b039091169063987ee15690611abc908890600401614198565b60c060405180830381865afa158015611ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afd9190614380565b9550955095505094505080611b255760405163f7bd660760e01b815260040160405180910390fd5b611b2e84613899565b158015611b415750611b3f3361067d565b155b8015611b555750611b533384846138b2565b155b15611b73576040516309a318fb60e31b815260040160405180910390fd5b611b7c84613899565b158015611b8f5750611b8d3361067d565b155b8015611ba857506009546001600160a01b038481169116145b15611c7f576000828152602e60205260409020546001600160a01b0316611bec576000828152602e6020526040902080546001600160a01b03191633179055611c23565b6000828152602e60205260409020546001600160a01b03163314611c235760405163d69933c360e01b815260040160405180910390fd5b336000908152602f60205260408120549003611c5057336000908152602f60205260409020829055611c7f565b336000908152602f60205260409020548214611c7f57604051630236c46360e51b815260040160405180910390fd5b505050505b611c8e8383613725565b5050600160005550565b6040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b6001546001600160a01b031690565b611cf1613dd1565b50600090815260336020908152604091829020825160a081018452815460ff808216151583526001600160a01b0361010083041694830194909452600160a81b90049092169282019290925260018201546060820152600290910154608082015290565b611d5d613338565b600480546040516370a0823160e01b8152611e479285926001600160a01b0316916370a0823191611d9091309101614198565b602060405180830381865afa158015611dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd19190614634565b6005546040516370a0823160e01b815285916001600160a01b0316906370a0823190611e01903090600401614198565b602060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190614634565b613913565b8115611e5b57611e5b338360046000610a3e565b8015611e6f57611e6f338260046001610a3e565b7f94ebb62a252249c867ecb758d386f50a95be7e8df9e1c52917c9cf494327dd7d8282604051610e41929190614454565b611ea8613338565b611eb3600b5461395b565b602081013560108190558135600f819055604080840135601181905590517f2058a318dbdfd2edd92a32cfa0ee233a30b165b83b421830109cb22ae86f674593611eff939290916141ce565b60405180910390a150565b611f12613338565b60315460ff1615611f3657604051630476d49560e21b815260040160405180910390fd5b6031805460ff191660011790556040517f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee690600090a1565b60008060008060138560028110611f8757611f8761434d565b600c02016008016000015460138660028110611fa557611fa561434d565b600c02016008016001015460138760028110611fc357611fc361434d565b600c02016008016002015460138860028110611fe157611fe161434d565b600c02016008016003015493509350935093509193509193565b6006546000906001600160a01b031661201657506001919050565b6006546007546040516316fc4fd560e01b81526001600160a01b039283169263ea0d5dcd9216906316fc4fd590612051908790600401614198565b602060405180830381865afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120929190614363565b6040518263ffffffff1660e01b81526004016120ae9190614198565b602060405180830381865afa1580156120cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ef919061464d565b6120fb57506000919050565b6006546007546040516316fc4fd560e01b81526000926001600160a01b039081169263987ee156929116906316fc4fd59061213a908890600401614198565b602060405180830381865afa158015612157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217b9190614363565b6040518263ffffffff1660e01b81526004016121979190614198565b60c060405180830381865afa1580156121b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d89190614380565b505050509150506121e881613899565b9392505050565b60606000826001600160401b0381111561220b5761220b6144c9565b60405190808252806020026020018201604052801561224457816020015b612231613dff565b8152602001906001900390816122295790505b50905060005b60ff811684111561233157600080600080601389898760ff168181106122725761227261434d565b90506020020160208101906122879190613e95565b60ff166002811061229a5761229a61434d565b600c02015411156122e0576122d88989898760ff168181106122be576122be61434d565b90506020020160208101906122d39190613e95565b612dfc565b919450925090505b604051806060016040528084815260200183815260200182815250858560ff16815181106123105761231061434d565b60200260200101819052505050508080612329906144df565b91505061224a565b50949350505050565b612342613338565b612388600c5483839050600a54858560008181106123625761236261434d565b905060200201358686600181811061237c5761237c61434d565b9050602002013561397b565b8181600081811061239b5761239b61434d565b6020029190910135600a5550818160018181106123ba576123ba61434d565b6020029190910135600b55507f57df350cfad05a64accd73700fee8a7febd6d8430e035e45f0599ca62494aa8b82826000816123f8576123f861434d565b90506020020135838360018181106124125761241261434d565b90506020020135604051610e41929190614454565b6006546000906001600160a01b031661244257506001919050565b6006546007546040516316fc4fd560e01b81526001600160a01b039283169263ea0d5dcd9216906316fc4fd59061247d908790600401614198565b602060405180830381865afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190614363565b6040518263ffffffff1660e01b81526004016124da9190614198565b602060405180830381865afa1580156124f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251b919061464d565b61252757506000919050565b6000806004600201546001600160a01b031663987ee1566004600301546040516316fc4fd560e01b81526001600160a01b03909116906316fc4fd590612571908990600401614198565b602060405180830381865afa15801561258e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b29190614363565b6040518263ffffffff1660e01b81526004016125ce9190614198565b60c060405180830381865afa1580156125eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260f9190614380565b50945094505050506126228483836138b2565b949350505050565b33612633611cda565b6001600160a01b0316146126595760405162461bcd60e51b815260040161075e90614462565b60005b81811015610c5c5760016002600085858581811061267c5761267c61434d565b90506020020160208101906126919190613e32565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558282828181106126cb576126cb61434d565b90506020020160208101906126e09190613e32565b6001600160a01b03166000805160206146ba83398151915260405160405180910390a28061270d81614497565b91505061265c565b61271d613338565b61272683612bb2565b600a54612740908686843560408601356060870135613a25565b8760138460ff16600281106127575761275761434d565b600c0201600101819055508660138460ff16600281106127795761277961434d565b600c02015585601360ff8516600281106127955761279561434d565b600c0201600201819055508460138460ff16600281106127b7576127b761434d565b600c020160030160006101000a81548160ff0219169083151502179055508360138460ff16600281106127ec576127ec61434d565b600c0201600401819055508160138460ff166002811061280e5761280e61434d565b600c020160070160006101000a81548160ff0219169083600281111561283657612836613f81565b02179055508035601360ff8516600281106128535761285361434d565b600c020160080160000181905550806020013560138460ff166002811061287c5761287c61434d565b600c020160080160010181905550806040013560138460ff16600281106128a5576128a561434d565b600c020160080160020181905550806060013560138460ff16600281106128ce576128ce61434d565b600c0201600b01556000805b600d5460ff908116908216116129275760138160ff16600281106129005761290061434d565b600c0201600101548261291391906143f5565b91508061291f816144df565b9150506128da565b506012819055604080518a8152602081018a905260ff86168183015290517fddaf243a142670be60c19ff7116b5d8b124717b29bb4cc03cead42161614105b9181900360600190a1505050505050505050565b6000818152603360205260408120546129959060ff16613368565b600082815260336020908152604091829020825160a081018452815460ff808216151583526001600160a01b0361010083041694830194909452600160a81b90049092169282019290925260018201546060820152600290910154608082015261068890613386565b60048160068110612a0e57600080fd5b01546001600160a01b0316905081565b33612a27611cda565b6001600160a01b031614612a4d5760405162461bcd60e51b815260040161075e90614462565b6001600160a01b038116612ab25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075e565b612abb8161358f565b50565b612ac6613dd1565b6121e861044a8484611c98565b6001600160a01b038116600090815260356020526040812054610688908390611c98565b60606000826001600160401b03811115612b1357612b136144c9565b604051908082528060200260200182016040528015612b3c578160200160208202803683370190505b50905060005b60ff811684111561233157612b808686868460ff16818110612b6657612b6661434d565b9050602002016020810190612b7b9190613e95565b613b14565b828260ff1681518110612b9557612b9561434d565b602090810291909101015280612baa816144df565b915050612b42565b600d5460ff9081169082161115612abb57604051630a26ca2560e31b815260040160405180910390fd5b824211612bfc5760405163085de62560e01b815260040160405180910390fd5b81600003612c1d576040516337191a8560e21b815260040160405180910390fd5b8015610c5c576040516302cce53760e21b815260040160405180910390fd5b6006546001600160a01b031615612abb576001600160a01b0381166000908152602b602052604090205460ff16158015612c77575060105415155b15612abb576000805b600d5460ff90811690821611612cd5576001600160a01b0383166000908152602c6020908152604080832060ff85168452909152902054612cc190836143f5565b915080612ccd816144df565b915050612c80565b50601154811115612df8576001600160a01b0382166000908152602b60205260409020805460ff191660011790556004600201546001600160a01b0316631bdc17f66004600301546040516316fc4fd560e01b81526001600160a01b03909116906316fc4fd590612d4a908790600401614198565b602060405180830381865afa158015612d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8b9190614363565b601054600f5460405160e085901b6001600160e01b03191681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b158015612ddf57600080fd5b505af1158015612df3573d6000803e3d6000fd5b505050505b5050565b60008060008060008060138760ff1660028110612e1b57612e1b61434d565b600c020154601360ff891660028110612e3657612e3661434d565b600c0201600501541115612fb7576000612e508989613b14565b905064e8d4a510008160138a60ff1660028110612e6f57612e6f61434d565b600c020160010154612e81919061441b565b612e8b9190614432565b9350600064e8d4a510008260138b60ff1660028110612eac57612eac61434d565b600c020154612ebb919061441b565b612ec59190614432565b6001600160a01b038b166000908152602c6020908152604080832060ff8e168452909152902054909150612efa908290614408565b935060138960ff1660028110612f1257612f1261434d565b600c02016003015460ff1615612fb057600060138a60ff1660028110612f3a57612f3a61434d565b600c020160040154905080600003612f8657612f8360138b60ff1660028110612f6557612f6561434d565b600c02016005015460138c60ff1660028110610d6957610d6961434d565b90505b64e8d4a51000612f96828761441b565b612fa09190614432565b9350612fac8486614408565b9450505b505061302e565b60138760ff1660028110612fcd57612fcd61434d565b600c020154601360ff891660028110612fe857612fe861434d565b600c0201600101546001600160a01b038a166000908152602c6020908152604080832060ff8d168452909152902054613021919061441b565b61302b9190614432565b92505b919450925090509250925092565b610c5c8363a9059cbb60e01b848460405160240161305b9291906144b0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613bc3565b8061309b6115af565b10156131085760405162461bcd60e51b815260206004820152603660248201527f63616e206e6f74206372656174652076657374696e67207363686564756c6520604482015275776974682073756666696369656e7420746f6b656e7360501b606482015260840161075e565b600061311384612ad3565b60008181526033602052604090205490915061010090046001600160a01b03161561318a5760405162461bcd60e51b815260206004820152602160248201527f76657374696e675363686564756c654964206973206265656e206372656174656044820152601960fa1b606482015260840161075e565b6040805160a08101825260018082526001600160a01b03878116602080850191825260ff898116868801908152606087018a81526000608089018181528b825260339095529890982096518754945191516001600160a81b0319909516901515610100600160a81b0319161761010091909516029390931760ff60a81b1916600160a81b929093169190910291909117835592519082015590516002909101556034546132389083906143f5565b60345560328054600181019091557f11df491316f14931039edfd4f8964c9a443b862f02d4c7611d18c2bc4e6ff697018190556001600160a01b038416600090815260356020526040812080549161328f83614497565b919050555050505050565b6000806132a78385614432565b90506105dc81106132bf57630ee6b280915050610688565b6103e881106132d557631dcd6500915050610688565b6101f481106132eb57633b9aca00915050610688565b60fa811061330057634a817c80915050610688565b60648110613315576359682f00915050610688565b6032811061332a57639502f900915050610688565b64012a05f200915050610688565b33613341611cda565b6001600160a01b0316146115ad57604051635fc483c560e01b815260040160405180910390fd5b80612abb57604051638bc0c80560e01b815260040160405180910390fd5b60006013826040015160ff16600281106133a2576133a261434d565b600c0201600801600101546030546133ba91906143f5565b4210156133c957506000919050565b6013826040015160ff16600281106133e3576133e361434d565b600c0201600801600201546030546133fb91906143f5565b4210158061340b575060315460ff165b1561342457816080015182606001516106889190614408565b6000603054426134349190614408565b905060006013846040015160ff16600281106134525761345261434d565b600c02016008016003015490506000818361346d9190614432565b9050600061347b838361441b565b905060006013876040015160ff16600281106134995761349961434d565b600c0201600801600201548288606001516134b4919061441b565b6134be9190614432565b90508660800151816134d09190614408565b979650505050505050565b84156134f95760405162dc149f60e41b815260040160405180910390fd5b336001600160a01b0385161461352257604051631966391b60e11b815260040160405180910390fd5b8260061461354357604051633b9b621f60e01b815260040160405180910390fd5b8160021461356457604051631397ee3560e31b815260040160405180910390fd5b60028160ff16106135885760405163a854b3bd60e01b815260040160405180910390fd5b5050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0386161580159061360b5750600285600281111561360857613608613f81565b14155b1561369a5760405163ea0d5dcd60e01b81526001600160a01b0387169063ea0d5dcd9061363c908b90600401614198565b602060405180830381865afa158015613659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367d919061464d565b61369a5760405163645bb1bd60e11b815260040160405180910390fd5b8315806136a5575082155b156136c357604051633c67586360e01b815260040160405180910390fd5b8142116136e35760405163085de62560e01b815260040160405180910390fd5b804211156137045760405163ecdd1c2960e01b815260040160405180910390fd5b8660000361156a57604051639e6c689560e01b815260040160405180910390fd5b60045461373d906001600160a01b0316333085613c95565b336000908152602c6020908152604080832060ff851684529091529020546137669083906143f5565b336000908152602c6020908152604080832060ff86168085529252822092909255906013906002811061379b5761379b61434d565b600c02016002015411156138045760138160ff16600281106137bf576137bf61434d565b600c020160020154336000908152602c6020908152604080832060ff8616845290915290205411156138045760405163037351d360e11b815260040160405180910390fd5b8160138260ff166002811061381b5761381b61434d565b600c02016005015461382d91906143f5565b60138260ff16600281106138435761384361434d565b600c0201600501819055508060ff16336001600160a01b03167ff763e680fce25a97ffd55d8b705370c98b47b2285f7b3b2900c43606fd4180458460405161388d91815260200190565b60405180910390a35050565b6000600e54600014158015610688575050600e54111590565b60006004600501546001600160a01b03848116911614801561262257506000828152602e60205260409020546001600160a01b0316158061262257506000828152602e60205260409020546001600160a01b03858116911614949350505050565b82841115613934576040516330a3824960e21b815260040160405180910390fd5b8082111561395557604051632af9b86160e01b815260040160405180910390fd5b50505050565b804210612abb57604051630ffe6bd560e21b815260040160405180910390fd5b8360021461399c57604051631397ee3560e31b815260040160405180910390fd5b6139a685426143f5565b81106139c55760405163eb47c4f360e01b815260040160405180910390fd5b8242106139e5576040516365be5cfd60e11b815260040160405180910390fd5b808210613a05576040516311af708560e21b815260040160405180910390fd5b8142106135885760405163582314d560e11b815260040160405180910390fd5b854210613a45576040516365be5cfd60e11b815260040160405180910390fd5b64e8d4a510008410613a6a57604051634494446160e11b815260040160405180910390fd5b6064831115613a8c57604051630e07a92f60e01b815260040160405180910390fd5b81600003613aad57604051630914cb9d60e41b815260040160405180910390fd5b6001811015613acf57604051631018767560e11b815260040160405180910390fd5b81811115613af057604051630cdbeed760e01b815260040160405180910390fd5b84612df3578315612df3576040516355d8bb6760e01b815260040160405180910390fd5b600d5460009060ff9081169083161115613b3057506000610688565b600060138360ff1660028110613b4857613b4861434d565b600c0201600501541115613bbb5760138260ff1660028110613b6c57613b6c61434d565b600c0201600501546001600160a01b0384166000908152602c6020908152604080832060ff87168452909152902054613baa9064e8d4a5100061441b565b613bb49190614432565b9050610688565b506000610688565b6000613c18826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ccd9092919063ffffffff16565b805190915015610c5c5780806020019051810190613c36919061464d565b610c5c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161075e565b6040516001600160a01b03808516602483015283166044820152606481018290526139559085906323b872dd60e01b9060840161305b565b60606126228484600085856001600160a01b0385163b613d2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161075e565b600080866001600160a01b03168587604051613d4b919061466a565b60006040518083038185875af1925050503d8060008114613d88576040519150601f19603f3d011682016040523d82523d6000602084013e613d8d565b606091505b50915091506134d082828660608315613da75750816121e8565b825115613db75782518084602001fd5b8160405162461bcd60e51b815260040161075e9190614686565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b0381168114612abb57600080fd5b600060208284031215613e4457600080fd5b81356121e881613e1d565b803560ff81168114610d7357600080fd5b60008060408385031215613e7357600080fd5b8235613e7e81613e1d565b9150613e8c60208401613e4f565b90509250929050565b600060208284031215613ea757600080fd5b6121e882613e4f565b60008083601f840112613ec257600080fd5b5081356001600160401b03811115613ed957600080fd5b6020830191508360208260051b8501011115613ef457600080fd5b9250929050565b60008060208385031215613f0e57600080fd5b82356001600160401b03811115613f2457600080fd5b613f3085828601613eb0565b90969095509350505050565b600060208284031215613f4e57600080fd5b5035919050565b60008060408385031215613f6857600080fd5b8235613f7381613e1d565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b600060e08201905088825287602083015286604083015285151560608301528460808301528360a083015260038310613fe057634e487b7160e01b600052602160045260246000fd5b8260c083015298975050505050505050565b60008060006040848603121561400757600080fd5b833561401281613e1d565b925060208401356001600160401b0381111561402d57600080fd5b61403986828701613eb0565b9497909650939450505050565b600081518084526020808501945080840160005b838110156140765781518752958201959082019060010161405a565b509495945050505050565b6040815260006140946040830185614046565b82810360208481019190915284518083528582019282019060005b818110156140cd5784511515835293830193918301916001016140af565b5090979650505050505050565b60008060008060008060008060c0898b0312156140f657600080fd5b88356001600160401b038082111561410d57600080fd5b6141198c838d01613eb0565b909a50985060208b013591508082111561413257600080fd5b5061413f8b828c01613eb0565b9097509550506040890135935061415860608a01613e4f565b92506080890135915060a089013590509295985092959890939650565b6000806040838503121561418857600080fd5b82359150613e8c60208401613e4f565b6001600160a01b0391909116815260200190565b600080604083850312156141bf57600080fd5b50508035926020909101359150565b9283526020830191909152604082015260600190565b6000606082840312156141f657600080fd5b50919050565b602080825282518282018190526000919084820190604085019084805b8281101561425957845184835b600381101561424357825182529188019190880190600101614226565b5050509385019360609390930192600101614219565b5091979650505050505050565b8015158114612abb57600080fd5b600080600080600080600080888a0361016081121561429257600080fd5b8935985060208a0135975060408a0135965060608a01356142b281614266565b955060808a013594506142c760a08b01613e4f565b935060c08a0135600381106142db57600080fd5b9250608060df19820112156142ef57600080fd5b5060e0890190509295985092959890939650565b6020815260006121e86020830184614046565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561437557600080fd5b81516121e881613e1d565b60008060008060008060c0878903121561439957600080fd5b86519550602087015194506040870151935060608701516143b981613e1d565b608088015160a089015191945092506143d181614266565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b80820180821115610688576106886143df565b81810381811115610688576106886143df565b8082028115828204841417610688576106886143df565b60008261444f57634e487b7160e01b600052601260045260246000fd5b500490565b918252602082015260400190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000600182016144a9576144a96143df565b5060010190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b600060ff821660ff81036144f5576144f56143df565b60010192915050565b60005b83811015614519578181015183820152602001614501565b50506000910152565b600082601f83011261453357600080fd5b81516001600160401b038082111561454d5761454d6144c9565b604051601f8301601f19908116603f01168101908282118183101715614575576145756144c9565b8160405283815286602085880101111561458e57600080fd5b61459f8460208301602089016144fe565b9695505050505050565b600080600080600060a086880312156145c157600080fd5b85516001600160401b03808211156145d857600080fd5b6145e489838a01614522565b965060208801519150808211156145fa57600080fd5b5061460788828901614522565b9450506040860151925060608601519150608086015161462681614266565b809150509295509295909350565b60006020828403121561464657600080fd5b5051919050565b60006020828403121561465f57600080fd5b81516121e881614266565b6000825161467c8184602087016144fe565b9190910192915050565b60208152600082518060208401526146a58160408501602087016144fe565b601f01601f1916919091016040019291505056fed1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5aa26469706673582212201a0a97741b22c57a8926edb1a13a6a370385452489a650034967210f79814b6764736f6c63430008140033a264697066735822122034ae3e1beb7ef1e4991a68d371130bc1b2cef8eeb9e6489380bc57420b7f4b9464736f6c63430008140033