test-contracts-sovryn
Version:
Smart contracts for the Sovryn protocol and external integrations.
1,589 lines • 118 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "StakingMock",
"sourceName": "contracts/mockup/StakingMock.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "AdminAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "AdminRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "ContractCodeHashAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "ContractCodeHashRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "lockedUntil",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "fromDelegate",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "toDelegate",
"type": "address"
}
],
"name": "DelegateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "lockedUntil",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "previousBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newBalance",
"type": "uint256"
}
],
"name": "DelegateStakeChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "previousDate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newDate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountStaked",
"type": "uint256"
}
],
"name": "ExtendedStakingDuration",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "until",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isGovernance",
"type": "bool"
}
],
"name": "StakingWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "lockedUntil",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalStaked",
"type": "uint256"
}
],
"name": "TokensStaked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TokensUnlocked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "vesting",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "VestingTokensWithdrawn",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "DELEGATION_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DOMAIN_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_DURATION",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_VOTING_WEIGHT",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "SOVToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "WEIGHT_FACTOR",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "addAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "admins",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "allUnlocked",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint96",
"name": "balance",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "blockMockUp",
"outputs": [
{
"internalType": "contract BlockMockUp",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "date",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startDate",
"type": "uint256"
}
],
"name": "computeWeightByDate",
"outputs": [
{
"internalType": "uint96",
"name": "weight",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "lockDate",
"type": "uint256"
}
],
"name": "delegate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "lockDate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "delegateBySig",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"name": "delegateStakingCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "fromBlock",
"type": "uint32"
},
{
"internalType": "uint96",
"name": "stake",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "delegates",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "previousLock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "until",
"type": "uint256"
}
],
"name": "extendStakingDuration",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "feeSharing",
"outputs": [
{
"internalType": "contract IFeeSharingProxy",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "lockedTS",
"type": "uint256"
}
],
"name": "getCurrentStakedUntil",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getCurrentVotes",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "date",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getPriorStakeByDateForDelegatee",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "date",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getPriorTotalStakesForDate",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint32",
"name": "blockNumber",
"type": "uint32"
},
{
"internalType": "uint256",
"name": "time",
"type": "uint256"
}
],
"name": "getPriorTotalVotingPower",
"outputs": [
{
"internalType": "uint96",
"name": "totalVotingPower",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "date",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getPriorUserStakeByDate",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "date",
"type": "uint256"
}
],
"name": "getPriorVotes",
"outputs": [
{
"internalType": "uint96",
"name": "votes",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "date",
"type": "uint256"
}
],
"name": "getPriorWeightedStake",
"outputs": [
{
"internalType": "uint96",
"name": "votes",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getStakes",
"outputs": [
{
"internalType": "uint256[]",
"name": "dates",
"type": "uint256[]"
},
{
"internalType": "uint96[]",
"name": "stakes",
"type": "uint96[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint96",
"name": "amount",
"type": "uint96"
},
{
"internalType": "uint256",
"name": "until",
"type": "uint256"
}
],
"name": "getWithdrawAmounts",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
},
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint96",
"name": "amount",
"type": "uint96"
},
{
"internalType": "uint256",
"name": "until",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "governanceWithdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "vesting",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "governanceWithdrawVesting",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "kickoffTS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "migrateToNewStakingContract",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "newStakingContract",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "numDelegateStakingCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "numTotalStakingCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "numUserStakingCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "receiveApproval",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "removeAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_blockMockUp",
"type": "address"
}
],
"name": "setBlockMockUpAddr",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_feeSharing",
"type": "address"
}
],
"name": "setFeeSharing",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_newStakingContract",
"type": "address"
}
],
"name": "setNewStakingContract",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_vestingRegistryProxy",
"type": "address"
}
],
"name": "setVestingRegistry",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint96",
"name": "_weightScaling",
"type": "uint96"
}
],
"name": "setWeightScaling",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint96",
"name": "amount",
"type": "uint96"
},
{
"internalType": "uint256",
"name": "until",
"type": "uint256"
},
{
"internalType": "address",
"name": "stakeFor",
"type": "address"
},
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "stake",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint96",
"name": "amount",
"type": "uint96"
},
{
"internalType": "uint256",
"name": "until",
"type": "uint256"
},
{
"internalType": "address",
"name": "stakeFor",
"type": "address"
},
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "stakeWithApproval",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "cliff",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "intervalLength",
"type": "uint256"
},
{
"internalType": "address",
"name": "stakeFor",
"type": "address"
},
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "stakesBySchedule",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "timestampToLockDate",
"outputs": [
{
"internalType": "uint256",
"name": "lockDate",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"name": "totalStakingCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "fromBlock",
"type": "uint32"
},
{
"internalType": "uint96",
"name": "stake",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "unlockAllTokens",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"name": "userStakingCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "fromBlock",
"type": "uint32"
},
{
"internalType": "uint96",
"name": "stake",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "vestingCodeHashes",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "vestingRegistryLogic",
"outputs": [
{
"internalType": "contract VestingRegistryLogic",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "vestingWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "weightScaling",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "date",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startDate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "weightedStakeByDate",
"outputs": [
{
"internalType": "uint96",
"name": "power",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint96",
"name": "amount",
"type": "uint96"
},
{
"internalType": "uint256",
"name": "until",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "withdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60c0604052600a608081905269534f565374616b696e6760b01b60a09081526200002d9160029190620000ae565b506005805460ff19169055600d80546001600160a01b0316600360a01b179055600062000059620000a9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000150565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b620000ab91905b808211156200012f57600081556001016200013a565b61517980620001606000396000f3fe608060405234801561001057600080fd5b50600436106103a35760003560e01c8063836eebee116101e9578063b4b5ea571161010f578063db27ec18116100ad578063e97ffacb1161007c578063e97ffacb14610cd5578063eefb8c4714610d07578063f09cfc6414610d2a578063f2fde38b14610d4d576103a3565b8063db27ec1814610c2b578063dfb267c214610c57578063e63a562e14610c80578063e7a324dc14610ccd576103a3565b8063cf7b684a116100e9578063cf7b684a14610b99578063d27569e714610bcb578063d5c3846414610bd3578063dab6ca4414610bf0576103a3565b8063b4b5ea5714610b45578063b8a9873214610b6b578063bf626ec114610b91576103a3565b806396a590c111610187578063a58848c511610156578063a58848c514610b07578063adae900214610b0f578063ae81dfe414610b35578063b1724b4614610b3d576103a3565b806396a590c114610a615780639929e88614610ab35780639a377b8214610abb578063a377f24414610ae1576103a3565b80638f32d59b116101c35780638f32d59b1461096a5780638f4ffcb1146109725780639436e7d4146109ff57806394c2ce5814610a35576103a3565b8063836eebee146108f85780638da5cb5b1461092a5780638dae1b1614610932576103a3565b8063450b0601116102ce57806368cefccc1161026c57806372ec97951161023b57806372ec9795146107bb5780637ba6f458146107d85780637ecebe0014610897578063800b64ca146108bd576103a3565b806368cefccc146106d75780636b6fde0e14610737578063704802751461076f57806370a0823114610795576103a3565b80635419675f116102a85780635419675f1461067e5780635e0be60714610686578063626ee2d91461068e57806362cf8a08146106b4576103a3565b8063450b06011461060a5780634b2fea1e146106305780635004b6e414610676576103a3565b80631785f53c1161034657806327dd1b001161031557806327dd1b001461055857806337e6b1c1146105845780633827fca5146105b6578063429b62e5146105e4576103a3565b80631785f53c146104be57806320606b70146104e45780632522d7ba146104ec57806325629ec014610515576103a3565b806307392cc01161038257806307392cc0146104145780630c09ddfd14610445578063104932cf1461049257806317748adc1461049a576103a3565b8062073f99146103a8578063026e402b146103c257806303a18fa3146103f0575b600080fd5b6103b0610d73565b60408051918252519081900360200190f35b6103ee600480360360408110156103d857600080fd5b506001600160a01b038135169060200135610d79565b005b6103f8610d93565b604080516001600160a01b039092168252519081900360200190f35b6104316004803603602081101561042a57600080fd5b5035610da2565b604080519115158252519081900360200190f35b6103ee600480360360a081101561045b57600080fd5b506001600160a01b0381358116916001600160601b0360208201351691604082013591606081013582169160809091013516610db7565b6103f8610e10565b6104a2610e1f565b604080516001600160601b039092168252519081900360200190f35b6103ee600480360360208110156104d457600080fd5b50356001600160a01b0316610e24565b6103b0610ec4565b6104a26004803603604081101561050257600080fd5b5063ffffffff8135169060200135610edf565b6103ee6004803603608081101561052b57600080fd5b506001600160601b03813516906020810135906001600160a01b0360408201358116916060013516610f45565b6103f86004803603604081101561056e57600080fd5b506001600160a01b038135169060200135610f5a565b6104a26004803603606081101561059a57600080fd5b506001600160a01b038135169060208101359060400135610f80565b6103ee600480360360408110156105cc57600080fd5b506001600160a01b0381358116916020013516610ff8565b610431600480360360208110156105fa57600080fd5b50356001600160a01b0316611135565b6103ee6004803603602081101561062057600080fd5b50356001600160a01b031661114a565b6103ee600480360360c081101561064657600080fd5b508035906020810135906040810135906060810135906001600160a01b03608082013581169160a001351661120f565b6103f86112ae565b6103ee6112bd565b6103ee61130b565b6103ee600480360360208110156106a457600080fd5b50356001600160a01b0316611409565b6104a2600480360360408110156106ca57600080fd5b50803590602001356114b8565b61070f600480360360608110156106ed57600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff16611631565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b61070f6004803603606081101561074d57600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff1661166c565b6103ee6004803603602081101561078557600080fd5b50356001600160a01b03166116a7565b6104a2600480360360208110156107ab57600080fd5b50356001600160a01b031661174a565b6103b0600480360360208110156107d157600080fd5b50356117b9565b6107fe600480360360208110156107ee57600080fd5b50356001600160a01b0316611823565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561084257818101518382015260200161082a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610881578181015183820152602001610869565b5050505090500194505050505060405180910390f35b6103b0600480360360208110156108ad57600080fd5b50356001600160a01b031661195e565b6103ee600480360360608110156108d357600080fd5b5080356001600160601b031690602081013590604001356001600160a01b0316611970565b6104a26004803603606081101561090e57600080fd5b506001600160a01b0381351690602081013590604001356119e2565b6103f8611a3a565b6104a26004803603608081101561094857600080fd5b506001600160a01b038135169060208101359060408101359060600135611a49565b610431611acb565b6103ee6004803603608081101561098857600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156109c157600080fd5b8201836020820111156109d357600080fd5b803590602001918460018302840111600160201b831117156109f457600080fd5b509092509050611aef565b610a1c60048036036020811015610a1557600080fd5b5035611dc1565b6040805163ffffffff9092168252519081900360200190f35b610a1c60048036036040811015610a4b57600080fd5b506001600160a01b038135169060200135611dd9565b610a8d60048036036040811015610a7757600080fd5b506001600160601b038135169060200135611dfc565b604080516001600160601b03938416815291909216602082015281519081900390910190f35b610431611e21565b6103ee60048036036020811015610ad157600080fd5b50356001600160a01b0316611e2a565b6103ee60048036036020811015610af757600080fd5b50356001600160a01b0316611edf565b6103f8611fa4565b61043160048036036020811015610b2557600080fd5b50356001600160a01b0316611fb3565b6103f8611fc8565b6103b0611fdc565b6104a260048036036020811015610b5b57600080fd5b50356001600160a01b0316611fe4565b6103ee60048036036020811015610b8157600080fd5b50356001600160601b0316611ffa565b6104a26120c9565b6104a260048036036060811015610baf57600080fd5b506001600160a01b0381351690602081013590604001356120df565b6104a261211c565b6104a260048036036020811015610be957600080fd5b5035612121565b6103ee60048036036060811015610c0657600080fd5b5080356001600160601b031690602081013590604001356001600160a01b031661217d565b610a1c60048036036040811015610c4157600080fd5b506001600160a01b038135169060200135612197565b61070f60048036036040811015610c6d57600080fd5b508035906020013563ffffffff166121ba565b6103ee600480360360e0811015610c9657600080fd5b506001600160a01b038135169060208101359060408101359060608101359060ff6080820135169060a08101359060c001356121ef565b6103b06124c5565b6104a260048036036060811015610ceb57600080fd5b506001600160a01b0381351690602081013590604001356124e0565b6103ee60048036036040811015610d1d57600080fd5b5080359060200135612748565b6104a260048036036040811015610d4057600080fd5b5080359060200135612930565b6103ee60048036036020811015610d6357600080fd5b50356001600160a01b0316612b28565b60015481565b610d84338383612b7c565b610d8f338383612c2e565b5050565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b333014610dfa576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610e0985858585856000612d5b565b5050505050565b6011546001600160a01b031681565b600981565b610e2c611acb565b610e6c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604051806043614d4182396043019050604051809103902081565b600080610eeb836117b9565b905063059fa6008101815b818111610f3c57610f3084610f1283868a63ffffffff16612f77565b6040518060800160405280605581526020016149b060559139612fdd565b93506212750001610ef6565b50505092915050565b610f5433858585856000612d5b565b50505050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600080610f8c836117b9565b905063059fa6008101815b818111610fee576000610fac8883868a611a49565b90506001600160601b03811615610fe357610fe085826040518060800160405280604c8152602001614e7d604c9139612fdd565b94505b506212750001610f97565b5050509392505050565b611000611acb565b8061101a5750336000908152600f602052604090205460ff165b61105a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038083166000818152600e6020526040808220805460ff191660011790558051633c7925e360e11b815293851660048501525191926378f24bc6926024808301939282900301818387803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b5050506001600160a01b038084166000818152600e6020908152604091829020805460ff1916905581519283529285169282019290925281517f2366e0b6b1af17c0ceed50685c570d519cae11e7faaf007bbe667e94a5ee3cd593509081900390910190a15050565b600f6020526000908152604090205460ff1681565b611152611acb565b611192576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166111ed576040805162461bcd60e51b815260206004820181905260248201527f76657374696e67207265676973747279206164647265737320696e76616c6964604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600061121c8642016117b9565b905063059fa6008511156112325763059fa60094505b600061123f8642016117b9565b90506000858383038161124e57fe5b0460010190506000818a8161125f57fe5b0490506001821061128057611280336001840383028c038689896001612d5b565b8387015b8381116112a15761129a3383838a8a6001612d5b565b8701611284565b5050505050505050505050565b6012546001600160a01b031681565b60055461010090046001600160a01b03166113095760405162461bcd60e51b81526004018080602001828103825260248152602001806148866024913960400191505060405180910390fd5b565b611313611acb565b611353576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6005805460ff19166001179055600354604080516370a0823160e01b815230600482015290517fd8cc4e8d808fe950b07bfffcd83eebf1190cd35ea77fe0c8a7d75a6e9b90e5c1926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156113ca57600080fd5b505afa1580156113de573d6000803e3d6000fd5b505050506040513d60208110156113f457600080fd5b505160408051918252519081900360200190a1565b611411611acb565b611451576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166114965760405162461bcd60e51b815260040180806020018281038252602181526020018061500d6021913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818310156114f95760405162461bcd60e51b815260040180806020018281038252604c815260200180614cc1604c913960600191505060405180910390fd5b81830363059fa60081111561153f5760405162461bcd60e51b815260040180806020018281038252604d815260200180614d84604d913960600191505060405180910390fd5b6000620151808263059fa600036001600160601b03168161155c57fe5b049050611628600a621232106001600160601b03166115dc600a6009026115be621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e0081525061307b565b6040518060600160405280602d8152602001614b4b602d91396130e8565b6001600160601b0316816115ec57fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e0000815250612fdd565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b6116af611acb565b6116ef576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6001546000905b63059fa600420181116117b3576117a78261176c8584613174565b6040518060400160405280601c81526020017f5374616b696e673a3a62616c616e63654f663a206f766572666c6f7700000000815250612fdd565b91506212750001611751565b50919050565b60006001548210156117fc5760405162461bcd60e51b815260040180806020018281038252604d815260200180614ad1604d913960600191505060405180910390fd5b60006212750060015484038161180e57fe5b04905060015462127500820201915050919050565b606080600061183763059fa60042016117b9565b60015490915060009062127500015b8281116118795760006118598783613174565b6001600160601b0316111561186f576001909101905b6212750001611846565b50806040519080825280602002602001820160405280156118a4578160200160208202803883390190505b509350806040519080825280602002602001820160405280156118d1578160200160208202803883390190505b5060015490935060009062127500015b8381116119555760006118f48883613174565b90506001600160601b0381161561194a578187848151811061191257fe5b6020026020010181815250508086848151811061192b57fe5b6001600160601b03909216602092830291909101909101526001909201915b5062127500016118e1565b50505050915091565b600c6020526000908152604090205481565b336000908152600e602052604090205460ff166119c3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6119d083838360016131d5565b6119dd8383836001613521565b505050565b6000806119ee836117b9565b905063059fa6008101815b818111610fee57611a2e84611a108984878b613583565b6040518060800160405280604a8152602001614c77604a9139612fdd565b935062127500016119f9565b6000546001600160a01b031690565b600080611a578686856135eb565b90506001600160601b03811615611abd576000611a7486866114b8565b9050600a6001600160601b0316611aa483836040518060600160405280603d8152602001614b78603d91396130e8565b6001600160601b031681611ab457fe5b04925050611ac2565b600091505b50949350505050565b600080546001600160a01b0316611ae061385f565b6001600160a01b031614905090565b611af7613863565b6001600160a01b0316336001600160a01b031614611b4b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614611b97576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060611ba3613872565b90506000611be685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138ca92505050565b905060005b8251811015611c3457828181518110611c0057fe5b60200260200101516001600160e01b031916826001600160e01b0319161415611c2c5760019350611c34565b600101611beb565b5082611c7f576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c018383808284378083019250505093505050506040516020818303038152906040528060200190516060811015611ccd57600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614611d30576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114611d76576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b611db587878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138d192505050565b50505050505050505050565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b600080611e098484613a3a565b6000611e158585613ae5565b94859003959350505050565b60