Source Code
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,326 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| WITHDRAW | 23745072 | 118 days ago | IN | 0 ETH | 0.00030406 | ||||
| CLAIMREWARD | 22666193 | 269 days ago | IN | 0 ETH | 0.00016541 | ||||
| WITHDRAW | 22666164 | 269 days ago | IN | 0 ETH | 0.00044247 | ||||
| WITHDRAW | 20875937 | 519 days ago | IN | 0 ETH | 0.00095164 | ||||
| CLAIMREWARD | 20798546 | 530 days ago | IN | 0 ETH | 0.0012342 | ||||
| CLAIMREWARD | 20555986 | 564 days ago | IN | 0 ETH | 0.00013004 | ||||
| CLAIMREWARD | 20555984 | 564 days ago | IN | 0 ETH | 0.00012928 | ||||
| WITHDRAW | 19699752 | 684 days ago | IN | 0 ETH | 0.00102625 | ||||
| CLAIMREWARD | 19699752 | 684 days ago | IN | 0 ETH | 0.00086715 | ||||
| CLAIMREWARD | 19699739 | 684 days ago | IN | 0 ETH | 0.00078326 | ||||
| WITHDRAW | 17130319 | 1044 days ago | IN | 0 ETH | 0.0039759 | ||||
| CLAIMREWARD | 17130311 | 1044 days ago | IN | 0 ETH | 0.00318304 | ||||
| CLAIMREWARD | 16855640 | 1083 days ago | IN | 0 ETH | 0.00200683 | ||||
| WITHDRAW | 16723972 | 1101 days ago | IN | 0 ETH | 0.00181248 | ||||
| STAKE | 16723952 | 1101 days ago | IN | 0 ETH | 0.00337552 | ||||
| WITHDRAW | 16580902 | 1121 days ago | IN | 0 ETH | 0.00345354 | ||||
| CLAIMREWARD | 16580900 | 1121 days ago | IN | 0 ETH | 0.00285179 | ||||
| STAKE | 16554885 | 1125 days ago | IN | 0 ETH | 0.00240989 | ||||
| WITHDRAW | 16104737 | 1188 days ago | IN | 0 ETH | 0.00292994 | ||||
| CLAIMREWARD | 16104728 | 1188 days ago | IN | 0 ETH | 0.00335988 | ||||
| STAKE | 15905085 | 1216 days ago | IN | 0 ETH | 0.00170739 | ||||
| CLAIMREWARD | 15905072 | 1216 days ago | IN | 0 ETH | 0.00123785 | ||||
| WITHDRAW | 15763123 | 1236 days ago | IN | 0 ETH | 0.00146497 | ||||
| CLAIMREWARD | 15727350 | 1241 days ago | IN | 0 ETH | 0.00236678 | ||||
| CLAIMREWARD | 15683725 | 1247 days ago | IN | 0 ETH | 0.00202121 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Stake
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-08-29
*/
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.0;
// ----------------------------------------------------------------------------
// 'SWFL' Staking smart contract
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// SafeMath library
// ----------------------------------------------------------------------------
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
function ceil(uint a, uint m) internal pure returns (uint r) {
return (a + m - 1) / m * m;
}
}
// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
address payable public owner;
event OwnershipTransferred(address indexed _from, address indexed _to);
constructor() public {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
function transferOwnership(address payable _newOwner) public onlyOwner {
owner = _newOwner;
emit OwnershipTransferred(msg.sender, _newOwner);
}
}
// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// ----------------------------------------------------------------------------
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address tokenOwner) external view returns (uint256 balance);
function allowance(address tokenOwner, address spender) external view returns (uint256 remaining);
function transfer(address to, uint256 tokens) external returns (bool success);
function approve(address spender, uint256 tokens) external returns (bool success);
function transferFrom(address from, address to, uint256 tokens) external returns (bool success);
function burnTokens(uint256 _amount) external;
event Transfer(address indexed from, address indexed to, uint256 tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}
// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------
contract Stake is Owned {
using SafeMath for uint256;
address public SWFL = 0xBa21Ef4c9f433Ede00badEFcC2754B8E74bd538A;
uint256 public totalStakes = 0;
uint256 stakingFee = 25; // 2.5%
uint256 unstakingFee = 25; // 2.5%
uint256 public totalDividends = 0;
uint256 private scaledRemainder = 0;
uint256 private scaling = uint256(10) ** 12;
uint public round = 1;
struct USER{
uint256 stakedTokens;
uint256 lastDividends;
uint256 fromTotalDividend;
uint round;
uint256 remainder;
}
mapping(address => USER) stakers;
mapping (uint => uint256) public payouts; // keeps record of each payout
event STAKED(address staker, uint256 tokens, uint256 stakingFee);
event UNSTAKED(address staker, uint256 tokens, uint256 unstakingFee);
event PAYOUT(uint256 round, uint256 tokens, address sender);
event CLAIMEDREWARD(address staker, uint256 reward);
// ------------------------------------------------------------------------
// Token holders can stake their tokens using this function
// @param tokens number of tokens to stake
// ------------------------------------------------------------------------
function STAKE(uint256 tokens) external {
require(IERC20(SWFL).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from user account");
uint256 _stakingFee = 0;
if(totalStakes > 0)
_stakingFee= (onePercent(tokens).mul(stakingFee)).div(10);
if(totalStakes > 0)
// distribute the staking fee accumulated before updating the user's stake
_addPayout(_stakingFee);
// add pending rewards to remainder to be claimed by user later, if there is any existing stake
uint256 owing = pendingReward(msg.sender);
stakers[msg.sender].remainder += owing;
stakers[msg.sender].stakedTokens = (tokens.sub(_stakingFee)).add(stakers[msg.sender].stakedTokens);
stakers[msg.sender].lastDividends = owing;
stakers[msg.sender].fromTotalDividend= totalDividends;
stakers[msg.sender].round = round;
totalStakes = totalStakes.add(tokens.sub(_stakingFee));
emit STAKED(msg.sender, tokens.sub(_stakingFee), _stakingFee);
}
// ------------------------------------------------------------------------
// Owners can send the funds to be distributed to stakers using this function
// @param tokens number of tokens to distribute
// ------------------------------------------------------------------------
function ADDFUNDS(uint256 tokens) external {
require(IERC20(SWFL).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from funder account");
_addPayout(tokens);
}
// ------------------------------------------------------------------------
// Private function to register payouts
// ------------------------------------------------------------------------
function _addPayout(uint256 tokens) private{
// divide the funds among the currently staked tokens
// scale the deposit and add the previous remainder
uint256 available = (tokens.mul(scaling)).add(scaledRemainder);
uint256 dividendPerToken = available.div(totalStakes);
scaledRemainder = available.mod(totalStakes);
totalDividends = totalDividends.add(dividendPerToken);
payouts[round] = payouts[round-1].add(dividendPerToken);
emit PAYOUT(round, tokens, msg.sender);
round++;
}
// ------------------------------------------------------------------------
// Stakers can claim their pending rewards using this function
// ------------------------------------------------------------------------
function CLAIMREWARD() public {
if(totalDividends > stakers[msg.sender].fromTotalDividend){
uint256 owing = pendingReward(msg.sender);
owing = owing.add(stakers[msg.sender].remainder);
stakers[msg.sender].remainder = 0;
require(IERC20(SWFL).transfer(msg.sender,owing), "ERROR: error in sending reward from contract");
emit CLAIMEDREWARD(msg.sender, owing);
stakers[msg.sender].lastDividends = owing; // unscaled
stakers[msg.sender].round = round; // update the round
stakers[msg.sender].fromTotalDividend = totalDividends; // scaled
}
}
// ------------------------------------------------------------------------
// Get the pending rewards of the staker
// @param _staker the address of the staker
// ------------------------------------------------------------------------
function pendingReward(address staker) private returns (uint256) {
uint256 amount = ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
stakers[staker].remainder += ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
return amount;
}
function getPendingReward(address staker) public view returns(uint256 _pendingReward) {
uint256 amount = ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
amount += ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
return (amount + stakers[staker].remainder);
}
// ------------------------------------------------------------------------
// Stakers can un stake the staked tokens using this function
// @param tokens the number of tokens to withdraw
// ------------------------------------------------------------------------
function WITHDRAW(uint256 tokens) external {
require(stakers[msg.sender].stakedTokens >= tokens && tokens > 0, "Invalid token amount to withdraw");
uint256 _unstakingFee = (onePercent(tokens).mul(unstakingFee)).div(10);
// add pending rewards to remainder to be claimed by user later, if there is any existing stake
uint256 owing = pendingReward(msg.sender);
stakers[msg.sender].remainder += owing;
require(IERC20(SWFL).transfer(msg.sender, tokens.sub(_unstakingFee)), "Error in un-staking tokens");
stakers[msg.sender].stakedTokens = stakers[msg.sender].stakedTokens.sub(tokens);
stakers[msg.sender].lastDividends = owing;
stakers[msg.sender].fromTotalDividend= totalDividends;
stakers[msg.sender].round = round;
totalStakes = totalStakes.sub(tokens);
if(totalStakes > 0)
// distribute the un staking fee accumulated after updating the user's stake
_addPayout(_unstakingFee);
emit UNSTAKED(msg.sender, tokens.sub(_unstakingFee), _unstakingFee);
}
// ------------------------------------------------------------------------
// Private function to calculate 1% percentage
// ------------------------------------------------------------------------
function onePercent(uint256 _tokens) private pure returns (uint256){
uint256 roundValue = _tokens.ceil(100);
uint onePercentofTokens = roundValue.mul(100).div(100 * 10**uint(2));
return onePercentofTokens;
}
// ------------------------------------------------------------------------
// Get the number of tokens staked by a staker
// @param _staker the address of the staker
// ------------------------------------------------------------------------
function yourStakedSWFL(address staker) external view returns(uint256 stakedSWFL){
return stakers[staker].stakedTokens;
}
// ------------------------------------------------------------------------
// Get the SWFL balance of the token holder
// @param user the address of the token holder
// ------------------------------------------------------------------------
function yourSWFLBalance(address user) external view returns(uint256 SWFLBalance){
return IERC20(SWFL).balanceOf(user);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"CLAIMEDREWARD","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PAYOUT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakingFee","type":"uint256"}],"name":"STAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakingFee","type":"uint256"}],"name":"UNSTAKED","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CLAIMREWARD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SWFL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"WITHDRAW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPendingReward","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"yourSWFLBalance","outputs":[{"internalType":"uint256","name":"SWFLBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"yourStakedSWFL","outputs":[{"internalType":"uint256","name":"stakedSWFL","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052600180546001600160a01b03191673ba21ef4c9f433ede00badefcc2754b8e74bd538a1781556000600281905560196003819055600455600581905560065564e8d4a5100060075560085534801561005b57600080fd5b50600080546001600160a01b031916331790556110648061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063bf9befb111610066578063bf9befb1146101ea578063ca84d591146101f2578063f2fde38b1461020f578063f55487ac14610235576100ea565b80638da5cb5b146101bd578063997664d7146101c5578063b53d6c24146101cd576100ea565b80632c75bcda116100c85780632c75bcda1461014a57806333de3d17146101695780634baf782e1461018f5780634df9d6ba14610197576100ea565b80630e4dbb4c146100ef578063146ca5311461011357806329652e861461012d575b600080fd5b6100f761025b565b604080516001600160a01b039092168252519081900360200190f35b61011b61026a565b60408051918252519081900360200190f35b61011b6004803603602081101561014357600080fd5b5035610270565b6101676004803603602081101561016057600080fd5b5035610282565b005b61011b6004803603602081101561017f57600080fd5b50356001600160a01b03166104e1565b6101676104fc565b61011b600480360360208110156101ad57600080fd5b50356001600160a01b031661067c565b6100f7610746565b61011b610755565b610167600480360360208110156101e357600080fd5b503561075b565b61011b610828565b6101676004803603602081101561020857600080fd5b503561082e565b6101676004803603602081101561022557600080fd5b50356001600160a01b03166109cd565b61011b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a2f565b6001546001600160a01b031681565b60085481565b600a6020526000908152604090205481565b3360009081526009602052604090205481118015906102a15750600081115b6102f2576040805162461bcd60e51b815260206004820181905260248201527f496e76616c696420746f6b656e20616d6f756e7420746f207769746864726177604482015290519081900360640190fd5b6000610314600a61030e60045461030886610ab2565b90610add565b90610b3f565b9050600061032133610b81565b3360008181526009602052604090206004018054830190556001549192506001600160a01b039091169063a9059cbb9061035b8686610c4d565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156103a157600080fd5b505af11580156103b5573d6000803e3d6000fd5b505050506040513d60208110156103cb57600080fd5b505161041e576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b336000908152600960205260409020546104389084610c4d565b33600090815260096020526040902090815560018101829055600554600280830191909155600854600390920191909155546104749084610c4d565b6002819055156104875761048782610c8f565b7faeb913af138cc126643912346d844a49a83761eb58fcfc9e571fc99e1b3d9fa2336104b38585610c4d565b604080516001600160a01b0390931683526020830191909152818101859052519081900360600190a1505050565b6001600160a01b031660009081526009602052604090205490565b33600090815260096020526040902060020154600554111561067a57600061052333610b81565b33600090815260096020526040902060040154909150610544908290610d74565b3360008181526009602090815260408083206004908101849055600154825163a9059cbb60e01b8152918201959095526024810186905290519495506001600160a01b039093169363a9059cbb93604480820194918390030190829087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b50516106165760405162461bcd60e51b815260040180806020018281038252602c815260200180610f84602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a1336000908152600960205260409020600181019190915560085460038201556005546002909101555b565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a909252822054600554929384936106cb93919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610716926103089190610c4d565b8161071d57fe5b6001600160a01b0394909416600090815260096020526040902060040154930601909101919050565b6000546001600160a01b031681565b60055481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156107b557600080fd5b505af11580156107c9573d6000803e3d6000fd5b505050506040513d60208110156107df57600080fd5b505161081c5760405162461bcd60e51b8152600401808060200182810382526030815260200180610fff6030913960400191505060405180910390fd5b61082581610c8f565b50565b60025481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b50516108ef5760405162461bcd60e51b815260040180806020018281038252602e815260200180610fd1602e913960400191505060405180910390fd5b600254600090156109115761090e600a61030e60035461030886610ab2565b90505b600254156109225761092281610c8f565b600061092d33610b81565b336000908152600960205260409020600481018054830190555490915061095e906109588585610c4d565b90610d74565b33600090815260096020526040902090815560018101829055600554600282015560085460039091015561099e6109958484610c4d565b60025490610d74565b6002557f99b6f4b247a06a3dbcda8d2244b818e254005608c2455221a00383939a119e7c336104b38585610c4d565b6000546001600160a01b031633146109e457600080fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015610a8057600080fd5b505afa158015610a94573d6000803e3d6000fd5b505050506040513d6020811015610aaa57600080fd5b505192915050565b600080610ac0836064610dce565b90506000610ad561271061030e846064610add565b949350505050565b600082610aec57506000610b39565b82820282848281610af957fe5b0414610b365760405162461bcd60e51b8152600401808060200182810382526021815260200180610fb06021913960400191505060405180910390fd5b90505b92915050565b6000610b3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de8565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a90925282205460055492938493610bd093919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610c1b926103089190610c4d565b81610c2257fe5b6001600160a01b03949094166000908152600960205260409020600401805491909406019092555090565b6000610b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e8a565b6000610cac60065461095860075485610add90919063ffffffff16565b90506000610cc560025483610b3f90919063ffffffff16565b9050610cdc60025483610ee490919063ffffffff16565b600655600554610cec9082610d74565b600555600854600019016000908152600a6020526040902054610d0f9082610d74565b600880546000908152600a602090815260409182902093909355905481519081529182018590523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a1505060088054600101905550565b600082820183811015610b36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818260018486010381610ddf57fe5b04029392505050565b60008183610e745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e39578181015183820152602001610e21565b50505050905090810190601f168015610e665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e8057fe5b0495945050505050565b60008184841115610edc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b505050900390565b6000610b3683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060008183610f705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b50828481610f7a57fe5b0694935050505056fe4552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2075736572206163636f756e74546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a2646970667358221220c8eca0ecfe48a7e8aea5f141125c65f91982d3a36385500119c9ccb8605153b164736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063bf9befb111610066578063bf9befb1146101ea578063ca84d591146101f2578063f2fde38b1461020f578063f55487ac14610235576100ea565b80638da5cb5b146101bd578063997664d7146101c5578063b53d6c24146101cd576100ea565b80632c75bcda116100c85780632c75bcda1461014a57806333de3d17146101695780634baf782e1461018f5780634df9d6ba14610197576100ea565b80630e4dbb4c146100ef578063146ca5311461011357806329652e861461012d575b600080fd5b6100f761025b565b604080516001600160a01b039092168252519081900360200190f35b61011b61026a565b60408051918252519081900360200190f35b61011b6004803603602081101561014357600080fd5b5035610270565b6101676004803603602081101561016057600080fd5b5035610282565b005b61011b6004803603602081101561017f57600080fd5b50356001600160a01b03166104e1565b6101676104fc565b61011b600480360360208110156101ad57600080fd5b50356001600160a01b031661067c565b6100f7610746565b61011b610755565b610167600480360360208110156101e357600080fd5b503561075b565b61011b610828565b6101676004803603602081101561020857600080fd5b503561082e565b6101676004803603602081101561022557600080fd5b50356001600160a01b03166109cd565b61011b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a2f565b6001546001600160a01b031681565b60085481565b600a6020526000908152604090205481565b3360009081526009602052604090205481118015906102a15750600081115b6102f2576040805162461bcd60e51b815260206004820181905260248201527f496e76616c696420746f6b656e20616d6f756e7420746f207769746864726177604482015290519081900360640190fd5b6000610314600a61030e60045461030886610ab2565b90610add565b90610b3f565b9050600061032133610b81565b3360008181526009602052604090206004018054830190556001549192506001600160a01b039091169063a9059cbb9061035b8686610c4d565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156103a157600080fd5b505af11580156103b5573d6000803e3d6000fd5b505050506040513d60208110156103cb57600080fd5b505161041e576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b336000908152600960205260409020546104389084610c4d565b33600090815260096020526040902090815560018101829055600554600280830191909155600854600390920191909155546104749084610c4d565b6002819055156104875761048782610c8f565b7faeb913af138cc126643912346d844a49a83761eb58fcfc9e571fc99e1b3d9fa2336104b38585610c4d565b604080516001600160a01b0390931683526020830191909152818101859052519081900360600190a1505050565b6001600160a01b031660009081526009602052604090205490565b33600090815260096020526040902060020154600554111561067a57600061052333610b81565b33600090815260096020526040902060040154909150610544908290610d74565b3360008181526009602090815260408083206004908101849055600154825163a9059cbb60e01b8152918201959095526024810186905290519495506001600160a01b039093169363a9059cbb93604480820194918390030190829087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b50516106165760405162461bcd60e51b815260040180806020018281038252602c815260200180610f84602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a1336000908152600960205260409020600181019190915560085460038201556005546002909101555b565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a909252822054600554929384936106cb93919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610716926103089190610c4d565b8161071d57fe5b6001600160a01b0394909416600090815260096020526040902060040154930601909101919050565b6000546001600160a01b031681565b60055481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156107b557600080fd5b505af11580156107c9573d6000803e3d6000fd5b505050506040513d60208110156107df57600080fd5b505161081c5760405162461bcd60e51b8152600401808060200182810382526030815260200180610fff6030913960400191505060405180910390fd5b61082581610c8f565b50565b60025481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b50516108ef5760405162461bcd60e51b815260040180806020018281038252602e815260200180610fd1602e913960400191505060405180910390fd5b600254600090156109115761090e600a61030e60035461030886610ab2565b90505b600254156109225761092281610c8f565b600061092d33610b81565b336000908152600960205260409020600481018054830190555490915061095e906109588585610c4d565b90610d74565b33600090815260096020526040902090815560018101829055600554600282015560085460039091015561099e6109958484610c4d565b60025490610d74565b6002557f99b6f4b247a06a3dbcda8d2244b818e254005608c2455221a00383939a119e7c336104b38585610c4d565b6000546001600160a01b031633146109e457600080fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015610a8057600080fd5b505afa158015610a94573d6000803e3d6000fd5b505050506040513d6020811015610aaa57600080fd5b505192915050565b600080610ac0836064610dce565b90506000610ad561271061030e846064610add565b949350505050565b600082610aec57506000610b39565b82820282848281610af957fe5b0414610b365760405162461bcd60e51b8152600401808060200182810382526021815260200180610fb06021913960400191505060405180910390fd5b90505b92915050565b6000610b3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de8565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a90925282205460055492938493610bd093919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610c1b926103089190610c4d565b81610c2257fe5b6001600160a01b03949094166000908152600960205260409020600401805491909406019092555090565b6000610b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e8a565b6000610cac60065461095860075485610add90919063ffffffff16565b90506000610cc560025483610b3f90919063ffffffff16565b9050610cdc60025483610ee490919063ffffffff16565b600655600554610cec9082610d74565b600555600854600019016000908152600a6020526040902054610d0f9082610d74565b600880546000908152600a602090815260409182902093909355905481519081529182018590523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a1505060088054600101905550565b600082820183811015610b36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818260018486010381610ddf57fe5b04029392505050565b60008183610e745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e39578181015183820152602001610e21565b50505050905090810190601f168015610e665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e8057fe5b0495945050505050565b60008184841115610edc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b505050900390565b6000610b3683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060008183610f705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b50828481610f7a57fe5b0694935050505056fe4552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2075736572206163636f756e74546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a2646970667358221220c8eca0ecfe48a7e8aea5f141125c65f91982d3a36385500119c9ccb8605153b164736f6c634300060c0033
Deployed Bytecode Sourcemap
7740:8550:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:64;;;:::i;:::-;;;;-1:-1:-1;;;;;7810:64:0;;;;;;;;;;;;;;8135:21;;;:::i;:::-;;;;;;;;;;;;;;;;8387:40;;;;;;;;;;;;;;;;-1:-1:-1;8387:40:0;;:::i;13818:1184::-;;;;;;;;;;;;;;;;-1:-1:-1;13818:1184:0;;:::i;:::-;;15742:135;;;;;;;;;;;;;;;;-1:-1:-1;15742:135:0;-1:-1:-1;;;;;15742:135:0;;:::i;11754:703::-;;;:::i;13116:406::-;;;;;;;;;;;;;;;;-1:-1:-1;13116:406:0;-1:-1:-1;;;;;13116:406:0;;:::i;6071:28::-;;;:::i;8003:33::-;;;:::i;10496:212::-;;;;;;;;;;;;;;;;-1:-1:-1;10496:212:0;;:::i;7887:30::-;;;:::i;9040:1146::-;;;;;;;;;;;;;;;;-1:-1:-1;9040:1146:0;;:::i;6339:166::-;;;;;;;;;;;;;;;;-1:-1:-1;6339:166:0;-1:-1:-1;;;;;6339:166:0;;:::i;16152:135::-;;;;;;;;;;;;;;;;-1:-1:-1;16152:135:0;-1:-1:-1;;;;;16152:135:0;;:::i;7810:64::-;;;-1:-1:-1;;;;;7810:64:0;;:::o;8135:21::-;;;;:::o;8387:40::-;;;;;;;;;;;;;:::o;13818:1184::-;13898:10;13890:19;;;;:7;:19;;;;;:32;:42;-1:-1:-1;13890:42:0;;;:56;;;13945:1;13936:6;:10;13890:56;13882:101;;;;;-1:-1:-1;;;13882:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:21;14028:46;14071:2;14029:36;14052:12;;14029:18;14040:6;14029:10;:18::i;:::-;:22;;:36::i;:::-;14028:42;;:46::i;:::-;14004:70;;14200:13;14216:25;14230:10;14216:13;:25::i;:::-;14260:10;14252:19;;;;:7;:19;;;;;:29;;:38;;;;;;-1:-1:-1;14334:4:0;14252:38;;-1:-1:-1;;;;;;14334:4:0;;;;14327:21;;14361:25;:6;14372:13;14361:10;:25::i;:::-;14327:60;;;;;;;;;;;;;-1:-1:-1;;;;;14327:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14327:60:0;14319:99;;;;;-1:-1:-1;;;14319:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14482:10;14474:19;;;;:7;:19;;;;;:32;:44;;14511:6;14474:36;:44::i;:::-;14447:10;14439:19;;;;:7;:19;;;;;:79;;;14529:33;;;:41;;;14620:14;;14581:37;;;;:53;;;;14674:5;;14645:25;;;;:34;;;;14714:11;:23;;14730:6;14714:15;:23::i;:::-;14700:11;:37;;;14761:15;14758:148;;14881:25;14892:13;14881:10;:25::i;:::-;14932:62;14941:10;14953:25;:6;14964:13;14953:10;:25::i;:::-;14932:62;;;-1:-1:-1;;;;;14932:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13818:1184;;;:::o;15742:135::-;-1:-1:-1;;;;;15841:15:0;15804:18;15841:15;;;:7;:15;;;;;:28;;15742:135::o;11754:703::-;11823:10;11815:19;;;;:7;:19;;;;;:37;;;11798:14;;:54;11795:655;;;11868:13;11884:25;11898:10;11884:13;:25::i;:::-;11960:10;11952:19;;;;:7;:19;;;;;:29;;;11868:41;;-1:-1:-1;11942:40:0;;11868:41;;11942:9;:40::i;:::-;12005:10;12029:1;11997:19;;;:7;:19;;;;;;;;:29;;;;:33;;;12070:4;;12063:39;;-1:-1:-1;;;12063:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12070:4:0;;;;12063:21;;:39;;;;;;;;;;;;;12070:4;12063:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12063:39:0;12055:96;;;;-1:-1:-1;;;12055:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12181:32;;;12195:10;12181:32;;;;;;;;;;;;;;;;;;;;;12246:10;12238:19;;;;:7;:19;;;;;:33;;;:41;;;;12334:5;;12306:25;;;:33;12414:14;;12374:37;;;;:54;11795:655;11754:703::o;13116:406::-;13328:7;;-1:-1:-1;;;;;13293:15:0;;13178:22;13293:15;;;:7;:15;;;;;;;;:28;;13260:21;;;;;-1:-1:-1;;13260:25:0;13252:34;;:7;:34;;;;;;13233:14;;13178:22;;;;13231:105;;13328:7;;13232:90;;13293:28;13233:54;;:18;:54::i;13231:105::-;13452:7;;-1:-1:-1;;;;;13419:15:0;;;;;;:7;:15;;;;;;;;:28;;13386:21;;;;;-1:-1:-1;;13386:25:0;13378:34;;:7;:34;;;;;;;13359:14;;13213:123;;-1:-1:-1;13452:7:0;;13358:90;;13359:54;;:14;:18;:54::i;13358:90::-;13357:102;;;;;-1:-1:-1;;;;;13488:15:0;;;;;;;;:7;:15;;;;;:25;;;13357:102;;13347:112;13479:34;;;;13116:406;-1:-1:-1;13116:406:0:o;6071:28::-;;;-1:-1:-1;;;;;6071:28:0;;:::o;8003:33::-;;;;:::o;10496:212::-;10565:4;;10558:60;;;-1:-1:-1;;;10558:60:0;;10584:10;10558:60;;;;10604:4;10558:60;;;;;;;;;;;;-1:-1:-1;;;;;10565:4:0;;;;10558:25;;:60;;;;;;;;;;;;;;;10565:4;;10558:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10558:60:0;10550:121;;;;-1:-1:-1;;;10550:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10682:18;10693:6;10682:10;:18::i;:::-;10496:212;:::o;7887:30::-;;;;:::o;9040:1146::-;9106:4;;9099:60;;;-1:-1:-1;;;9099:60:0;;9125:10;9099:60;;;;9145:4;9099:60;;;;;;;;;;;;-1:-1:-1;;;;;9106:4:0;;;;9099:25;;:60;;;;;;;;;;;;;;;9106:4;;9099:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9099:60:0;9091:119;;;;-1:-1:-1;;;9091:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9268:11;;9231:19;;9268:15;9265:90;;9311:44;9352:2;9312:34;9335:10;;9312:18;9323:6;9312:10;:18::i;9311:44::-;9298:57;;9265:90;9380:11;;:15;9377:144;;9498:23;9509:11;9498:10;:23::i;:::-;9651:13;9667:25;9681:10;9667:13;:25::i;:::-;9711:10;9703:19;;;;:7;:19;;;;;:29;;;:38;;;;;;9827:32;9651:41;;-1:-1:-1;9797:63:0;;9798:23;:6;9809:11;9798:10;:23::i;:::-;9797:29;;:63::i;:::-;9770:10;9762:19;;;;:7;:19;;;;;:98;;;9871:33;;;:41;;;9962:14;;9923:37;;;:53;10016:5;;9987:25;;;;:34;10056:40;10072:23;:6;10083:11;10072:10;:23::i;:::-;10056:11;;;:15;:40::i;:::-;10042:11;:54;10122:56;10129:10;10141:23;:6;10152:11;10141:10;:23::i;6339:166::-;6305:5;;-1:-1:-1;;;;;6305:5:0;6291:10;:19;6283:28;;;;;;6421:5:::1;:17:::0;;-1:-1:-1;;;;;;6421:17:0::1;-1:-1:-1::0;;;;;6421:17:0;::::1;::::0;;::::1;::::0;;6454:43:::1;::::0;6421:17;;6475:10:::1;::::0;6454:43:::1;::::0;6421:5;6454:43:::1;6339:166:::0;:::o;16152:135::-;16258:4;;16251:28;;;-1:-1:-1;;;16251:28:0;;-1:-1:-1;;;;;16251:28:0;;;;;;;;;16213:19;;16258:4;;;;;16251:22;;:28;;;;;;;;;;;;;;;16258:4;16251:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16251:28:0;;16152:135;-1:-1:-1;;16152:135:0:o;15228:239::-;15287:7;;15327:17;:7;15340:3;15327:12;:17::i;:::-;15306:38;-1:-1:-1;15355:23:0;15381:42;15405:17;15381:19;15306:38;15411:11;15381:14;:19::i;:42::-;15355:68;15228:239;-1:-1:-1;;;;15228:239:0:o;2644:471::-;2702:7;2947:6;2943:47;;-1:-1:-1;2977:1:0;2970:8;;2943:47;3014:5;;;3018:1;3014;:5;:1;3038:5;;;;;:10;3030:56;;;;-1:-1:-1;;;3030:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3106:1;-1:-1:-1;2644:471:0;;;;;:::o;3591:132::-;3649:7;3676:39;3680:1;3683;3676:39;;;;;;;;;;;;;;;;;:3;:39::i;12730:374::-;12921:7;;-1:-1:-1;;;;;12886:15:0;;12786:7;12886:15;;;:7;:15;;;;;;;;:28;;12853:21;;;;;-1:-1:-1;;12853:25:0;12845:34;;:7;:34;;;;;;12826:14;;12786:7;;;;12824:105;;12921:7;;12825:90;;12886:28;12826:54;;:18;:54::i;12824:105::-;13064:7;;-1:-1:-1;;;;;13031:15:0;;;;;;:7;:15;;;;;;;;:28;;12998:21;;;;;-1:-1:-1;;12998:25:0;12990:34;;:7;:34;;;;;;;12971:14;;12806:123;;-1:-1:-1;13064:7:0;;12970:90;;12971:54;;:14;:18;:54::i;12970:90::-;12969:102;;;;;-1:-1:-1;;;;;12940:15:0;;;;;;;;:7;:15;;;;;:25;;:131;;12969:102;;;;12940:131;;;;-1:-1:-1;13090:6:0;12730:374::o;1754:136::-;1812:7;1839:43;1843:1;1846;1839:43;;;;;;;;;;;;;;;;;:3;:43::i;10927:585::-;11105:17;11125:42;11151:15;;11126:19;11137:7;;11126:6;:10;;:19;;;;:::i;11125:42::-;11105:62;;11179:24;11206:26;11220:11;;11206:9;:13;;:26;;;;:::i;:::-;11179:53;;11261:26;11275:11;;11261:9;:13;;:26;;;;:::i;:::-;11243:15;:44;11325:14;;:36;;11344:16;11325:18;:36::i;:::-;11308:14;:53;11397:5;;-1:-1:-1;;11397:7:0;11389:16;;;;:7;:16;;;;;;:38;;11410:16;11389:20;:38::i;:::-;11380:5;;;11372:14;;;;:7;:14;;;;;;;;;:55;;;;11460:5;;11453:33;;;;;;;;;;;11475:10;11453:33;;;;;;;;;;;;;;-1:-1:-1;;11497:5:0;:7;;;;;;-1:-1:-1;10927:585:0:o;1290:181::-;1348:7;1380:5;;;1404:6;;;;1396:46;;;;;-1:-1:-1;;;1396:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5755:106;5808:6;5852:1;5848;5843;5839;5835;:5;:9;5834:15;;;;;;:19;;5755:106;-1:-1:-1;;;5755:106:0:o;4219:278::-;4305:7;4340:12;4333:5;4325:28;;;;-1:-1:-1;;;4325:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4364:9;4380:1;4376;:5;;;;;;;4219:278;-1:-1:-1;;;;;4219:278:0:o;2193:192::-;2279:7;2315:12;2307:6;;;;2299:29;;;;-1:-1:-1;;;2299:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2351:5:0;;;2193:192::o;4962:130::-;5020:7;5047:37;5051:1;5054;5047:37;;;;;;;;;;;;;;;;;5663:7;5699:12;5691:6;5683:29;;;;-1:-1:-1;;;5683:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5734:1;5730;:5;;;;;;;5577:166;-1:-1:-1;;;;5577:166:0:o
Swarm Source
ipfs://c8eca0ecfe48a7e8aea5f141125c65f91982d3a36385500119c9ccb8605153b1
Loading...
Loading
Loading...
Loading
Net Worth in USD
$55,850.65
Net Worth in ETH
26.905896
Token Allocations
SWFL
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.00 | 856,726.1502 | $0.00 |
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.