153 txs
1.8k calls
constructor
constructor(address _pancakeProfile, bool _pancakeProfileIsRequested, uint256 _pancakeProfileThresholdPoints)
functions
accTokenPerShare
viewfunction accTokenPerShare() view returns (uint256)
endTimestamp
viewfunction endTimestamp() view returns (uint256)
hasUserLimit
viewfunction hasUserLimit() view returns (bool)
isInitialized
viewfunction isInitialized() view returns (bool)
lastRewardTimestamp
viewfunction lastRewardTimestamp() view returns (uint256)
numberSecondsForUserLimit
viewfunction numberSecondsForUserLimit() view returns (uint256)
owner
viewfunction owner() view returns (address)
pancakeProfile
viewfunction pancakeProfile() view returns (address)
pancakeProfileIsRequested
viewfunction pancakeProfileIsRequested() view returns (bool)
pancakeProfileThresholdPoints
viewfunction pancakeProfileThresholdPoints() view returns (uint256)
pendingReward
viewfunction pendingReward(address _user) view returns (uint256)
poolLimitPerUser
viewfunction poolLimitPerUser() view returns (uint256)
PRECISION_FACTOR
viewfunction PRECISION_FACTOR() view returns (uint256)
rewardPerSecond
viewfunction rewardPerSecond() view returns (uint256)
rewardToken
viewfunction rewardToken() view returns (address)
SMART_CHEF_FACTORY
viewfunction SMART_CHEF_FACTORY() view returns (address)
stakedToken
viewfunction stakedToken() view returns (address)
startTimestamp
viewfunction startTimestamp() view returns (uint256)
userInfo
viewfunction userInfo(address) view returns (uint256 amount, uint256 rewardDebt)
userLimit
viewfunction userLimit() view returns (bool)
deposit
nonpayablefunction deposit(uint256 _amount)
emergencyRewardWithdraw
nonpayablefunction emergencyRewardWithdraw(uint256 _amount)
emergencyWithdraw
nonpayablefunction emergencyWithdraw()
initialize
nonpayablefunction initialize(address _stakedToken, address _rewardToken, uint256 _rewardPerSecond, uint256 _startTimestamp, uint256 _endTimestamp, uint256 _poolLimitPerUser, uint256 _numberSecondsForUserLimit, address _admin)
recoverToken
nonpayablefunction recoverToken(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
stopReward
nonpayablefunction stopReward()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePoolLimitPerUser
nonpayablefunction updatePoolLimitPerUser(bool _userLimit, uint256 _poolLimitPerUser)
updateProfileAndThresholdPointsRequirement
nonpayablefunction updateProfileAndThresholdPointsRequirement(bool _isRequested, uint256 _thresholdPoints)
updateRewardPerSecond
nonpayablefunction updateRewardPerSecond(uint256 _rewardPerSecond)
updateStartAndEndTimestamp
nonpayablefunction updateStartAndEndTimestamp(uint256 _startTimestamp, uint256 _endTimestamp)
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
Deposit
event Deposit(address indexed user, uint256 amount)
EmergencyWithdraw
event EmergencyWithdraw(address indexed user, uint256 amount)
NewPoolLimit
event NewPoolLimit(uint256 poolLimitPerUser)
NewRewardPerSecond
event NewRewardPerSecond(uint256 rewardPerSecond)
NewStartAndEndTimestamp
event NewStartAndEndTimestamp(uint256 startTimestamp, uint256 endTimestamp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardsStop
event RewardsStop(uint256 blockNumber)
TokenRecovery
event TokenRecovery(address indexed token, uint256 amount)
UpdateProfileAndThresholdPointsRequirement
event UpdateProfileAndThresholdPointsRequirement(bool isProfileRequested, uint256 thresholdPoints)
Withdraw
event Withdraw(address indexed user, uint256 amount)
errors
No errors.
creation bytecode
0x60c06040523480156200001157600080fd5b50604051620030e8380380620030e883398101604081905262000034916200023c565b6200003f3362000123565b6001805533606090811b60805283901b6001600160601b03191660a0526001600160a01b038316156200010a5760405163aee2f47f60e01b8152600160048201526001600160a01b0384169063aee2f47f9060240160006040518083038186803b158015620000ad57600080fd5b505afa158015620000c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000ec919081019062000288565b50506009805460ff1916861515179055505050600a8190556200011a565b6009805460ff191690556000600a555b5050506200032b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805180151581146200018457600080fd5b919050565b600082601f8301126200019a578081fd5b81516001600160401b0380821115620001b757620001b762000315565b604051601f8301601f19908116603f01168101908282118183101715620001e257620001e262000315565b81604052838152602092508683858801011115620001fe578485fd5b8491505b8382101562000221578582018301518183018401529082019062000202565b838211156200023257848385830101525b9695505050505050565b60008060006060848603121562000251578283fd5b83516001600160a01b038116811462000268578384fd5b9250620002786020850162000173565b9150604084015190509250925092565b600080600080600060a08688031215620002a0578081fd5b85516001600160401b0380821115620002b7578283fd5b620002c589838a0162000189565b96506020880151915080821115620002db578283fd5b50620002ea8882890162000189565b9450506040860151925060608601519150620003096080870162000173565b90509295509295909350565b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160601c612d6762000381600039600081816103ee01528181610ef701528181611745015281816117c6015281816118ed01526119db0152600081816103c7015261053b0152612d676000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80638f6629151161012a578063cc356c59116100bd578063e6fd48bc1161008c578063f40f0f5211610071578063f40f0f5214610470578063f7c618c114610483578063f8077fae146104a357600080fd5b8063e6fd48bc14610454578063f2fde38b1461045d57600080fd5b8063cc356c5914610410578063cc7a262e14610423578063ccd34cd514610443578063db2e21bc1461044c57600080fd5b8063a85adeab116100f9578063a85adeab146103a6578063b6b55f25146103af578063bd617191146103c2578063c7d936ec146103e957600080fd5b80638f6629151461036f57806392e8990e146103785780639be65a6014610380578063a0b409051461039357600080fd5b80634a7c01ec116101a2578063715018a611610171578063715018a61461031757806380dc06721461031f5780638da5cb5b146103275780638f10369a1461036657600080fd5b80634a7c01ec146102e15780635a0b5f34146102ee57806366fe9f8a146102fb578063681096311461030457600080fd5b80632e1a7d4d116101de5780632e1a7d4d146102865780633279beab14610299578063392e53cd146102ac5780634004c8e7146102ce57600080fd5b80630ace6247146102105780631573ebdf1461022c5780631959a002146102355780632aa2c38114610271575b600080fd5b610219600a5481565b6040519081526020015b60405180910390f35b61021960085481565b61025c6102433660046128bf565b600f602052600090815260409020805460019091015482565b60408051928352602083019190915201610223565b61028461027f366004612922565b6104ac565b005b61028461029436600461299d565b610983565b6102846102a736600461299d565b610b6b565b6002546102be90610100900460ff1681565b6040519015158152602001610223565b6102846102dc36600461299d565b610c13565b6002546102be9060ff1681565b6009546102be9060ff1681565b61021960075481565b6102846103123660046128f7565b610e74565b610284610ffc565b610284611089565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610223565b610219600b5481565b61021960035481565b6102be611145565b61028461038e3660046128bf565b61117a565b6102846103a13660046128f7565b6114f5565b61021960045481565b6102846103bd36600461299d565b6116c2565b6103417f000000000000000000000000000000000000000000000000000000000000000081565b6103417f000000000000000000000000000000000000000000000000000000000000000081565b61028461041e3660046129cd565b611cd0565b600e546103419073ffffffffffffffffffffffffffffffffffffffff1681565b610219600c5481565b610284611f1f565b61021960055481565b61028461046b3660046128bf565b61200d565b61021961047e3660046128bf565b61213a565b600d546103419073ffffffffffffffffffffffffffffffffffffffff1681565b61021960065481565b600254610100900460ff1615610523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f7420666163746f7279000000000000000000000000000000000000000000604482015260640161051a565b838510610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4e657720737461727454696d657374616d70206d757374206265206c6f77657260448201527f207468616e206e657720656e6454696d657374616d7000000000000000000000606482015260840161051a565b8442106106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4e657720737461727454696d657374616d70206d75737420626520686967686560448201527f72207468616e2063757272656e7420626c6f636b2074696d657374616d700000606482015260840161051a565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055600e805473ffffffffffffffffffffffffffffffffffffffff808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600d8054928a1692909116919091179055600b8690556005859055600484905582156107ac57600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600783905560088290555b600d54604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163313ce567916004808301926020929190829003018186803b15801561081757600080fd5b505afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190612a4c565b60ff169050602481106108be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d75737420626520696e666572696f7220746f20333600000000000000000000604482015260640161051a565b6108c9816024612c8f565b6108d490600a612b8c565b600c556305f5e1006108e782600a612b8c565b600b54600c546108f79190612c52565b6109019190612af2565b1015610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f7265776172645065725365636f6e64206d757374206265206c61726765720000604482015260640161051a565b6005546006556109788261200d565b505050505050505050565b600260015414156109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161051a565b6002600155336000908152600f602052604090208054821115610a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f416d6f756e7420746f20776974686472617720746f6f20686967680000000000604482015260640161051a565b610a776122bf565b60008160010154600c546003548460000154610a939190612c52565b610a9d9190612af2565b610aa79190612c8f565b90508215610ae2578154610abc908490612c8f565b8255600e54610ae29073ffffffffffffffffffffffffffffffffffffffff1633856123ce565b8015610b0c57600d54610b0c9073ffffffffffffffffffffffffffffffffffffffff1633836123ce565b600c546003548354610b1e9190612c52565b610b289190612af2565b600183015560405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250506001805550565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b600d54610c109073ffffffffffffffffffffffffffffffffffffffff1633836123ce565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b6005544210610cff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f506f6f6c20686173207374617274656400000000000000000000000000000000604482015260640161051a565b600d54604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163313ce567916004808301926020929190829003018186803b158015610d6a57600080fd5b505afa158015610d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da29190612a4c565b60ff1690506305f5e100610db782600a612b8c565b83600c54610dc59190612c52565b610dcf9190612af2565b1015610e37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f7265776172645065725365636f6e64206d757374206265206c61726765720000604482015260640161051a565b600b8290556040518281527f3fca6699460f553eae31233dba0b41f635e80f5bd8132d7f2af5456c3e247be0906020015b60405180910390a15050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f50616e63616b652070726f66696c652061646472657373206973206e756c6c00604482015260640161051a565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515908117909155600a82905560408051918252602082018390527f915d08e0e89c58e352d7c1d66c942cb15dac8a7294d2ca80ddf46f1998f0512b9101610e68565b60005473ffffffffffffffffffffffffffffffffffffffff16331461107d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b61108760006124a7565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b4260048190556040519081527ffed9fcb0ca3d1e761a4b929792bb24082fba92dca81252646ad306d3068065669060200160405180910390a1565b60025460009060ff16158061116957506008546005546111659190612ada565b4210155b156111745750600090565b50600190565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b600e5473ffffffffffffffffffffffffffffffffffffffff828116911614156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7065726174696f6e733a2043616e6e6f74207265636f766572207374616b6560448201527f6420746f6b656e00000000000000000000000000000000000000000000000000606482015260840161051a565b600d5473ffffffffffffffffffffffffffffffffffffffff82811691161415611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7065726174696f6e733a2043616e6e6f74207265636f76657220726577617260448201527f6420746f6b656e00000000000000000000000000000000000000000000000000606482015260840161051a565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b1580156113b957600080fd5b505afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f191906129b5565b905080611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7065726174696f6e733a2043616e6e6f74207265636f766572207a65726f2060448201527f62616c616e636500000000000000000000000000000000000000000000000000606482015260840161051a565b6114a173ffffffffffffffffffffffffffffffffffffffff831633836123ce565b8173ffffffffffffffffffffffffffffffffffffffff167f14f11966a996e0629572e51064726d2057a80fbd34efc066682c06a71dbb6e98826040516114e991815260200190565b60405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b60025460ff166115e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d75737420626520736574000000000000000000000000000000000000000000604482015260640161051a565b811561165d576007548111611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6577206c696d6974206d757374206265206869676865720000000000000000604482015260640161051a565b600781905561168f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683151517905560006007555b7f241f67ee5f41b7a5cabf911367329be7215900f602ebfc47f89dce2a6bcd847c600754604051610e6891815260200190565b6002600154141561172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161051a565b6002600155336000908152600f602052604090207f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1615611b125760095460ff161580156117925750600a54155b8061185557506040517fea0d5dcd0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ea0d5dcd9060240160206040518083038186803b15801561181d57600080fd5b505afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185591906128db565b6118e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4465706f7369743a204d757374206861766520616e206163746976652070726f60448201527f66696c6500000000000000000000000000000000000000000000000000000000606482015260840161051a565b600a5460009015611a73577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166119ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4465706f7369743a2050616e63616b6550726f66696c65206973206e6f74206560448201527f7869737400000000000000000000000000000000000000000000000000000000606482015260840161051a565b6040517f987ee1560000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063987ee1569060240160c06040518083038186803b158015611a3257600080fd5b505afa158015611a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6a91906129ee565b50929450505050505b600a541580611a845750600a548110155b611b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4465706f7369743a2055736572206973206e6f742067657420656e6f7567682060448201527f7573657220706f696e7473000000000000000000000000000000000000000000606482015260840161051a565b505b611b1a611145565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515918217905560ff161580611b6457506007548154611b619084612ada565b11155b611bca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4465706f7369743a20416d6f756e742061626f7665206c696d69740000000000604482015260640161051a565b611bd26122bf565b805415611c375760008160010154600c546003548460000154611bf59190612c52565b611bff9190612af2565b611c099190612c8f565b90508015611c3557600d54611c359073ffffffffffffffffffffffffffffffffffffffff1633836123ce565b505b8115611c71578054611c4a908390612ada565b8155600e54611c719073ffffffffffffffffffffffffffffffffffffffff1633308561251c565b600c546003548254611c839190612c52565b611c8d9190612af2565b600182015560405182815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c906020015b60405180910390a2505060018055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b6005544210611dbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f506f6f6c20686173207374617274656400000000000000000000000000000000604482015260640161051a565b808210611e4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4e657720737461727454696d657374616d70206d757374206265206c6f77657260448201527f207468616e206e657720656e6454696d657374616d7000000000000000000000606482015260840161051a565b814210611eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4e657720737461727454696d657374616d70206d75737420626520686967686560448201527f72207468616e2063757272656e7420626c6f636b2074696d657374616d700000606482015260840161051a565b60058290556004819055600682905560408051838152602081018390527f600b4644e23e4e5ac956d20c02417fc8385bd0324ce2ce012b91d812ad89024b9101610e68565b60026001541415611f8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161051a565b60026001908155336000908152600f60205260408120805482825592810191909155908015611fd957600e54611fd99073ffffffffffffffffffffffffffffffffffffffff1633836123ce565b815460405190815233907f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969590602001611cc0565b60005473ffffffffffffffffffffffffffffffffffffffff16331461208e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051a565b73ffffffffffffffffffffffffffffffffffffffff8116612131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161051a565b610c10816124a7565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600f6020526040808220600e5491517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929390928492909116906370a082319060240160206040518083038186803b1580156121ba57600080fd5b505afa1580156121ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f291906129b5565b90506006544211801561220457508015155b1561228c57600061221760065442612580565b90506000600b54826122299190612c52565b9050600083600c548361223c9190612c52565b6122469190612af2565b6003546122539190612ada565b90508460010154600c5482876000015461226d9190612c52565b6122779190612af2565b6122819190612c8f565b979650505050505050565b6001820154600c5460035484546122a39190612c52565b6122ad9190612af2565b6122b79190612c8f565b949350505050565b60065442116122ca57565b600e546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561233457600080fd5b505afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c91906129b5565b90508061237a575042600655565b600061238860065442612580565b90506000600b548261239a9190612c52565b905082600c54826123ab9190612c52565b6123b59190612af2565b6003546123c29190612ada565b60035550504260065550565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526124a29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526125c1565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261257a9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612420565b50505050565b6000600454821161259c576125958383612c8f565b90506125bb565b60045483106125ad575060006125bb565b826004546125959190612c8f565b92915050565b6000612623826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126cd9092919063ffffffff16565b8051909150156124a2578080602001905181019061264191906128db565b6124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161051a565b60606126dc84846000856126e6565b90505b9392505050565b606082471015612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161051a565b73ffffffffffffffffffffffffffffffffffffffff85163b6127f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161051a565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161281f9190612a6d565b60006040518083038185875af1925050503d806000811461285c576040519150601f19603f3d011682016040523d82523d6000602084013e612861565b606091505b50915091506122818282866060831561287b5750816126df565b82511561288b5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051a9190612a89565b6000602082840312156128d0578081fd5b81356126df81612d01565b6000602082840312156128ec578081fd5b81516126df81612d23565b60008060408385031215612909578081fd5b823561291481612d23565b946020939093013593505050565b600080600080600080600080610100898b03121561293e578384fd5b883561294981612d01565b9750602089013561295981612d01565b965060408901359550606089013594506080890135935060a0890135925060c0890135915060e089013561298c81612d01565b809150509295985092959890939650565b6000602082840312156129ae578081fd5b5035919050565b6000602082840312156129c6578081fd5b5051919050565b600080604083850312156129df578182fd5b50508035926020909101359150565b60008060008060008060c08789031215612a06578182fd5b8651955060208701519450604087015193506060870151612a2681612d01565b608088015160a08901519194509250612a3e81612d23565b809150509295509295509295565b600060208284031215612a5d578081fd5b815160ff811681146126df578182fd5b60008251612a7f818460208701612ca6565b9190910192915050565b6020815260008251806020840152612aa8816040850160208701612ca6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008219821115612aed57612aed612cd2565b500190565b600082612b26577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b600181815b80851115612b8457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612b6a57612b6a612cd2565b80851615612b7757918102915b93841c9390800290612b30565b509250929050565b60006126df8383600082612ba2575060016125bb565b81612baf575060006125bb565b8160018114612bc55760028114612bcf57612beb565b60019150506125bb565b60ff841115612be057612be0612cd2565b50506001821b6125bb565b5060208310610133831016604e8410600b8410161715612c0e575081810a6125bb565b612c188383612b2b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612c4a57612c4a612cd2565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612cd2565b500290565b600082821015612ca157612ca1612cd2565b500390565b60005b83811015612cc1578181015183820152602001612ca9565b8381111561257a5750506000910152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610c1057600080fd5b8015158114610c1057600080fdfea26469706673582212201a5409e2034e26b4f0830b9c0fe49adea1f46ded92befa46ca00ee816c1d242064736f6c63430008040033000000000000000000000000df4dbf6536201370f95e06a0f8a7a70fe40e388a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000