Overview
ETH Balance
1.2719297625 ETH
Eth Value
$3,404.18 (@ $2,676.39/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,441 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Token | 20774727 | 10 days ago | IN | 0 ETH | 0.00082457 | ||||
Withdraw Token | 20365037 | 68 days ago | IN | 0 ETH | 0.00061639 | ||||
Withdraw Token | 20318619 | 74 days ago | IN | 0 ETH | 0.00028514 | ||||
Withdraw Token | 20318591 | 74 days ago | IN | 0 ETH | 0.00050584 | ||||
Withdraw Token | 18756131 | 293 days ago | IN | 0 ETH | 0.00203087 | ||||
Withdraw Token | 18705771 | 300 days ago | IN | 0 ETH | 0.00232299 | ||||
Withdraw Token | 18617146 | 312 days ago | IN | 0 ETH | 0.00273187 | ||||
Withdraw Token | 18617047 | 312 days ago | IN | 0 ETH | 0.00324508 | ||||
Withdraw Token | 18575460 | 318 days ago | IN | 0 ETH | 0.00207649 | ||||
Withdraw Token | 18469120 | 333 days ago | IN | 0 ETH | 0.00096986 | ||||
Withdraw Token | 18413150 | 341 days ago | IN | 0 ETH | 0.00124378 | ||||
Withdraw Token | 18406886 | 342 days ago | IN | 0 ETH | 0.00061446 | ||||
Withdraw Token | 18406864 | 342 days ago | IN | 0 ETH | 0.00106269 | ||||
Withdraw Token | 17968322 | 403 days ago | IN | 0 ETH | 0.0010263 | ||||
Withdraw Token | 17939980 | 407 days ago | IN | 0 ETH | 0.00212236 | ||||
Withdraw Token | 17939956 | 407 days ago | IN | 0 ETH | 0.00237241 | ||||
Withdraw Token | 17913569 | 411 days ago | IN | 0 ETH | 0.00199779 | ||||
Withdraw Token | 17888430 | 414 days ago | IN | 0 ETH | 0.00140346 | ||||
Withdraw Token | 17584353 | 457 days ago | IN | 0 ETH | 0.00190583 | ||||
Withdraw Token | 17584348 | 457 days ago | IN | 0 ETH | 0.00215048 | ||||
Withdraw Token | 17544352 | 463 days ago | IN | 0 ETH | 0.0014313 | ||||
Withdraw Token | 17516018 | 467 days ago | IN | 0 ETH | 0.00365512 | ||||
Withdraw Token | 17319924 | 494 days ago | IN | 0 ETH | 0.0027967 | ||||
Withdraw Token | 17319879 | 494 days ago | IN | 0 ETH | 0.00327276 | ||||
Withdraw Token | 17319780 | 494 days ago | IN | 0 ETH | 0.00263701 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
POLContract
Compiler Version
v0.6.11+commit.5ef660b1
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.6.11; import "./IERC20.sol"; import "./SafeMath.sol"; contract POLContract { event Received(address, uint); event onDeposit(address, uint256, uint256); event onWithdraw(address, uint256); using SafeMath for uint256; struct VestingPeriod { uint256 epoch; uint256 amount; } struct UserTokenInfo { uint256 deposited; // incremented on successful deposit uint256 withdrawn; // incremented on successful withdrawl VestingPeriod[] vestingPeriods; // added to on successful deposit } // map erc20 token to user address to release schedule mapping(address => mapping(address => UserTokenInfo)) tokenUserMap; struct LiquidityTokenomics { uint256[] epochs; mapping (uint256 => uint256) releaseMap; // map epoch -> amount withdrawable } // map erc20 token to release schedule mapping(address => LiquidityTokenomics) tokenEpochMap; // Fast mapping to prevent array iteration in solidity mapping(address => bool) public lockedTokenLookup; // A dynamically-sized array of currently locked tokens address[] public lockedTokens; // fee variables uint256 public feeNumerator; uint256 public feeDenominator; address public feeReserveAddress; address public owner; constructor() public { feeNumerator = 3; feeDenominator = 1000; feeReserveAddress = address(0xAA3d85aD9D128DFECb55424085754F6dFa643eb1); owner = address(0xfCdd591498e86876F086524C0b2E9Af41a0c9FCD); } receive() external payable { emit Received(msg.sender, msg.value); } modifier onlyOwner { require(msg.sender == owner, "You are not the owner"); _; } function updateFee(uint256 numerator, uint256 denominator) onlyOwner public { feeNumerator = numerator; feeDenominator = denominator; } function calculateFee(uint256 amount) public view returns (uint256){ require(amount >= feeDenominator, 'Deposit is too small'); uint256 amountInLarge = amount.mul(feeDenominator.sub(feeNumerator)); uint256 amountIn = amountInLarge.div(feeDenominator); uint256 fee = amount.sub(amountIn); return (fee); } function depositTokenMultipleEpochs(address token, uint256[] memory amounts, uint256[] memory dates) public payable { require(amounts.length == dates.length, 'Amount and date arrays have differing lengths'); for (uint i=0; i<amounts.length; i++) { depositToken(token, amounts[i], dates[i]); } } function depositToken(address token, uint256 amount, uint256 unlock_date) public payable { require(unlock_date < 10000000000, 'Enter an unix timestamp in seconds, not miliseconds'); require(amount > 0, 'Your attempting to trasfer 0 tokens'); uint256 allowance = IERC20(token).allowance(msg.sender, address(this)); require(allowance >= amount, 'You need to set a higher allowance'); // charge a fee uint256 fee = calculateFee(amount); uint256 amountIn = amount.sub(fee); require(IERC20(token).transferFrom(msg.sender, address(this), amountIn), 'Transfer failed'); require(IERC20(token).transferFrom(msg.sender, address(feeReserveAddress), fee), 'Transfer failed'); if (!lockedTokenLookup[token]) { lockedTokens.push(token); lockedTokenLookup[token] = true; } LiquidityTokenomics storage liquidityTokenomics = tokenEpochMap[token]; // amount is required to be above 0 in the start of this block, therefore this works if (liquidityTokenomics.releaseMap[unlock_date] > 0) { liquidityTokenomics.releaseMap[unlock_date] = liquidityTokenomics.releaseMap[unlock_date].add(amountIn); } else { liquidityTokenomics.epochs.push(unlock_date); liquidityTokenomics.releaseMap[unlock_date] = amountIn; } UserTokenInfo storage uto = tokenUserMap[token][msg.sender]; uto.deposited = uto.deposited.add(amountIn); VestingPeriod[] storage vp = uto.vestingPeriods; vp.push(VestingPeriod(unlock_date, amountIn)); emit onDeposit(token, amount, unlock_date); } function withdrawToken(address token, uint256 amount) public { require(amount > 0, 'Your attempting to withdraw 0 tokens'); uint256 withdrawable = getWithdrawableBalance(token, msg.sender); UserTokenInfo storage uto = tokenUserMap[token][msg.sender]; uto.withdrawn = uto.withdrawn.add(amount); require(amount <= withdrawable, 'Your attempting to withdraw more than you have available'); require(IERC20(token).transfer(msg.sender, amount), 'Transfer failed'); emit onWithdraw(token, amount); } function getWithdrawableBalance(address token, address user) public view returns (uint256) { UserTokenInfo storage uto = tokenUserMap[token][address(user)]; uint arrayLength = uto.vestingPeriods.length; uint256 withdrawable = 0; for (uint i=0; i<arrayLength; i++) { VestingPeriod storage vestingPeriod = uto.vestingPeriods[i]; if (vestingPeriod.epoch < block.timestamp) { withdrawable = withdrawable.add(vestingPeriod.amount); } } withdrawable = withdrawable.sub(uto.withdrawn); return withdrawable; } function getUserTokenInfo (address token, address user) public view returns (uint256, uint256, uint256) { UserTokenInfo storage uto = tokenUserMap[address(token)][address(user)]; uint256 deposited = uto.deposited; uint256 withdrawn = uto.withdrawn; uint256 length = uto.vestingPeriods.length; return (deposited, withdrawn, length); } function getUserVestingAtIndex (address token, address user, uint index) public view returns (uint256, uint256) { UserTokenInfo storage uto = tokenUserMap[address(token)][address(user)]; VestingPeriod storage vp = uto.vestingPeriods[index]; return (vp.epoch, vp.amount); } function getTokenReleaseLength (address token) public view returns (uint256) { LiquidityTokenomics storage liquidityTokenomics = tokenEpochMap[address(token)]; return liquidityTokenomics.epochs.length; } function getTokenReleaseAtIndex (address token, uint index) public view returns (uint256, uint256) { LiquidityTokenomics storage liquidityTokenomics = tokenEpochMap[address(token)]; uint256 epoch = liquidityTokenomics.epochs[index]; uint256 amount = liquidityTokenomics.releaseMap[epoch]; return (epoch, amount); } function lockedTokensLength() external view returns (uint) { return lockedTokens.length; } }
pragma solidity 0.6.11; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity 0.6.11; /** * @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) { // Solidity only automatically asserts when dividing by 0 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; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"onDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"onWithdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlock_date","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"dates","type":"uint256[]"}],"name":"depositTokenMultipleEpochs","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReserveAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenReleaseAtIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenReleaseLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserTokenInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getUserVestingAtIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getWithdrawableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedTokenLookup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockedTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5060036004819055506103e860058190555073aa3d85ad9d128dfecb55424085754f6dfa643eb1600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fcdd591498e86876f086524c0b2e9af41a0c9fcd600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f64806100db6000396000f3fe6080604052600436106101025760003560e01c806399c6d2de11610095578063dcec329411610064578063dcec3294146106b0578063de0c4d2e1461072b578063e86dea4a146107be578063f4f876a6146107e9578063f6a3bcad1461085257610174565b806399c6d2de1461043a5780639e281a9814610492578063ace55fec146104ed578063b9b6ac051461054457610174565b80638b4ebb43116100d15780638b4ebb43146102795780638da5cb5b1461030f57806393dcd0211461036657806399a5d747146103eb57610174565b8063180b0d7e1461017957806321babba7146101a457806322843f95146101cf5780632740c1971461023457610174565b36610174577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b600080fd5b34801561018557600080fd5b5061018e6108c8565b6040518082815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108ce565b6040518082815260200191505060405180910390f35b3480156101db57600080fd5b5061021e600480360360208110156101f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108db565b6040518082815260200191505060405180910390f35b34801561024057600080fd5b506102776004803603604081101561025757600080fd5b81019080803590602001909291908035906020019092919050505061092f565b005b34801561028557600080fd5b506102f26004803603606081101561029c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a04565b604051808381526020018281526020019250505060405180910390f35b34801561031b57600080fd5b50610324610abf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037257600080fd5b506103d56004803603604081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae5565b6040518082815260200191505060405180910390f35b3480156103f757600080fd5b506104246004803603602081101561040e57600080fd5b8101908080359060200190929190505050610bff565b6040518082815260200191505060405180910390f35b6104906004803603606081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610ce1565b005b34801561049e57600080fd5b506104eb600480360360408110156104b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611569565b005b3480156104f957600080fd5b5061050261186c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ae6004803603606081101561055a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561059757600080fd5b8201836020820111156105a957600080fd5b803590602001918460208302840111640100000000831117156105cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561062b57600080fd5b82018360208201111561063d57600080fd5b8035906020019184602083028401116401000000008311171561065f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611892565b005b3480156106bc57600080fd5b506106e9600480360360208110156106d357600080fd5b810190808035906020019092919050505061193f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561073757600080fd5b5061079a6004803603604081101561074e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061197b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156107ca57600080fd5b506107d3611a30565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506108386004803603602081101561080c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a36565b604051808215151515815260200191505060405180910390f35b34801561085e57600080fd5b506108ab6004803603604081101561087557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a56565b604051808381526020018281526020019250505060405180910390f35b60055481565b6000600380549050905090565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000180549050915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f7520617265206e6f7420746865206f776e6572000000000000000000000081525060200191505060405180910390fd5b81600481905550806005819055505050565b60008060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816002018581548110610a9757fe5b9060005260206000209060020201905080600001548160010154935093505050935093915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600201805490509050600080905060008090505b82811015610bd9576000846002018281548110610b9557fe5b906000526020600020906002020190504281600001541015610bcb57610bc8816001015484611ae490919063ffffffff16565b92505b508080600101915050610b7c565b50610bf1836001015482611b6c90919063ffffffff16565b905080935050505092915050565b6000600554821015610c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4465706f73697420697320746f6f20736d616c6c00000000000000000000000081525060200191505060405180910390fd5b6000610ca4610c95600454600554611b6c90919063ffffffff16565b84611bb690919063ffffffff16565b90506000610cbd60055483611c3c90919063ffffffff16565b90506000610cd48286611b6c90919063ffffffff16565b9050809350505050919050565b6402540be4008110610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180611e0d6033913960400191505060405180910390fd5b60008211610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e406023913960400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d6020811015610e7457600080fd5b8101908080519060200190929190505050905082811015610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611e636022913960400191505060405180910390fd5b6000610eeb84610bff565b90506000610f028286611b6c90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b505050506040513d6020811015610fe957600080fd5b810190808051906020019092919050505061106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561114957600080fd5b505af115801561115d573d6000803e3d6000fd5b505050506040513d602081101561117357600080fd5b81019080805190602001909291905050506111f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611303576003869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010160008781526020019081526020016000205411156113aa5761138c8282600101600088815260200190815260200160002054611ae490919063ffffffff16565b816001016000878152602001908152602001600020819055506113f0565b8060000185908060018154018082558091505060019003906000526020600020016000909190919091505581816001016000878152602001908152602001600020819055505b60008060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611486838260000154611ae490919063ffffffff16565b81600001819055506000816002019050806040518060400160405280898152602001868152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550507fd6bbc989766039cda6ca06b473aabd4d296527497aadc6808e640e053427d2b3898989604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050505050505050565b600081116115c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611ed36024913960400191505060405180910390fd5b60006115ce8333610ae5565b905060008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611666838260010154611ae490919063ffffffff16565b8160010181905550818311156116c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611ef76038913960400191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561174e57600080fd5b505af1158015611762573d6000803e3d6000fd5b505050506040513d602081101561177857600080fd5b81019080805190602001909291905050506117fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b7fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80518251146118ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611e85602d913960400191505060405180910390fd5b60008090505b82518110156119395761192c8484838151811061190b57fe5b602002602001015184848151811061191f57fe5b6020026020010151610ce1565b80806001019150506118f2565b50505050565b6003818154811061194c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001549050600082600101549050600083600201805490509050828282965096509650505050509250925092565b60045481565b60026020528060005260406000206000915054906101000a900460ff1681565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000018581548110611aad57fe5b9060005260206000200154905060008260010160008381526020019081526020016000205490508181945094505050509250929050565b600080828401905083811015611b62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611bae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c86565b905092915050565b600080831415611bc95760009050611c36565b6000828402905082848281611bda57fe5b0414611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611eb26021913960400191505060405180910390fd5b809150505b92915050565b6000611c7e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d46565b905092915050565b6000838311158290611d33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cf8578082015181840152602081019050611cdd565b50505050905090810190601f168015611d255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611df2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611db7578082015181840152602081019050611d9c565b50505050905090810190601f168015611de45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611dfe57fe5b04905080915050939250505056fe456e74657220616e20756e69782074696d657374616d7020696e207365636f6e64732c206e6f74206d696c697365636f6e6473596f757220617474656d7074696e6720746f2074726173666572203020746f6b656e73596f75206e65656420746f2073657420612068696768657220616c6c6f77616e6365416d6f756e7420616e64206461746520617272617973206861766520646966666572696e67206c656e67746873536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77596f757220617474656d7074696e6720746f207769746864726177203020746f6b656e73596f757220617474656d7074696e6720746f207769746864726177206d6f7265207468616e20796f75206861766520617661696c61626c65a2646970667358221220f434b118ec385a5249c223d36e955551f0955402f1488ac1aada89cb961f4ffa64736f6c634300060b0033
Deployed Bytecode
0x6080604052600436106101025760003560e01c806399c6d2de11610095578063dcec329411610064578063dcec3294146106b0578063de0c4d2e1461072b578063e86dea4a146107be578063f4f876a6146107e9578063f6a3bcad1461085257610174565b806399c6d2de1461043a5780639e281a9814610492578063ace55fec146104ed578063b9b6ac051461054457610174565b80638b4ebb43116100d15780638b4ebb43146102795780638da5cb5b1461030f57806393dcd0211461036657806399a5d747146103eb57610174565b8063180b0d7e1461017957806321babba7146101a457806322843f95146101cf5780632740c1971461023457610174565b36610174577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b600080fd5b34801561018557600080fd5b5061018e6108c8565b6040518082815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108ce565b6040518082815260200191505060405180910390f35b3480156101db57600080fd5b5061021e600480360360208110156101f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108db565b6040518082815260200191505060405180910390f35b34801561024057600080fd5b506102776004803603604081101561025757600080fd5b81019080803590602001909291908035906020019092919050505061092f565b005b34801561028557600080fd5b506102f26004803603606081101561029c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a04565b604051808381526020018281526020019250505060405180910390f35b34801561031b57600080fd5b50610324610abf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037257600080fd5b506103d56004803603604081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae5565b6040518082815260200191505060405180910390f35b3480156103f757600080fd5b506104246004803603602081101561040e57600080fd5b8101908080359060200190929190505050610bff565b6040518082815260200191505060405180910390f35b6104906004803603606081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610ce1565b005b34801561049e57600080fd5b506104eb600480360360408110156104b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611569565b005b3480156104f957600080fd5b5061050261186c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ae6004803603606081101561055a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561059757600080fd5b8201836020820111156105a957600080fd5b803590602001918460208302840111640100000000831117156105cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561062b57600080fd5b82018360208201111561063d57600080fd5b8035906020019184602083028401116401000000008311171561065f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611892565b005b3480156106bc57600080fd5b506106e9600480360360208110156106d357600080fd5b810190808035906020019092919050505061193f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561073757600080fd5b5061079a6004803603604081101561074e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061197b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156107ca57600080fd5b506107d3611a30565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506108386004803603602081101561080c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a36565b604051808215151515815260200191505060405180910390f35b34801561085e57600080fd5b506108ab6004803603604081101561087557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a56565b604051808381526020018281526020019250505060405180910390f35b60055481565b6000600380549050905090565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000180549050915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f7520617265206e6f7420746865206f776e6572000000000000000000000081525060200191505060405180910390fd5b81600481905550806005819055505050565b60008060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816002018581548110610a9757fe5b9060005260206000209060020201905080600001548160010154935093505050935093915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600201805490509050600080905060008090505b82811015610bd9576000846002018281548110610b9557fe5b906000526020600020906002020190504281600001541015610bcb57610bc8816001015484611ae490919063ffffffff16565b92505b508080600101915050610b7c565b50610bf1836001015482611b6c90919063ffffffff16565b905080935050505092915050565b6000600554821015610c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4465706f73697420697320746f6f20736d616c6c00000000000000000000000081525060200191505060405180910390fd5b6000610ca4610c95600454600554611b6c90919063ffffffff16565b84611bb690919063ffffffff16565b90506000610cbd60055483611c3c90919063ffffffff16565b90506000610cd48286611b6c90919063ffffffff16565b9050809350505050919050565b6402540be4008110610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180611e0d6033913960400191505060405180910390fd5b60008211610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e406023913960400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d6020811015610e7457600080fd5b8101908080519060200190929190505050905082811015610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611e636022913960400191505060405180910390fd5b6000610eeb84610bff565b90506000610f028286611b6c90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b505050506040513d6020811015610fe957600080fd5b810190808051906020019092919050505061106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561114957600080fd5b505af115801561115d573d6000803e3d6000fd5b505050506040513d602081101561117357600080fd5b81019080805190602001909291905050506111f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611303576003869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010160008781526020019081526020016000205411156113aa5761138c8282600101600088815260200190815260200160002054611ae490919063ffffffff16565b816001016000878152602001908152602001600020819055506113f0565b8060000185908060018154018082558091505060019003906000526020600020016000909190919091505581816001016000878152602001908152602001600020819055505b60008060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611486838260000154611ae490919063ffffffff16565b81600001819055506000816002019050806040518060400160405280898152602001868152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550507fd6bbc989766039cda6ca06b473aabd4d296527497aadc6808e640e053427d2b3898989604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050505050505050565b600081116115c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611ed36024913960400191505060405180910390fd5b60006115ce8333610ae5565b905060008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611666838260010154611ae490919063ffffffff16565b8160010181905550818311156116c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611ef76038913960400191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561174e57600080fd5b505af1158015611762573d6000803e3d6000fd5b505050506040513d602081101561177857600080fd5b81019080805190602001909291905050506117fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b7fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80518251146118ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611e85602d913960400191505060405180910390fd5b60008090505b82518110156119395761192c8484838151811061190b57fe5b602002602001015184848151811061191f57fe5b6020026020010151610ce1565b80806001019150506118f2565b50505050565b6003818154811061194c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001549050600082600101549050600083600201805490509050828282965096509650505050509250925092565b60045481565b60026020528060005260406000206000915054906101000a900460ff1681565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000018581548110611aad57fe5b9060005260206000200154905060008260010160008381526020019081526020016000205490508181945094505050509250929050565b600080828401905083811015611b62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611bae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c86565b905092915050565b600080831415611bc95760009050611c36565b6000828402905082848281611bda57fe5b0414611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611eb26021913960400191505060405180910390fd5b809150505b92915050565b6000611c7e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d46565b905092915050565b6000838311158290611d33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cf8578082015181840152602081019050611cdd565b50505050905090810190601f168015611d255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611df2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611db7578082015181840152602081019050611d9c565b50505050905090810190601f168015611de45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611dfe57fe5b04905080915050939250505056fe456e74657220616e20756e69782074696d657374616d7020696e207365636f6e64732c206e6f74206d696c697365636f6e6473596f757220617474656d7074696e6720746f2074726173666572203020746f6b656e73596f75206e65656420746f2073657420612068696768657220616c6c6f77616e6365416d6f756e7420616e64206461746520617272617973206861766520646966666572696e67206c656e67746873536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77596f757220617474656d7074696e6720746f207769746864726177203020746f6b656e73596f757220617474656d7074696e6720746f207769746864726177206d6f7265207468616e20796f75206861766520617661696c61626c65a2646970667358221220f434b118ec385a5249c223d36e955551f0955402f1488ac1aada89cb961f4ffa64736f6c634300060b0033
Deployed Bytecode Sourcemap
116:6818:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1720:31;1729:10;1741:9;1720:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;116:6818;;;;;1305:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6827:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6238:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1882:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5932:298;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1386:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4946:593;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2048:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2744:1640;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4392:546;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1347:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2407:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1207:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5551:373;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1088:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6468:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1305:29;;;;:::o;6827:104::-;6880:4;6904:12;:19;;;;6897:26;;6827:104;:::o;6238:222::-;6306:7;6324:47;6374:13;:29;6396:5;6374:29;;;;;;;;;;;;;;;6324:79;;6419:19;:26;;:33;;;;6412:40;;;6238:222;;;:::o;1882:154::-;1821:5;;;;;;;;;;;1807:19;;:10;:19;;;1799:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1982:9:::1;1967:12;:24;;;;2017:11;2000:14;:28;;;;1882:154:::0;;:::o;5932:298::-;6026:7;6035;6053:25;6081:12;:28;6102:5;6081:28;;;;;;;;;;;;;;;:43;6118:4;6081:43;;;;;;;;;;;;;;;6053:71;;6133:24;6160:3;:18;;6179:5;6160:25;;;;;;;;;;;;;;;;;;6133:52;;6202:2;:8;;;6212:2;:9;;;6194:28;;;;;;5932:298;;;;;;:::o;1386:20::-;;;;;;;;;;;;;:::o;4946:593::-;5028:7;5046:25;5074:12;:19;5087:5;5074:19;;;;;;;;;;;;;;;:34;5102:4;5074:34;;;;;;;;;;;;;;;5046:62;;5117:16;5136:3;:18;;:25;;;;5117:44;;5170:20;5193:1;5170:24;;5208:6;5215:1;5208:8;;5203:246;5220:11;5218:1;:13;5203:246;;;5249:35;5287:3;:18;;5306:1;5287:21;;;;;;;;;;;;;;;;;;5249:59;;5345:15;5323:13;:19;;;:37;5319:121;;;5390:38;5407:13;:20;;;5390:12;:16;;:38;;;;:::i;:::-;5375:53;;5319:121;5203:246;5233:3;;;;;;;5203:246;;;;5472:31;5489:3;:13;;;5472:12;:16;;:31;;;;:::i;:::-;5457:46;;5519:12;5512:19;;;;;4946:593;;;;:::o;2048:347::-;2107:7;2142:14;;2132:6;:24;;2124:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2194:21;2218:44;2229:32;2248:12;;2229:14;;:18;;:32;;;;:::i;:::-;2218:6;:10;;:44;;;;:::i;:::-;2194:68;;2271:16;2290:33;2308:14;;2290:13;:17;;:33;;;;:::i;:::-;2271:52;;2332:11;2346:20;2357:8;2346:6;:10;;:20;;;;:::i;:::-;2332:34;;2383:3;2375:12;;;;;2048:347;;;:::o;2744:1640::-;2864:11;2850;:25;2842:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:1;2948:6;:10;2940:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3007:17;3034:5;3027:23;;;3051:10;3071:4;3027:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3007:70;;3107:6;3094:9;:19;;3086:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:11;3198:20;3211:6;3198:12;:20::i;:::-;3184:34;;3227:16;3246:15;3257:3;3246:6;:10;;:15;;;;:::i;:::-;3227:34;;3285:5;3278:26;;;3305:10;3325:4;3332:8;3278:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3270:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3385:5;3378:26;;;3405:10;3425:17;;;;;;;;;;;3445:3;3378:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3370:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3483:17;:24;3501:5;3483:24;;;;;;;;;;;;;;;;;;;;;;;;;3478:118;;3520:12;3538:5;3520:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3582:4;3555:17;:24;3573:5;3555:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;3478:118;3604:47;3654:13;:20;3668:5;3654:20;;;;;;;;;;;;;;;3604:70;;3825:1;3779:19;:30;;:43;3810:11;3779:43;;;;;;;;;;;;:47;3775:313;;;3885:57;3933:8;3885:19;:30;;:43;3916:11;3885:43;;;;;;;;;;;;:47;;:57;;;;:::i;:::-;3839:19;:30;;:43;3870:11;3839:43;;;;;;;;;;;:103;;;;3775:313;;;3969:19;:26;;4001:11;3969:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4070:8;4024:19;:30;;:43;4055:11;4024:43;;;;;;;;;;;:54;;;;3775:313;4096:25;4124:12;:19;4137:5;4124:19;;;;;;;;;;;;;;;:31;4144:10;4124:31;;;;;;;;;;;;;;;4096:59;;4180:27;4198:8;4180:3;:13;;;:17;;:27;;;;:::i;:::-;4164:3;:13;;:43;;;;4216:26;4245:3;:18;;4216:47;;4272:2;4280:36;;;;;;;;4294:11;4280:36;;;;4307:8;4280:36;;;4272:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4339:37;4349:5;4356:6;4364:11;4339:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:1640;;;;;;;;;:::o;4392:546::-;4479:1;4470:6;:10;4462:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4530:20;4553:41;4576:5;4583:10;4553:22;:41::i;:::-;4530:64;;4603:25;4631:12;:19;4644:5;4631:19;;;;;;;;;;;;;;;:31;4651:10;4631:31;;;;;;;;;;;;;;;4603:59;;4687:25;4705:6;4687:3;:13;;;:17;;:25;;;;:::i;:::-;4671:3;:13;;:41;;;;4739:12;4729:6;:22;;4721:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4836:5;4829:22;;;4852:10;4864:6;4829:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4821:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4905:25;4916:5;4923:6;4905:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4392:546;;;;:::o;1347:32::-;;;;;;;;;;;;;:::o;2407:329::-;2558:5;:12;2540:7;:14;:30;2532:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2634:6;2641:1;2634:8;;2629:100;2646:7;:14;2644:1;:16;2629:100;;;2678:41;2691:5;2698:7;2706:1;2698:10;;;;;;;;;;;;;;2710:5;2716:1;2710:8;;;;;;;;;;;;;;2678:12;:41::i;:::-;2662:3;;;;;;;2629:100;;;;2407:329;;;:::o;1207:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5551:373::-;5628:7;5637;5646;5664:25;5692:12;:28;5713:5;5692:28;;;;;;;;;;;;;;;:43;5729:4;5692:43;;;;;;;;;;;;;;;5664:71;;5744:17;5764:3;:13;;;5744:33;;5786:17;5806:3;:13;;;5786:33;;5828:14;5845:3;:18;;:25;;;;5828:42;;5887:9;5898;5909:6;5879:37;;;;;;;;;;5551:373;;;;;:::o;1271:27::-;;;;:::o;1088:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;6468:347::-;6549:7;6558;6576:47;6626:13;:29;6648:5;6626:29;;;;;;;;;;;;;;;6576:79;;6664:13;6680:19;:26;;6707:5;6680:33;;;;;;;;;;;;;;;;6664:49;;6722:14;6739:19;:30;;:37;6770:5;6739:37;;;;;;;;;;;;6722:54;;6793:5;6800:6;6785:22;;;;;;;6468:347;;;;;:::o;859:181:2:-;917:7;937:9;953:1;949;:5;937:17;;978:1;973;:6;;965:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:1;1024:8;;;859:181;;;;:::o;1315:136::-;1373:7;1400:43;1404:1;1407;1400:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1393:50;;1315:136;;;;:::o;2189:471::-;2247:7;2497:1;2492;:6;2488:47;;;2522:1;2515:8;;;;2488:47;2547:9;2563:1;2559;:5;2547:17;;2592:1;2587;2583;:5;;;;;;:10;2575:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:1;2644:8;;;2189:471;;;;;:::o;3128:132::-;3186:7;3213:39;3217:1;3220;3213:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3206:46;;3128:132;;;;:::o;1746:192::-;1832:7;1865:1;1860;:6;;1868:12;1852:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1892:9;1908:1;1904;:5;1892:17;;1929:1;1922:8;;;1746:192;;;;;:::o;3748:345::-;3834:7;3933:1;3929;:5;3936:12;3921:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3960:9;3976:1;3972;:5;;;;;;3960:17;;4084:1;4077:8;;;3748:345;;;;;:::o
Swarm Source
ipfs://f434b118ec385a5249c223d36e955551f0955402f1488ac1aada89cb961f4ffa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 52.24% | $23.89 | 19,996.6615 | $477,637.92 | |
ETH | 33.17% | $7.61 | 39,852.339 | $303,276.3 | |
ETH | 5.22% | $58.69 | 813.552 | $47,748.41 | |
ETH | 3.62% | $2,348,751.41 | 0.0141 | $33,116.71 | |
ETH | 1.24% | $209.21 | 54.2376 | $11,346.81 | |
ETH | 1.00% | $10.53 | 868.8075 | $9,150.44 | |
ETH | 0.98% | $3.55 | 2,515.7619 | $8,935.2 | |
ETH | 0.82% | $73.89 | 102.0394 | $7,539.68 | |
ETH | 0.63% | $4,214,994.06 | 0.00137751 | $5,806.18 | |
ETH | Ether (ETH) | 0.37% | $2,676.39 | 1.2719 | $3,404.18 |
ETH | 0.34% | $0.312802 | 9,911.852 | $3,100.45 | |
ETH | 0.12% | $0.001879 | 600,315.7454 | $1,128.14 | |
ETH | 0.11% | $0.161582 | 6,139.6625 | $992.06 | |
ETH | 0.03% | $167,135,217.78 | 0.00000183 | $305.55 | |
ETH | 0.03% | $11.89 | 21.3282 | $253.6 | |
ETH | 0.03% | $0.837108 | 281.9942 | $236.06 | |
ETH | 0.03% | $0.057146 | 4,003.62 | $228.79 | |
ETH | <0.01% | $127.23 | 0.6653 | $84.65 | |
ETH | <0.01% | $6.75 | 9.1153 | $61.51 | |
ETH | <0.01% | $0.013991 | 332.6305 | $4.65 | |
ETH | <0.01% | $0.000233 | 7,035.7125 | $1.64 | |
ETH | <0.01% | $0.000166 | 7,722.7288 | $1.28 | |
ETH | <0.01% | $0.026246 | 10 | $0.2624 | |
ETH | <0.01% | $0.002709 | 45 | $0.1219 | |
BSC | <0.01% | $4.24 | 1 | $4.24 |
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.