More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,860 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Harvest | 20498808 | 248 days ago | IN | 0 ETH | 0.000079 | ||||
Harvest | 19069089 | 448 days ago | IN | 0 ETH | 0.00172551 | ||||
Harvest | 17832054 | 621 days ago | IN | 0 ETH | 0.00189468 | ||||
Harvest | 16999643 | 739 days ago | IN | 0 ETH | 0.00200311 | ||||
Harvest | 16749184 | 774 days ago | IN | 0 ETH | 0.00319585 | ||||
Harvest | 16671421 | 785 days ago | IN | 0 ETH | 0.00450676 | ||||
Harvest | 16671340 | 785 days ago | IN | 0 ETH | 0.00367897 | ||||
Harvest | 16650268 | 788 days ago | IN | 0 ETH | 0.0038985 | ||||
Harvest | 16572735 | 799 days ago | IN | 0 ETH | 0.00174145 | ||||
Harvest | 16572731 | 799 days ago | IN | 0 ETH | 0.00226614 | ||||
Harvest | 16524046 | 805 days ago | IN | 0 ETH | 0.0011913 | ||||
Harvest | 16524044 | 805 days ago | IN | 0 ETH | 0.00166657 | ||||
Harvest | 16497836 | 809 days ago | IN | 0 ETH | 0.00140804 | ||||
Harvest | 16486217 | 811 days ago | IN | 0 ETH | 0.00234814 | ||||
Harvest | 16471176 | 813 days ago | IN | 0 ETH | 0.00295514 | ||||
Harvest | 16466386 | 813 days ago | IN | 0 ETH | 0.00068125 | ||||
Harvest | 16466384 | 813 days ago | IN | 0 ETH | 0.00158068 | ||||
Harvest | 16466081 | 813 days ago | IN | 0 ETH | 0.00092532 | ||||
Harvest | 16466070 | 813 days ago | IN | 0 ETH | 0.00133071 | ||||
Harvest | 16465368 | 814 days ago | IN | 0 ETH | 0.00140964 | ||||
Harvest | 16464517 | 814 days ago | IN | 0 ETH | 0.00122835 | ||||
Harvest | 16464263 | 814 days ago | IN | 0 ETH | 0.00150113 | ||||
Harvest | 16463978 | 814 days ago | IN | 0 ETH | 0.00059051 | ||||
Harvest | 16463978 | 814 days ago | IN | 0 ETH | 0.00135112 | ||||
Harvest | 16462708 | 814 days ago | IN | 0 ETH | 0.00123247 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 20498808 | 248 days ago | 0.00361499 ETH | ||||
Transfer | 19069089 | 448 days ago | 0.01913274 ETH | ||||
Transfer | 17832054 | 621 days ago | 0.04995798 ETH | ||||
Transfer | 16999643 | 739 days ago | 0.00706371 ETH | ||||
Transfer | 16749184 | 774 days ago | 0.01645938 ETH | ||||
Transfer | 16671421 | 785 days ago | 0.03204168 ETH | ||||
Transfer | 16671340 | 785 days ago | 0.06744175 ETH | ||||
Transfer | 16650268 | 788 days ago | 0.02928964 ETH | ||||
Transfer | 16572731 | 799 days ago | 0.0757606 ETH | ||||
Transfer | 16524044 | 805 days ago | 0.00833288 ETH | ||||
Transfer | 16497836 | 809 days ago | 0.0273705 ETH | ||||
Transfer | 16486217 | 811 days ago | 0.01146287 ETH | ||||
Transfer | 16471176 | 813 days ago | 0.04049407 ETH | ||||
Transfer | 16466384 | 813 days ago | 0.04391099 ETH | ||||
Transfer | 16466070 | 813 days ago | 0.02731119 ETH | ||||
Transfer | 16465368 | 814 days ago | 0.00969357 ETH | ||||
Transfer | 16464517 | 814 days ago | 0.00842662 ETH | ||||
Transfer | 16464263 | 814 days ago | 0.41160734 ETH | ||||
Transfer | 16463978 | 814 days ago | 0.04767354 ETH | ||||
Transfer | 16462708 | 814 days ago | 0.07369611 ETH | ||||
Transfer | 16461927 | 814 days ago | 0.00927046 ETH | ||||
Transfer | 16459881 | 814 days ago | 0.01818977 ETH | ||||
Transfer | 16459550 | 814 days ago | 0.12106213 ETH | ||||
Transfer | 16459488 | 814 days ago | 0.01672418 ETH | ||||
Transfer | 16458436 | 815 days ago | 0.02218899 ETH |
Loading...
Loading
Contract Name:
SwapContract
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-25 */ // SPDX-License-Identifier: MIT // 84 71 32 64 84 104 101 71 104 111 115 116 68 101 118 // ASCII pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @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, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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; } } interface IERC20 { function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract SwapContract is Ownable { using SafeMath for uint256; IERC20 public tokenOutput; struct TokenInputInfo { address addr; uint256 rateInput; uint256 rateOutput; } mapping (uint256 => TokenInputInfo) public tokenInput; uint256 SEED_CLIFF = 30 days; uint256 SEED_RELEASE_EACH_MONTH = 833; // 8.33% struct VipVesting { uint256 totalBalance; uint256 totalClaimed; uint256 start; uint256 end; uint256 claimedCheckPoint; // To calculate Reward uint256 rewardTokenDebt; uint256 rewardEthDebt; } mapping (address => VipVesting) public vestingList; mapping (address => bool) public isBlacklistWallet; uint256 public totalTokenForSwapping; uint256 public totalTokenForSeed; uint256 public totalTokenForPublic; uint256 public soldAmountSeed = 0; uint256 public soldAmountPublic = 0; uint256 public soldTotal = 0; uint256 public TYPE_SEED = 1; uint256 public TYPE_PUBLIC = 2; uint256 public MONTH = 30 days; bool public swapEnabled; constructor() {} function startSwap(address outputToken) public onlyOwner{ require(swapEnabled == false, "Swap already started"); tokenOutput = IERC20(outputToken); swapEnabled = true; } function stopSwap() public onlyOwner { swapEnabled = false; } function addInputTokenForSwap(uint256 _id, address _inputToken, uint256 _inputRate, uint256 _outputRate)public onlyOwner{ require(_id < 3); tokenInput[_id].addr = _inputToken; tokenInput[_id].rateInput = _inputRate; tokenInput[_id].rateOutput = _outputRate; } receive() external payable { } function setBlacklistWallet(address account, bool blacklisted) external onlyOwner { isBlacklistWallet[account] = blacklisted; } function addOutputTokenForSwap(uint256 amount) public{ tokenOutput.transferFrom(msg.sender, address(this), amount); totalTokenForSwapping = totalTokenForSwapping.add(amount); } function ownerWithdrawToken(address tokenAddress, uint256 amount) public onlyOwner{ if(tokenAddress == address(tokenOutput)){ require(amount < totalTokenForSwapping.sub(soldTotal), "You're trying withdraw an amount that exceed availabe balance"); totalTokenForSwapping = totalTokenForSwapping.sub(amount); } IERC20(tokenAddress).transfer(msg.sender, amount); } function getClaimableInVesting(address account) public view returns (uint256){ VipVesting memory vestPlan = vestingList[account]; //Already withdraw all if(vestPlan.totalClaimed >= vestPlan.totalBalance){ return 0; } //No infor if(vestPlan.start == 0 || vestPlan.end == 0 || vestPlan.totalBalance == 0){ return 0; } uint256 currentTime = block.timestamp; if(currentTime >= vestPlan.end){ return vestPlan.totalBalance.sub(vestPlan.totalClaimed); }else if(currentTime < vestPlan.start + SEED_CLIFF){ return 0; }else { uint256 currentCheckPoint = 1 + (currentTime - vestPlan.start - SEED_CLIFF) / MONTH; if(currentCheckPoint > vestPlan.claimedCheckPoint){ uint256 claimable = ((currentCheckPoint - vestPlan.claimedCheckPoint) * SEED_RELEASE_EACH_MONTH * vestPlan.totalBalance) / 10000; return claimable; }else return 0; } } function balanceRemainingInVesting(address account) public view returns(uint256){ VipVesting memory vestPlan = vestingList[account]; return vestPlan.totalBalance - vestPlan.totalClaimed; } function withDrawFromVesting() public { VipVesting storage vestPlan = vestingList[msg.sender]; uint256 claimableAmount = getClaimableInVesting(msg.sender); require(claimableAmount > 0, "There isn't token in vesting that's claimable at the moment"); uint256 currentTime = block.timestamp; if(currentTime > vestPlan.end){ currentTime = vestPlan.end; } vestPlan.claimedCheckPoint = 1 + (currentTime - vestPlan.start - SEED_CLIFF) / MONTH; vestPlan.totalClaimed = vestPlan.totalClaimed.add(claimableAmount); tokenOutput.transfer(msg.sender, claimableAmount); } function deposite(uint256 inputTokenId, uint256 inputAmount, uint256 buyType) public payable { require(inputTokenId < 3, "Invalid input token ID"); require(isBlacklistWallet[msg.sender] == false, "You're in blacklist"); require(swapEnabled, "Swap is not available"); IERC20 inputToken = IERC20(tokenInput[inputTokenId].addr); uint256 numOutputToken = inputAmount.mul(tokenInput[inputTokenId].rateOutput).mul(10**tokenOutput.decimals()).div(tokenInput[inputTokenId].rateInput); if(buyType == TYPE_SEED) numOutputToken = numOutputToken.mul(3); require(numOutputToken < totalTokenForSwapping.sub(soldTotal), "Exceed avaialble token"); inputToken.transferFrom(msg.sender, address(this), inputAmount.mul(10**inputToken.decimals())); soldTotal = soldTotal.add(numOutputToken); addingVestToken(msg.sender, numOutputToken, buyType); } function addingVestToken(address account, uint256 amount, uint256 vType) private { if(vType == TYPE_SEED){ VipVesting storage vestPlan = vestingList[account]; soldAmountSeed = soldAmountSeed.add(amount); vestPlan.totalBalance = vestPlan.totalBalance.add(amount); vestPlan.start = vestPlan.start == 0 ? block.timestamp : vestPlan.start; vestPlan.end = vestPlan.end == 0 ? block.timestamp + SEED_CLIFF + (10000 / SEED_RELEASE_EACH_MONTH) * MONTH : vestPlan.end; }else{ soldAmountPublic = soldAmountPublic.add(amount); tokenOutput.transfer(account, amount); return; } } /*REWARD FOR VESTING*/ address public rewardToken; uint256 public amountTokenForReward; uint256 public amountEthForReward; uint256 public totalRewardEthDistributed; uint256 public totalRewardTokenDistributed; uint256 public rewardTokenPerSecond; uint256 public rewardEthPerSecond; // Accrued token per share uint256 public accTokenPerShare; // Accrued EHT per share uint256 public accEthPerShare; // The block number of the last pool update uint256 public lastRewardTime; // The precision factor uint256 public PRECISION_FACTOR = 10**12; bool public enableRewardSystem; function startRewardSystem(address _rewardToken) public onlyOwner{ enableRewardSystem = true; rewardToken = _rewardToken; rewardTokenPerSecond = 0.05 ether; // 0.65 token/block rewardEthPerSecond = 0.000004 ether; // 10 eth/month lastRewardTime = block.timestamp; } function setNewRewardToken(address _rewardToken)public onlyOwner{ rewardToken = _rewardToken; } function setRewardTokenPerSecond(uint256 _rewardTokenPerSecond) public onlyOwner{ rewardTokenPerSecond = _rewardTokenPerSecond; } function setRewardEthPerSecond(uint256 _rewardEthPerSecond) public onlyOwner{ rewardEthPerSecond = _rewardEthPerSecond; } function addTokenForReward(uint256 amount) public { IERC20(rewardToken).transferFrom(msg.sender, address(this), amount); amountTokenForReward = amountTokenForReward.add(amount); } function addEthForReward() payable public { amountEthForReward = amountEthForReward.add(msg.value); } /* * Harvest reward */ function harvest() public { _updatePool(); VipVesting storage user = vestingList[msg.sender]; if (user.totalBalance > 0) { uint256 pendingToken = user.totalBalance.mul(accTokenPerShare).div(PRECISION_FACTOR).sub(user.rewardTokenDebt); uint256 pendingEth = user.totalBalance.mul(accEthPerShare).div(PRECISION_FACTOR).sub(user.rewardEthDebt); if (pendingToken > 0) { IERC20(rewardToken).transfer( address(msg.sender), pendingToken); } if (pendingEth > 0) { payable(msg.sender).transfer(pendingEth); } } user.rewardTokenDebt = user.totalBalance.mul(accTokenPerShare).div(PRECISION_FACTOR); user.rewardEthDebt = user.totalBalance.mul(accEthPerShare).div(PRECISION_FACTOR); } /* * @notice View function to see pending reward on frontend. * @param _user: user address * @return Pending reward for a given user */ function pendingReward(address _user) external view returns (uint256, uint256) { VipVesting storage user = vestingList[_user]; uint256 pendingToken; uint256 pendingEth; if(enableRewardSystem == false){ return (0, 0); } if (block.timestamp > lastRewardTime && soldAmountSeed != 0) { uint256 multiplier = _getMultiplier(lastRewardTime, block.timestamp); uint256 tokenReward = multiplier.mul(rewardTokenPerSecond); if(tokenReward > amountTokenForReward){ tokenReward = amountTokenForReward; } uint256 adjustedTokenPerShare = accTokenPerShare.add(tokenReward.mul(PRECISION_FACTOR).div(soldAmountSeed)); uint256 ethReward = multiplier.mul(rewardEthPerSecond); if(ethReward > amountEthForReward){ ethReward = amountEthForReward; } uint256 adjustedEthPerShare = accEthPerShare.add(ethReward.mul(PRECISION_FACTOR).div(soldAmountSeed)); pendingToken = user.totalBalance.mul(adjustedTokenPerShare).div(PRECISION_FACTOR).sub(user.rewardTokenDebt); pendingEth = user.totalBalance.mul(adjustedEthPerShare).div(PRECISION_FACTOR).sub(user.rewardEthDebt); } else { pendingToken = user.totalBalance.mul(accTokenPerShare).div(PRECISION_FACTOR).sub(user.rewardTokenDebt); pendingEth = user.totalBalance.mul(accEthPerShare).div(PRECISION_FACTOR).sub(user.rewardEthDebt); } return (pendingToken, pendingEth); } /* * @notice Update reward variables of the given pool to be up-to-date. */ function _updatePool() internal { if (block.timestamp <= lastRewardTime) { return; } if (enableRewardSystem == false || soldAmountSeed == 0) { lastRewardTime = block.timestamp; return; } uint256 multiplier = _getMultiplier(lastRewardTime, block.timestamp); uint256 tokenReward = multiplier.mul(rewardTokenPerSecond); if(tokenReward > amountTokenForReward){ tokenReward = amountTokenForReward; } accTokenPerShare = accTokenPerShare.add(tokenReward.mul(PRECISION_FACTOR).div(soldAmountSeed)); amountTokenForReward = amountTokenForReward.sub(tokenReward); totalRewardTokenDistributed = totalRewardTokenDistributed.add(tokenReward); uint256 ethReward = multiplier.mul(rewardEthPerSecond); if(ethReward > amountEthForReward){ ethReward = amountEthForReward; } accEthPerShare = accEthPerShare.add(ethReward.mul(PRECISION_FACTOR).div(soldAmountSeed)); amountEthForReward = amountEthForReward.sub(ethReward); totalRewardEthDistributed = totalRewardEthDistributed.add(ethReward); lastRewardTime = block.timestamp; } /* * @notice Return reward multiplier over the given _from to _to block. * @param _from: block to start * @param _to: block to finish */ function _getMultiplier(uint256 _from, uint256 _to) internal pure returns (uint256) { return _to.sub(_from); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MONTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRECISION_FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TYPE_PUBLIC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TYPE_SEED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accEthPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accTokenPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addEthForReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_inputToken","type":"address"},{"internalType":"uint256","name":"_inputRate","type":"uint256"},{"internalType":"uint256","name":"_outputRate","type":"uint256"}],"name":"addInputTokenForSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addOutputTokenForSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addTokenForReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"amountEthForReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountTokenForReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceRemainingInVesting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"inputTokenId","type":"uint256"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"uint256","name":"buyType","type":"uint256"}],"name":"deposite","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"enableRewardSystem","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getClaimableInVesting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklistWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardTime","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":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardEthPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardTokenPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklistWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setNewRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardEthPerSecond","type":"uint256"}],"name":"setRewardEthPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardTokenPerSecond","type":"uint256"}],"name":"setRewardTokenPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"soldAmountPublic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"soldAmountSeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"soldTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"startRewardSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"outputToken","type":"address"}],"name":"startSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenInput","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"rateInput","type":"uint256"},{"internalType":"uint256","name":"rateOutput","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOutput","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardEthDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardTokenDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenForPublic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenForSeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenForSwapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestingList","outputs":[{"internalType":"uint256","name":"totalBalance","type":"uint256"},{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"uint256","name":"claimedCheckPoint","type":"uint256"},{"internalType":"uint256","name":"rewardTokenDebt","type":"uint256"},{"internalType":"uint256","name":"rewardEthDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withDrawFromVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405262278d006003556103416004556000600a556000600b556000600c556001600d556002600e5562278d00600f5564e8d4a51000601a5534801561004657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061204f806100976000396000f3fe60806040526004361061028c5760003560e01c8063a4041cfd1161015a578063ce98d80a116100c1578063efb64d511161007a578063efb64d5114610744578063f1377164146107d6578063f2fde38b146107ec578063f40f0f521461080c578063f7c618c114610841578063fd33d0401461086657600080fd5b8063ce98d80a14610692578063d2a14151146106c2578063d5999a5c146106d8578063e4a09fe4146106ee578063ea5a3acb1461070e578063ee6ff5ec1461072e57600080fd5b8063b8e94b6311610113578063b8e94b63146105e6578063b8fe0bb014610606578063baa9da1514610626578063bfd021ce1461063c578063cae45ed01461065c578063ccd34cd51461067c57600080fd5b8063a4041cfd1461054f578063a64b1d5f14610565578063b41c9eda1461057b578063b633b3641461059b578063b80161b2146105b0578063b85a2901146105d057600080fd5b80637883a422116101fe5780638da5cb5b116101b75780638da5cb5b146104a95780638f662915146104db5780639231cf74146104f15780639f9fed9b146105075780639fa12f071461050f5780639faf205f1461052f57600080fd5b80637883a422146103c65780637b199de1146103db5780637df62b6f146103f1578063836d48301461045d57806384f1049214610473578063888ba1681461049357600080fd5b80634641257d116102505780634641257d14610325578063466e35811461033a578063685c020b146103645780636ddd171314610377578063715018a61461039157806375113939146103a657600080fd5b806307867b7d146102985780630bd3896e146102c15780630ec8a311146102d757806317d0fe76146102f9578063416ff12c1461030f57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae60185481565b6040519081526020015b60405180910390f35b3480156102cd57600080fd5b506102ae60115481565b3480156102e357600080fd5b506102f76102f2366004611dc3565b61087c565b005b34801561030557600080fd5b506102ae600d5481565b34801561031b57600080fd5b506102ae60075481565b34801561033157600080fd5b506102f761091e565b34801561034657600080fd5b50601b546103549060ff1681565b60405190151581526020016102b8565b6102f7610372366004611e15565b610aa1565b34801561038357600080fd5b506010546103549060ff1681565b34801561039d57600080fd5b506102f7610e0a565b3480156103b257600080fd5b506102f76103c1366004611dc3565b610e7e565b3480156103d257600080fd5b506102f7610ead565b3480156103e757600080fd5b506102ae60095481565b3480156103fd57600080fd5b5061043861040c366004611dc3565b60026020819052600091825260409091208054600182015491909201546001600160a01b039092169183565b604080516001600160a01b0390941684526020840192909252908201526060016102b8565b34801561046957600080fd5b506102ae600a5481565b34801561047f57600080fd5b506102f761048e366004611d7e565b61102d565b34801561049f57600080fd5b506102ae60125481565b3480156104b557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b3480156104e757600080fd5b506102ae60175481565b3480156104fd57600080fd5b506102ae60195481565b6102f7611186565b34801561051b57600080fd5b506102f761052a366004611dc3565b611198565b34801561053b57600080fd5b506102ae61054a366004611d2e565b6111c7565b34801561055b57600080fd5b506102ae60165481565b34801561057157600080fd5b506102ae60155481565b34801561058757600080fd5b506102f7610596366004611d48565b611342565b3480156105a757600080fd5b506102f7611397565b3480156105bc57600080fd5b506102f76105cb366004611d2e565b6113cd565b3480156105dc57600080fd5b506102ae600e5481565b3480156105f257600080fd5b506102f7610601366004611d2e565b611470565b34801561061257600080fd5b506102f7610621366004611dc3565b6114c2565b34801561063257600080fd5b506102ae600c5481565b34801561064857600080fd5b506102f7610657366004611ddb565b611560565b34801561066857600080fd5b506102f7610677366004611d2e565b6115d3565b34801561068857600080fd5b506102ae601a5481565b34801561069e57600080fd5b506103546106ad366004611d2e565b60066020526000908152604090205460ff1681565b3480156106ce57600080fd5b506102ae600b5481565b3480156106e457600080fd5b506102ae600f5481565b3480156106fa57600080fd5b506001546104c3906001600160a01b031681565b34801561071a57600080fd5b506102ae610729366004611d2e565b61164b565b34801561073a57600080fd5b506102ae60085481565b34801561075057600080fd5b506107a161075f366004611d2e565b60056020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016102b8565b3480156107e257600080fd5b506102ae60135481565b3480156107f857600080fd5b506102f7610807366004611d2e565b6116c1565b34801561081857600080fd5b5061082c610827366004611d2e565b6117ab565b604080519283526020830191909152016102b8565b34801561084d57600080fd5b506010546104c39061010090046001600160a01b031681565b34801561087257600080fd5b506102ae60145481565b6010546040516323b872dd60e01b8152336004820152306024820152604481018390526101009091046001600160a01b0316906323b872dd90606401602060405180830381600087803b1580156108d257600080fd5b505af11580156108e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a9190611da7565b506011546109189082611965565b60115550565b6109266119cd565b336000908152600560205260409020805415610a66576000610971826005015461096b601a546109656017548760000154611ada90919063ffffffff16565b90611b59565b90611bb4565b9050600061099c836006015461096b601a546109656018548860000154611ada90919063ffffffff16565b90508115610a2e5760105460405163a9059cbb60e01b8152336004820152602481018490526101009091046001600160a01b03169063a9059cbb90604401602060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c9190611da7565b505b8015610a6357604051339082156108fc029083906000818181858888f19350505050158015610a61573d6000803e3d6000fd5b505b50505b601a546017548254610a7d92916109659190611ada565b6005820155601a546018548254610a9992916109659190611ada565b600690910155565b60038310610aef5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081a5b9c1d5d081d1bdad95b88125160521b60448201526064015b60405180910390fd5b3360009081526006602052604090205460ff1615610b455760405162461bcd60e51b8152602060048201526013602482015272165bdd49dc99481a5b88189b1858dadb1a5cdd606a1b6044820152606401610ae6565b60105460ff16610b8f5760405162461bcd60e51b815260206004820152601560248201527453776170206973206e6f7420617661696c61626c6560581b6044820152606401610ae6565b600083815260026020908152604080832080546001918201549154835163313ce56760e01b815293516001600160a01b039283169695610c5995610965949093169263313ce5679260048083019392829003018186803b158015610bf257600080fd5b505afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a9190611e40565b610c3590600a611f11565b60008981526002602081905260409091200154610c53908990611ada565b90611ada565b9050600d54831415610c7357610c70816003611ada565b90505b600c54600754610c8291611bb4565b8110610cc95760405162461bcd60e51b815260206004820152601660248201527522bc31b2b2b21030bb30b4b0b6313632903a37b5b2b760511b6044820152606401610ae6565b816001600160a01b03166323b872dd3330610d60866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190611e40565b610d5990600a611f11565b8990611ada565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190611da7565b50600c54610df59082611965565b600c55610e03338285611c10565b5050505050565b6000546001600160a01b03163314610e345760405162461bcd60e51b8152600401610ae690611e61565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ea85760405162461bcd60e51b8152600401610ae690611e61565b601555565b33600081815260056020526040812091610ec6906111c7565b905060008111610f3e5760405162461bcd60e51b815260206004820152603b60248201527f54686572652069736e277420746f6b656e20696e2076657374696e672074686160448201527f74277320636c61696d61626c6520617420746865206d6f6d656e7400000000006064820152608401610ae6565b60038201544290811115610f53575060038201545b600f546003546002850154610f689084611fdb565b610f729190611fdb565b610f7c9190611eae565b610f87906001611e96565b60048401556001830154610f9b9083611965565b6001848101919091555460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044015b602060405180830381600087803b158015610fef57600080fd5b505af1158015611003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110279190611da7565b50505050565b6000546001600160a01b031633146110575760405162461bcd60e51b8152600401610ae690611e61565b6001546001600160a01b038381169116141561110157600c5460075461107c91611bb4565b81106110f05760405162461bcd60e51b815260206004820152603d60248201527f596f7527726520747279696e6720776974686472617720616e20616d6f756e7460448201527f20746861742065786365656420617661696c6162652062616c616e63650000006064820152608401610ae6565b6007546110fd9082611bb4565b6007555b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561114957600080fd5b505af115801561115d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111819190611da7565b505050565b6012546111939034611965565b601255565b6000546001600160a01b031633146111c25760405162461bcd60e51b8152600401610ae690611e61565b601655565b6001600160a01b0381166000908152600560208181526040808420815160e0810183528154808252600183015494820185905260028301549382019390935260038201546060820152600482015460808201529381015460a08501526006015460c08401521161123a5750600092915050565b6040810151158061124d57506060810151155b8061125757508051155b156112655750600092915050565b60608101514290811061128a576020820151825161128291611bb4565b949350505050565b600354826040015161129c9190611e96565b8110156112ad575060009392505050565b6000600f546003548460400151846112c59190611fdb565b6112cf9190611fdb565b6112d99190611eae565b6112e4906001611e96565b90508260800151811115611337576000612710846000015160045486608001518561130f9190611fdb565b6113199190611fbc565b6113239190611fbc565b61132d9190611eae565b9695505050505050565b506000949350505050565b6000546001600160a01b0316331461136c5760405162461bcd60e51b8152600401610ae690611e61565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c15760405162461bcd60e51b8152600401610ae690611e61565b6010805460ff19169055565b6000546001600160a01b031633146113f75760405162461bcd60e51b8152600401610ae690611e61565b60105460ff16156114415760405162461bcd60e51b815260206004820152601460248201527314ddd85c08185b1c9958591e481cdd185c9d195960621b6044820152606401610ae6565b600180546001600160a01b0319166001600160a01b03929092169190911781556010805460ff19169091179055565b6000546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610ae690611e61565b601080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561151457600080fd5b505af1158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190611da7565b5060075461155a9082611965565b60075550565b6000546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610ae690611e61565b6003841061159757600080fd5b600093845260026020819052604090942080546001600160a01b0319166001600160a01b03949094169390931783556001830191909155910155565b6000546001600160a01b031633146115fd5760405162461bcd60e51b8152600401610ae690611e61565b601b805460ff19166001179055601080546001600160a01b0390921661010002610100600160a81b031990921691909117905566b1a2bc2ec500006015556503a35294400060165542601955565b6001600160a01b0381166000908152600560208181526040808420815160e0810183528154808252600183015494820185905260028301549382019390935260038201546060820152600482015460808201529381015460a08501526006015460c08401526116ba9190611fdb565b9392505050565b6000546001600160a01b031633146116eb5760405162461bcd60e51b8152600401610ae690611e61565b6001600160a01b0381166117505760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260408120601b548291908290819060ff166117e257506000958695509350505050565b601954421180156117f45750600a5415155b1561190757600061180760195442611d06565b9050600061182060155483611ada90919063ffffffff16565b905060115481111561183157506011545b600061185a611851600a54610965601a5486611ada90919063ffffffff16565b60175490611965565b9050600061187360165485611ada90919063ffffffff16565b905060125481111561188457506012545b60006118ad6118a4600a54610965601a5486611ada90919063ffffffff16565b60185490611965565b90506118d4886005015461096b601a54610965878d60000154611ada90919063ffffffff16565b96506118fb886006015461096b601a54610965858d60000154611ada90919063ffffffff16565b9550505050505061195a565b61192e836005015461096b601a546109656017548860000154611ada90919063ffffffff16565b9150611957836006015461096b601a546109656018548860000154611ada90919063ffffffff16565b90505b909590945092505050565b6000806119728385611e96565b9050838110156119c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ae6565b90505b92915050565b60195442116119d857565b601b5460ff1615806119ea5750600a54155b156119f55742601955565b6000611a0360195442611d06565b90506000611a1c60155483611ada90919063ffffffff16565b9050601154811115611a2d57506011545b611a4b611851600a54610965601a5485611ada90919063ffffffff16565b601755601154611a5b9082611bb4565b601155601454611a6b9082611965565b601455601654600090611a7f908490611ada565b9050601254811115611a9057506012545b611aae6118a4600a54610965601a5485611ada90919063ffffffff16565b601855601254611abe9082611bb4565b601255601354611ace9082611965565b60135550504260195550565b600082611ae9575060006119c7565b6000611af58385611fbc565b905082611b028583611eae565b146119c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ae6565b6000808211611baa5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ae6565b6119c48284611eae565b600082821115611c065760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ae6565b6119c48284611fdb565b600d54811415611cbd576001600160a01b0383166000908152600560205260409020600a54611c3f9084611965565b600a558054611c4e9084611965565b8155600281015415611c64578060020154611c66565b425b6002820155600381015415611c7f578060030154611cb2565b600f54600454611c9190612710611eae565b611c9b9190611fbc565b600354611ca89042611e96565b611cb29190611e96565b600390910155505050565b600b54611cca9083611965565b600b5560015460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401610fd5565b60006119c48284611bb4565b80356001600160a01b0381168114611d2957600080fd5b919050565b600060208284031215611d3f578081fd5b6119c482611d12565b60008060408385031215611d5a578081fd5b611d6383611d12565b91506020830135611d7381612008565b809150509250929050565b60008060408385031215611d90578182fd5b611d9983611d12565b946020939093013593505050565b600060208284031215611db8578081fd5b81516119c481612008565b600060208284031215611dd4578081fd5b5035919050565b60008060008060808587031215611df0578182fd5b84359350611e0060208601611d12565b93969395505050506040820135916060013590565b600080600060608486031215611e29578283fd5b505081359360208301359350604090920135919050565b600060208284031215611e51578081fd5b815160ff811681146119c4578182fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611ea957611ea9611ff2565b500190565b600082611ec957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611f09578160001904821115611eef57611eef611ff2565b80851615611efc57918102915b93841c9390800290611ed3565b509250929050565b60006119c460ff841683600082611f2a575060016119c7565b81611f37575060006119c7565b8160018114611f4d5760028114611f5757611f73565b60019150506119c7565b60ff841115611f6857611f68611ff2565b50506001821b6119c7565b5060208310610133831016604e8410600b8410161715611f96575081810a6119c7565b611fa08383611ece565b8060001904821115611fb457611fb4611ff2565b029392505050565b6000816000190483118215151615611fd657611fd6611ff2565b500290565b600082821015611fed57611fed611ff2565b500390565b634e487b7160e01b600052601160045260246000fd5b801515811461201657600080fd5b5056fea2646970667358221220b9dd06ec83914d645c45940c7d6bcedb1a0b56f6dc9d5550575820be507577c364736f6c63430008040033
Deployed Bytecode
0x60806040526004361061028c5760003560e01c8063a4041cfd1161015a578063ce98d80a116100c1578063efb64d511161007a578063efb64d5114610744578063f1377164146107d6578063f2fde38b146107ec578063f40f0f521461080c578063f7c618c114610841578063fd33d0401461086657600080fd5b8063ce98d80a14610692578063d2a14151146106c2578063d5999a5c146106d8578063e4a09fe4146106ee578063ea5a3acb1461070e578063ee6ff5ec1461072e57600080fd5b8063b8e94b6311610113578063b8e94b63146105e6578063b8fe0bb014610606578063baa9da1514610626578063bfd021ce1461063c578063cae45ed01461065c578063ccd34cd51461067c57600080fd5b8063a4041cfd1461054f578063a64b1d5f14610565578063b41c9eda1461057b578063b633b3641461059b578063b80161b2146105b0578063b85a2901146105d057600080fd5b80637883a422116101fe5780638da5cb5b116101b75780638da5cb5b146104a95780638f662915146104db5780639231cf74146104f15780639f9fed9b146105075780639fa12f071461050f5780639faf205f1461052f57600080fd5b80637883a422146103c65780637b199de1146103db5780637df62b6f146103f1578063836d48301461045d57806384f1049214610473578063888ba1681461049357600080fd5b80634641257d116102505780634641257d14610325578063466e35811461033a578063685c020b146103645780636ddd171314610377578063715018a61461039157806375113939146103a657600080fd5b806307867b7d146102985780630bd3896e146102c15780630ec8a311146102d757806317d0fe76146102f9578063416ff12c1461030f57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae60185481565b6040519081526020015b60405180910390f35b3480156102cd57600080fd5b506102ae60115481565b3480156102e357600080fd5b506102f76102f2366004611dc3565b61087c565b005b34801561030557600080fd5b506102ae600d5481565b34801561031b57600080fd5b506102ae60075481565b34801561033157600080fd5b506102f761091e565b34801561034657600080fd5b50601b546103549060ff1681565b60405190151581526020016102b8565b6102f7610372366004611e15565b610aa1565b34801561038357600080fd5b506010546103549060ff1681565b34801561039d57600080fd5b506102f7610e0a565b3480156103b257600080fd5b506102f76103c1366004611dc3565b610e7e565b3480156103d257600080fd5b506102f7610ead565b3480156103e757600080fd5b506102ae60095481565b3480156103fd57600080fd5b5061043861040c366004611dc3565b60026020819052600091825260409091208054600182015491909201546001600160a01b039092169183565b604080516001600160a01b0390941684526020840192909252908201526060016102b8565b34801561046957600080fd5b506102ae600a5481565b34801561047f57600080fd5b506102f761048e366004611d7e565b61102d565b34801561049f57600080fd5b506102ae60125481565b3480156104b557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b3480156104e757600080fd5b506102ae60175481565b3480156104fd57600080fd5b506102ae60195481565b6102f7611186565b34801561051b57600080fd5b506102f761052a366004611dc3565b611198565b34801561053b57600080fd5b506102ae61054a366004611d2e565b6111c7565b34801561055b57600080fd5b506102ae60165481565b34801561057157600080fd5b506102ae60155481565b34801561058757600080fd5b506102f7610596366004611d48565b611342565b3480156105a757600080fd5b506102f7611397565b3480156105bc57600080fd5b506102f76105cb366004611d2e565b6113cd565b3480156105dc57600080fd5b506102ae600e5481565b3480156105f257600080fd5b506102f7610601366004611d2e565b611470565b34801561061257600080fd5b506102f7610621366004611dc3565b6114c2565b34801561063257600080fd5b506102ae600c5481565b34801561064857600080fd5b506102f7610657366004611ddb565b611560565b34801561066857600080fd5b506102f7610677366004611d2e565b6115d3565b34801561068857600080fd5b506102ae601a5481565b34801561069e57600080fd5b506103546106ad366004611d2e565b60066020526000908152604090205460ff1681565b3480156106ce57600080fd5b506102ae600b5481565b3480156106e457600080fd5b506102ae600f5481565b3480156106fa57600080fd5b506001546104c3906001600160a01b031681565b34801561071a57600080fd5b506102ae610729366004611d2e565b61164b565b34801561073a57600080fd5b506102ae60085481565b34801561075057600080fd5b506107a161075f366004611d2e565b60056020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016102b8565b3480156107e257600080fd5b506102ae60135481565b3480156107f857600080fd5b506102f7610807366004611d2e565b6116c1565b34801561081857600080fd5b5061082c610827366004611d2e565b6117ab565b604080519283526020830191909152016102b8565b34801561084d57600080fd5b506010546104c39061010090046001600160a01b031681565b34801561087257600080fd5b506102ae60145481565b6010546040516323b872dd60e01b8152336004820152306024820152604481018390526101009091046001600160a01b0316906323b872dd90606401602060405180830381600087803b1580156108d257600080fd5b505af11580156108e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a9190611da7565b506011546109189082611965565b60115550565b6109266119cd565b336000908152600560205260409020805415610a66576000610971826005015461096b601a546109656017548760000154611ada90919063ffffffff16565b90611b59565b90611bb4565b9050600061099c836006015461096b601a546109656018548860000154611ada90919063ffffffff16565b90508115610a2e5760105460405163a9059cbb60e01b8152336004820152602481018490526101009091046001600160a01b03169063a9059cbb90604401602060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c9190611da7565b505b8015610a6357604051339082156108fc029083906000818181858888f19350505050158015610a61573d6000803e3d6000fd5b505b50505b601a546017548254610a7d92916109659190611ada565b6005820155601a546018548254610a9992916109659190611ada565b600690910155565b60038310610aef5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081a5b9c1d5d081d1bdad95b88125160521b60448201526064015b60405180910390fd5b3360009081526006602052604090205460ff1615610b455760405162461bcd60e51b8152602060048201526013602482015272165bdd49dc99481a5b88189b1858dadb1a5cdd606a1b6044820152606401610ae6565b60105460ff16610b8f5760405162461bcd60e51b815260206004820152601560248201527453776170206973206e6f7420617661696c61626c6560581b6044820152606401610ae6565b600083815260026020908152604080832080546001918201549154835163313ce56760e01b815293516001600160a01b039283169695610c5995610965949093169263313ce5679260048083019392829003018186803b158015610bf257600080fd5b505afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a9190611e40565b610c3590600a611f11565b60008981526002602081905260409091200154610c53908990611ada565b90611ada565b9050600d54831415610c7357610c70816003611ada565b90505b600c54600754610c8291611bb4565b8110610cc95760405162461bcd60e51b815260206004820152601660248201527522bc31b2b2b21030bb30b4b0b6313632903a37b5b2b760511b6044820152606401610ae6565b816001600160a01b03166323b872dd3330610d60866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190611e40565b610d5990600a611f11565b8990611ada565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190611da7565b50600c54610df59082611965565b600c55610e03338285611c10565b5050505050565b6000546001600160a01b03163314610e345760405162461bcd60e51b8152600401610ae690611e61565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ea85760405162461bcd60e51b8152600401610ae690611e61565b601555565b33600081815260056020526040812091610ec6906111c7565b905060008111610f3e5760405162461bcd60e51b815260206004820152603b60248201527f54686572652069736e277420746f6b656e20696e2076657374696e672074686160448201527f74277320636c61696d61626c6520617420746865206d6f6d656e7400000000006064820152608401610ae6565b60038201544290811115610f53575060038201545b600f546003546002850154610f689084611fdb565b610f729190611fdb565b610f7c9190611eae565b610f87906001611e96565b60048401556001830154610f9b9083611965565b6001848101919091555460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044015b602060405180830381600087803b158015610fef57600080fd5b505af1158015611003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110279190611da7565b50505050565b6000546001600160a01b031633146110575760405162461bcd60e51b8152600401610ae690611e61565b6001546001600160a01b038381169116141561110157600c5460075461107c91611bb4565b81106110f05760405162461bcd60e51b815260206004820152603d60248201527f596f7527726520747279696e6720776974686472617720616e20616d6f756e7460448201527f20746861742065786365656420617661696c6162652062616c616e63650000006064820152608401610ae6565b6007546110fd9082611bb4565b6007555b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561114957600080fd5b505af115801561115d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111819190611da7565b505050565b6012546111939034611965565b601255565b6000546001600160a01b031633146111c25760405162461bcd60e51b8152600401610ae690611e61565b601655565b6001600160a01b0381166000908152600560208181526040808420815160e0810183528154808252600183015494820185905260028301549382019390935260038201546060820152600482015460808201529381015460a08501526006015460c08401521161123a5750600092915050565b6040810151158061124d57506060810151155b8061125757508051155b156112655750600092915050565b60608101514290811061128a576020820151825161128291611bb4565b949350505050565b600354826040015161129c9190611e96565b8110156112ad575060009392505050565b6000600f546003548460400151846112c59190611fdb565b6112cf9190611fdb565b6112d99190611eae565b6112e4906001611e96565b90508260800151811115611337576000612710846000015160045486608001518561130f9190611fdb565b6113199190611fbc565b6113239190611fbc565b61132d9190611eae565b9695505050505050565b506000949350505050565b6000546001600160a01b0316331461136c5760405162461bcd60e51b8152600401610ae690611e61565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c15760405162461bcd60e51b8152600401610ae690611e61565b6010805460ff19169055565b6000546001600160a01b031633146113f75760405162461bcd60e51b8152600401610ae690611e61565b60105460ff16156114415760405162461bcd60e51b815260206004820152601460248201527314ddd85c08185b1c9958591e481cdd185c9d195960621b6044820152606401610ae6565b600180546001600160a01b0319166001600160a01b03929092169190911781556010805460ff19169091179055565b6000546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610ae690611e61565b601080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561151457600080fd5b505af1158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190611da7565b5060075461155a9082611965565b60075550565b6000546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610ae690611e61565b6003841061159757600080fd5b600093845260026020819052604090942080546001600160a01b0319166001600160a01b03949094169390931783556001830191909155910155565b6000546001600160a01b031633146115fd5760405162461bcd60e51b8152600401610ae690611e61565b601b805460ff19166001179055601080546001600160a01b0390921661010002610100600160a81b031990921691909117905566b1a2bc2ec500006015556503a35294400060165542601955565b6001600160a01b0381166000908152600560208181526040808420815160e0810183528154808252600183015494820185905260028301549382019390935260038201546060820152600482015460808201529381015460a08501526006015460c08401526116ba9190611fdb565b9392505050565b6000546001600160a01b031633146116eb5760405162461bcd60e51b8152600401610ae690611e61565b6001600160a01b0381166117505760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260408120601b548291908290819060ff166117e257506000958695509350505050565b601954421180156117f45750600a5415155b1561190757600061180760195442611d06565b9050600061182060155483611ada90919063ffffffff16565b905060115481111561183157506011545b600061185a611851600a54610965601a5486611ada90919063ffffffff16565b60175490611965565b9050600061187360165485611ada90919063ffffffff16565b905060125481111561188457506012545b60006118ad6118a4600a54610965601a5486611ada90919063ffffffff16565b60185490611965565b90506118d4886005015461096b601a54610965878d60000154611ada90919063ffffffff16565b96506118fb886006015461096b601a54610965858d60000154611ada90919063ffffffff16565b9550505050505061195a565b61192e836005015461096b601a546109656017548860000154611ada90919063ffffffff16565b9150611957836006015461096b601a546109656018548860000154611ada90919063ffffffff16565b90505b909590945092505050565b6000806119728385611e96565b9050838110156119c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ae6565b90505b92915050565b60195442116119d857565b601b5460ff1615806119ea5750600a54155b156119f55742601955565b6000611a0360195442611d06565b90506000611a1c60155483611ada90919063ffffffff16565b9050601154811115611a2d57506011545b611a4b611851600a54610965601a5485611ada90919063ffffffff16565b601755601154611a5b9082611bb4565b601155601454611a6b9082611965565b601455601654600090611a7f908490611ada565b9050601254811115611a9057506012545b611aae6118a4600a54610965601a5485611ada90919063ffffffff16565b601855601254611abe9082611bb4565b601255601354611ace9082611965565b60135550504260195550565b600082611ae9575060006119c7565b6000611af58385611fbc565b905082611b028583611eae565b146119c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ae6565b6000808211611baa5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ae6565b6119c48284611eae565b600082821115611c065760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ae6565b6119c48284611fdb565b600d54811415611cbd576001600160a01b0383166000908152600560205260409020600a54611c3f9084611965565b600a558054611c4e9084611965565b8155600281015415611c64578060020154611c66565b425b6002820155600381015415611c7f578060030154611cb2565b600f54600454611c9190612710611eae565b611c9b9190611fbc565b600354611ca89042611e96565b611cb29190611e96565b600390910155505050565b600b54611cca9083611965565b600b5560015460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401610fd5565b60006119c48284611bb4565b80356001600160a01b0381168114611d2957600080fd5b919050565b600060208284031215611d3f578081fd5b6119c482611d12565b60008060408385031215611d5a578081fd5b611d6383611d12565b91506020830135611d7381612008565b809150509250929050565b60008060408385031215611d90578182fd5b611d9983611d12565b946020939093013593505050565b600060208284031215611db8578081fd5b81516119c481612008565b600060208284031215611dd4578081fd5b5035919050565b60008060008060808587031215611df0578182fd5b84359350611e0060208601611d12565b93969395505050506040820135916060013590565b600080600060608486031215611e29578283fd5b505081359360208301359350604090920135919050565b600060208284031215611e51578081fd5b815160ff811681146119c4578182fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611ea957611ea9611ff2565b500190565b600082611ec957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611f09578160001904821115611eef57611eef611ff2565b80851615611efc57918102915b93841c9390800290611ed3565b509250929050565b60006119c460ff841683600082611f2a575060016119c7565b81611f37575060006119c7565b8160018114611f4d5760028114611f5757611f73565b60019150506119c7565b60ff841115611f6857611f68611ff2565b50506001821b6119c7565b5060208310610133831016604e8410600b8410161715611f96575081810a6119c7565b611fa08383611ece565b8060001904821115611fb457611fb4611ff2565b029392505050565b6000816000190483118215151615611fd657611fd6611ff2565b500290565b600082821015611fed57611fed611ff2565b500390565b634e487b7160e01b600052601160045260246000fd5b801515811461201657600080fd5b5056fea2646970667358221220b9dd06ec83914d645c45940c7d6bcedb1a0b56f6dc9d5550575820be507577c364736f6c63430008040033
Deployed Bytecode Sourcemap
11338:12394:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:29;;;;;;;;;;;;;;;;;;;9106:25:1;;;9094:2;9079:18;18076:29:0;;;;;;;;17706:35;;;;;;;;;;;;;;;;19060:202;;;;;;;;;;-1:-1:-1;19060:202:0;;;;;:::i;:::-;;:::i;:::-;;12373:28;;;;;;;;;;;;;;;;12105:36;;;;;;;;;;;;;;;;19440:843;;;;;;;;;;;;;:::i;18275:30::-;;;;;;;;;;-1:-1:-1;18275:30:0;;;;;;;;;;;3864:14:1;;3857:22;3839:41;;3827:2;3812:18;18275:30:0;3794:92:1;15980:947:0;;;;;;:::i;:::-;;:::i;12486:23::-;;;;;;;;;;-1:-1:-1;12486:23:0;;;;;;;;2676:148;;;;;;;;;;;;;:::i;18766:143::-;;;;;;;;;;-1:-1:-1;18766:143:0;;;;;:::i;:::-;;:::i;15301:671::-;;;;;;;;;;;;;:::i;12187:34::-;;;;;;;;;;;;;;;;11563:53;;;;;;;;;;-1:-1:-1;11563:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11563:53:0;;;;;;;;;;-1:-1:-1;;;;;3569:32:1;;;3551:51;;3633:2;3618:18;;3611:34;;;;3661:18;;;3654:34;3539:2;3524:18;11563:53:0;3506:188:1;12230:40:0;;;;;;;;;;;;;;;;13553:422;;;;;;;;;;-1:-1:-1;13553:422:0;;;;;:::i;:::-;;:::i;17748:33::-;;;;;;;;;;;;;;;;2025:87;;;;;;;;;;-1:-1:-1;2071:7:0;2098:6;-1:-1:-1;;;;;2098:6:0;2025:87;;;-1:-1:-1;;;;;2646:32:1;;;2628:51;;2616:2;2601:18;2025:87:0;2583:102:1;18004:31:0;;;;;;;;;;;;;;;;18161:29;;;;;;;;;;;;;;;;19270:115;;;:::i;18917:135::-;;;;;;;;;;-1:-1:-1;18917:135:0;;;;;:::i;:::-;;:::i;13983:1090::-;;;;;;;;;;-1:-1:-1;13983:1090:0;;;;;:::i;:::-;;:::i;17930:33::-;;;;;;;;;;;;;;;;17888:35;;;;;;;;;;;;;;;;13193:141;;;;;;;;;;-1:-1:-1;13193:141:0;;;;;:::i;:::-;;:::i;12759:75::-;;;;;;;;;;;;;:::i;12550:201::-;;;;;;;;;;-1:-1:-1;12550:201:0;;;;;:::i;:::-;;:::i;12408:30::-;;;;;;;;;;;;;;;;18649:109;;;;;;;;;;-1:-1:-1;18649:109:0;;;;;:::i;:::-;;:::i;13342:203::-;;;;;;;;;;-1:-1:-1;13342:203:0;;;;;:::i;:::-;;:::i;12324:40::-;;;;;;;;;;;;;;;;12842:300;;;;;;;;;;-1:-1:-1;12842:300:0;;;;;:::i;:::-;;:::i;18314:327::-;;;;;;;;;;-1:-1:-1;18314:327:0;;;;;:::i;:::-;;:::i;18226:40::-;;;;;;;;;;;;;;;;12046:50;;;;;;;;;;-1:-1:-1;12046:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12277:40;;;;;;;;;;;;;;;;12447:30;;;;;;;;;;;;;;;;11413:25;;;;;;;;;;-1:-1:-1;11413:25:0;;;;-1:-1:-1;;;;;11413:25:0;;;15081:212;;;;;;;;;;-1:-1:-1;15081:212:0;;;;;:::i;:::-;;:::i;12148:32::-;;;;;;;;;;;;;;;;11989:50;;;;;;;;;;-1:-1:-1;11989:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9710:25:1;;;9766:2;9751:18;;9744:34;;;;9794:18;;;9787:34;;;;9852:2;9837:18;;9830:34;;;;9895:3;9880:19;;9873:35;9939:3;9924:19;;9917:35;9983:3;9968:19;;9961:35;9697:3;9682:19;11989:50:0;9664:338:1;17790:40:0;;;;;;;;;;;;;;;;2979:244;;;;;;;;;;-1:-1:-1;2979:244:0;;;;;:::i;:::-;;:::i;20456:1614::-;;;;;;;;;;-1:-1:-1;20456:1614:0;;;;;:::i;:::-;;:::i;:::-;;;;9316:25:1;;;9372:2;9357:18;;9350:34;;;;9289:18;20456:1614:0;9271:119:1;17673:26:0;;;;;;;;;;-1:-1:-1;17673:26:0;;;;;;;-1:-1:-1;;;;;17673:26:0;;;17837:42;;;;;;;;;;;;;;;;19060:202;19128:11;;19121:67;;-1:-1:-1;;;19121:67:0;;19154:10;19121:67;;;2930:34:1;19174:4:0;2980:18:1;;;2973:43;3032:18;;;3025:34;;;19128:11:0;;;;-1:-1:-1;;;;;19128:11:0;;19121:32;;2865:18:1;;19121:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19222:20:0;;:32;;19247:6;19222:24;:32::i;:::-;19199:20;:55;-1:-1:-1;19060:202:0:o;19440:843::-;19477:13;:11;:13::i;:::-;19539:10;19501:23;19527;;;:11;:23;;;;;19567:17;;:21;19563:527;;19605:20;19628:87;19694:4;:20;;;19628:61;19672:16;;19628:39;19650:16;;19628:4;:17;;;:21;;:39;;;;:::i;:::-;:43;;:61::i;:::-;:65;;:87::i;:::-;19605:110;;19730:18;19751:83;19815:4;:18;;;19751:59;19793:16;;19751:37;19773:14;;19751:4;:17;;;:21;;:37;;;;:::i;:83::-;19730:104;-1:-1:-1;19853:16:0;;19849:121;;19897:11;;19890:64;;-1:-1:-1;;;19890:64:0;;19928:10;19890:64;;;3244:51:1;3311:18;;;3304:34;;;19897:11:0;;;;-1:-1:-1;;;;;19897:11:0;;19890:28;;3217:18:1;;19890:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19849:121;19988:14;;19984:95;;20023:40;;20031:10;;20023:40;;;;;20052:10;;20023:40;;;;20052:10;20031;20023:40;;;;;;;;;;;;;;;;;;;;;19984:95;19563:527;;;20167:16;;20145;;20123:17;;:61;;20167:16;20123:39;;:17;:21;:39::i;:61::-;20100:20;;;:84;20258:16;;20238:14;;20216:17;;:59;;20258:16;20216:37;;:17;:21;:37::i;:59::-;20195:18;;;;:80;19440:843::o;15980:947::-;16107:1;16092:12;:16;16084:51;;;;-1:-1:-1;;;16084:51:0;;8381:2:1;16084:51:0;;;8363:21:1;8420:2;8400:18;;;8393:30;-1:-1:-1;;;8439:18:1;;;8432:52;8501:18;;16084:51:0;;;;;;;;;16172:10;16154:29;;;;:17;:29;;;;;;;;:38;16146:70;;;;-1:-1:-1;;;16146:70:0;;5429:2:1;16146:70:0;;;5411:21:1;5468:2;5448:18;;;5441:30;-1:-1:-1;;;5487:18:1;;;5480:49;5546:18;;16146:70:0;5401:169:1;16146:70:0;16235:11;;;;16227:45;;;;-1:-1:-1;;;16227:45:0;;8031:2:1;16227:45:0;;;8013:21:1;8070:2;8050:18;;;8043:30;-1:-1:-1;;;8089:18:1;;;8082:51;8150:18;;16227:45:0;8003:171:1;16227:45:0;16285:17;16312:24;;;:10;:24;;;;;;;;:29;;;16469:34;;;;16441:11;;:22;;-1:-1:-1;;;16441:22:0;;;;-1:-1:-1;;;;;16312:29:0;;;;16285:17;16380:124;;:84;;16441:11;;;;:20;;:22;;;;;16312:24;16441:22;;;;;:11;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16437:26;;:2;:26;:::i;:::-;16396:24;;;;:10;:24;;;;;;;;:35;;16380:52;;:11;;:15;:52::i;:::-;:56;;:84::i;:124::-;16355:149;;16529:9;;16518:7;:20;16515:76;;;16570:21;:14;16589:1;16570:18;:21::i;:::-;16553:38;;16515:76;16660:9;;16634:21;;:36;;:25;:36::i;:::-;16617:14;:53;16609:88;;;;-1:-1:-1;;;16609:88:0;;4315:2:1;16609:88:0;;;4297:21:1;4354:2;4334:18;;;4327:30;-1:-1:-1;;;4373:18:1;;;4366:52;4435:18;;16609:88:0;4287:172:1;16609:88:0;16710:10;-1:-1:-1;;;;;16710:23:0;;16734:10;16754:4;16761:42;16781:10;-1:-1:-1;;;;;16781:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16777:25;;:2;:25;:::i;:::-;16761:11;;:15;:42::i;:::-;16710:94;;-1:-1:-1;;;;;;16710:94:0;;;;;;;-1:-1:-1;;;;;2948:15:1;;;16710:94:0;;;2930:34:1;3000:15;;;;2980:18;;;2973:43;3032:18;;;3025:34;2865:18;;16710:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16827:9:0;;:29;;16841:14;16827:13;:29::i;:::-;16815:9;:41;16867:52;16883:10;16895:14;16911:7;16867:15;:52::i;:::-;15980:947;;;;;:::o;2676:148::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;2783:1:::1;2767:6:::0;;2746:40:::1;::::0;-1:-1:-1;;;;;2767:6:0;;::::1;::::0;2746:40:::1;::::0;2783:1;;2746:40:::1;2814:1;2797:19:::0;;-1:-1:-1;;;;;;2797:19:0::1;::::0;;2676:148::o;18766:143::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;18857:20:::1;:44:::0;18766:143::o;15301:671::-;15392:10;15350:27;15380:23;;;:11;:23;;;;;;15442:33;;:21;:33::i;:::-;15416:59;;15512:1;15494:15;:19;15486:91;;;;-1:-1:-1;;;15486:91:0;;6893:2:1;15486:91:0;;;6875:21:1;6932:2;6912:18;;;6905:30;6971:34;6951:18;;;6944:62;7042:29;7022:18;;;7015:57;7089:19;;15486:91:0;6865:249:1;15486:91:0;15655:12;;;;15612:15;;15641:26;;15638:83;;;-1:-1:-1;15697:12:0;;;;15638:83;15820:5;;15806:10;;15789:14;;;;15775:28;;:11;:28;:::i;:::-;:41;;;;:::i;:::-;15774:51;;;;:::i;:::-;15770:55;;:1;:55;:::i;:::-;15741:26;;;:84;15860:21;;;;:42;;15886:15;15860:25;:42::i;:::-;15836:21;;;;:66;;;;15915:11;:49;;-1:-1:-1;;;15915:49:0;;15936:10;15915:49;;;3244:51:1;3311:18;;;3304:34;;;-1:-1:-1;;;;;15915:11:0;;;;:20;;3217:18:1;;15915:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15301:671;;;:::o;13553:422::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;13677:11:::1;::::0;-1:-1:-1;;;;;13653:36:0;;::::1;13677:11:::0;::::1;13653:36;13650:258;;;13748:9;::::0;13722:21:::1;::::0;:36:::1;::::0;:25:::1;:36::i;:::-;13713:6;:45;13705:119;;;::::0;-1:-1:-1;;;13705:119:0;;8732:2:1;13705:119:0::1;::::0;::::1;8714:21:1::0;8771:2;8751:18;;;8744:30;8810:34;8790:18;;;8783:62;8881:31;8861:18;;;8854:59;8930:19;;13705:119:0::1;8704:251:1::0;13705:119:0::1;13863:21;::::0;:33:::1;::::0;13889:6;13863:25:::1;:33::i;:::-;13839:21;:57:::0;13650:258:::1;13918:49;::::0;-1:-1:-1;;;13918:49:0;;13948:10:::1;13918:49;::::0;::::1;3244:51:1::0;3311:18;;;3304:34;;;-1:-1:-1;;;;;13918:29:0;::::1;::::0;::::1;::::0;3217:18:1;;13918:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13553:422:::0;;:::o;19270:115::-;19344:18;;:33;;19367:9;19344:22;:33::i;:::-;19323:18;:54;19270:115::o;18917:135::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;19004:18:::1;:40:::0;18917:135::o;13983:1090::-;-1:-1:-1;;;;;14100:20:0;;14052:7;14100:20;;;:11;:20;;;;;;;;14071:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14165:85:0;;-1:-1:-1;14237:1:0;;13983:1090;-1:-1:-1;;13983:1090:0:o;14165:85::-;14285:14;;;;:19;;:40;;-1:-1:-1;14308:12:0;;;;:17;14285:40;:70;;;-1:-1:-1;14329:21:0;;:26;14285:70;14282:109;;;-1:-1:-1;14378:1:0;;13983:1090;-1:-1:-1;;13983:1090:0:o;14282:109::-;14477:12;;;;14433:15;;14462:27;;14459:607;;14538:21;;;;14512;;:48;;:25;:48::i;:::-;14505:55;13983:1090;-1:-1:-1;;;;13983:1090:0:o;14459:607::-;14611:10;;14594:8;:14;;;:27;;;;:::i;:::-;14580:11;:41;14577:489;;;-1:-1:-1;14644:1:0;;13983:1090;-1:-1:-1;;;13983:1090:0:o;14577:489::-;14677:25;14755:5;;14741:10;;14724:8;:14;;;14710:11;:28;;;;:::i;:::-;:41;;;;:::i;:::-;14709:51;;;;:::i;:::-;14705:55;;:1;:55;:::i;:::-;14677:83;;14798:8;:26;;;14778:17;:46;14775:279;;;14844:17;14968:5;14943:8;:21;;;14917:23;;14887:8;:26;;;14867:17;:46;;;;:::i;:::-;14866:74;;;;:::i;:::-;:98;;;;:::i;:::-;14865:108;;;;:::i;:::-;14844:129;13983:1090;-1:-1:-1;;;;;;13983:1090:0:o;14775:279::-;-1:-1:-1;15053:1:0;;13983:1090;-1:-1:-1;;;;13983:1090:0:o;13193:141::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13286:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:40;;-1:-1:-1;;13286:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13193:141::o;12759:75::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;12807:11:::1;:19:::0;;-1:-1:-1;;12807:19:0::1;::::0;;12759:75::o;12550:201::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;12625:11:::1;::::0;::::1;;:20;12617:53;;;::::0;-1:-1:-1;;;12617:53:0;;7682:2:1;12617:53:0::1;::::0;::::1;7664:21:1::0;7721:2;7701:18;;;7694:30;-1:-1:-1;;;7740:18:1;;;7733:50;7800:18;;12617:53:0::1;7654:170:1::0;12617:53:0::1;12681:11;:33:::0;;-1:-1:-1;;;;;;12681:33:0::1;-1:-1:-1::0;;;;;12681:33:0;;;::::1;::::0;;;::::1;::::0;;12725:11:::1;:18:::0;;-1:-1:-1;;12725:18:0::1;::::0;;::::1;::::0;;12550:201::o;18649:109::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;18724:11:::1;:26:::0;;-1:-1:-1;;;;;18724:26:0;;::::1;;;-1:-1:-1::0;;;;;;18724:26:0;;::::1;::::0;;;::::1;::::0;;18649:109::o;13342:203::-;13410:11;;:59;;-1:-1:-1;;;13410:59:0;;13435:10;13410:59;;;2930:34:1;13455:4:0;2980:18:1;;;2973:43;3032:18;;;3025:34;;;-1:-1:-1;;;;;13410:11:0;;;;:24;;2865:18:1;;13410:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13504:21:0;;:33;;13530:6;13504:25;:33::i;:::-;13480:21;:57;-1:-1:-1;13342:203:0:o;12842:300::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;12987:1:::1;12981:3;:7;12973:16;;;::::0;::::1;;13000:15;::::0;;;:10:::1;:15;::::0;;;;;;;:34;;-1:-1:-1;;;;;;13000:34:0::1;-1:-1:-1::0;;;;;13000:34:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;13045:25:0;::::1;:38:::0;;;;13094:26;::::1;:40:::0;12842:300::o;18314:327::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;18390:18:::1;:25:::0;;-1:-1:-1;;18390:25:0::1;18411:4;18390:25;::::0;;18426:11:::1;:26:::0;;-1:-1:-1;;;;;18426:26:0;;::::1;18390:25;18426:26;-1:-1:-1::0;;;;;;18426:26:0;;::::1;::::0;;;::::1;::::0;;18486:10:::1;18463:20;:33:::0;18550:14:::1;18529:18;:35:::0;18618:15:::1;18601:14;:32:::0;18314:327::o;15081:212::-;-1:-1:-1;;;;;15201:20:0;;15153:7;15201:20;;;:11;:20;;;;;;;;15172:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15239:46;;15172:49;15239:46;:::i;:::-;15232:53;15081:212;-1:-1:-1;;;15081:212:0:o;2979:244::-;2071:7;2098:6;-1:-1:-1;;;;;2098:6:0;751:10;2245:23;2237:68;;;;-1:-1:-1;;;2237:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3068:22:0;::::1;3060:73;;;::::0;-1:-1:-1;;;3060:73:0;;4666:2:1;3060:73:0::1;::::0;::::1;4648:21:1::0;4705:2;4685:18;;;4678:30;4744:34;4724:18;;;4717:62;-1:-1:-1;;;4795:18:1;;;4788:36;4841:19;;3060:73:0::1;4638:228:1::0;3060:73:0::1;3170:6;::::0;;3149:38:::1;::::0;-1:-1:-1;;;;;3149:38:0;;::::1;::::0;3170:6;::::1;::::0;3149:38:::1;::::0;::::1;3198:6;:17:::0;;-1:-1:-1;;;;;;3198:17:0::1;-1:-1:-1::0;;;;;3198:17:0;;;::::1;::::0;;;::::1;::::0;;2979:244::o;20456:1614::-;-1:-1:-1;;;;;20572:18:0;;20517:7;20572:18;;;:11;:18;;;;;20674;;20517:7;;20572:18;20517:7;;;;20674:18;;20671:72;;-1:-1:-1;20726:1:0;;;;-1:-1:-1;20456:1614:0;-1:-1:-1;;;;20456:1614:0:o;20671:72::-;20777:14;;20759:15;:32;:55;;;;-1:-1:-1;20795:14:0;;:19;;20759:55;20755:1262;;;20831:18;20852:47;20867:14;;20883:15;20852:14;:47::i;:::-;20831:68;;20916:19;20938:36;20953:20;;20938:10;:14;;:36;;;;:::i;:::-;20916:58;;21006:20;;20992:11;:34;20989:107;;;-1:-1:-1;21060:20:0;;20989:107;21110:29;21142:75;21163:53;21201:14;;21163:33;21179:16;;21163:11;:15;;:33;;;;:::i;:53::-;21142:16;;;:20;:75::i;:::-;21110:107;;21234:17;21254:34;21269:18;;21254:10;:14;;:34;;;;:::i;:::-;21234:54;;21318:18;;21306:9;:30;21303:99;;;-1:-1:-1;21368:18:0;;21303:99;21416:27;21446:71;21465:51;21501:14;;21465:31;21479:16;;21465:9;:13;;:31;;;;:::i;:51::-;21446:14;;;:18;:71::i;:::-;21416:101;;21550:92;21621:4;:20;;;21550:66;21599:16;;21550:44;21572:21;21550:4;:17;;;:21;;:44;;;;:::i;:92::-;21534:108;;21671:88;21740:4;:18;;;21671:64;21718:16;;21671:42;21693:19;21671:4;:17;;;:21;;:42;;;;:::i;:88::-;21657:102;;20755:1262;;;;;;;;21807:87;21873:4;:20;;;21807:61;21851:16;;21807:39;21829:16;;21807:4;:17;;;:21;;:39;;;;:::i;:87::-;21792:102;;21922:83;21986:4;:18;;;21922:59;21964:16;;21922:37;21944:14;;21922:4;:17;;;:21;;:37;;;;:::i;:83::-;21909:96;;20755:1262;22037:12;;22051:10;;-1:-1:-1;20456:1614:0;-1:-1:-1;;;20456:1614:0:o;5936:179::-;5994:7;;6026:5;6030:1;6026;:5;:::i;:::-;6014:17;;6055:1;6050;:6;;6042:46;;;;-1:-1:-1;;;6042:46:0;;5073:2:1;6042:46:0;;;5055:21:1;5112:2;5092:18;;;5085:30;5151:29;5131:18;;;5124:57;5198:18;;6042:46:0;5045:177:1;6042:46:0;6106:1;-1:-1:-1;5936:179:0;;;;;:::o;22173:1250::-;22239:14;;22220:15;:33;22216:72;;22173:1250::o;22216:72::-;22304:18;;;;:27;;:50;;-1:-1:-1;22335:14:0;;:19;22304:50;22300:136;;;22388:15;22371:14;:32;22173:1250::o;22300:136::-;22448:18;22469:47;22484:14;;22500:15;22469:14;:47::i;:::-;22448:68;;22529:19;22551:36;22566:20;;22551:10;:14;;:36;;;;:::i;:::-;22529:58;;22615:20;;22601:11;:34;22598:99;;;-1:-1:-1;22665:20:0;;22598:99;22726:75;22747:53;22785:14;;22747:33;22763:16;;22747:11;:15;;:33;;;;:::i;22726:75::-;22707:16;:94;22835:20;;:37;;22860:11;22835:24;:37::i;:::-;22812:20;:60;22913:27;;:44;;22945:11;22913:31;:44::i;:::-;22883:27;:74;23007:18;;22972:17;;22992:34;;:10;;:14;:34::i;:::-;22972:54;;23052:18;;23040:9;:30;23037:91;;;-1:-1:-1;23098:18:0;;23037:91;23155:71;23174:51;23210:14;;23174:31;23188:16;;23174:9;:13;;:31;;;;:::i;23155:71::-;23138:14;:88;23258:18;;:33;;23281:9;23258:22;:33::i;:::-;23237:18;:54;23330:25;;:40;;23360:9;23330:29;:40::i;:::-;23302:25;:68;-1:-1:-1;;23400:15:0;23383:14;:32;-1:-1:-1;22173:1250:0:o;6815:220::-;6873:7;6897:6;6893:20;;-1:-1:-1;6912:1:0;6905:8;;6893:20;6924:9;6936:5;6940:1;6936;:5;:::i;:::-;6924:17;-1:-1:-1;6969:1:0;6960:5;6964:1;6924:17;6960:5;:::i;:::-;:10;6952:56;;;;-1:-1:-1;;;6952:56:0;;6491:2:1;6952:56:0;;;6473:21:1;6530:2;6510:18;;;6503:30;6569:34;6549:18;;;6542:62;-1:-1:-1;;;6620:18:1;;;6613:31;6661:19;;6952:56:0;6463:223:1;7513:153:0;7571:7;7603:1;7599;:5;7591:44;;;;-1:-1:-1;;;7591:44:0;;6136:2:1;7591:44:0;;;6118:21:1;6175:2;6155:18;;;6148:30;6214:28;6194:18;;;6187:56;6260:18;;7591:44:0;6108:176:1;7591:44:0;7653:5;7657:1;7653;:5;:::i;6398:158::-;6456:7;6489:1;6484;:6;;6476:49;;;;-1:-1:-1;;;6476:49:0;;5777:2:1;6476:49:0;;;5759:21:1;5816:2;5796:18;;;5789:30;5855:32;5835:18;;;5828:60;5905:18;;6476:49:0;5749:180:1;6476:49:0;6543:5;6547:1;6543;:5;:::i;16935:702::-;17039:9;;17030:5;:18;17027:603;;;-1:-1:-1;;;;;17094:20:0;;17064:27;17094:20;;;:11;:20;;;;;17146:14;;:26;;17165:6;17146:18;:26::i;:::-;17129:14;:43;17211:21;;:33;;17237:6;17211:25;:33::i;:::-;17187:57;;17276:14;;;;:19;:54;;17316:8;:14;;;17276:54;;;17298:15;17276:54;17259:14;;;:71;17360:12;;;;:17;:107;;17455:8;:12;;;17360:107;;;17447:5;;17420:23;;17412:31;;:5;:31;:::i;:::-;17411:41;;;;:::i;:::-;17398:10;;17380:28;;:15;:28;:::i;:::-;:72;;;;:::i;:::-;17345:12;;;;:122;13918:49:::1;13553:422:::0;;:::o;17027:603::-;17517:16;;:28;;17538:6;17517:20;:28::i;:::-;17498:16;:47;17560:11;;:37;;-1:-1:-1;;;17560:37:0;;-1:-1:-1;;;;;3262:32:1;;;17560:37:0;;;3244:51:1;3311:18;;;3304:34;;;17560:11:0;;;;:20;;3217:18:1;;17560:37:0;3199:145:1;23597:128:0;23672:7;23703:14;:3;23711:5;23703:7;:14::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:325::-;458:6;466;519:2;507:9;498:7;494:23;490:32;487:2;;;540:6;532;525:22;487:2;568:29;587:9;568:29;:::i;:::-;558:39;;647:2;636:9;632:18;619:32;660:28;682:5;660:28;:::i;:::-;707:5;697:15;;;477:241;;;;;:::o;723:264::-;791:6;799;852:2;840:9;831:7;827:23;823:32;820:2;;;873:6;865;858:22;820:2;901:29;920:9;901:29;:::i;:::-;891:39;977:2;962:18;;;;949:32;;-1:-1:-1;;;810:177:1:o;992:255::-;1059:6;1112:2;1100:9;1091:7;1087:23;1083:32;1080:2;;;1133:6;1125;1118:22;1080:2;1170:9;1164:16;1189:28;1211:5;1189:28;:::i;1252:190::-;1311:6;1364:2;1352:9;1343:7;1339:23;1335:32;1332:2;;;1385:6;1377;1370:22;1332:2;-1:-1:-1;1413:23:1;;1322:120;-1:-1:-1;1322:120:1:o;1447:401::-;1533:6;1541;1549;1557;1610:3;1598:9;1589:7;1585:23;1581:33;1578:2;;;1632:6;1624;1617:22;1578:2;1673:9;1660:23;1650:33;;1702:38;1736:2;1725:9;1721:18;1702:38;:::i;:::-;1568:280;;1692:48;;-1:-1:-1;;;;1787:2:1;1772:18;;1759:32;;1838:2;1823:18;1810:32;;1568:280::o;1853:326::-;1930:6;1938;1946;1999:2;1987:9;1978:7;1974:23;1970:32;1967:2;;;2020:6;2012;2005:22;1967:2;-1:-1:-1;;2048:23:1;;;2118:2;2103:18;;2090:32;;-1:-1:-1;2169:2:1;2154:18;;;2141:32;;1957:222;-1:-1:-1;1957:222:1:o;2184:293::-;2252:6;2305:2;2293:9;2284:7;2280:23;2276:32;2273:2;;;2326:6;2318;2311:22;2273:2;2363:9;2357:16;2413:4;2406:5;2402:16;2395:5;2392:27;2382:2;;2438:6;2430;2423:22;7119:356;7321:2;7303:21;;;7340:18;;;7333:30;7399:34;7394:2;7379:18;;7372:62;7466:2;7451:18;;7293:182::o;10007:128::-;10047:3;10078:1;10074:6;10071:1;10068:13;10065:2;;;10084:18;;:::i;:::-;-1:-1:-1;10120:9:1;;10055:80::o;10140:217::-;10180:1;10206;10196:2;;-1:-1:-1;;;10231:31:1;;10285:4;10282:1;10275:15;10313:4;10238:1;10303:15;10196:2;-1:-1:-1;10342:9:1;;10186:171::o;10362:422::-;10451:1;10494:5;10451:1;10508:270;10529:7;10519:8;10516:21;10508:270;;;10588:4;10584:1;10580:6;10576:17;10570:4;10567:27;10564:2;;;10597:18;;:::i;:::-;10647:7;10637:8;10633:22;10630:2;;;10667:16;;;;10630:2;10746:22;;;;10706:15;;;;10508:270;;;10512:3;10426:358;;;;;:::o;10789:140::-;10847:5;10876:47;10917:4;10907:8;10903:19;10897:4;10983:5;11013:8;11003:2;;-1:-1:-1;11054:1:1;11068:5;;11003:2;11102:4;11092:2;;-1:-1:-1;11139:1:1;11153:5;;11092:2;11184:4;11202:1;11197:59;;;;11270:1;11265:130;;;;11177:218;;11197:59;11227:1;11218:10;;11241:5;;;11265:130;11302:3;11292:8;11289:17;11286:2;;;11309:18;;:::i;:::-;-1:-1:-1;;11365:1:1;11351:16;;11380:5;;11177:218;;11479:2;11469:8;11466:16;11460:3;11454:4;11451:13;11447:36;11441:2;11431:8;11428:16;11423:2;11417:4;11414:12;11410:35;11407:77;11404:2;;;-1:-1:-1;11516:19:1;;;11548:5;;11404:2;11595:34;11620:8;11614:4;11595:34;:::i;:::-;11665:6;11661:1;11657:6;11653:19;11644:7;11641:32;11638:2;;;11676:18;;:::i;:::-;11714:20;;10993:747;-1:-1:-1;;;10993:747:1:o;11745:168::-;11785:7;11851:1;11847;11843:6;11839:14;11836:1;11833:21;11828:1;11821:9;11814:17;11810:45;11807:2;;;11858:18;;:::i;:::-;-1:-1:-1;11898:9:1;;11797:116::o;11918:125::-;11958:4;11986:1;11983;11980:8;11977:2;;;11991:18;;:::i;:::-;-1:-1:-1;12028:9:1;;11967:76::o;12048:127::-;12109:10;12104:3;12100:20;12097:1;12090:31;12140:4;12137:1;12130:15;12164:4;12161:1;12154:15;12180:118;12266:5;12259:13;12252:21;12245:5;12242:32;12232:2;;12288:1;12285;12278:12;12232:2;12222:76;:::o
Swarm Source
ipfs://b9dd06ec83914d645c45940c7d6bcedb1a0b56f6dc9d5550575820be507577c3
Loading...
Loading
Loading...
Loading
OVERVIEW
Seed vesting 12 months with 8.33% releasing monthly.Loading...
Loading
[ Download: CSV Export ]
[ 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.