Source Code
Latest 25 from a total of 1,511 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Unstake | 16299633 | 1045 days ago | IN | 0 ETH | 0.00852349 | ||||
| Unstake | 16269017 | 1049 days ago | IN | 0 ETH | 0.00029164 | ||||
| Unstake | 16223900 | 1056 days ago | IN | 0 ETH | 0.00431703 | ||||
| Claim Rewards | 16215803 | 1057 days ago | IN | 0 ETH | 0.00028299 | ||||
| Unstake | 16214332 | 1057 days ago | IN | 0 ETH | 0.00209284 | ||||
| Unstake | 16214330 | 1057 days ago | IN | 0 ETH | 0.00206484 | ||||
| Unstake | 16214329 | 1057 days ago | IN | 0 ETH | 0.00241424 | ||||
| Unstake | 16214327 | 1057 days ago | IN | 0 ETH | 0.00262112 | ||||
| Unstake | 16214306 | 1057 days ago | IN | 0 ETH | 0.0027934 | ||||
| Unstake | 16214304 | 1057 days ago | IN | 0 ETH | 0.00274489 | ||||
| Unstake | 16214302 | 1057 days ago | IN | 0 ETH | 0.0026427 | ||||
| Unstake | 16214300 | 1057 days ago | IN | 0 ETH | 0.00301646 | ||||
| Unstake | 16214298 | 1057 days ago | IN | 0 ETH | 0.00326368 | ||||
| Unstake | 16214282 | 1057 days ago | IN | 0 ETH | 0.00475969 | ||||
| Stake | 16166979 | 1064 days ago | IN | 0 ETH | 0.00403564 | ||||
| Stake | 16166977 | 1064 days ago | IN | 0 ETH | 0.00359419 | ||||
| Stake | 16166976 | 1064 days ago | IN | 0 ETH | 0.00374184 | ||||
| Stake | 16166976 | 1064 days ago | IN | 0 ETH | 0.00357983 | ||||
| Stake | 16166976 | 1064 days ago | IN | 0 ETH | 0.00357983 | ||||
| Stake | 16166957 | 1064 days ago | IN | 0 ETH | 0.00358479 | ||||
| Stake | 16166957 | 1064 days ago | IN | 0 ETH | 0.00358479 | ||||
| Stake | 16166956 | 1064 days ago | IN | 0 ETH | 0.00376375 | ||||
| Stake | 16166821 | 1064 days ago | IN | 0 ETH | 0.00380061 | ||||
| Unstake | 16145345 | 1067 days ago | IN | 0 ETH | 0.00231766 | ||||
| Unstake | 16145344 | 1067 days ago | IN | 0 ETH | 0.00256848 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
OgStake
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-10-14
*/
//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.7;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address _owner, address spender) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
interface IERC721 {
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
function balanceOf(address _owner) external view returns (uint256);
function ownerOf(uint256 _tokenId) external view returns (address);
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
function approve(address _approved, uint256 _tokenId) external payable;
function setApprovalForAll(address _operator, bool _approved) external;
function getApproved(uint256 _tokenId) external view returns (address);
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}
interface IERC721Metadata is IERC721 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);
}
interface ERC721TokenReceiver {
function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns(bytes4);
}
contract OgStake is ERC721TokenReceiver {
bool enabled;
uint256 timeBetweenRewards;
uint256 rewardPerToken;
uint256 minimumStakeTime;
uint256 startTime;
Stake[] stakings;
struct StakeInfo {
bool enabled;
uint256 timeBetweenRewards;
uint256 rewardPerToken;
uint256 minimumStakeTime;
}
struct Stake
{
address holder;
uint256 tokenId;
uint256 stakeTime;
uint256 lastClaimTime;
uint256 unstakeTime;
}
struct StakedNftInfo
{
uint256 tokenId;
string uri;
uint256 stakeTime;
uint256 owed;
uint256 lastClaimed;
uint256 timeUntilNextReward;
}
address public owner;
uint256 private nonce;
mapping (address => uint256[]) private ownerStakings;
mapping (uint256 => uint256) private indexMap;
IERC721Metadata private _nftContract;
IERC20 private _rewardToken;
modifier onlyOwner() {
require(msg.sender == owner, "can only be called by the contract owner");
_;
}
modifier whenEnabled() {
require(enabled || msg.sender == owner, "staking not enabled");
_;
}
constructor() {
owner = msg.sender;
if (block.chainid == 1) {
_nftContract = IERC721Metadata(0x5b9D7Ee3Ba252c41a07C2D6Ec799eFF8858bf117);
_rewardToken = IERC20(0xBeC5938FD565CbEc72107eE39CdE1bc78049537d);
} else if (block.chainid == 3 || block.chainid == 4 || block.chainid == 97 || block.chainid == 5) {
_nftContract = IERC721Metadata(0xb48408795A879d7e64A356bB71a2a22adE7a75eF);
_rewardToken = IERC20(0x2891372D5c2727aC939BF111C45333735d537f09);
} else {
revert("Unknown Chain ID");
}
enabled = true;
timeBetweenRewards = 1 days;
startTime = block.timestamp;
rewardPerToken = 8 * 10 ** 18;
minimumStakeTime = 7 days;
}
function info() external view returns (
StakedNftInfo[] memory stakedNfts,
address rewardToken,
address nftContract,
StakeInfo memory settings
) {
uint256 totalStaked = ownerStakings[msg.sender].length;
stakedNfts = new StakedNftInfo[](totalStaked);
for (uint256 i = 0; i < totalStaked; i ++) {
uint256 index = indexMap[ownerStakings[msg.sender][i]];
Stake storage s = stakings[index];
(uint256 owed,) = rewardsOwed(s);
stakedNfts[i] = StakedNftInfo(
s.tokenId,
_nftContract.tokenURI(s.tokenId),
s.stakeTime,
owed,
s.lastClaimTime,
timeUntilReward(s)
);
}
rewardToken = address(_rewardToken);
nftContract = address(_nftContract);
settings = StakeInfo(
enabled,
timeBetweenRewards,
rewardPerToken,
minimumStakeTime
);
}
function stake(uint256 tokenId) external whenEnabled() {
require(_nftContract.getApproved(tokenId) == address(this), "Must approve this contract as an operator");
_nftContract.safeTransferFrom(msg.sender, address(this), tokenId);
Stake memory s = Stake(msg.sender, tokenId, block.timestamp, block.timestamp, 0);
indexMap[tokenId] = stakings.length;
stakings.push(s);
ownerStakings[msg.sender].push(tokenId);
}
function unstake(uint256 tokenId) external {
uint256 index = indexMap[tokenId];
Stake storage s = stakings[index];
require(s.unstakeTime == 0, "This NFT has already been unstaked");
require(s.holder == msg.sender || msg.sender == owner, "You do not own this token");
if (enabled) {
claimWalletRewards(s.holder);
}
_nftContract.safeTransferFrom(address(this), s.holder, tokenId);
s.unstakeTime = block.timestamp;
removeOwnerStaking(s.holder, tokenId);
}
function claimRewards() external whenEnabled() {
claimWalletRewards(msg.sender);
}
// Admin Methods
function removeEth() external onlyOwner {
uint256 balance = address(this).balance;
payable(owner).transfer(balance);
}
function removeTokens(address token) external onlyOwner {
uint256 balance = IERC20(token).balanceOf(address(this));
IERC20(token).transfer(owner, balance);
}
function forceUnstake(uint256 tokenId) external onlyOwner {
uint256 index = indexMap[tokenId];
Stake storage s = stakings[index];
_nftContract.safeTransferFrom(address(this), s.holder, tokenId);
}
function setOwner(address who) external onlyOwner {
require(who != address(0), "cannot be zero address");
owner = who;
}
function setEnabled(bool on) external onlyOwner {
enabled = on;
}
function configureStake(uint256 _timeBetweenRewards, uint256 _rewardPerToken, uint256 _minimumStakeTime) external onlyOwner {
timeBetweenRewards = _timeBetweenRewards;
rewardPerToken = _rewardPerToken;
minimumStakeTime = _minimumStakeTime;
}
// Private Methods
function removeOwnerStaking(address holder, uint256 tokenId) private {
bool found;
uint256 index = 0;
for (index; index < ownerStakings[holder].length; index++) {
if (ownerStakings[holder][index] == tokenId) {
found = true;
break;
}
}
if (found) {
if (ownerStakings[holder].length > 1) {
ownerStakings[holder][index] = ownerStakings[holder][ownerStakings[holder].length-1];
}
ownerStakings[holder].pop();
}
}
function claimWalletRewards(address wallet) private {
uint256 totalOwed;
for (uint256 i = 0; i < ownerStakings[wallet].length; i ++) {
uint256 index = indexMap[ownerStakings[wallet][i]];
(uint256 owed, uint256 time) = rewardsOwed(stakings[index]);
if (owed > 0) {
totalOwed += owed;
stakings[index].lastClaimTime = stakings[index].lastClaimTime + time;
}
}
if (totalOwed > 0) {
_rewardToken.transfer(wallet, totalOwed);
}
}
function timeUntilReward(Stake storage stakedToken) private view returns (uint256) {
if (block.timestamp - stakedToken.stakeTime < minimumStakeTime) {
return minimumStakeTime - (block.timestamp - stakedToken.stakeTime);
}
uint256 lastClaimTime = stakedToken.stakeTime;
if (startTime > lastClaimTime) {
lastClaimTime = startTime;
} else if (stakedToken.lastClaimTime > lastClaimTime) {
lastClaimTime = stakedToken.lastClaimTime;
}
if (block.timestamp - lastClaimTime >= timeBetweenRewards) {
return timeBetweenRewards - ((block.timestamp - lastClaimTime) % timeBetweenRewards);
}
return timeBetweenRewards - (block.timestamp - lastClaimTime);
}
function rewardsOwed(Stake storage stakedToken) private view returns (uint256, uint256) {
uint256 unstakeTime = block.timestamp;
if (stakedToken.unstakeTime > 0) {
unstakeTime = stakedToken.unstakeTime;
}
if (unstakeTime - stakedToken.stakeTime >= minimumStakeTime) {
uint256 lastClaimTime = stakedToken.stakeTime;
if (startTime > lastClaimTime) {
lastClaimTime = startTime;
} else if (stakedToken.lastClaimTime > lastClaimTime) {
lastClaimTime = stakedToken.lastClaimTime;
}
if (unstakeTime - lastClaimTime >= timeBetweenRewards) {
uint256 multiplesOwed = (unstakeTime - lastClaimTime) / timeBetweenRewards;
return (
multiplesOwed * rewardPerToken,
multiplesOwed * timeBetweenRewards
);
}
}
return (0, 0);
}
function onERC721Received(address, address, uint256, bytes memory) public pure override returns(bytes4) {
return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeBetweenRewards","type":"uint256"},{"internalType":"uint256","name":"_rewardPerToken","type":"uint256"},{"internalType":"uint256","name":"_minimumStakeTime","type":"uint256"}],"name":"configureStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"forceUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"info","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"owed","type":"uint256"},{"internalType":"uint256","name":"lastClaimed","type":"uint256"},{"internalType":"uint256","name":"timeUntilNextReward","type":"uint256"}],"internalType":"struct OgStake.StakedNftInfo[]","name":"stakedNfts","type":"tuple[]"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"nftContract","type":"address"},{"components":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"timeBetweenRewards","type":"uint256"},{"internalType":"uint256","name":"rewardPerToken","type":"uint256"},{"internalType":"uint256","name":"minimumStakeTime","type":"uint256"}],"internalType":"struct OgStake.StakeInfo","name":"settings","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"on","type":"bool"}],"name":"setEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50600680546001600160a01b03191633179055466001141561007957600a80546001600160a01b0319908116735b9d7ee3ba252c41a07c2d6ec799eff8858bf11717909155600b805490911673bec5938fd565cbec72107ee39cde1bc78049537d17905561012f565b46600314806100885750466004145b806100935750466061145b8061009e5750466005145b156100f057600a80546001600160a01b031990811673b48408795a879d7e64a356bb71a2a22ade7a75ef17909155600b8054909116732891372d5c2727ac939bf111c45333735d537f0917905561012f565b60405162461bcd60e51b815260206004820152601060248201526f155b9adb9bdddb8810da185a5b88125160821b604482015260640160405180910390fd5b6000805460ff1916600190811790915562015180905542600455676f05b59d3b20000060025562093a806003556116698061016b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063372500ab11610071578063372500ab14610169578063553c38f8146101715780638da5cb5b1461018457806391460149146101af578063a694fc3a146101c2578063fc50baf5146101d557600080fd5b806313af4035146100b9578063150b7a02146100ce5780631f4a6d32146101235780632e17de781461012b578063328d8f721461013e578063370158ea14610151575b600080fd5b6100cc6100c736600461113d565b6101e8565b005b6101056100dc366004611177565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b6100cc61028c565b6100cc6101393660046112d7565b6102f4565b6100cc61014c366004611226565b6104a3565b6101596104e0565b60405161011a9493929190611335565b6100cc61076d565b6100cc61017f366004611309565b6107d5565b600654610197906001600160a01b031681565b6040516001600160a01b03909116815260200161011a565b6100cc6101bd3660046112d7565b61080d565b6100cc6101d03660046112d7565b6108e3565b6100cc6101e336600461113d565b610bd7565b6006546001600160a01b0316331461021b5760405162461bcd60e51b815260040161021290611441565b60405180910390fd5b6001600160a01b03811661026a5760405162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265207a65726f206164647265737360501b6044820152606401610212565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146102b65760405162461bcd60e51b815260040161021290611441565b60065460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156102f0573d6000803e3d6000fd5b5050565b600081815260096020526040812054600580549192918390811061031a5761031a6115e1565b9060005260206000209060050201905080600401546000146103895760405162461bcd60e51b815260206004820152602260248201527f54686973204e46542068617320616c7265616479206265656e20756e7374616b604482015261195960f21b6064820152608401610212565b80546001600160a01b03163314806103ab57506006546001600160a01b031633145b6103f75760405162461bcd60e51b815260206004820152601960248201527f596f7520646f206e6f74206f776e207468697320746f6b656e000000000000006044820152606401610212565b60005460ff1615610416578054610416906001600160a01b0316610d04565b600a548154604051632142170760e11b81523060048201526001600160a01b039182166024820152604481018690529116906342842e0e90606401600060405180830381600087803b15801561046b57600080fd5b505af115801561047f573d6000803e3d6000fd5b50504260048401555050805461049e906001600160a01b031684610e65565b505050565b6006546001600160a01b031633146104cd5760405162461bcd60e51b815260040161021290611441565b6000805460ff1916911515919091179055565b606060008061051260405180608001604052806000151581526020016000815260200160008152602001600081525090565b336000908152600860205260409020548067ffffffffffffffff81111561053b5761053b6115f7565b6040519080825280602002602001820160405280156105a557816020015b6105926040518060c001604052806000815260200160608152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105595790505b50945060005b8181101561071d5733600090815260086020526040812080546009918391859081106105d9576105d96115e1565b9060005260206000200154815260200190815260200160002054905060006005828154811061060a5761060a6115e1565b90600052602060002090600502019050600061062582610fd1565b506040805160c0810182526001850154808252600a54925163c87b56dd60e01b815260048101919091529293509160208301916001600160a01b03169063c87b56dd9060240160006040518083038186803b15801561068357600080fd5b505afa158015610697573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106bf9190810190611260565b815260200183600201548152602001828152602001836003015481526020016106e78461108e565b8152508985815181106106fc576106fc6115e1565b6020026020010181905250505050808061071590611570565b9150506105ab565b5050600b54600a546040805160808101825260005460ff1615158152600154602082015260025491810191909152600354606082015295966001600160a01b039283169691909216945092509050565b60005460ff168061078857506006546001600160a01b031633145b6107ca5760405162461bcd60e51b81526020600482015260136024820152721cdd185ada5b99c81b9bdd08195b98589b1959606a1b6044820152606401610212565b6107d333610d04565b565b6006546001600160a01b031633146107ff5760405162461bcd60e51b815260040161021290611441565b600192909255600255600355565b6006546001600160a01b031633146108375760405162461bcd60e51b815260040161021290611441565b600081815260096020526040812054600580549192918390811061085d5761085d6115e1565b60009182526020909120600a546005909202018054604051632142170760e11b81523060048201526001600160a01b03918216602482015260448101879052919350909116906342842e0e90606401600060405180830381600087803b1580156108c657600080fd5b505af11580156108da573d6000803e3d6000fd5b50505050505050565b60005460ff16806108fe57506006546001600160a01b031633145b6109405760405162461bcd60e51b81526020600482015260136024820152721cdd185ada5b99c81b9bdd08195b98589b1959606a1b6044820152606401610212565b600a5460405163020604bf60e21b81526004810183905230916001600160a01b03169063081812fc9060240160206040518083038186803b15801561098457600080fd5b505afa158015610998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bc919061115a565b6001600160a01b031614610a245760405162461bcd60e51b815260206004820152602960248201527f4d75737420617070726f7665207468697320636f6e747261637420617320616e6044820152681037b832b930ba37b960b91b6064820152608401610212565b600a54604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b50506040805160a0810182523380825260208083018781524284860181815260608601918252600060808701818152600580548d8452600988528a842081905560018082018355828552995191027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0810180546001600160a01b03939093166001600160a01b03199093169290921790915594517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db186015591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db285015591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3840155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db490920191909155918252600881529281208054928301815581529190912001929092555050565b6006546001600160a01b03163314610c015760405162461bcd60e51b815260040161021290611441565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610c4357600080fd5b505afa158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7b91906112f0565b60065460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044015b602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e9190611243565b6000805b6001600160a01b038316600090815260086020526040902054811015610e25576001600160a01b03831660009081526008602052604081208054600991839185908110610d5757610d576115e1565b90600052602060002001548152602001908152602001600020549050600080610d9f60058481548110610d8c57610d8c6115e1565b9060005260206000209060050201610fd1565b90925090508115610e0f57610db482866114e2565b94508060058481548110610dca57610dca6115e1565b906000526020600020906005020160030154610de691906114e2565b60058481548110610df957610df96115e1565b9060005260206000209060050201600301819055505b5050508080610e1d90611570565b915050610d08565b5080156102f057600b5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401610cb2565b6000805b6001600160a01b038416600090815260086020526040902054811015610ee2576001600160a01b0384166000908152600860205260409020805484919083908110610eb657610eb66115e1565b90600052602060002001541415610ed05760019150610ee2565b80610eda81611570565b915050610e69565b8115610fcb576001600160a01b03841660009081526008602052604090205460011015610f8d576001600160a01b03841660009081526008602052604090208054610f2f9060019061152d565b81548110610f3f57610f3f6115e1565b906000526020600020015460086000866001600160a01b03166001600160a01b031681526020019081526020016000208281548110610f8057610f806115e1565b6000918252602090912001555b6001600160a01b0384166000908152600860205260409020805480610fb457610fb46115cb565b600190038181906000526020600020016000905590555b50505050565b60048101546000908190429015610fe9575060048301545b6003546002850154610ffb908361152d565b10611082576002840154600454811015611018575060045461102b565b808560030154111561102b575060038401545b600154611038828461152d565b106110805760015460009061104d838561152d565b61105791906114fa565b905060025481611067919061150e565b600154611074908361150e565b94509450505050915091565b505b50600093849350915050565b60006003548260020154426110a3919061152d565b10156110cb5760028201546110b8904261152d565b6003546110c5919061152d565b92915050565b60028201546004548110156110e357506004546110f6565b80836003015411156110f6575060038201545b600154611103824261152d565b1061113357600154611115824261152d565b61111f919061158b565b60015461112c919061152d565b9392505050565b61111f814261152d565b60006020828403121561114f57600080fd5b813561112c8161160d565b60006020828403121561116c57600080fd5b815161112c8161160d565b6000806000806080858703121561118d57600080fd5b84356111988161160d565b935060208501356111a88161160d565b925060408501359150606085013567ffffffffffffffff8111156111cb57600080fd5b8501601f810187136111dc57600080fd5b80356111ef6111ea826114ba565b611489565b81815288602083850101111561120457600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60006020828403121561123857600080fd5b813561112c81611625565b60006020828403121561125557600080fd5b815161112c81611625565b60006020828403121561127257600080fd5b815167ffffffffffffffff81111561128957600080fd5b8201601f8101841361129a57600080fd5b80516112a86111ea826114ba565b8181528560208385010111156112bd57600080fd5b6112ce826020830160208601611544565b95945050505050565b6000602082840312156112e957600080fd5b5035919050565b60006020828403121561130257600080fd5b5051919050565b60008060006060848603121561131e57600080fd5b505081359360208301359350604090920135919050565b60e0808252855182820181905260009190610100600582901b8501810191908501906020808b01865b838110156113e05760ff19898703018552815160c0815188528482015181868a0152805180838b0152611396818c8c01898501611544565b604084810151908b0152606080850151908b0152608080850151908b015260a093840151938a01939093525050601f01601f1916909501860194938201939082019060010161135e565b50508395506113f98188018b6001600160a01b03169052565b505050505061141360408301856001600160a01b03169052565b8251151560608381019190915260208401516080840152604084015160a084015283015160c08301526112ce565b60208082526028908201527f63616e206f6e6c792062652063616c6c65642062792074686520636f6e74726160408201526731ba1037bbb732b960c11b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156114b2576114b26115f7565b604052919050565b600067ffffffffffffffff8211156114d4576114d46115f7565b50601f01601f191660200190565b600082198211156114f5576114f561159f565b500190565b600082611509576115096115b5565b500490565b60008160001904831182151516156115285761152861159f565b500290565b60008282101561153f5761153f61159f565b500390565b60005b8381101561155f578181015183820152602001611547565b83811115610fcb5750506000910152565b60006000198214156115845761158461159f565b5060010190565b60008261159a5761159a6115b5565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461162257600080fd5b50565b801515811461162257600080fdfea26469706673582212209e372afec0d8b599c9eac49b92680906323202ca49e850c0b4e2cc1524ff8e8b64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063372500ab11610071578063372500ab14610169578063553c38f8146101715780638da5cb5b1461018457806391460149146101af578063a694fc3a146101c2578063fc50baf5146101d557600080fd5b806313af4035146100b9578063150b7a02146100ce5780631f4a6d32146101235780632e17de781461012b578063328d8f721461013e578063370158ea14610151575b600080fd5b6100cc6100c736600461113d565b6101e8565b005b6101056100dc366004611177565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b6100cc61028c565b6100cc6101393660046112d7565b6102f4565b6100cc61014c366004611226565b6104a3565b6101596104e0565b60405161011a9493929190611335565b6100cc61076d565b6100cc61017f366004611309565b6107d5565b600654610197906001600160a01b031681565b6040516001600160a01b03909116815260200161011a565b6100cc6101bd3660046112d7565b61080d565b6100cc6101d03660046112d7565b6108e3565b6100cc6101e336600461113d565b610bd7565b6006546001600160a01b0316331461021b5760405162461bcd60e51b815260040161021290611441565b60405180910390fd5b6001600160a01b03811661026a5760405162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265207a65726f206164647265737360501b6044820152606401610212565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146102b65760405162461bcd60e51b815260040161021290611441565b60065460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156102f0573d6000803e3d6000fd5b5050565b600081815260096020526040812054600580549192918390811061031a5761031a6115e1565b9060005260206000209060050201905080600401546000146103895760405162461bcd60e51b815260206004820152602260248201527f54686973204e46542068617320616c7265616479206265656e20756e7374616b604482015261195960f21b6064820152608401610212565b80546001600160a01b03163314806103ab57506006546001600160a01b031633145b6103f75760405162461bcd60e51b815260206004820152601960248201527f596f7520646f206e6f74206f776e207468697320746f6b656e000000000000006044820152606401610212565b60005460ff1615610416578054610416906001600160a01b0316610d04565b600a548154604051632142170760e11b81523060048201526001600160a01b039182166024820152604481018690529116906342842e0e90606401600060405180830381600087803b15801561046b57600080fd5b505af115801561047f573d6000803e3d6000fd5b50504260048401555050805461049e906001600160a01b031684610e65565b505050565b6006546001600160a01b031633146104cd5760405162461bcd60e51b815260040161021290611441565b6000805460ff1916911515919091179055565b606060008061051260405180608001604052806000151581526020016000815260200160008152602001600081525090565b336000908152600860205260409020548067ffffffffffffffff81111561053b5761053b6115f7565b6040519080825280602002602001820160405280156105a557816020015b6105926040518060c001604052806000815260200160608152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105595790505b50945060005b8181101561071d5733600090815260086020526040812080546009918391859081106105d9576105d96115e1565b9060005260206000200154815260200190815260200160002054905060006005828154811061060a5761060a6115e1565b90600052602060002090600502019050600061062582610fd1565b506040805160c0810182526001850154808252600a54925163c87b56dd60e01b815260048101919091529293509160208301916001600160a01b03169063c87b56dd9060240160006040518083038186803b15801561068357600080fd5b505afa158015610697573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106bf9190810190611260565b815260200183600201548152602001828152602001836003015481526020016106e78461108e565b8152508985815181106106fc576106fc6115e1565b6020026020010181905250505050808061071590611570565b9150506105ab565b5050600b54600a546040805160808101825260005460ff1615158152600154602082015260025491810191909152600354606082015295966001600160a01b039283169691909216945092509050565b60005460ff168061078857506006546001600160a01b031633145b6107ca5760405162461bcd60e51b81526020600482015260136024820152721cdd185ada5b99c81b9bdd08195b98589b1959606a1b6044820152606401610212565b6107d333610d04565b565b6006546001600160a01b031633146107ff5760405162461bcd60e51b815260040161021290611441565b600192909255600255600355565b6006546001600160a01b031633146108375760405162461bcd60e51b815260040161021290611441565b600081815260096020526040812054600580549192918390811061085d5761085d6115e1565b60009182526020909120600a546005909202018054604051632142170760e11b81523060048201526001600160a01b03918216602482015260448101879052919350909116906342842e0e90606401600060405180830381600087803b1580156108c657600080fd5b505af11580156108da573d6000803e3d6000fd5b50505050505050565b60005460ff16806108fe57506006546001600160a01b031633145b6109405760405162461bcd60e51b81526020600482015260136024820152721cdd185ada5b99c81b9bdd08195b98589b1959606a1b6044820152606401610212565b600a5460405163020604bf60e21b81526004810183905230916001600160a01b03169063081812fc9060240160206040518083038186803b15801561098457600080fd5b505afa158015610998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bc919061115a565b6001600160a01b031614610a245760405162461bcd60e51b815260206004820152602960248201527f4d75737420617070726f7665207468697320636f6e747261637420617320616e6044820152681037b832b930ba37b960b91b6064820152608401610212565b600a54604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b50506040805160a0810182523380825260208083018781524284860181815260608601918252600060808701818152600580548d8452600988528a842081905560018082018355828552995191027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0810180546001600160a01b03939093166001600160a01b03199093169290921790915594517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db186015591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db285015591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3840155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db490920191909155918252600881529281208054928301815581529190912001929092555050565b6006546001600160a01b03163314610c015760405162461bcd60e51b815260040161021290611441565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610c4357600080fd5b505afa158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7b91906112f0565b60065460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044015b602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e9190611243565b6000805b6001600160a01b038316600090815260086020526040902054811015610e25576001600160a01b03831660009081526008602052604081208054600991839185908110610d5757610d576115e1565b90600052602060002001548152602001908152602001600020549050600080610d9f60058481548110610d8c57610d8c6115e1565b9060005260206000209060050201610fd1565b90925090508115610e0f57610db482866114e2565b94508060058481548110610dca57610dca6115e1565b906000526020600020906005020160030154610de691906114e2565b60058481548110610df957610df96115e1565b9060005260206000209060050201600301819055505b5050508080610e1d90611570565b915050610d08565b5080156102f057600b5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401610cb2565b6000805b6001600160a01b038416600090815260086020526040902054811015610ee2576001600160a01b0384166000908152600860205260409020805484919083908110610eb657610eb66115e1565b90600052602060002001541415610ed05760019150610ee2565b80610eda81611570565b915050610e69565b8115610fcb576001600160a01b03841660009081526008602052604090205460011015610f8d576001600160a01b03841660009081526008602052604090208054610f2f9060019061152d565b81548110610f3f57610f3f6115e1565b906000526020600020015460086000866001600160a01b03166001600160a01b031681526020019081526020016000208281548110610f8057610f806115e1565b6000918252602090912001555b6001600160a01b0384166000908152600860205260409020805480610fb457610fb46115cb565b600190038181906000526020600020016000905590555b50505050565b60048101546000908190429015610fe9575060048301545b6003546002850154610ffb908361152d565b10611082576002840154600454811015611018575060045461102b565b808560030154111561102b575060038401545b600154611038828461152d565b106110805760015460009061104d838561152d565b61105791906114fa565b905060025481611067919061150e565b600154611074908361150e565b94509450505050915091565b505b50600093849350915050565b60006003548260020154426110a3919061152d565b10156110cb5760028201546110b8904261152d565b6003546110c5919061152d565b92915050565b60028201546004548110156110e357506004546110f6565b80836003015411156110f6575060038201545b600154611103824261152d565b1061113357600154611115824261152d565b61111f919061158b565b60015461112c919061152d565b9392505050565b61111f814261152d565b60006020828403121561114f57600080fd5b813561112c8161160d565b60006020828403121561116c57600080fd5b815161112c8161160d565b6000806000806080858703121561118d57600080fd5b84356111988161160d565b935060208501356111a88161160d565b925060408501359150606085013567ffffffffffffffff8111156111cb57600080fd5b8501601f810187136111dc57600080fd5b80356111ef6111ea826114ba565b611489565b81815288602083850101111561120457600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60006020828403121561123857600080fd5b813561112c81611625565b60006020828403121561125557600080fd5b815161112c81611625565b60006020828403121561127257600080fd5b815167ffffffffffffffff81111561128957600080fd5b8201601f8101841361129a57600080fd5b80516112a86111ea826114ba565b8181528560208385010111156112bd57600080fd5b6112ce826020830160208601611544565b95945050505050565b6000602082840312156112e957600080fd5b5035919050565b60006020828403121561130257600080fd5b5051919050565b60008060006060848603121561131e57600080fd5b505081359360208301359350604090920135919050565b60e0808252855182820181905260009190610100600582901b8501810191908501906020808b01865b838110156113e05760ff19898703018552815160c0815188528482015181868a0152805180838b0152611396818c8c01898501611544565b604084810151908b0152606080850151908b0152608080850151908b015260a093840151938a01939093525050601f01601f1916909501860194938201939082019060010161135e565b50508395506113f98188018b6001600160a01b03169052565b505050505061141360408301856001600160a01b03169052565b8251151560608381019190915260208401516080840152604084015160a084015283015160c08301526112ce565b60208082526028908201527f63616e206f6e6c792062652063616c6c65642062792074686520636f6e74726160408201526731ba1037bbb732b960c11b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156114b2576114b26115f7565b604052919050565b600067ffffffffffffffff8211156114d4576114d46115f7565b50601f01601f191660200190565b600082198211156114f5576114f561159f565b500190565b600082611509576115096115b5565b500490565b60008160001904831182151516156115285761152861159f565b500290565b60008282101561153f5761153f61159f565b500390565b60005b8381101561155f578181015183820152602001611547565b83811115610fcb5750506000910152565b60006000198214156115845761158461159f565b5060010190565b60008261159a5761159a6115b5565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461162257600080fd5b50565b801515811461162257600080fdfea26469706673582212209e372afec0d8b599c9eac49b92680906323202ca49e850c0b4e2cc1524ff8e8b64736f6c63430008070033
Deployed Bytecode Sourcemap
2442:8632:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7326:143;;;;;;:::i;:::-;;:::i;:::-;;10871:198;;;;;;:::i;:::-;11000:60;10871:198;;;;;;;;;;-1:-1:-1;;;;;;6719:33:1;;;6701:52;;6689:2;6674:18;10871:198:0;;;;;;;;6749:141;;;:::i;6051:559::-;;;;;;:::i;:::-;;:::i;7477:79::-;;;;;;:::i;:::-;;:::i;4500:1067::-;;;:::i;:::-;;;;;;;;;;:::i;6619:96::-;;;:::i;7564:273::-;;;;;;:::i;:::-;;:::i;3198:20::-;;;;;-1:-1:-1;;;;;3198:20:0;;;;;;-1:-1:-1;;;;;3930:32:1;;;3912:51;;3900:2;3885:18;3198:20:0;3766:203:1;7090:228:0;;;;;;:::i;:::-;;:::i;5575:468::-;;;;;;:::i;:::-;;:::i;6902:180::-;;;;;;:::i;:::-;;:::i;7326:143::-;3503:5;;-1:-1:-1;;;;;3503:5:0;3489:10;:19;3481:72;;;;-1:-1:-1;;;3481:72:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;7395:17:0;::::1;7387:52;;;::::0;-1:-1:-1;;;7387:52:0;;8890:2:1;7387:52:0::1;::::0;::::1;8872:21:1::0;8929:2;8909:18;;;8902:30;-1:-1:-1;;;8948:18:1;;;8941:52;9010:18;;7387:52:0::1;8688:346:1::0;7387:52:0::1;7450:5;:11:::0;;-1:-1:-1;;;;;;7450:11:0::1;-1:-1:-1::0;;;;;7450:11:0;;;::::1;::::0;;;::::1;::::0;;7326:143::o;6749:141::-;3503:5;;-1:-1:-1;;;;;3503:5:0;3489:10;:19;3481:72;;;;-1:-1:-1;;;3481:72:0;;;;;;;:::i;:::-;6858:5:::1;::::0;6850:32:::1;::::0;6818:21:::1;::::0;-1:-1:-1;;;;;6858:5:0::1;::::0;6850:32;::::1;;;::::0;6818:21;;6800:15:::1;6850:32:::0;6800:15;6850:32;6818:21;6858:5;6850:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;6789:101;6749:141::o:0;6051:559::-;6107:13;6123:17;;;:8;:17;;;;;;6169:8;:15;;6123:17;;6107:13;6123:17;;6169:15;;;;;;:::i;:::-;;;;;;;;;;;6151:33;;6205:1;:13;;;6222:1;6205:18;6197:65;;;;-1:-1:-1;;;6197:65:0;;8487:2:1;6197:65:0;;;8469:21:1;8526:2;8506:18;;;8499:30;8565:34;8545:18;;;8538:62;-1:-1:-1;;;8616:18:1;;;8609:32;8658:19;;6197:65:0;8285:398:1;6197:65:0;6281:8;;-1:-1:-1;;;;;6281:8:0;6293:10;6281:22;;:45;;-1:-1:-1;6321:5:0;;-1:-1:-1;;;;;6321:5:0;6307:10;:19;6281:45;6273:83;;;;-1:-1:-1;;;6273:83:0;;6966:2:1;6273:83:0;;;6948:21:1;7005:2;6985:18;;;6978:30;7044:27;7024:18;;;7017:55;7089:18;;6273:83:0;6764:349:1;6273:83:0;6373:7;;;;6369:68;;;6416:8;;6397:28;;-1:-1:-1;;;;;6416:8:0;6397:18;:28::i;:::-;6449:12;;6494:8;;6449:63;;-1:-1:-1;;;6449:63:0;;6487:4;6449:63;;;4214:34:1;-1:-1:-1;;;;;6494:8:0;;;4264:18:1;;;4257:43;4316:18;;;4309:34;;;6449:12:0;;;:29;;4149:18:1;;6449:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6539:15:0;6523:13;;;:31;-1:-1:-1;;6584:8:0;;6565:37;;-1:-1:-1;;;;;6584:8:0;6594:7;6565:18;:37::i;:::-;6094:516;;6051:559;:::o;7477:79::-;3503:5;;-1:-1:-1;;;;;3503:5:0;3489:10;:19;3481:72;;;;-1:-1:-1;;;3481:72:0;;;;;;;:::i;:::-;7536:7:::1;:12:::0;;-1:-1:-1;;7536:12:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7477:79::o;4500:1067::-;4549:33;4593:19;4623;4653:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4653:25:0;4733:10;4697:19;4719:25;;;:13;:25;;;;;:32;;4775;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:32:0;;;;;;;;;;;;;;;;;4762:45;;4823:9;4818:486;4842:11;4838:1;:15;4818:486;;;4917:10;4878:13;4903:25;;;:13;:25;;;;;:28;;4894:8;;4878:13;;4929:1;;4903:28;;;;;;:::i;:::-;;;;;;;;;4894:38;;;;;;;;;;;;4878:54;;4947:15;4965:8;4974:5;4965:15;;;;;;;;:::i;:::-;;;;;;;;;;;4947:33;;4998:12;5015:14;5027:1;5015:11;:14::i;:::-;-1:-1:-1;5060:232:0;;;;;;;;5092:9;;;;5060:232;;;5120:12;;:32;;-1:-1:-1;;;5120:32:0;;;;;9185:25:1;;;;4997:32:0;;-1:-1:-1;5060:232:0;;;;;-1:-1:-1;;;;;5120:12:0;;:21;;9158:18:1;;5120:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5120:32:0;;;;;;;;;;;;:::i;:::-;5060:232;;;;5171:1;:11;;;5060:232;;;;5201:4;5060:232;;;;5224:1;:15;;;5060:232;;;;5258:18;5274:1;5258:15;:18::i;:::-;5060:232;;;5044:10;5055:1;5044:13;;;;;;;;:::i;:::-;;;;;;:248;;;;4861:443;;;4855:4;;;;;:::i;:::-;;;;4818:486;;;-1:-1:-1;;5338:12:0;;5384;;5421:138;;;;;;;;5338:12;5445:7;;;5421:138;;;;5338:12;5468:18;5421:138;;;;5502:14;;5421:138;;;;;;;5532:16;;5421:138;;;;4500:1067;;-1:-1:-1;;;;;5338:12:0;;;;5384;;;;;-1:-1:-1;5421:138:0;-1:-1:-1;4500:1067:0;-1:-1:-1;4500:1067:0:o;6619:96::-;3623:7;;;;;:30;;-1:-1:-1;3648:5:0;;-1:-1:-1;;;;;3648:5:0;3634:10;:19;3623:30;3615:62;;;;-1:-1:-1;;;3615:62:0;;7320:2:1;3615:62:0;;;7302:21:1;7359:2;7339:18;;;7332:30;-1:-1:-1;;;7378:18:1;;;7371:49;7437:18;;3615:62:0;7118:343:1;3615:62:0;6677:30:::1;6696:10;6677:18;:30::i;:::-;6619:96::o:0;7564:273::-;3503:5;;-1:-1:-1;;;;;3503:5:0;3489:10;:19;3481:72;;;;-1:-1:-1;;;3481:72:0;;;;;;;:::i;:::-;7699:18:::1;:40:::0;;;;7750:14:::1;:32:::0;7793:16:::1;:36:::0;7564:273::o;7090:228::-;3503:5;;-1:-1:-1;;;;;3503:5:0;3489:10;:19;3481:72;;;;-1:-1:-1;;;3481:72:0;;;;;;;:::i;:::-;7159:13:::1;7175:17:::0;;;:8:::1;:17;::::0;;;;;7221:8:::1;:15:::0;;7175:17;;7159:13;7175:17;;7221:15;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;7247:12:::1;::::0;7221:15:::1;::::0;;::::1;;7292:8:::0;;7247:63:::1;::::0;-1:-1:-1;;;7247:63:0;;7285:4:::1;7247:63;::::0;::::1;4214:34:1::0;-1:-1:-1;;;;;7292:8:0;;::::1;4264:18:1::0;;;4257:43;4316:18;;;4309:34;;;7221:15:0;;-1:-1:-1;7247:12:0;;::::1;::::0;:29:::1;::::0;4149:18:1;;7247:63:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7148:170;;7090:228:::0;:::o;5575:468::-;3623:7;;;;;:30;;-1:-1:-1;3648:5:0;;-1:-1:-1;;;;;3648:5:0;3634:10;:19;3623:30;3615:62;;;;-1:-1:-1;;;3615:62:0;;7320:2:1;3615:62:0;;;7302:21:1;7359:2;7339:18;;;7332:30;-1:-1:-1;;;7378:18:1;;;7371:49;7437:18;;3615:62:0;7118:343:1;3615:62:0;5649:12:::1;::::0;:33:::1;::::0;-1:-1:-1;;;5649:33:0;;::::1;::::0;::::1;9185:25:1::0;;;5694:4:0::1;::::0;-1:-1:-1;;;;;5649:12:0::1;::::0;:24:::1;::::0;9158:18:1;;5649:33:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5649:50:0::1;;5641:104;;;::::0;-1:-1:-1;;;5641:104:0;;7668:2:1;5641:104:0::1;::::0;::::1;7650:21:1::0;7707:2;7687:18;;;7680:30;7746:34;7726:18;;;7719:62;-1:-1:-1;;;7797:18:1;;;7790:39;7846:19;;5641:104:0::1;7466:405:1::0;5641:104:0::1;5756:12;::::0;:65:::1;::::0;-1:-1:-1;;;5756:65:0;;5786:10:::1;5756:65;::::0;::::1;4214:34:1::0;5806:4:0::1;4264:18:1::0;;;4257:43;4316:18;;;4309:34;;;-1:-1:-1;;;;;5756:12:0;;::::1;::::0;:29:::1;::::0;4149:18:1;;5756:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5849:63:0::1;::::0;;::::1;::::0;::::1;::::0;;5855:10:::1;5849:63:::0;;;::::1;::::0;;::::1;::::0;;;5876:15:::1;5849:63:::0;;;;;;;;;;;;5832:14:::1;5849:63:::0;;;;;;5943:8:::1;:15:::0;;5923:17;;;:8:::1;:17:::0;;;;;:35;;;5969:16:::1;::::0;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;5969:16:0;;;::::1;-1:-1:-1::0;;;;;;5969:16:0;;::::1;::::0;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5996:25;;;:13:::1;:25:::0;;;;;:39;;;;::::1;::::0;;;;;;;;::::1;::::0;;;;-1:-1:-1;;5575:468:0:o;6902:180::-;3503:5;;-1:-1:-1;;;;;3503:5:0;3489:10;:19;3481:72;;;;-1:-1:-1;;;3481:72:0;;;;;;;:::i;:::-;6987:38:::1;::::0;-1:-1:-1;;;6987:38:0;;7019:4:::1;6987:38;::::0;::::1;3912:51:1::0;6969:15:0::1;::::0;-1:-1:-1;;;;;6987:23:0;::::1;::::0;::::1;::::0;3885:18:1;;6987:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7059:5;::::0;7036:38:::1;::::0;-1:-1:-1;;;7036:38:0;;-1:-1:-1;;;;;7059:5:0;;::::1;7036:38;::::0;::::1;4528:51:1::0;4595:18;;;4588:34;;;6969:56:0;;-1:-1:-1;7036:22:0;::::1;::::0;::::1;::::0;4501:18:1;;7036:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8467:598::-:0;8530:17;;8568:392;-1:-1:-1;;;;;8592:21:0;;;;;;:13;:21;;;;;:28;8588:32;;8568:392;;;-1:-1:-1;;;;;8682:21:0;;8657:13;8682:21;;;:13;:21;;;;;:24;;8673:8;;8657:13;;8704:1;;8682:24;;;;;;:::i;:::-;;;;;;;;;8673:34;;;;;;;;;;;;8657:50;;8723:12;8737;8753:28;8765:8;8774:5;8765:15;;;;;;;;:::i;:::-;;;;;;;;;;;8753:11;:28::i;:::-;8722:59;;-1:-1:-1;8722:59:0;-1:-1:-1;8800:8:0;;8796:153;;8829:17;8842:4;8829:17;;:::i;:::-;;;8929:4;8897:8;8906:5;8897:15;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;;:36;;;;:::i;:::-;8865:8;8874:5;8865:15;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;:68;;;;8796:153;8628:332;;;8622:4;;;;;:::i;:::-;;;;8568:392;;;-1:-1:-1;8976:13:0;;8972:86;;9006:12;;:40;;-1:-1:-1;;;9006:40:0;;-1:-1:-1;;;;;4546:32:1;;;9006:40:0;;;4528:51:1;4595:18;;;4588:34;;;9006:12:0;;;;:21;;4501:18:1;;9006:40:0;4354:274:1;7873:586:0;7953:10;;8002:202;-1:-1:-1;;;;;8022:21:0;;;;;;:13;:21;;;;;:28;8014:36;;8002:202;;;-1:-1:-1;;;;;8080:21:0;;;;;;:13;:21;;;;;:28;;8112:7;;8080:21;8102:5;;8080:28;;;;;;:::i;:::-;;;;;;;;;:39;8076:116;;;8148:4;8140:12;;8171:5;;8076:116;8052:7;;;;:::i;:::-;;;;8002:202;;;8220:5;8216:236;;;-1:-1:-1;;;;;8246:21:0;;;;;;:13;:21;;;;;:28;8277:1;-1:-1:-1;8242:157:0;;;-1:-1:-1;;;;;8330:21:0;;;;;;:13;:21;;;;;8352:28;;:30;;8381:1;;8352:30;:::i;:::-;8330:53;;;;;;;;:::i;:::-;;;;;;;;;8299:13;:21;8313:6;-1:-1:-1;;;;;8299:21:0;-1:-1:-1;;;;;8299:21:0;;;;;;;;;;;;8321:5;8299:28;;;;;;;;:::i;:::-;;;;;;;;;;:84;8242:157;-1:-1:-1;;;;;8413:21:0;;;;;;:13;:21;;;;;:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8216:236;7942:517;;7873:586;;:::o;9870:993::-;10023:23;;;;9940:7;;;;9993:15;;10023:27;10019:97;;-1:-1:-1;10081:23:0;;;;10019:97;10171:16;;10146:21;;;;10132:35;;:11;:35;:::i;:::-;:55;10128:702;;10228:21;;;;10268:9;;:25;-1:-1:-1;10264:220:0;;;-1:-1:-1;10330:9:0;;10264:220;;;10393:13;10365:11;:25;;;:41;10361:123;;;-1:-1:-1;10443:25:0;;;;10361:123;10535:18;;10504:27;10518:13;10504:11;:27;:::i;:::-;:49;10500:319;;10630:18;;10574:21;;10599:27;10613:13;10599:11;:27;:::i;:::-;10598:50;;;;:::i;:::-;10574:74;;10713:14;;10697:13;:30;;;;:::i;:::-;10766:18;;10750:34;;:13;:34;:::i;:::-;10667:136;;;;;;;9870:993;;;:::o;10500:319::-;10189:641;10128:702;-1:-1:-1;10850:1:0;;;;-1:-1:-1;9870:993:0;-1:-1:-1;;9870:993:0:o;9073:789::-;9147:7;9215:16;;9191:11;:21;;;9173:15;:39;;;;:::i;:::-;:58;9169:158;;;9293:21;;;;9275:39;;:15;:39;:::i;:::-;9255:16;;:60;;;;:::i;:::-;9248:67;9073:789;-1:-1:-1;;9073:789:0:o;9169:158::-;9363:21;;;;9399:9;;:25;-1:-1:-1;9395:204:0;;;-1:-1:-1;9457:9:0;;9395:204;;;9516:13;9488:11;:25;;;:41;9484:115;;;-1:-1:-1;9562:25:0;;;;9484:115;9650:18;;9615:31;9633:13;9615:15;:31;:::i;:::-;:53;9611:170;;9750:18;;9715:31;9733:13;9715:15;:31;:::i;:::-;9714:54;;;;:::i;:::-;9692:18;;:77;;;;:::i;:::-;9685:84;9073:789;-1:-1:-1;;;9073:789:0:o;9611:170::-;9822:31;9840:13;9822:15;:31;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:1016::-;617:6;625;633;641;694:3;682:9;673:7;669:23;665:33;662:53;;;711:1;708;701:12;662:53;750:9;737:23;769:31;794:5;769:31;:::i;:::-;819:5;-1:-1:-1;876:2:1;861:18;;848:32;889:33;848:32;889:33;:::i;:::-;941:7;-1:-1:-1;995:2:1;980:18;;967:32;;-1:-1:-1;1050:2:1;1035:18;;1022:32;1077:18;1066:30;;1063:50;;;1109:1;1106;1099:12;1063:50;1132:22;;1185:4;1177:13;;1173:27;-1:-1:-1;1163:55:1;;1214:1;1211;1204:12;1163:55;1250:2;1237:16;1275:48;1291:31;1319:2;1291:31;:::i;:::-;1275:48;:::i;:::-;1346:2;1339:5;1332:17;1386:7;1381:2;1376;1372;1368:11;1364:20;1361:33;1358:53;;;1407:1;1404;1397:12;1358:53;1462:2;1457;1453;1449:11;1444:2;1437:5;1433:14;1420:45;1506:1;1501:2;1496;1489:5;1485:14;1481:23;1474:34;1527:5;1517:15;;;;;522:1016;;;;;;;:::o;1543:241::-;1599:6;1652:2;1640:9;1631:7;1627:23;1623:32;1620:52;;;1668:1;1665;1658:12;1620:52;1707:9;1694:23;1726:28;1748:5;1726:28;:::i;1789:245::-;1856:6;1909:2;1897:9;1888:7;1884:23;1880:32;1877:52;;;1925:1;1922;1915:12;1877:52;1957:9;1951:16;1976:28;1998:5;1976:28;:::i;2039:635::-;2119:6;2172:2;2160:9;2151:7;2147:23;2143:32;2140:52;;;2188:1;2185;2178:12;2140:52;2221:9;2215:16;2254:18;2246:6;2243:30;2240:50;;;2286:1;2283;2276:12;2240:50;2309:22;;2362:4;2354:13;;2350:27;-1:-1:-1;2340:55:1;;2391:1;2388;2381:12;2340:55;2420:2;2414:9;2445:48;2461:31;2489:2;2461:31;:::i;2445:48::-;2516:2;2509:5;2502:17;2556:7;2551:2;2546;2542;2538:11;2534:20;2531:33;2528:53;;;2577:1;2574;2567:12;2528:53;2590:54;2641:2;2636;2629:5;2625:14;2620:2;2616;2612:11;2590:54;:::i;:::-;2663:5;2039:635;-1:-1:-1;;;;;2039:635:1:o;2679:180::-;2738:6;2791:2;2779:9;2770:7;2766:23;2762:32;2759:52;;;2807:1;2804;2797:12;2759:52;-1:-1:-1;2830:23:1;;2679:180;-1:-1:-1;2679:180:1:o;2864:184::-;2934:6;2987:2;2975:9;2966:7;2962:23;2958:32;2955:52;;;3003:1;3000;2993:12;2955:52;-1:-1:-1;3026:16:1;;2864:184;-1:-1:-1;2864:184:1:o;3053:316::-;3130:6;3138;3146;3199:2;3187:9;3178:7;3174:23;3170:32;3167:52;;;3215:1;3212;3205:12;3167:52;-1:-1:-1;;3238:23:1;;;3308:2;3293:18;;3280:32;;-1:-1:-1;3359:2:1;3344:18;;;3331:32;;3053:316;-1:-1:-1;3053:316:1:o;4633:1919::-;5000:3;5053:21;;;5123:13;;5026:18;;;5145:22;;;-1:-1:-1;;5000:3:1;5186;5269:1;5265:14;;;5250:30;;5246:39;;;5205:18;;;;5304:4;5331:15;;;-1:-1:-1;5374:971:1;5388:6;5385:1;5382:13;5374:971;;;5481:3;5477:8;5465:9;5457:6;5453:22;5449:37;5444:3;5437:50;5516:6;5510:13;5546:4;5584:2;5578:9;5570:6;5563:25;5635:2;5631;5627:11;5621:18;5676:2;5671;5663:6;5659:15;5652:27;5714:12;5708:19;5764:8;5759:2;5751:6;5747:15;5740:33;5786:71;5848:8;5843:2;5835:6;5831:15;5826:2;5812:12;5808:21;5786:71;:::i;:::-;5880:4;5927:11;;;5921:18;5904:15;;;5897:43;5963:4;6010:11;;;6004:18;5987:15;;;5980:43;6046:4;6093:11;;;6087:18;6070:15;;;6063:43;6129:4;6176:11;;;6170:18;6153:15;;;6146:43;;;;-1:-1:-1;;6255:2:1;6232:17;-1:-1:-1;;6228:31:1;6216:44;;;6212:53;;;6323:12;;;;6288:15;;;;5410:1;5403:9;5374:971;;;5378:3;;6362:6;6354:14;;6377:46;6419:2;6408:9;6404:18;6396:6;-1:-1:-1;;;;;3440:31:1;3428:44;;3374:104;6377:46;;;;;;6432:48;6474:4;6463:9;6459:20;6451:6;-1:-1:-1;;;;;3440:31:1;3428:44;;3374:104;6432:48;3572:12;;3565:20;3558:28;6540:4;6525:20;;;3546:41;;;;3636:4;3625:16;;3619:23;3603:14;;;3596:47;3692:4;3681:16;;3675:23;3659:14;;;3652:47;3737:16;;3731:23;3715:14;;;3708:47;6489:57;3483:278;7876:404;8078:2;8060:21;;;8117:2;8097:18;;;8090:30;8156:34;8151:2;8136:18;;8129:62;-1:-1:-1;;;8222:2:1;8207:18;;8200:38;8270:3;8255:19;;7876:404::o;9221:275::-;9292:2;9286:9;9357:2;9338:13;;-1:-1:-1;;9334:27:1;9322:40;;9392:18;9377:34;;9413:22;;;9374:62;9371:88;;;9439:18;;:::i;:::-;9475:2;9468:22;9221:275;;-1:-1:-1;9221:275:1:o;9501:186::-;9549:4;9582:18;9574:6;9571:30;9568:56;;;9604:18;;:::i;:::-;-1:-1:-1;9670:2:1;9649:15;-1:-1:-1;;9645:29:1;9676:4;9641:40;;9501:186::o;9692:128::-;9732:3;9763:1;9759:6;9756:1;9753:13;9750:39;;;9769:18;;:::i;:::-;-1:-1:-1;9805:9:1;;9692:128::o;9825:120::-;9865:1;9891;9881:35;;9896:18;;:::i;:::-;-1:-1:-1;9930:9:1;;9825:120::o;9950:168::-;9990:7;10056:1;10052;10048:6;10044:14;10041:1;10038:21;10033:1;10026:9;10019:17;10015:45;10012:71;;;10063:18;;:::i;:::-;-1:-1:-1;10103:9:1;;9950:168::o;10123:125::-;10163:4;10191:1;10188;10185:8;10182:34;;;10196:18;;:::i;:::-;-1:-1:-1;10233:9:1;;10123:125::o;10253:258::-;10325:1;10335:113;10349:6;10346:1;10343:13;10335:113;;;10425:11;;;10419:18;10406:11;;;10399:39;10371:2;10364:10;10335:113;;;10466:6;10463:1;10460:13;10457:48;;;-1:-1:-1;;10501:1:1;10483:16;;10476:27;10253:258::o;10516:135::-;10555:3;-1:-1:-1;;10576:17:1;;10573:43;;;10596:18;;:::i;:::-;-1:-1:-1;10643:1:1;10632:13;;10516:135::o;10656:112::-;10688:1;10714;10704:35;;10719:18;;:::i;:::-;-1:-1:-1;10753:9:1;;10656:112::o;10773:127::-;10834:10;10829:3;10825:20;10822:1;10815:31;10865:4;10862:1;10855:15;10889:4;10886:1;10879:15;10905:127;10966:10;10961:3;10957:20;10954:1;10947:31;10997:4;10994:1;10987:15;11021:4;11018:1;11011:15;11037:127;11098:10;11093:3;11089:20;11086:1;11079:31;11129:4;11126:1;11119:15;11153:4;11150:1;11143:15;11169:127;11230:10;11225:3;11221:20;11218:1;11211:31;11261:4;11258:1;11251:15;11285:4;11282:1;11275:15;11301:127;11362:10;11357:3;11353:20;11350:1;11343:31;11393:4;11390:1;11383:15;11417:4;11414:1;11407:15;11433:131;-1:-1:-1;;;;;11508:31:1;;11498:42;;11488:70;;11554:1;11551;11544:12;11488:70;11433:131;:::o;11569:118::-;11655:5;11648:13;11641:21;11634:5;11631:32;11621:60;;11677:1;11674;11667:12
Swarm Source
ipfs://9e372afec0d8b599c9eac49b92680906323202ca49e850c0b4e2cc1524ff8e8b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.