More Info
Private Name Tags
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Rewards | 7391588 | 30 days ago | IN | 0 APE | 0.00338956 | ||||
Claim Rewards | 7391524 | 30 days ago | IN | 0 APE | 0.00338956 | ||||
Stake | 7391430 | 30 days ago | IN | 0 APE | 0.00246824 | ||||
Unstake | 7391408 | 30 days ago | IN | 0 APE | 0.00419169 | ||||
Claim Rewards | 7237260 | 35 days ago | IN | 0 APE | 0.00338956 | ||||
Claim Rewards | 7236931 | 35 days ago | IN | 0 APE | 0.00338956 | ||||
Claim Rewards | 7236473 | 35 days ago | IN | 0 APE | 0.00338956 | ||||
Claim Rewards | 6926538 | 41 days ago | IN | 0 APE | 0.00338956 | ||||
Claim Rewards | 6925960 | 41 days ago | IN | 0 APE | 0.00338956 | ||||
Transfer | 6925110 | 41 days ago | IN | 0.3 APE | 0.00053558 | ||||
Stake | 6924871 | 41 days ago | IN | 0 APE | 0.00333763 |
Loading...
Loading
Contract Name:
LPStaking
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2024-12-20 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // IERC20 Interface interface IERC20 { 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); } // Ownable Contract abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(msg.sender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // ReentrancyGuard Contract abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } // Pausable Contract abstract contract Pausable { event Paused(address account); event Unpaused(address account); bool private _paused; constructor() { _paused = false; } function paused() public view virtual returns (bool) { return _paused; } modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(msg.sender); } function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(msg.sender); } } /** * @title LPStaking Contract * @notice This contract handles staking of LP tokens with dual rewards and anti-abuse features */ contract LPStaking is Ownable, ReentrancyGuard, Pausable { // ============ Events ============ event Staked(address indexed user, uint256 amount); event Unstaked(address indexed user, uint256 amount); event RewardsClaimed(address indexed user, uint256 amount, uint256 secondaryAmount); event MinimumStakeAmountUpdated(uint256 oldAmount, uint256 newAmount); event LockPeriodUpdated(uint256 oldPeriod, uint256 newPeriod); event DynamicRewardRateUpdated(uint256 oldRate, uint256 newRate); event BonusMultiplierUpdated(uint256 oldMultiplier, uint256 newMultiplier); event BlacklistStatusUpdated(address indexed user, bool status); event EmergencyWithdraw(address indexed user, uint256 amount); event TimeTierUpdated(uint256 tierId, uint256 oldPeriod, uint256 newPeriod); event MaxRewardRateUpdated(uint256 oldRate, uint256 newRate); event MaxBonusMultiplierUpdated(uint256 oldMultiplier, uint256 newMultiplier); event TierThresholdUpdated(uint256 tierId, uint256 oldAmount, uint256 newAmount); // ============ Constants ============ uint256 public MAX_REWARD_RATE = 10000; // 100% uint256 public MAX_BONUS_MULTIPLIER = 1000; // 10x uint256 public TIER1_THRESHOLD = 1000e18; // 1,000 tokens uint256 public TIER2_THRESHOLD = 10000e18; // 10,000 tokens uint256 public TIER3_THRESHOLD = 100000e18; // 100,000 tokens uint256 public TIME_TIER1 = 7 days; // 1 week uint256 public TIME_TIER2 = 14 days; // 2 weeks uint256 public TIME_TIER3 = 30 days; // 1 month // ============ Token Configuration ============ IERC20 public dexLPToken; IERC20 public HACCoinReward; // ============ Reward Configuration ============ uint256 public baseRewardRate; // Base reward rate uint256 public dynamicRewardRate; // Additional dynamic reward during high-traffic periods uint256 public bonusMultiplier; // Bonus multiplier for early or large contributions // ============ Staking Configuration ============ uint256 public minimumStakeAmount; uint256 public lockPeriod; // ============ User Data ============ mapping(address => uint256) public stakedAmount; mapping(address => uint256) public stakingStartTime; mapping(address => uint256) public lastClaimTime; mapping(address => bool) public blacklisted; // ============ Constructor ============ constructor( address _dexLPTokenAddress, // <-- dex LP token address address _HACCoinContractAddress, // <-- HACCoin token address uint256 _baseRewardRate, uint256 _bonusMultiplier, uint256 _minimumStakeAmount, uint256 _lockPeriod ) { require(_dexLPTokenAddress != address(0), "Zero address not allowed"); require(_HACCoinContractAddress != address(0), "Zero address not allowed"); require(_baseRewardRate <= MAX_REWARD_RATE, "Rate too high"); dexLPToken = IERC20(_dexLPTokenAddress); HACCoinReward = IERC20(_HACCoinContractAddress); baseRewardRate = _baseRewardRate; bonusMultiplier = _bonusMultiplier; minimumStakeAmount = _minimumStakeAmount; lockPeriod = _lockPeriod; } // ============ Modifiers ============ modifier notBlacklisted() { require(!blacklisted[msg.sender], "Account is blacklisted"); _; } // ============ Core Staking Functions ============ function stake(uint256 amount) external nonReentrant whenNotPaused notBlacklisted { require(amount >= minimumStakeAmount, "Below minimum stake amount"); require(amount > 0, "Cannot stake 0"); // Transfer LP tokens to this contract dexLPToken.transferFrom(msg.sender, address(this), amount); // If they already have staked tokens, update their rewards checkpoint if (stakedAmount[msg.sender] > 0) { lastClaimTime[msg.sender] = block.timestamp; } else { // For first-time stakers, set initial claim time lastClaimTime[msg.sender] = block.timestamp; } // Update staking amount and time stakedAmount[msg.sender] += amount; stakingStartTime[msg.sender] = block.timestamp; emit Staked(msg.sender, amount); } function unstake(uint256 amount) external nonReentrant whenNotPaused notBlacklisted { require(block.timestamp >= stakingStartTime[msg.sender] + lockPeriod, "Still in lock period"); require(stakedAmount[msg.sender] >= amount, "Insufficient staked balance"); // Calculate and distribute pending rewards before unstaking uint256 pendingReward = calculateReward(msg.sender); if (pendingReward > 0) { distributeRewards(msg.sender, pendingReward); lastClaimTime[msg.sender] = block.timestamp; } // Update staking amount and transfer tokens back stakedAmount[msg.sender] -= amount; require(dexLPToken.transfer(msg.sender, amount), "Transfer failed"); emit Unstaked(msg.sender, amount); } function claimRewards() external nonReentrant whenNotPaused notBlacklisted { uint256 pendingReward = calculateReward(msg.sender); require(pendingReward > 0, "No rewards to claim"); // Update last claim time before distribution lastClaimTime[msg.sender] = block.timestamp; // Calculate and distribute rewards uint256 secondaryReward = pendingReward / 10; distributeRewards(msg.sender, pendingReward); emit RewardsClaimed(msg.sender, pendingReward, secondaryReward); } // ============ View Functions ============ function calculateReward(address user) public view returns (uint256) { if (stakedAmount[user] == 0) return 0; uint256 duration = block.timestamp - lastClaimTime[user]; uint256 dynamicRate = baseRewardRate + dynamicRewardRate; uint256 amountMultiplier = getAmountMultiplier(stakedAmount[user]); uint256 totalStakingDuration = block.timestamp - stakingStartTime[user]; uint256 timeMultiplier = getTimeMultiplier(totalStakingDuration); uint256 reward = (stakedAmount[user] * dynamicRate * duration) / 1e18; reward = reward * amountMultiplier * timeMultiplier / 10000; reward = reward * bonusMultiplier / 100; return reward; } function getTotalStaked() external view returns (uint256) { return dexLPToken.balanceOf(address(this)); } function getUserStakeInfo(address user) external view returns ( uint256 staked, uint256 startTime, uint256 pendingRewards, bool isBlacklisted ) { return ( stakedAmount[user], stakingStartTime[user], calculateReward(user), blacklisted[user] ); } function getLPTokenAllowance(address user) external view returns (uint256) { return dexLPToken.allowance(user, address(this)); } // ============ Internal Functions ============ function distributeRewards(address user, uint256 rewardAmount) public { require(HACCoinReward.balanceOf(address(this)) >= rewardAmount, "Insufficient rewards"); uint256 secondaryReward = rewardAmount / 10; require(address(this).balance >= secondaryReward, "Insufficient secondary rewards"); require(HACCoinReward.transfer(user, rewardAmount), "Reward transfer failed"); (bool success, ) = payable(user).call{value: secondaryReward}(""); require(success, "Native token transfer failed"); } // ============ Admin Functions ============ // Pause/Unpause function pause() external onlyOwner { _pause(); } function unpause() external onlyOwner { _unpause(); } // Rate Management function setDynamicRewardRate(uint256 rate) external onlyOwner { require(rate <= MAX_REWARD_RATE, "Rate too high"); uint256 oldRate = dynamicRewardRate; dynamicRewardRate = rate; emit DynamicRewardRateUpdated(oldRate, rate); } function setBonusMultiplier(uint256 multiplier) external onlyOwner { require(multiplier > 0 && multiplier <= MAX_BONUS_MULTIPLIER, "Invalid multiplier"); uint256 oldMultiplier = bonusMultiplier; bonusMultiplier = multiplier; emit BonusMultiplierUpdated(oldMultiplier, multiplier); } // Configuration Management function setMinimumStakeAmount(uint256 amount) external onlyOwner { uint256 oldAmount = minimumStakeAmount; minimumStakeAmount = amount; emit MinimumStakeAmountUpdated(oldAmount, amount); } function setLockPeriod(uint256 period) external onlyOwner { uint256 oldPeriod = lockPeriod; lockPeriod = period; emit LockPeriodUpdated(oldPeriod, period); } // Access Control function setBlacklist(address user, bool status) external onlyOwner { require(user != address(0), "Invalid address"); blacklisted[user] = status; emit BlacklistStatusUpdated(user, status); } function batchSetBlacklist(address[] calldata users, bool status) external onlyOwner { for(uint256 i = 0; i < users.length; i++) { require(users[i] != address(0), "Invalid address"); blacklisted[users[i]] = status; emit BlacklistStatusUpdated(users[i], status); } } // ============ Emergency Functions ============ function emergencyWithdraw() external nonReentrant { uint256 amount = stakedAmount[msg.sender]; require(amount > 0, "No staked tokens"); stakedAmount[msg.sender] = 0; stakingStartTime[msg.sender] = 0; dexLPToken.transfer(msg.sender, amount); emit EmergencyWithdraw(msg.sender, amount); } function emergencyRewardWithdraw() external onlyOwner { uint256 rewardBalance = HACCoinReward.balanceOf(address(this)); uint256 nativeBalance = address(this).balance; if (rewardBalance > 0) { HACCoinReward.transfer(owner(), rewardBalance); } if (nativeBalance > 0) { (bool success, ) = payable(owner()).call{value: nativeBalance}(""); require(success, "Native token transfer failed"); } } function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner { require(tokenAddress != address(dexLPToken), "Cannot recover staking token"); IERC20(tokenAddress).transfer(owner(), tokenAmount); } function getRewardBalances() external view returns (uint256 newTokenBalance, uint256 nativeBalance) { return ( HACCoinReward.balanceOf(address(this)), address(this).balance ); } // ============ Helper Functions ============ function getAmountMultiplier(uint256 amount) public view returns (uint256) { if (amount >= TIER3_THRESHOLD) { return 150; // 1.5x multiplier } else if (amount >= TIER2_THRESHOLD) { return 125; // 1.25x multiplier } else if (amount >= TIER1_THRESHOLD) { return 110; // 1.1x multiplier } return 100; // 1x multiplier (base) } function getTimeMultiplier(uint256 duration) public view returns (uint256) { if (duration >= TIME_TIER3) { return 150; // 1.5x multiplier } else if (duration >= TIME_TIER2) { return 125; // 1.25x multiplier } else if (duration >= TIME_TIER1) { return 110; // 1.1x multiplier } return 100; // 1x multiplier (base) } function getUserMultipliers(address user) external view returns ( uint256 amountMultiplier, uint256 timeMultiplier, uint256 totalMultiplier ) { uint256 duration = block.timestamp - stakingStartTime[user]; amountMultiplier = getAmountMultiplier(stakedAmount[user]); timeMultiplier = getTimeMultiplier(duration); totalMultiplier = (amountMultiplier * timeMultiplier * bonusMultiplier) / 1000; // Final multiplier in basis points return (amountMultiplier, timeMultiplier, totalMultiplier); } // ============ Time Tier Functions ============ function setTimeTier1(uint256 newPeriod) external onlyOwner { require(newPeriod < TIME_TIER2, "TIME_TIER1 must be less than TIME_TIER2"); require(newPeriod > 0, "Period cannot be zero"); uint256 oldPeriod = TIME_TIER1; TIME_TIER1 = newPeriod; emit TimeTierUpdated(1, oldPeriod, newPeriod); } function setTimeTier2(uint256 newPeriod) external onlyOwner { require(newPeriod > TIME_TIER1, "TIME_TIER2 must be greater than TIME_TIER1"); require(newPeriod < TIME_TIER3, "TIME_TIER2 must be less than TIME_TIER3"); uint256 oldPeriod = TIME_TIER2; TIME_TIER2 = newPeriod; emit TimeTierUpdated(2, oldPeriod, newPeriod); } function setTimeTier3(uint256 newPeriod) external onlyOwner { require(newPeriod > TIME_TIER2, "TIME_TIER3 must be greater than TIME_TIER2"); uint256 oldPeriod = TIME_TIER3; TIME_TIER3 = newPeriod; emit TimeTierUpdated(3, oldPeriod, newPeriod); } function getTimeTiers() external view returns (uint256, uint256, uint256) { return (TIME_TIER1, TIME_TIER2, TIME_TIER3); } // ============ Setter Functions ============ function setMaxRewardRate(uint256 newRate) external onlyOwner { uint256 oldRate = MAX_REWARD_RATE; MAX_REWARD_RATE = newRate; emit MaxRewardRateUpdated(oldRate, newRate); } function setMaxBonusMultiplier(uint256 newMultiplier) external onlyOwner { uint256 oldMultiplier = MAX_BONUS_MULTIPLIER; MAX_BONUS_MULTIPLIER = newMultiplier; emit MaxBonusMultiplierUpdated(oldMultiplier, newMultiplier); } function setTierThreshold(uint256 tierId, uint256 newAmount) external onlyOwner { require(tierId >= 1 && tierId <= 3, "Invalid tier"); uint256 oldAmount; if (tierId == 1) { oldAmount = TIER1_THRESHOLD; require(newAmount < TIER2_THRESHOLD, "Must be less than TIER2"); TIER1_THRESHOLD = newAmount; } else if (tierId == 2) { oldAmount = TIER2_THRESHOLD; require(newAmount > TIER1_THRESHOLD && newAmount < TIER3_THRESHOLD, "Must be between TIER1 and TIER3"); TIER2_THRESHOLD = newAmount; } else { oldAmount = TIER3_THRESHOLD; require(newAmount > TIER2_THRESHOLD, "Must be greater than TIER2"); TIER3_THRESHOLD = newAmount; } emit TierThresholdUpdated(tierId, oldAmount, newAmount); } struct RewardBreakdown { uint256 accumulatedRewards; // Total pending rewards uint256 rewardsPerDay; // Current rate of HACCoin rewards per day uint256 secondaryRewards; // Accumulated TOPIA rewards uint256 timeMultiplier; // Current time multiplier (e.g., 110 = 1.1x) uint256 amountMultiplier; // Current amount multiplier uint256 effectiveAPR; // Effective APR based on current multipliers uint256 stakeDuration; // How long they've been staking uint256 nextMultiplierThreshold; // Time until next multiplier tier } function getDetailedRewards(address user) external view returns (RewardBreakdown memory) { RewardBreakdown memory breakdown; if (stakedAmount[user] == 0) return breakdown; // Calculate base numbers uint256 totalStakingDuration = block.timestamp - stakingStartTime[user]; uint256 dynamicRate = baseRewardRate + dynamicRewardRate; // Get multipliers breakdown.timeMultiplier = getTimeMultiplier(totalStakingDuration); breakdown.amountMultiplier = getAmountMultiplier(stakedAmount[user]); // Calculate accumulated rewards breakdown.accumulatedRewards = calculateReward(user); breakdown.secondaryRewards = breakdown.accumulatedRewards / 10; // TOPIA rewards // Calculate daily rate uint256 dailyBase = (stakedAmount[user] * dynamicRate * 86400) / 1e18; // 86400 seconds in a day breakdown.rewardsPerDay = dailyBase * breakdown.timeMultiplier * breakdown.amountMultiplier * bonusMultiplier / 1000000; // Calculate effective APR breakdown.effectiveAPR = (breakdown.rewardsPerDay * 365 * 100) / stakedAmount[user]; // Staking duration info breakdown.stakeDuration = totalStakingDuration; // Calculate time until next multiplier if (totalStakingDuration < TIME_TIER1) { breakdown.nextMultiplierThreshold = TIME_TIER1 - totalStakingDuration; } else if (totalStakingDuration < TIME_TIER2) { breakdown.nextMultiplierThreshold = TIME_TIER2 - totalStakingDuration; } else if (totalStakingDuration < TIME_TIER3) { breakdown.nextMultiplierThreshold = TIME_TIER3 - totalStakingDuration; } else { breakdown.nextMultiplierThreshold = 0; // Max tier reached } return breakdown; } // Add receive() function to accept native tokens receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_dexLPTokenAddress","type":"address"},{"internalType":"address","name":"_HACCoinContractAddress","type":"address"},{"internalType":"uint256","name":"_baseRewardRate","type":"uint256"},{"internalType":"uint256","name":"_bonusMultiplier","type":"uint256"},{"internalType":"uint256","name":"_minimumStakeAmount","type":"uint256"},{"internalType":"uint256","name":"_lockPeriod","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"BlacklistStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMultiplier","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"BonusMultiplierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"DynamicRewardRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"LockPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMultiplier","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"MaxBonusMultiplierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"MaxRewardRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MinimumStakeAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"secondaryAmount","type":"uint256"}],"name":"RewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"TierThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"TimeTierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"HACCoinReward","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_REWARD_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIER1_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIER2_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIER3_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_TIER1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_TIER2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_TIER3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"batchSetBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexLPToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"distributeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dynamicRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyRewardWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getAmountMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getDetailedRewards","outputs":[{"components":[{"internalType":"uint256","name":"accumulatedRewards","type":"uint256"},{"internalType":"uint256","name":"rewardsPerDay","type":"uint256"},{"internalType":"uint256","name":"secondaryRewards","type":"uint256"},{"internalType":"uint256","name":"timeMultiplier","type":"uint256"},{"internalType":"uint256","name":"amountMultiplier","type":"uint256"},{"internalType":"uint256","name":"effectiveAPR","type":"uint256"},{"internalType":"uint256","name":"stakeDuration","type":"uint256"},{"internalType":"uint256","name":"nextMultiplierThreshold","type":"uint256"}],"internalType":"struct LPStaking.RewardBreakdown","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLPTokenAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardBalances","outputs":[{"internalType":"uint256","name":"newTokenBalance","type":"uint256"},{"internalType":"uint256","name":"nativeBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"getTimeMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeTiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserMultipliers","outputs":[{"internalType":"uint256","name":"amountMultiplier","type":"uint256"},{"internalType":"uint256","name":"timeMultiplier","type":"uint256"},{"internalType":"uint256","name":"totalMultiplier","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserStakeInfo","outputs":[{"internalType":"uint256","name":"staked","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"pendingRewards","type":"uint256"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"setBonusMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setDynamicRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"period","type":"uint256"}],"name":"setLockPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"setMaxBonusMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setMaxRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinimumStakeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setTierThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setTimeTier1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setTimeTier2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setTimeTier3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingStartTime","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":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526127106003556103e8600455683635c9adc5dea0000060055569021e19e0c9bab240000060065569152d02c7e14af680000060075562093a806008556212750060095562278d00600a553480156200005a575f80fd5b506040516200303f3803806200303f8339810160408190526200007d9162000241565b6200008833620001d6565b600180556002805460ff191690556001600160a01b038616620000f25760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064015b60405180910390fd5b6001600160a01b0385166200014a5760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f77656400000000000000006044820152606401620000e9565b6003548411156200018e5760405162461bcd60e51b815260206004820152600d60248201526c0a4c2e8ca40e8dede40d0d2ced609b1b6044820152606401620000e9565b600b80546001600160a01b039788166001600160a01b031991821617909155600c805496909716951694909417909455600d91909155600f556010919091556011556200029a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200023c575f80fd5b919050565b5f805f805f8060c0878903121562000257575f80fd5b620002628762000225565b9550620002726020880162000225565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b612d9780620002a85f395ff3fe60806040526004361061032a575f3560e01c80638980f11f116101a3578063b82cd166116100f2578063db2e21bc11610092578063f2c628021161006d578063f2c628021461090b578063f2fde38b1461098a578063f9931855146109a9578063fd58e63a146109d4575f80fd5b8063db2e21bc146108b4578063dbac26e9146108c8578063ef794f8b146108f6575f80fd5b8063c32d3ae2116100cd578063c32d3ae214610815578063d123273014610856578063d437c6be14610881578063d82e396214610895575f80fd5b8063b82cd166146107bd578063b83e44bf146107dc578063bea1762c146107f6575f80fd5b8063a69871931161015d578063af9c53da11610138578063af9c53da1461073f578063afbf34401461075e578063b6d4efd014610773578063b77cf9c614610792575f80fd5b8063a6987193146106ec578063a8031a1d1461070b578063a8b973a11461072a575f80fd5b80638980f11f146106495780638da5cb5b14610668578063902fe1431461068457806391a35abe146106995780639568786c146106ae578063a694fc3a146106cd575f80fd5b8063642ce3551161027957806378bc861b116102195780637de84f2b116101f45780637de84f2b146105e25780638456cb5914610601578063845a266a146106155780638683e80314610634575f80fd5b806378bc861b146105855780637bfc5211146105ae5780637c356217146105c3575f80fd5b8063715018a611610254578063715018a61461051e578063718dc3c314610532578063779972da146105475780637835840514610566575f80fd5b8063642ce355146104d5578063665f2770146104ea5780636b036f4514610509575f80fd5b80632e17de78116102e45780633fd8b02f116102bf5780633fd8b02f1461044e57806342dfac721461046357806355f4993b146104785780635c975abb146104b2575f80fd5b80632e17de7814610407578063372500ab146104265780633f4ba83a1461043a575f80fd5b8063086d2c87146103355780630917e7761461035d5780630d29fcd4146103715780630f96fd7914610392578063153b0d1e146103b15780631572772a146103d0575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b5061034a60065481565b6040519081526020015b60405180910390f35b348015610368575f80fd5b5061034a6109f3565b34801561037c575f80fd5b5061039061038b366004612a72565b610a62565b005b34801561039d575f80fd5b506103906103ac366004612a89565b610ae9565b3480156103bc575f80fd5b506103906103cb366004612ad1565b610ceb565b3480156103db575f80fd5b50600b546103ef906001600160a01b031681565b6040516001600160a01b039091168152602001610354565b348015610412575f80fd5b50610390610421366004612a72565b610dc9565b348015610431575f80fd5b50610390611047565b348015610445575f80fd5b50610390611177565b348015610459575f80fd5b5061034a60115481565b34801561046e575f80fd5b5061034a60075481565b348015610483575f80fd5b50610497610492366004612b06565b6111b9565b60408051938452602084019290925290820152606001610354565b3480156104bd575f80fd5b5060025460ff165b6040519015158152602001610354565b3480156104e0575f80fd5b5061034a60055481565b3480156104f5575f80fd5b5061034a610504366004612a72565b611241565b348015610514575f80fd5b5061034a60105481565b348015610529575f80fd5b5061039061127d565b34801561053d575f80fd5b5061034a60035481565b348015610552575f80fd5b50610390610561366004612a72565b6112be565b348015610571575f80fd5b50610390610580366004612a72565b611334565b348015610590575f80fd5b5061059961145b565b60408051928352602083019190915201610354565b3480156105b9575f80fd5b5061034a600e5481565b3480156105ce575f80fd5b506103906105dd366004612a72565b6114d1565b3480156105ed575f80fd5b506103906105fc366004612a72565b611547565b34801561060c575f80fd5b5061039061162a565b348015610620575f80fd5b5061034a61062f366004612b06565b61166a565b34801561063f575f80fd5b5061034a60085481565b348015610654575f80fd5b50610390610663366004612b26565b6116e2565b348015610673575f80fd5b505f546001600160a01b03166103ef565b34801561068f575f80fd5b5061034a60095481565b3480156106a4575f80fd5b5061034a600a5481565b3480156106b9575f80fd5b5061034a6106c8366004612a72565b61180b565b3480156106d8575f80fd5b506103906106e7366004612a72565b61183f565b3480156106f7575f80fd5b50610390610706366004612a72565b611a7a565b348015610716575f80fd5b50610390610725366004612b26565b611aef565b348015610735575f80fd5b5061034a600f5481565b34801561074a575f80fd5b50610390610759366004612b4e565b611d5a565b348015610769575f80fd5b5061034a600d5481565b34801561077e575f80fd5b5061039061078d366004612a72565b611edb565b34801561079d575f80fd5b5061034a6107ac366004612b06565b60146020525f908152604090205481565b3480156107c8575f80fd5b50600c546103ef906001600160a01b031681565b3480156107e7575f80fd5b50600854600954600a54610497565b348015610801575f80fd5b50610390610810366004612a72565b611f93565b348015610820575f80fd5b5061083461082f366004612b06565b6120d7565b6040805194855260208501939093529183015215156060820152608001610354565b348015610861575f80fd5b5061034a610870366004612b06565b60136020525f908152604090205481565b34801561088c575f80fd5b50610390612136565b3480156108a0575f80fd5b5061034a6108af366004612b06565b61231d565b3480156108bf575f80fd5b50610390612461565b3480156108d3575f80fd5b506104c56108e2366004612b06565b60156020525f908152604090205460ff1681565b348015610901575f80fd5b5061034a60045481565b348015610916575f80fd5b5061092a610925366004612b06565b61259b565b60405161035491905f61010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b348015610995575f80fd5b506103906109a4366004612b06565b61278c565b3480156109b4575f80fd5b5061034a6109c3366004612b06565b60126020525f908152604090205481565b3480156109df575f80fd5b506103906109ee366004612a72565b612835565b600b546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d9190612bcd565b905090565b33610a745f546001600160a01b031690565b6001600160a01b031614610aa35760405162461bcd60e51b8152600401610a9a90612be4565b60405180910390fd5b601080549082905560408051828152602081018490527fe3117c3cc31e2d5d67afc8b5c366cd87a436cd3aaf93a169500733f4ebfb96ad91015b60405180910390a15050565b33610afb5f546001600160a01b031690565b6001600160a01b031614610b215760405162461bcd60e51b8152600401610a9a90612be4565b60018210158015610b33575060038211155b610b6e5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103a34b2b960a11b6044820152606401610a9a565b5f82600103610bd657506005546006548210610bcc5760405162461bcd60e51b815260206004820152601760248201527f4d757374206265206c657373207468616e2054494552320000000000000000006044820152606401610a9a565b6005829055610ca5565b82600203610c4a575060065460055482118015610bf4575060075482105b610c405760405162461bcd60e51b815260206004820152601f60248201527f4d757374206265206265747765656e20544945523120616e64205449455233006044820152606401610a9a565b6006829055610ca5565b506007546006548211610c9f5760405162461bcd60e51b815260206004820152601a60248201527f4d7573742062652067726561746572207468616e2054494552320000000000006044820152606401610a9a565b60078290555b60408051848152602081018390529081018390527f9f9a58d32a7e2024ded31922b3892bb40501685aba4e64426c7f7aa764e794f89060600160405180910390a1505050565b33610cfd5f546001600160a01b031690565b6001600160a01b031614610d235760405162461bcd60e51b8152600401610a9a90612be4565b6001600160a01b038216610d6b5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610a9a565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f92d364d140f902817e5eaa71cedfe20bae2a3c66a2725cee3d9a51d73f052fb6910160405180910390a25050565b600260015403610deb5760405162461bcd60e51b8152600401610a9a90612c19565b6002600155610dfc60025460ff1690565b15610e195760405162461bcd60e51b8152600401610a9a90612c50565b335f9081526015602052604090205460ff1615610e485760405162461bcd60e51b8152600401610a9a90612c7a565b601154335f90815260136020526040902054610e649190612cbe565b421015610eaa5760405162461bcd60e51b815260206004820152601460248201527314dd1a5b1b081a5b881b1bd8dac81c195c9a5bd960621b6044820152606401610a9a565b335f90815260126020526040902054811115610f085760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74207374616b65642062616c616e636500000000006044820152606401610a9a565b5f610f123361231d565b90508015610f3657610f243382611aef565b335f9081526014602052604090204290555b335f9081526012602052604081208054849290610f54908490612cd1565b9091555050600b5460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610fa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcb9190612ce4565b6110095760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610a9a565b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75906020015b60405180910390a2505060018055565b6002600154036110695760405162461bcd60e51b8152600401610a9a90612c19565b600260015561107a60025460ff1690565b156110975760405162461bcd60e51b8152600401610a9a90612c50565b335f9081526015602052604090205460ff16156110c65760405162461bcd60e51b8152600401610a9a90612c7a565b5f6110d03361231d565b90505f81116111175760405162461bcd60e51b81526020600482015260136024820152724e6f207265776172647320746f20636c61696d60681b6044820152606401610a9a565b335f908152601460205260408120429055611133600a83612cff565b905061113f3383611aef565b604080518381526020810183905233917fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e3259101611037565b336111895f546001600160a01b031690565b6001600160a01b0316146111af5760405162461bcd60e51b8152600401610a9a90612be4565b6111b76128fd565b565b6001600160a01b0381165f908152601360205260408120548190819081906111e19042612cd1565b6001600160a01b0386165f9081526012602052604090205490915061120590611241565b93506112108161180b565b92506103e8600f5484866112249190612d1e565b61122e9190612d1e565b6112389190612cff565b93959294505050565b5f600754821061125357506096919050565b60065482106112645750607d919050565b60055482106112755750606e919050565b506064919050565b3361128f5f546001600160a01b031690565b6001600160a01b0316146112b55760405162461bcd60e51b8152600401610a9a90612be4565b6111b75f612986565b336112d05f546001600160a01b031690565b6001600160a01b0316146112f65760405162461bcd60e51b8152600401610a9a90612be4565b601180549082905560408051828152602081018490527f5dd7b309b7bc5010d9c96159ee535a428121d6803cb847792402fffccaf1569a9101610add565b336113465f546001600160a01b031690565b6001600160a01b03161461136c5760405162461bcd60e51b8152600401610a9a90612be4565b60095481106113cd5760405162461bcd60e51b815260206004820152602760248201527f54494d455f5449455231206d757374206265206c657373207468616e2054494d60448201526622afaa24a2a91960c91b6064820152608401610a9a565b5f81116114145760405162461bcd60e51b8152602060048201526015602482015274506572696f642063616e6e6f74206265207a65726f60581b6044820152606401610a9a565b60088054908290556040805160018152602081018390529081018390527ffe4ba9a86d6d2f0684b5cee72f870d46b6a0bc4644db9e335c21b1f122dcfc5590606001610add565b600c546040516370a0823160e01b81523060048201525f9182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c99190612bcd565b924792509050565b336114e35f546001600160a01b031690565b6001600160a01b0316146115095760405162461bcd60e51b8152600401610a9a90612be4565b600480549082905560408051828152602081018490527fbbaf4b5558cdbccdab95b91283441d5a715fbed963dcd0dc58e6f1a3040e46b89101610add565b336115595f546001600160a01b031690565b6001600160a01b03161461157f5760405162461bcd60e51b8152600401610a9a90612be4565b60095481116115e35760405162461bcd60e51b815260206004820152602a60248201527f54494d455f5449455233206d7573742062652067726561746572207468616e206044820152692a24a6a2afaa24a2a91960b11b6064820152608401610a9a565b600a8054908290556040805160038152602081018390529081018390527ffe4ba9a86d6d2f0684b5cee72f870d46b6a0bc4644db9e335c21b1f122dcfc5590606001610add565b3361163c5f546001600160a01b031690565b6001600160a01b0316146116625760405162461bcd60e51b8152600401610a9a90612be4565b6111b76129d5565b600b54604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156116b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116dc9190612bcd565b92915050565b336116f45f546001600160a01b031690565b6001600160a01b03161461171a5760405162461bcd60e51b8152600401610a9a90612be4565b600b546001600160a01b03908116908316036117785760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207265636f766572207374616b696e6720746f6b656e000000006044820152606401610a9a565b816001600160a01b031663a9059cbb6117985f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156117e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118069190612ce4565b505050565b5f600a54821061181d57506096919050565b600954821061182e5750607d919050565b60085482106112755750606e919050565b6002600154036118615760405162461bcd60e51b8152600401610a9a90612c19565b600260015561187260025460ff1690565b1561188f5760405162461bcd60e51b8152600401610a9a90612c50565b335f9081526015602052604090205460ff16156118be5760405162461bcd60e51b8152600401610a9a90612c7a565b6010548110156119105760405162461bcd60e51b815260206004820152601a60248201527f42656c6f77206d696e696d756d207374616b6520616d6f756e740000000000006044820152606401610a9a565b5f81116119505760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b6044820152606401610a9a565b600b546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156119a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c89190612ce4565b50335f90815260126020526040902054156119f357335f908152601460205260409020429055611a05565b335f9081526014602052604090204290555b335f9081526012602052604081208054839290611a23908490612cbe565b9091555050335f8181526013602052604090819020429055517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90611a6b9084815260200190565b60405180910390a25060018055565b33611a8c5f546001600160a01b031690565b6001600160a01b031614611ab25760405162461bcd60e51b8152600401610a9a90612be4565b600380549082905560408051828152602081018490527ee3c220c012f68ff9fde8453dcf56fd8b157916de1ebdc1b6800cf8063df5f39101610add565b600c546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015611b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b599190612bcd565b1015611b9e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e74207265776172647360601b6044820152606401610a9a565b5f611baa600a83612cff565b905080471015611bfc5760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e74207365636f6e64617279207265776172647300006044820152606401610a9a565b600c5460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb906044016020604051808303815f875af1158015611c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c709190612ce4565b611cb55760405162461bcd60e51b815260206004820152601660248201527514995dd85c99081d1c985b9cd9995c8819985a5b195960521b6044820152606401610a9a565b5f836001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611cfe576040519150601f19603f3d011682016040523d82523d5f602084013e611d03565b606091505b5050905080611d545760405162461bcd60e51b815260206004820152601c60248201527f4e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610a9a565b50505050565b33611d6c5f546001600160a01b031690565b6001600160a01b031614611d925760405162461bcd60e51b8152600401610a9a90612be4565b5f5b82811015611d54575f848483818110611daf57611daf612d35565b9050602002016020810190611dc49190612b06565b6001600160a01b031603611e0c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610a9a565b8160155f868685818110611e2257611e22612d35565b9050602002016020810190611e379190612b06565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055838382818110611e7057611e70612d35565b9050602002016020810190611e859190612b06565b6001600160a01b03167f92d364d140f902817e5eaa71cedfe20bae2a3c66a2725cee3d9a51d73f052fb683604051611ec1911515815260200190565b60405180910390a280611ed381612d49565b915050611d94565b33611eed5f546001600160a01b031690565b6001600160a01b031614611f135760405162461bcd60e51b8152600401610a9a90612be4565b600354811115611f555760405162461bcd60e51b815260206004820152600d60248201526c0a4c2e8ca40e8dede40d0d2ced609b1b6044820152606401610a9a565b600e80549082905560408051828152602081018490527ff2f4736aeb3f199720710c084e757a576694b916ef62336bd137d9730d19226f9101610add565b33611fa55f546001600160a01b031690565b6001600160a01b031614611fcb5760405162461bcd60e51b8152600401610a9a90612be4565b600854811161202f5760405162461bcd60e51b815260206004820152602a60248201527f54494d455f5449455232206d7573742062652067726561746572207468616e2060448201526954494d455f544945523160b01b6064820152608401610a9a565b600a5481106120905760405162461bcd60e51b815260206004820152602760248201527f54494d455f5449455232206d757374206265206c657373207468616e2054494d604482015266455f544945523360c81b6064820152608401610a9a565b60098054908290556040805160028152602081018390529081018390527ffe4ba9a86d6d2f0684b5cee72f870d46b6a0bc4644db9e335c21b1f122dcfc5590606001610add565b6001600160a01b0381165f9081526012602090815260408083205460139092528220548291829182919061210a8761231d565b6001600160a01b0388165f90815260156020526040902054929650909450925060ff1690509193509193565b336121485f546001600160a01b031690565b6001600160a01b03161461216e5760405162461bcd60e51b8152600401610a9a90612be4565b600c546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156121b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190612bcd565b905047811561227357600c546001600160a01b031663a9059cbb6122035f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561224d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122719190612ce4565b505b8015612319575f80546040516001600160a01b039091169083908381818185875af1925050503d805f81146122c3576040519150601f19603f3d011682016040523d82523d5f602084013e6122c8565b606091505b50509050806118065760405162461bcd60e51b815260206004820152601c60248201527f4e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610a9a565b5050565b6001600160a01b0381165f90815260126020526040812054810361234257505f919050565b6001600160a01b0382165f908152601460205260408120546123649042612cd1565b90505f600e54600d546123779190612cbe565b6001600160a01b0385165f908152601260205260408120549192509061239c90611241565b6001600160a01b0386165f90815260136020526040812054919250906123c29042612cd1565b90505f6123ce8261180b565b6001600160a01b0388165f9081526012602052604081205491925090670de0b6b3a7640000908790612401908890612d1e565b61240b9190612d1e565b6124159190612cff565b9050612710826124258684612d1e565b61242f9190612d1e565b6124399190612cff565b90506064600f548261244b9190612d1e565b6124559190612cff565b98975050505050505050565b6002600154036124835760405162461bcd60e51b8152600401610a9a90612c19565b6002600155335f90815260126020526040902054806124d75760405162461bcd60e51b815260206004820152601060248201526f4e6f207374616b656420746f6b656e7360801b6044820152606401610a9a565b335f818152601260209081526040808320839055601390915280822091909155600b54905163a9059cbb60e01b81526004810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015612544573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125689190612ce4565b5060405181815233907f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969590602001611a6b565b6125a3612a35565b6125ab612a35565b6001600160a01b0383165f9081526012602052604081205490036125cf5792915050565b6001600160a01b0383165f908152601360205260408120546125f19042612cd1565b90505f600e54600d546126049190612cbe565b905061260f8261180b565b60608401526001600160a01b0385165f9081526012602052604090205461263590611241565b60808401526126438561231d565b80845261265290600a90612cff565b6040808501919091526001600160a01b0386165f908152601260205290812054670de0b6b3a764000090612687908490612d1e565b6126949062015180612d1e565b61269e9190612cff565b9050620f4240600f5485608001518660600151846126bc9190612d1e565b6126c69190612d1e565b6126d09190612d1e565b6126da9190612cff565b60208086019182526001600160a01b0388165f9081526012909152604090205490516127089061016d612d1e565b612713906064612d1e565b61271d9190612cff565b60a085015260c0840183905260085483101561274b57826008546127419190612cd1565b60e0850152612782565b60095483101561276357826009546127419190612cd1565b600a5483101561277b5782600a546127419190612cd1565b5f60e08501525b5091949350505050565b3361279e5f546001600160a01b031690565b6001600160a01b0316146127c45760405162461bcd60e51b8152600401610a9a90612be4565b6001600160a01b0381166128295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a9a565b61283281612986565b50565b336128475f546001600160a01b031690565b6001600160a01b03161461286d5760405162461bcd60e51b8152600401610a9a90612be4565b5f8111801561287e57506004548111155b6128bf5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21036bab63a34b83634b2b960711b6044820152606401610a9a565b600f80549082905560408051828152602081018490527f9186bba392492a86d11772f6a96c676e03501c72017ff3a3c6fa302db18adcfd9101610add565b60025460ff166129465760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a9a565b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60025460ff16156129f85760405162461bcd60e51b8152600401610a9a90612c50565b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161297c565b6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f60208284031215612a82575f80fd5b5035919050565b5f8060408385031215612a9a575f80fd5b50508035926020909101359150565b80356001600160a01b0381168114612abf575f80fd5b919050565b8015158114612832575f80fd5b5f8060408385031215612ae2575f80fd5b612aeb83612aa9565b91506020830135612afb81612ac4565b809150509250929050565b5f60208284031215612b16575f80fd5b612b1f82612aa9565b9392505050565b5f8060408385031215612b37575f80fd5b612b4083612aa9565b946020939093013593505050565b5f805f60408486031215612b60575f80fd5b833567ffffffffffffffff80821115612b77575f80fd5b818601915086601f830112612b8a575f80fd5b813581811115612b98575f80fd5b8760208260051b8501011115612bac575f80fd5b60209283019550935050840135612bc281612ac4565b809150509250925092565b5f60208284031215612bdd575f80fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252601690820152751058d8dbdd5b9d081a5cc8189b1858dadb1a5cdd195960521b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116dc576116dc612caa565b818103818111156116dc576116dc612caa565b5f60208284031215612cf4575f80fd5b8151612b1f81612ac4565b5f82612d1957634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176116dc576116dc612caa565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612d5a57612d5a612caa565b506001019056fea2646970667358221220ba21a4829fce366c0bed96713925b97ce9755765c1bf0c6d0669141c6e4bae2f64736f6c63430008140033000000000000000000000000640b9ca29ae2caf5f07f416b5e8302805b8e07d7000000000000000000000000cbe687ed3af5e9493888119cd419f25668eafd54000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000093a80
Deployed Bytecode
0x60806040526004361061032a575f3560e01c80638980f11f116101a3578063b82cd166116100f2578063db2e21bc11610092578063f2c628021161006d578063f2c628021461090b578063f2fde38b1461098a578063f9931855146109a9578063fd58e63a146109d4575f80fd5b8063db2e21bc146108b4578063dbac26e9146108c8578063ef794f8b146108f6575f80fd5b8063c32d3ae2116100cd578063c32d3ae214610815578063d123273014610856578063d437c6be14610881578063d82e396214610895575f80fd5b8063b82cd166146107bd578063b83e44bf146107dc578063bea1762c146107f6575f80fd5b8063a69871931161015d578063af9c53da11610138578063af9c53da1461073f578063afbf34401461075e578063b6d4efd014610773578063b77cf9c614610792575f80fd5b8063a6987193146106ec578063a8031a1d1461070b578063a8b973a11461072a575f80fd5b80638980f11f146106495780638da5cb5b14610668578063902fe1431461068457806391a35abe146106995780639568786c146106ae578063a694fc3a146106cd575f80fd5b8063642ce3551161027957806378bc861b116102195780637de84f2b116101f45780637de84f2b146105e25780638456cb5914610601578063845a266a146106155780638683e80314610634575f80fd5b806378bc861b146105855780637bfc5211146105ae5780637c356217146105c3575f80fd5b8063715018a611610254578063715018a61461051e578063718dc3c314610532578063779972da146105475780637835840514610566575f80fd5b8063642ce355146104d5578063665f2770146104ea5780636b036f4514610509575f80fd5b80632e17de78116102e45780633fd8b02f116102bf5780633fd8b02f1461044e57806342dfac721461046357806355f4993b146104785780635c975abb146104b2575f80fd5b80632e17de7814610407578063372500ab146104265780633f4ba83a1461043a575f80fd5b8063086d2c87146103355780630917e7761461035d5780630d29fcd4146103715780630f96fd7914610392578063153b0d1e146103b15780631572772a146103d0575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b5061034a60065481565b6040519081526020015b60405180910390f35b348015610368575f80fd5b5061034a6109f3565b34801561037c575f80fd5b5061039061038b366004612a72565b610a62565b005b34801561039d575f80fd5b506103906103ac366004612a89565b610ae9565b3480156103bc575f80fd5b506103906103cb366004612ad1565b610ceb565b3480156103db575f80fd5b50600b546103ef906001600160a01b031681565b6040516001600160a01b039091168152602001610354565b348015610412575f80fd5b50610390610421366004612a72565b610dc9565b348015610431575f80fd5b50610390611047565b348015610445575f80fd5b50610390611177565b348015610459575f80fd5b5061034a60115481565b34801561046e575f80fd5b5061034a60075481565b348015610483575f80fd5b50610497610492366004612b06565b6111b9565b60408051938452602084019290925290820152606001610354565b3480156104bd575f80fd5b5060025460ff165b6040519015158152602001610354565b3480156104e0575f80fd5b5061034a60055481565b3480156104f5575f80fd5b5061034a610504366004612a72565b611241565b348015610514575f80fd5b5061034a60105481565b348015610529575f80fd5b5061039061127d565b34801561053d575f80fd5b5061034a60035481565b348015610552575f80fd5b50610390610561366004612a72565b6112be565b348015610571575f80fd5b50610390610580366004612a72565b611334565b348015610590575f80fd5b5061059961145b565b60408051928352602083019190915201610354565b3480156105b9575f80fd5b5061034a600e5481565b3480156105ce575f80fd5b506103906105dd366004612a72565b6114d1565b3480156105ed575f80fd5b506103906105fc366004612a72565b611547565b34801561060c575f80fd5b5061039061162a565b348015610620575f80fd5b5061034a61062f366004612b06565b61166a565b34801561063f575f80fd5b5061034a60085481565b348015610654575f80fd5b50610390610663366004612b26565b6116e2565b348015610673575f80fd5b505f546001600160a01b03166103ef565b34801561068f575f80fd5b5061034a60095481565b3480156106a4575f80fd5b5061034a600a5481565b3480156106b9575f80fd5b5061034a6106c8366004612a72565b61180b565b3480156106d8575f80fd5b506103906106e7366004612a72565b61183f565b3480156106f7575f80fd5b50610390610706366004612a72565b611a7a565b348015610716575f80fd5b50610390610725366004612b26565b611aef565b348015610735575f80fd5b5061034a600f5481565b34801561074a575f80fd5b50610390610759366004612b4e565b611d5a565b348015610769575f80fd5b5061034a600d5481565b34801561077e575f80fd5b5061039061078d366004612a72565b611edb565b34801561079d575f80fd5b5061034a6107ac366004612b06565b60146020525f908152604090205481565b3480156107c8575f80fd5b50600c546103ef906001600160a01b031681565b3480156107e7575f80fd5b50600854600954600a54610497565b348015610801575f80fd5b50610390610810366004612a72565b611f93565b348015610820575f80fd5b5061083461082f366004612b06565b6120d7565b6040805194855260208501939093529183015215156060820152608001610354565b348015610861575f80fd5b5061034a610870366004612b06565b60136020525f908152604090205481565b34801561088c575f80fd5b50610390612136565b3480156108a0575f80fd5b5061034a6108af366004612b06565b61231d565b3480156108bf575f80fd5b50610390612461565b3480156108d3575f80fd5b506104c56108e2366004612b06565b60156020525f908152604090205460ff1681565b348015610901575f80fd5b5061034a60045481565b348015610916575f80fd5b5061092a610925366004612b06565b61259b565b60405161035491905f61010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b348015610995575f80fd5b506103906109a4366004612b06565b61278c565b3480156109b4575f80fd5b5061034a6109c3366004612b06565b60126020525f908152604090205481565b3480156109df575f80fd5b506103906109ee366004612a72565b612835565b600b546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5d9190612bcd565b905090565b33610a745f546001600160a01b031690565b6001600160a01b031614610aa35760405162461bcd60e51b8152600401610a9a90612be4565b60405180910390fd5b601080549082905560408051828152602081018490527fe3117c3cc31e2d5d67afc8b5c366cd87a436cd3aaf93a169500733f4ebfb96ad91015b60405180910390a15050565b33610afb5f546001600160a01b031690565b6001600160a01b031614610b215760405162461bcd60e51b8152600401610a9a90612be4565b60018210158015610b33575060038211155b610b6e5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103a34b2b960a11b6044820152606401610a9a565b5f82600103610bd657506005546006548210610bcc5760405162461bcd60e51b815260206004820152601760248201527f4d757374206265206c657373207468616e2054494552320000000000000000006044820152606401610a9a565b6005829055610ca5565b82600203610c4a575060065460055482118015610bf4575060075482105b610c405760405162461bcd60e51b815260206004820152601f60248201527f4d757374206265206265747765656e20544945523120616e64205449455233006044820152606401610a9a565b6006829055610ca5565b506007546006548211610c9f5760405162461bcd60e51b815260206004820152601a60248201527f4d7573742062652067726561746572207468616e2054494552320000000000006044820152606401610a9a565b60078290555b60408051848152602081018390529081018390527f9f9a58d32a7e2024ded31922b3892bb40501685aba4e64426c7f7aa764e794f89060600160405180910390a1505050565b33610cfd5f546001600160a01b031690565b6001600160a01b031614610d235760405162461bcd60e51b8152600401610a9a90612be4565b6001600160a01b038216610d6b5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610a9a565b6001600160a01b0382165f81815260156020908152604091829020805460ff191685151590811790915591519182527f92d364d140f902817e5eaa71cedfe20bae2a3c66a2725cee3d9a51d73f052fb6910160405180910390a25050565b600260015403610deb5760405162461bcd60e51b8152600401610a9a90612c19565b6002600155610dfc60025460ff1690565b15610e195760405162461bcd60e51b8152600401610a9a90612c50565b335f9081526015602052604090205460ff1615610e485760405162461bcd60e51b8152600401610a9a90612c7a565b601154335f90815260136020526040902054610e649190612cbe565b421015610eaa5760405162461bcd60e51b815260206004820152601460248201527314dd1a5b1b081a5b881b1bd8dac81c195c9a5bd960621b6044820152606401610a9a565b335f90815260126020526040902054811115610f085760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74207374616b65642062616c616e636500000000006044820152606401610a9a565b5f610f123361231d565b90508015610f3657610f243382611aef565b335f9081526014602052604090204290555b335f9081526012602052604081208054849290610f54908490612cd1565b9091555050600b5460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610fa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcb9190612ce4565b6110095760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610a9a565b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75906020015b60405180910390a2505060018055565b6002600154036110695760405162461bcd60e51b8152600401610a9a90612c19565b600260015561107a60025460ff1690565b156110975760405162461bcd60e51b8152600401610a9a90612c50565b335f9081526015602052604090205460ff16156110c65760405162461bcd60e51b8152600401610a9a90612c7a565b5f6110d03361231d565b90505f81116111175760405162461bcd60e51b81526020600482015260136024820152724e6f207265776172647320746f20636c61696d60681b6044820152606401610a9a565b335f908152601460205260408120429055611133600a83612cff565b905061113f3383611aef565b604080518381526020810183905233917fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e3259101611037565b336111895f546001600160a01b031690565b6001600160a01b0316146111af5760405162461bcd60e51b8152600401610a9a90612be4565b6111b76128fd565b565b6001600160a01b0381165f908152601360205260408120548190819081906111e19042612cd1565b6001600160a01b0386165f9081526012602052604090205490915061120590611241565b93506112108161180b565b92506103e8600f5484866112249190612d1e565b61122e9190612d1e565b6112389190612cff565b93959294505050565b5f600754821061125357506096919050565b60065482106112645750607d919050565b60055482106112755750606e919050565b506064919050565b3361128f5f546001600160a01b031690565b6001600160a01b0316146112b55760405162461bcd60e51b8152600401610a9a90612be4565b6111b75f612986565b336112d05f546001600160a01b031690565b6001600160a01b0316146112f65760405162461bcd60e51b8152600401610a9a90612be4565b601180549082905560408051828152602081018490527f5dd7b309b7bc5010d9c96159ee535a428121d6803cb847792402fffccaf1569a9101610add565b336113465f546001600160a01b031690565b6001600160a01b03161461136c5760405162461bcd60e51b8152600401610a9a90612be4565b60095481106113cd5760405162461bcd60e51b815260206004820152602760248201527f54494d455f5449455231206d757374206265206c657373207468616e2054494d60448201526622afaa24a2a91960c91b6064820152608401610a9a565b5f81116114145760405162461bcd60e51b8152602060048201526015602482015274506572696f642063616e6e6f74206265207a65726f60581b6044820152606401610a9a565b60088054908290556040805160018152602081018390529081018390527ffe4ba9a86d6d2f0684b5cee72f870d46b6a0bc4644db9e335c21b1f122dcfc5590606001610add565b600c546040516370a0823160e01b81523060048201525f9182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c99190612bcd565b924792509050565b336114e35f546001600160a01b031690565b6001600160a01b0316146115095760405162461bcd60e51b8152600401610a9a90612be4565b600480549082905560408051828152602081018490527fbbaf4b5558cdbccdab95b91283441d5a715fbed963dcd0dc58e6f1a3040e46b89101610add565b336115595f546001600160a01b031690565b6001600160a01b03161461157f5760405162461bcd60e51b8152600401610a9a90612be4565b60095481116115e35760405162461bcd60e51b815260206004820152602a60248201527f54494d455f5449455233206d7573742062652067726561746572207468616e206044820152692a24a6a2afaa24a2a91960b11b6064820152608401610a9a565b600a8054908290556040805160038152602081018390529081018390527ffe4ba9a86d6d2f0684b5cee72f870d46b6a0bc4644db9e335c21b1f122dcfc5590606001610add565b3361163c5f546001600160a01b031690565b6001600160a01b0316146116625760405162461bcd60e51b8152600401610a9a90612be4565b6111b76129d5565b600b54604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156116b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116dc9190612bcd565b92915050565b336116f45f546001600160a01b031690565b6001600160a01b03161461171a5760405162461bcd60e51b8152600401610a9a90612be4565b600b546001600160a01b03908116908316036117785760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207265636f766572207374616b696e6720746f6b656e000000006044820152606401610a9a565b816001600160a01b031663a9059cbb6117985f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156117e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118069190612ce4565b505050565b5f600a54821061181d57506096919050565b600954821061182e5750607d919050565b60085482106112755750606e919050565b6002600154036118615760405162461bcd60e51b8152600401610a9a90612c19565b600260015561187260025460ff1690565b1561188f5760405162461bcd60e51b8152600401610a9a90612c50565b335f9081526015602052604090205460ff16156118be5760405162461bcd60e51b8152600401610a9a90612c7a565b6010548110156119105760405162461bcd60e51b815260206004820152601a60248201527f42656c6f77206d696e696d756d207374616b6520616d6f756e740000000000006044820152606401610a9a565b5f81116119505760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b6044820152606401610a9a565b600b546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156119a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c89190612ce4565b50335f90815260126020526040902054156119f357335f908152601460205260409020429055611a05565b335f9081526014602052604090204290555b335f9081526012602052604081208054839290611a23908490612cbe565b9091555050335f8181526013602052604090819020429055517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90611a6b9084815260200190565b60405180910390a25060018055565b33611a8c5f546001600160a01b031690565b6001600160a01b031614611ab25760405162461bcd60e51b8152600401610a9a90612be4565b600380549082905560408051828152602081018490527ee3c220c012f68ff9fde8453dcf56fd8b157916de1ebdc1b6800cf8063df5f39101610add565b600c546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015611b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b599190612bcd565b1015611b9e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e74207265776172647360601b6044820152606401610a9a565b5f611baa600a83612cff565b905080471015611bfc5760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e74207365636f6e64617279207265776172647300006044820152606401610a9a565b600c5460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb906044016020604051808303815f875af1158015611c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c709190612ce4565b611cb55760405162461bcd60e51b815260206004820152601660248201527514995dd85c99081d1c985b9cd9995c8819985a5b195960521b6044820152606401610a9a565b5f836001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611cfe576040519150601f19603f3d011682016040523d82523d5f602084013e611d03565b606091505b5050905080611d545760405162461bcd60e51b815260206004820152601c60248201527f4e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610a9a565b50505050565b33611d6c5f546001600160a01b031690565b6001600160a01b031614611d925760405162461bcd60e51b8152600401610a9a90612be4565b5f5b82811015611d54575f848483818110611daf57611daf612d35565b9050602002016020810190611dc49190612b06565b6001600160a01b031603611e0c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610a9a565b8160155f868685818110611e2257611e22612d35565b9050602002016020810190611e379190612b06565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055838382818110611e7057611e70612d35565b9050602002016020810190611e859190612b06565b6001600160a01b03167f92d364d140f902817e5eaa71cedfe20bae2a3c66a2725cee3d9a51d73f052fb683604051611ec1911515815260200190565b60405180910390a280611ed381612d49565b915050611d94565b33611eed5f546001600160a01b031690565b6001600160a01b031614611f135760405162461bcd60e51b8152600401610a9a90612be4565b600354811115611f555760405162461bcd60e51b815260206004820152600d60248201526c0a4c2e8ca40e8dede40d0d2ced609b1b6044820152606401610a9a565b600e80549082905560408051828152602081018490527ff2f4736aeb3f199720710c084e757a576694b916ef62336bd137d9730d19226f9101610add565b33611fa55f546001600160a01b031690565b6001600160a01b031614611fcb5760405162461bcd60e51b8152600401610a9a90612be4565b600854811161202f5760405162461bcd60e51b815260206004820152602a60248201527f54494d455f5449455232206d7573742062652067726561746572207468616e2060448201526954494d455f544945523160b01b6064820152608401610a9a565b600a5481106120905760405162461bcd60e51b815260206004820152602760248201527f54494d455f5449455232206d757374206265206c657373207468616e2054494d604482015266455f544945523360c81b6064820152608401610a9a565b60098054908290556040805160028152602081018390529081018390527ffe4ba9a86d6d2f0684b5cee72f870d46b6a0bc4644db9e335c21b1f122dcfc5590606001610add565b6001600160a01b0381165f9081526012602090815260408083205460139092528220548291829182919061210a8761231d565b6001600160a01b0388165f90815260156020526040902054929650909450925060ff1690509193509193565b336121485f546001600160a01b031690565b6001600160a01b03161461216e5760405162461bcd60e51b8152600401610a9a90612be4565b600c546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156121b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190612bcd565b905047811561227357600c546001600160a01b031663a9059cbb6122035f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561224d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122719190612ce4565b505b8015612319575f80546040516001600160a01b039091169083908381818185875af1925050503d805f81146122c3576040519150601f19603f3d011682016040523d82523d5f602084013e6122c8565b606091505b50509050806118065760405162461bcd60e51b815260206004820152601c60248201527f4e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610a9a565b5050565b6001600160a01b0381165f90815260126020526040812054810361234257505f919050565b6001600160a01b0382165f908152601460205260408120546123649042612cd1565b90505f600e54600d546123779190612cbe565b6001600160a01b0385165f908152601260205260408120549192509061239c90611241565b6001600160a01b0386165f90815260136020526040812054919250906123c29042612cd1565b90505f6123ce8261180b565b6001600160a01b0388165f9081526012602052604081205491925090670de0b6b3a7640000908790612401908890612d1e565b61240b9190612d1e565b6124159190612cff565b9050612710826124258684612d1e565b61242f9190612d1e565b6124399190612cff565b90506064600f548261244b9190612d1e565b6124559190612cff565b98975050505050505050565b6002600154036124835760405162461bcd60e51b8152600401610a9a90612c19565b6002600155335f90815260126020526040902054806124d75760405162461bcd60e51b815260206004820152601060248201526f4e6f207374616b656420746f6b656e7360801b6044820152606401610a9a565b335f818152601260209081526040808320839055601390915280822091909155600b54905163a9059cbb60e01b81526004810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015612544573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125689190612ce4565b5060405181815233907f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969590602001611a6b565b6125a3612a35565b6125ab612a35565b6001600160a01b0383165f9081526012602052604081205490036125cf5792915050565b6001600160a01b0383165f908152601360205260408120546125f19042612cd1565b90505f600e54600d546126049190612cbe565b905061260f8261180b565b60608401526001600160a01b0385165f9081526012602052604090205461263590611241565b60808401526126438561231d565b80845261265290600a90612cff565b6040808501919091526001600160a01b0386165f908152601260205290812054670de0b6b3a764000090612687908490612d1e565b6126949062015180612d1e565b61269e9190612cff565b9050620f4240600f5485608001518660600151846126bc9190612d1e565b6126c69190612d1e565b6126d09190612d1e565b6126da9190612cff565b60208086019182526001600160a01b0388165f9081526012909152604090205490516127089061016d612d1e565b612713906064612d1e565b61271d9190612cff565b60a085015260c0840183905260085483101561274b57826008546127419190612cd1565b60e0850152612782565b60095483101561276357826009546127419190612cd1565b600a5483101561277b5782600a546127419190612cd1565b5f60e08501525b5091949350505050565b3361279e5f546001600160a01b031690565b6001600160a01b0316146127c45760405162461bcd60e51b8152600401610a9a90612be4565b6001600160a01b0381166128295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a9a565b61283281612986565b50565b336128475f546001600160a01b031690565b6001600160a01b03161461286d5760405162461bcd60e51b8152600401610a9a90612be4565b5f8111801561287e57506004548111155b6128bf5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21036bab63a34b83634b2b960711b6044820152606401610a9a565b600f80549082905560408051828152602081018490527f9186bba392492a86d11772f6a96c676e03501c72017ff3a3c6fa302db18adcfd9101610add565b60025460ff166129465760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a9a565b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60025460ff16156129f85760405162461bcd60e51b8152600401610a9a90612c50565b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161297c565b6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f60208284031215612a82575f80fd5b5035919050565b5f8060408385031215612a9a575f80fd5b50508035926020909101359150565b80356001600160a01b0381168114612abf575f80fd5b919050565b8015158114612832575f80fd5b5f8060408385031215612ae2575f80fd5b612aeb83612aa9565b91506020830135612afb81612ac4565b809150509250929050565b5f60208284031215612b16575f80fd5b612b1f82612aa9565b9392505050565b5f8060408385031215612b37575f80fd5b612b4083612aa9565b946020939093013593505050565b5f805f60408486031215612b60575f80fd5b833567ffffffffffffffff80821115612b77575f80fd5b818601915086601f830112612b8a575f80fd5b813581811115612b98575f80fd5b8760208260051b8501011115612bac575f80fd5b60209283019550935050840135612bc281612ac4565b809150509250925092565b5f60208284031215612bdd575f80fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252601690820152751058d8dbdd5b9d081a5cc8189b1858dadb1a5cdd195960521b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116dc576116dc612caa565b818103818111156116dc576116dc612caa565b5f60208284031215612cf4575f80fd5b8151612b1f81612ac4565b5f82612d1957634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176116dc576116dc612caa565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612d5a57612d5a612caa565b506001019056fea2646970667358221220ba21a4829fce366c0bed96713925b97ce9755765c1bf0c6d0669141c6e4bae2f64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000640b9ca29ae2caf5f07f416b5e8302805b8e07d7000000000000000000000000cbe687ed3af5e9493888119cd419f25668eafd54000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000093a80
-----Decoded View---------------
Arg [0] : _dexLPTokenAddress (address): 0x640b9cA29Ae2cAF5f07F416B5e8302805B8E07d7
Arg [1] : _HACCoinContractAddress (address): 0xcbe687Ed3AF5E9493888119cD419F25668eAFd54
Arg [2] : _baseRewardRate (uint256): 100
Arg [3] : _bonusMultiplier (uint256): 100
Arg [4] : _minimumStakeAmount (uint256): 1000000000000000000
Arg [5] : _lockPeriod (uint256): 604800
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000640b9ca29ae2caf5f07f416b5e8302805b8e07d7
Arg [1] : 000000000000000000000000cbe687ed3af5e9493888119cd419f25668eafd54
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [4] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000093a80
Deployed Bytecode Sourcemap
3090:17942:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4376:41;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4376:41:0;;;;;;;;9662:119;;;;;;;;;;;;;:::i;11806:221::-;;;;;;;;;;-1:-1:-1;11806:221:0;;;;;:::i;:::-;;:::i;:::-;;17470:884;;;;;;;;;;-1:-1:-1;17470:884:0;;;;;:::i;:::-;;:::i;12255:222::-;;;;;;;;;;-1:-1:-1;12255:222:0;;;;;:::i;:::-;;:::i;4731:24::-;;;;;;;;;;-1:-1:-1;4731:24:0;;;;-1:-1:-1;;;;;4731:24:0;;;;;;-1:-1:-1;;;;;1432:32:1;;;1414:51;;1402:2;1387:18;4731:24:0;1255:216:1;7462:807:0;;;;;;;;;;-1:-1:-1;7462:807:0;;;;;:::i;:::-;;:::i;8277:573::-;;;;;;;;;;;;;:::i;11068:67::-;;;;;;;;;;;;;:::i;5193:25::-;;;;;;;;;;;;;;;;4443:42;;;;;;;;;;;;;;;;15147:570;;;;;;;;;;-1:-1:-1;15147:570:0;;;;;:::i;:::-;;:::i;:::-;;;;1869:25:1;;;1925:2;1910:18;;1903:34;;;;1953:18;;;1946:34;1857:2;1842:18;15147:570:0;1667:319:1;2406:86:0;;;;;;;;;;-1:-1:-1;2477:7:0;;;;2406:86;;;2156:14:1;;2149:22;2131:41;;2119:2;2104:18;2406:86:0;1991:187:1;4310:40:0;;;;;;;;;;;;;;;;14286:427;;;;;;;;;;-1:-1:-1;14286:427:0;;;;;:::i;:::-;;:::i;5153:33::-;;;;;;;;;;;;;;;;1227:103;;;;;;;;;;;;;:::i;4201:38::-;;;;;;;;;;;;;;;;12035:189;;;;;;;;;;-1:-1:-1;12035:189:0;;;;;:::i;:::-;;:::i;15779:341::-;;;;;;;;;;-1:-1:-1;15779:341:0;;;;;:::i;:::-;;:::i;14001:226::-;;;;;;;;;;;;;:::i;:::-;;;;2357:25:1;;;2413:2;2398:18;;2391:34;;;;2330:18;14001:226:0;2183:248:1;4909:32:0;;;;;;;;;;;;;;;;17208:254;;;;;;;;;;-1:-1:-1;17208:254:0;;;;;:::i;:::-;;:::i;16507:286::-;;;;;;;;;;-1:-1:-1;16507:286:0;;;;;:::i;:::-;;:::i;10997:63::-;;;;;;;;;;;;;:::i;10157:142::-;;;;;;;;;;-1:-1:-1;10157:142:0;;;;;:::i;:::-;;:::i;4511:34::-;;;;;;;;;;;;;;;;13752:241;;;;;;;;;;-1:-1:-1;13752:241:0;;;;;:::i;:::-;;:::i;1006:87::-;;;;;;;;;;-1:-1:-1;1052:7:0;1079:6;-1:-1:-1;;;;;1079:6:0;1006:87;;4565:35;;;;;;;;;;;;;;;;4620;;;;;;;;;;;;;;;;14721:418;;;;;;;;;;-1:-1:-1;14721:418:0;;;;;:::i;:::-;;:::i;6593:861::-;;;;;;;;;;-1:-1:-1;6593:861:0;;;;;:::i;:::-;;:::i;16996:204::-;;;;;;;;;;-1:-1:-1;16996:204:0;;;;;:::i;:::-;;:::i;10360:557::-;;;;;;;;;;-1:-1:-1;10360:557:0;;;;;:::i;:::-;;:::i;5005:30::-;;;;;;;;;;;;;;;;12485:327;;;;;;;;;;-1:-1:-1;12485:327:0;;;;;:::i;:::-;;:::i;4853:29::-;;;;;;;;;;;;;;;;11167:267;;;;;;;;;;-1:-1:-1;11167:267:0;;;;;:::i;:::-;;:::i;5383:48::-;;;;;;;;;;-1:-1:-1;5383:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;4762:27;;;;;;;;;;-1:-1:-1;4762:27:0;;;;-1:-1:-1;;;;;4762:27:0;;;16801:136;;;;;;;;;;-1:-1:-1;16894:10:0;;16906;;16918;;16801:136;;16128:371;;;;;;;;;;-1:-1:-1;16128:371:0;;;;;:::i;:::-;;:::i;9789:360::-;;;;;;;;;;-1:-1:-1;9789:360:0;;;;;:::i;:::-;;:::i;:::-;;;;3883:25:1;;;3939:2;3924:18;;3917:34;;;;3967:18;;;3960:34;4037:14;4030:22;4025:2;4010:18;;4003:50;3870:3;3855:19;9789:360:0;3658:401:1;5325:51:0;;;;;;;;;;-1:-1:-1;5325:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;13248:496;;;;;;;;;;;;;:::i;8907:747::-;;;;;;;;;;-1:-1:-1;8907:747:0;;;;;:::i;:::-;;:::i;12874:366::-;;;;;;;;;;;;;:::i;5438:43::-;;;;;;;;;;-1:-1:-1;5438:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4254:42;;;;;;;;;;;;;;;;19023:1914;;;;;;;;;;-1:-1:-1;19023:1914:0;;;;;:::i;:::-;;:::i;:::-;;;;;;4222:4:1;4264:3;4253:9;4249:19;4241:27;;4301:6;4295:13;4284:9;4277:32;4365:4;4357:6;4353:17;4347:24;4340:4;4329:9;4325:20;4318:54;4428:4;4420:6;4416:17;4410:24;4403:4;4392:9;4388:20;4381:54;4491:4;4483:6;4479:17;4473:24;4466:4;4455:9;4451:20;4444:54;4554:4;4546:6;4542:17;4536:24;4529:4;4518:9;4514:20;4507:54;4617:4;4609:6;4605:17;4599:24;4592:4;4581:9;4577:20;4570:54;4680:4;4672:6;4668:17;4662:24;4655:4;4644:9;4640:20;4633:54;4743:4;4735:6;4731:17;4725:24;4718:4;4707:9;4703:20;4696:54;4064:692;;;;;1338:201:0;;;;;;;;;;-1:-1:-1;1338:201:0;;;;;:::i;:::-;;:::i;5271:47::-;;;;;;;;;;-1:-1:-1;5271:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;11442:323;;;;;;;;;;-1:-1:-1;11442:323:0;;;;;:::i;:::-;;:::i;9662:119::-;9738:10;;:35;;-1:-1:-1;;;9738:35:0;;9767:4;9738:35;;;1414:51:1;9711:7:0;;-1:-1:-1;;;;;9738:10:0;;:20;;1387:18:1;;9738:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9731:42;;9662:119;:::o;11806:221::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;;;;;;;;;11903:18:::1;::::0;;11932:27;;;;11975:44:::1;::::0;;2357:25:1;;;2413:2;2398:18;;2391:34;;;11975:44:0::1;::::0;2330:18:1;11975:44:0::1;;;;;;;;11872:155;11806:221:::0;:::o;17470:884::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;17579:1:::1;17569:6;:11;;:26;;;;;17594:1;17584:6;:11;;17569:26;17561:51;;;::::0;-1:-1:-1;;;17561:51:0;;5513:2:1;17561:51:0::1;::::0;::::1;5495:21:1::0;5552:2;5532:18;;;5525:30;-1:-1:-1;;;5571:18:1;;;5564:42;5623:18;;17561:51:0::1;5311:336:1::0;17561:51:0::1;17623:17;17665:6;17675:1;17665:11:::0;17661:610:::1;;-1:-1:-1::0;17705:15:0::1;::::0;17755::::1;::::0;17743:27;::::1;17735:63;;;::::0;-1:-1:-1;;;17735:63:0;;5854:2:1;17735:63:0::1;::::0;::::1;5836:21:1::0;5893:2;5873:18;;;5866:30;5932:25;5912:18;;;5905:53;5975:18;;17735:63:0::1;5652:347:1::0;17735:63:0::1;17813:15;:27:::0;;;17661:610:::1;;;17862:6;17872:1;17862:11:::0;17858:413:::1;;-1:-1:-1::0;17902:15:0::1;::::0;17952::::1;::::0;17940:27;::::1;:58:::0;::::1;;;;17983:15;;17971:9;:27;17940:58;17932:102;;;::::0;-1:-1:-1;;;17932:102:0;;6206:2:1;17932:102:0::1;::::0;::::1;6188:21:1::0;6245:2;6225:18;;;6218:30;6284:33;6264:18;;;6257:61;6335:18;;17932:102:0::1;6004:355:1::0;17932:102:0::1;18049:15;:27:::0;;;17858:413:::1;;;-1:-1:-1::0;18121:15:0::1;::::0;18171::::1;::::0;18159:27;::::1;18151:66;;;::::0;-1:-1:-1;;;18151:66:0;;6566:2:1;18151:66:0::1;::::0;::::1;6548:21:1::0;6605:2;6585:18;;;6578:30;6644:28;6624:18;;;6617:56;6690:18;;18151:66:0::1;6364:350:1::0;18151:66:0::1;18232:15;:27:::0;;;17858:413:::1;18296:50;::::0;;1869:25:1;;;1925:2;1910:18;;1903:34;;;1953:18;;;1946:34;;;18296:50:0::1;::::0;1857:2:1;1842:18;18296:50:0::1;;;;;;;17550:804;17470:884:::0;;:::o;12255:222::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12342:18:0;::::1;12334:46;;;::::0;-1:-1:-1;;;12334:46:0;;6921:2:1;12334:46:0::1;::::0;::::1;6903:21:1::0;6960:2;6940:18;;;6933:30;-1:-1:-1;;;6979:18:1;;;6972:45;7034:18;;12334:46:0::1;6719:339:1::0;12334:46:0::1;-1:-1:-1::0;;;;;12391:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;;;;:26;;-1:-1:-1;;12391:26:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12433:36;;2131:41:1;;;12433:36:0::1;::::0;2104:18:1;12433:36:0::1;;;;;;;12255:222:::0;;:::o;7462:807::-;1899:1;2045:7;;:19;2037:63;;;;-1:-1:-1;;;2037:63:0;;;;;;;:::i;:::-;1899:1;2111:7;:18;2545:8:::1;2477:7:::0;;;;;2406:86;2545:8:::1;2544:9;2536:38;;;;-1:-1:-1::0;;;2536:38:0::1;;;;;;;:::i;:::-;6470:10:::2;6458:23;::::0;;;:11:::2;:23;::::0;;;;;::::2;;6457:24;6449:59;;;;-1:-1:-1::0;;;6449:59:0::2;;;;;;;:::i;:::-;7615:10:::3;::::0;7601::::3;7584:28;::::0;;;:16:::3;:28;::::0;;;;;:41:::3;::::0;7615:10;7584:41:::3;:::i;:::-;7565:15;:60;;7557:93;;;::::0;-1:-1:-1;;;7557:93:0;;8583:2:1;7557:93:0::3;::::0;::::3;8565:21:1::0;8622:2;8602:18;;;8595:30;-1:-1:-1;;;8641:18:1;;;8634:50;8701:18;;7557:93:0::3;8381:344:1::0;7557:93:0::3;7682:10;7669:24;::::0;;;:12:::3;:24;::::0;;;;;:34;-1:-1:-1;7669:34:0::3;7661:74;;;::::0;-1:-1:-1;;;7661:74:0;;8932:2:1;7661:74:0::3;::::0;::::3;8914:21:1::0;8971:2;8951:18;;;8944:30;9010:29;8990:18;;;8983:57;9057:18;;7661:74:0::3;8730:351:1::0;7661:74:0::3;7818:21;7842:27;7858:10;7842:15;:27::i;:::-;7818:51:::0;-1:-1:-1;7884:17:0;;7880:152:::3;;7918:44;7936:10;7948:13;7918:17;:44::i;:::-;7991:10;7977:25;::::0;;;:13:::3;:25;::::0;;;;8005:15:::3;7977:43:::0;;7880:152:::3;8116:10;8103:24;::::0;;;:12:::3;:24;::::0;;;;:34;;8131:6;;8103:24;:34:::3;::::0;8131:6;;8103:34:::3;:::i;:::-;::::0;;;-1:-1:-1;;8156:10:0::3;::::0;:39:::3;::::0;-1:-1:-1;;;8156:39:0;;8176:10:::3;8156:39;::::0;::::3;9393:51:1::0;9460:18;;;9453:34;;;-1:-1:-1;;;;;8156:10:0;;::::3;::::0;:19:::3;::::0;9366:18:1;;8156:39:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8148:67;;;::::0;-1:-1:-1;;;8148:67:0;;9950:2:1;8148:67:0::3;::::0;::::3;9932:21:1::0;9989:2;9969:18;;;9962:30;-1:-1:-1;;;10008:18:1;;;10001:45;10063:18;;8148:67:0::3;9748:339:1::0;8148:67:0::3;8233:28;::::0;160:25:1;;;8242:10:0::3;::::0;8233:28:::3;::::0;148:2:1;133:18;8233:28:0::3;;;;;;;;-1:-1:-1::0;;1855:1:0;2152:22;;7462:807::o;8277:573::-;1899:1;2045:7;;:19;2037:63;;;;-1:-1:-1;;;2037:63:0;;;;;;;:::i;:::-;1899:1;2111:7;:18;2545:8:::1;2477:7:::0;;;;;2406:86;2545:8:::1;2544:9;2536:38;;;;-1:-1:-1::0;;;2536:38:0::1;;;;;;;:::i;:::-;6470:10:::2;6458:23;::::0;;;:11:::2;:23;::::0;;;;;::::2;;6457:24;6449:59;;;;-1:-1:-1::0;;;6449:59:0::2;;;;;;;:::i;:::-;8363:21:::3;8387:27;8403:10;8387:15;:27::i;:::-;8363:51;;8449:1;8433:13;:17;8425:49;;;::::0;-1:-1:-1;;;8425:49:0;;10294:2:1;8425:49:0::3;::::0;::::3;10276:21:1::0;10333:2;10313:18;;;10306:30;-1:-1:-1;;;10352:18:1;;;10345:49;10411:18;;8425:49:0::3;10092:343:1::0;8425:49:0::3;8564:10;8550:25;::::0;;;:13:::3;:25;::::0;;;;8578:15:::3;8550:43:::0;;8685:18:::3;8701:2;8685:13:::0;:18:::3;:::i;:::-;8659:44;;8714;8732:10;8744:13;8714:17;:44::i;:::-;8784:58;::::0;;2357:25:1;;;2413:2;2398:18;;2391:34;;;8799:10:0::3;::::0;8784:58:::3;::::0;2330:18:1;8784:58:0::3;2183:248:1::0;11068:67:0;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;11117:10:::1;:8;:10::i;:::-;11068:67::o:0;15147:570::-;-1:-1:-1;;;;;15369:22:0;;15222:24;15369:22;;;:16;:22;;;;;;15222:24;;;;;;15351:40;;:15;:40;:::i;:::-;-1:-1:-1;;;;;15441:18:0;;;;;;:12;:18;;;;;;15332:59;;-1:-1:-1;15421:39:0;;:19;:39::i;:::-;15402:58;;15488:27;15506:8;15488:17;:27::i;:::-;15471:44;;15600:4;15581:15;;15564:14;15545:16;:33;;;;:::i;:::-;:51;;;;:::i;:::-;15544:60;;;;:::i;:::-;15147:570;;;;-1:-1:-1;;;15147:570:0:o;14286:427::-;14352:7;14386:15;;14376:6;:25;14372:283;;-1:-1:-1;14425:3:0;;14286:427;-1:-1:-1;14286:427:0:o;14372:283::-;14482:15;;14472:6;:25;14468:187;;-1:-1:-1;14521:3:0;;14286:427;-1:-1:-1;14286:427:0:o;14468:187::-;14579:15;;14569:6;:25;14565:90;;-1:-1:-1;14618:3:0;;14286:427;-1:-1:-1;14286:427:0:o;14565:90::-;-1:-1:-1;14672:3:0;;14286:427;-1:-1:-1;14286:427:0:o;1227:103::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;1292:30:::1;1319:1;1292:18;:30::i;12035:189::-:0;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;12124:10:::1;::::0;;12145:19;;;;12180:36:::1;::::0;;2357:25:1;;;2413:2;2398:18;;2391:34;;;12180:36:0::1;::::0;2330:18:1;12180:36:0::1;2183:248:1::0;15779:341:0;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;15870:10:::1;;15858:9;:22;15850:74;;;::::0;-1:-1:-1;;;15850:74:0;;11037:2:1;15850:74:0::1;::::0;::::1;11019:21:1::0;11076:2;11056:18;;;11049:30;11115:34;11095:18;;;11088:62;-1:-1:-1;;;11166:18:1;;;11159:37;11213:19;;15850:74:0::1;10835:403:1::0;15850:74:0::1;15955:1;15943:9;:13;15935:47;;;::::0;-1:-1:-1;;;15935:47:0;;11445:2:1;15935:47:0::1;::::0;::::1;11427:21:1::0;11484:2;11464:18;;;11457:30;-1:-1:-1;;;11503:18:1;;;11496:51;11564:18;;15935:47:0::1;11243:345:1::0;15935:47:0::1;16013:10;::::0;;16034:22;;;;16072:40:::1;::::0;;-1:-1:-1;1869:25:1;;1925:2;1910:18;;1903:34;;;1953:18;;;1946:34;;;16072:40:0::1;::::0;1857:2:1;1842:18;16072:40:0::1;1667:319:1::0;14001:226:0;14134:13;;:38;;-1:-1:-1;;;14134:38:0;;14166:4;14134:38;;;1414:51:1;14053:23:0;;;;-1:-1:-1;;;;;14134:13:0;;;;:23;;1387:18:1;;14134:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14112:107;14187:21;;-1:-1:-1;14001:226:0;-1:-1:-1;14001:226:0:o;17208:254::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;17316:20:::1;::::0;;17347:36;;;;17399:55:::1;::::0;;2357:25:1;;;2413:2;2398:18;;2391:34;;;17399:55:0::1;::::0;2330:18:1;17399:55:0::1;2183:248:1::0;16507:286:0;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;16598:10:::1;;16586:9;:22;16578:77;;;::::0;-1:-1:-1;;;16578:77:0;;12127:2:1;16578:77:0::1;::::0;::::1;12109:21:1::0;12166:2;12146:18;;;12139:30;12205:34;12185:18;;;12178:62;-1:-1:-1;;;12256:18:1;;;12249:40;12306:19;;16578:77:0::1;11925:406:1::0;16578:77:0::1;16686:10;::::0;;16707:22;;;;16745:40:::1;::::0;;16761:1:::1;1869:25:1::0;;1925:2;1910:18;;1903:34;;;1953:18;;;1946:34;;;16745:40:0::1;::::0;1857:2:1;1842:18;16745:40:0::1;1667:319:1::0;10997:63:0;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;11044:8:::1;:6;:8::i;10157:142::-:0;10250:10;;:41;;-1:-1:-1;;;10250:41:0;;-1:-1:-1;;;;;12898:15:1;;;10250:41:0;;;12880:34:1;10285:4:0;12930:18:1;;;12923:43;10223:7:0;;10250:10;;:20;;12815:18:1;;10250:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10243:48;10157:142;-1:-1:-1;;10157:142:0:o;13752:241::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;13879:10:::1;::::0;-1:-1:-1;;;;;13879:10:0;;::::1;13855:35:::0;;::::1;::::0;13847:76:::1;;;::::0;-1:-1:-1;;;13847:76:0;;13179:2:1;13847:76:0::1;::::0;::::1;13161:21:1::0;13218:2;13198:18;;;13191:30;13257;13237:18;;;13230:58;13305:18;;13847:76:0::1;12977:352:1::0;13847:76:0::1;13941:12;-1:-1:-1::0;;;;;13934:29:0::1;;13964:7;1052::::0;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;13964:7:::1;13934:51;::::0;-1:-1:-1;;;;;;13934:51:0::1;::::0;;;;;;-1:-1:-1;;;;;9411:32:1;;;13934:51:0::1;::::0;::::1;9393::1::0;9460:18;;;9453:34;;;9366:18;;13934:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13752:241:::0;;:::o;14721:418::-;14787:7;14823:10;;14811:8;:22;14807:274;;-1:-1:-1;14857:3:0;;14721:418;-1:-1:-1;14721:418:0:o;14807:274::-;14916:10;;14904:8;:22;14900:181;;-1:-1:-1;14950:3:0;;14721:418;-1:-1:-1;14721:418:0:o;14900:181::-;15010:10;;14998:8;:22;14994:87;;-1:-1:-1;15044:3:0;;14721:418;-1:-1:-1;14721:418:0:o;6593:861::-;1899:1;2045:7;;:19;2037:63;;;;-1:-1:-1;;;2037:63:0;;;;;;;:::i;:::-;1899:1;2111:7;:18;2545:8:::1;2477:7:::0;;;;;2406:86;2545:8:::1;2544:9;2536:38;;;;-1:-1:-1::0;;;2536:38:0::1;;;;;;;:::i;:::-;6470:10:::2;6458:23;::::0;;;:11:::2;:23;::::0;;;;;::::2;;6457:24;6449:59;;;;-1:-1:-1::0;;;6449:59:0::2;;;;;;;:::i;:::-;6704:18:::3;;6694:6;:28;;6686:67;;;::::0;-1:-1:-1;;;6686:67:0;;13536:2:1;6686:67:0::3;::::0;::::3;13518:21:1::0;13575:2;13555:18;;;13548:30;13614:28;13594:18;;;13587:56;13660:18;;6686:67:0::3;13334:350:1::0;6686:67:0::3;6781:1;6772:6;:10;6764:37;;;::::0;-1:-1:-1;;;6764:37:0;;13891:2:1;6764:37:0::3;::::0;::::3;13873:21:1::0;13930:2;13910:18;;;13903:30;-1:-1:-1;;;13949:18:1;;;13942:44;14003:18;;6764:37:0::3;13689:338:1::0;6764:37:0::3;6862:10;::::0;:58:::3;::::0;-1:-1:-1;;;6862:58:0;;6886:10:::3;6862:58;::::0;::::3;14272:34:1::0;6906:4:0::3;14322:18:1::0;;;14315:43;14374:18;;;14367:34;;;-1:-1:-1;;;;;6862:10:0;;::::3;::::0;:23:::3;::::0;14207:18:1;;6862:58:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7030:10:0::3;7044:1;7017:24:::0;;;:12:::3;:24;::::0;;;;;:28;7013:243:::3;;7076:10;7062:25;::::0;;;:13:::3;:25;::::0;;;;7090:15:::3;7062:43:::0;;7013:243:::3;;;7215:10;7201:25;::::0;;;:13:::3;:25;::::0;;;;7229:15:::3;7201:43:::0;;7013:243:::3;7324:10;7311:24;::::0;;;:12:::3;:24;::::0;;;;:34;;7339:6;;7311:24;:34:::3;::::0;7339:6;;7311:34:::3;:::i;:::-;::::0;;;-1:-1:-1;;7373:10:0::3;7356:28;::::0;;;:16:::3;:28;::::0;;;;;;7387:15:::3;7356:46:::0;;7420:26;::::3;::::0;::::3;::::0;7439:6;160:25:1;;148:2;133:18;;14:177;7420:26:0::3;;;;;;;;-1:-1:-1::0;1855:1:0;2152:22;;6593:861::o;16996:204::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;17087:15:::1;::::0;;17113:25;;;;17154:38:::1;::::0;;2357:25:1;;;2413:2;2398:18;;2391:34;;;17154:38:0::1;::::0;2330:18:1;17154:38:0::1;2183:248:1::0;10360:557:0;10449:13;;:38;;-1:-1:-1;;;10449:38:0;;10481:4;10449:38;;;1414:51:1;10491:12:0;;-1:-1:-1;;;;;10449:13:0;;:23;;1387:18:1;;10449:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;10441:87;;;;-1:-1:-1;;;10441:87:0;;14614:2:1;10441:87:0;;;14596:21:1;14653:2;14633:18;;;14626:30;-1:-1:-1;;;14672:18:1;;;14665:50;14732:18;;10441:87:0;14412:344:1;10441:87:0;10539:23;10565:17;10580:2;10565:12;:17;:::i;:::-;10539:43;;10626:15;10601:21;:40;;10593:83;;;;-1:-1:-1;;;10593:83:0;;14963:2:1;10593:83:0;;;14945:21:1;15002:2;14982:18;;;14975:30;15041:32;15021:18;;;15014:60;15091:18;;10593:83:0;14761:354:1;10593:83:0;10705:13;;:42;;-1:-1:-1;;;10705:42:0;;-1:-1:-1;;;;;9411:32:1;;;10705:42:0;;;9393:51:1;9460:18;;;9453:34;;;10705:13:0;;;;:22;;9366:18:1;;10705:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10697:77;;;;-1:-1:-1;;;10697:77:0;;15322:2:1;10697:77:0;;;15304:21:1;15361:2;15341:18;;;15334:30;-1:-1:-1;;;15380:18:1;;;15373:52;15442:18;;10697:77:0;15120:346:1;10697:77:0;10786:12;10812:4;-1:-1:-1;;;;;10804:18:0;10830:15;10804:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10785:65;;;10869:7;10861:48;;;;-1:-1:-1;;;10861:48:0;;15883:2:1;10861:48:0;;;15865:21:1;15922:2;15902:18;;;15895:30;15961;15941:18;;;15934:58;16009:18;;10861:48:0;15681:352:1;10861:48:0;10430:487;;10360:557;;:::o;12485:327::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;12585:9:::1;12581:224;12600:16:::0;;::::1;12581:224;;;12666:1;12646:5:::0;;12652:1;12646:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12646:22:0::1;::::0;12638:50:::1;;;::::0;-1:-1:-1;;;12638:50:0;;6921:2:1;12638:50:0::1;::::0;::::1;6903:21:1::0;6960:2;6940:18;;;6933:30;-1:-1:-1;;;6979:18:1;;;6972:45;7034:18;;12638:50:0::1;6719:339:1::0;12638:50:0::1;12727:6;12703:11;:21;12715:5;;12721:1;12715:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12703:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12703:21:0;:30;;-1:-1:-1;;12703:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12776:5;;12782:1;12776:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12753:40:0::1;;12786:6;12753:40;;;;2156:14:1::0;2149:22;2131:41;;2119:2;2104:18;;1991:187;12753:40:0::1;;;;;;;;12618:3:::0;::::1;::::0;::::1;:::i;:::-;;;;12581:224;;11167:267:::0;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;11257:15:::1;;11249:4;:23;;11241:49;;;::::0;-1:-1:-1;;;11241:49:0;;16512:2:1;11241:49:0::1;::::0;::::1;16494:21:1::0;16551:2;16531:18;;;16524:30;-1:-1:-1;;;16570:18:1;;;16563:43;16623:18;;11241:49:0::1;16310:337:1::0;11241:49:0::1;11319:17;::::0;;11347:24;;;;11387:39:::1;::::0;;2357:25:1;;;2413:2;2398:18;;2391:34;;;11387:39:0::1;::::0;2330:18:1;11387:39:0::1;2183:248:1::0;16128:371:0;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;16219:10:::1;;16207:9;:22;16199:77;;;::::0;-1:-1:-1;;;16199:77:0;;16854:2:1;16199:77:0::1;::::0;::::1;16836:21:1::0;16893:2;16873:18;;;16866:30;16932:34;16912:18;;;16905:62;-1:-1:-1;;;16983:18:1;;;16976:40;17033:19;;16199:77:0::1;16652:406:1::0;16199:77:0::1;16307:10;;16295:9;:22;16287:74;;;::::0;-1:-1:-1;;;16287:74:0;;17265:2:1;16287:74:0::1;::::0;::::1;17247:21:1::0;17304:2;17284:18;;;17277:30;17343:34;17323:18;;;17316:62;-1:-1:-1;;;17394:18:1;;;17387:37;17441:19;;16287:74:0::1;17063:403:1::0;16287:74:0::1;16392:10;::::0;;16413:22;;;;16451:40:::1;::::0;;16467:1:::1;1869:25:1::0;;1925:2;1910:18;;1903:34;;;1953:18;;;1946:34;;;16451:40:0::1;::::0;1857:2:1;1842:18;16451:40:0::1;1667:319:1::0;9789:360:0;-1:-1:-1;;;;;10007:18:0;;9862:14;10007:18;;;:12;:18;;;;;;;;;10040:16;:22;;;;;;9862:14;;;;;;10007:18;10077:21;10020:4;10077:15;:21::i;:::-;-1:-1:-1;;;;;10113:17:0;;;;;;:11;:17;;;;;;9985:156;;-1:-1:-1;9985:156:0;;-1:-1:-1;9985:156:0;-1:-1:-1;10113:17:0;;;-1:-1:-1;9789:360:0;;;;;:::o;13248:496::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;13337:13:::1;::::0;:38:::1;::::0;-1:-1:-1;;;13337:38:0;;13369:4:::1;13337:38;::::0;::::1;1414:51:1::0;13313:21:0::1;::::0;-1:-1:-1;;;;;13337:13:0::1;::::0;:23:::1;::::0;1387:18:1;;13337:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13313:62:::0;-1:-1:-1;13410:21:0::1;13456:17:::0;;13452:96:::1;;13490:13;::::0;-1:-1:-1;;;;;13490:13:0::1;:22;13513:7;1052::::0;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;13513:7:::1;13490:46;::::0;-1:-1:-1;;;;;;13490:46:0::1;::::0;;;;;;-1:-1:-1;;;;;9411:32:1;;;13490:46:0::1;::::0;::::1;9393:51:1::0;9460:18;;;9453:34;;;9366:18;;13490:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13452:96;13562:17:::0;;13558:179:::1;;13597:12;1079:6:::0;;13615:47:::1;::::0;-1:-1:-1;;;;;1079:6:0;;;;13644:13;;13597:12;13615:47;13597:12;13615:47;13644:13;1079:6;13615:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13596:66;;;13685:7;13677:48;;;::::0;-1:-1:-1;;;13677:48:0;;15883:2:1;13677:48:0::1;::::0;::::1;15865:21:1::0;15922:2;15902:18;;;15895:30;15961;15941:18;;;15934:58;16009:18;;13677:48:0::1;15681:352:1::0;13558:179:0::1;13302:442;;13248:496::o:0;8907:747::-;-1:-1:-1;;;;;8991:18:0;;8967:7;8991:18;;;:12;:18;;;;;;:23;;8987:37;;-1:-1:-1;9023:1:0;;8907:747;-1:-1:-1;8907:747:0:o;8987:37::-;-1:-1:-1;;;;;9082:19:0;;9045:16;9082:19;;;:13;:19;;;;;;9064:37;;:15;:37;:::i;:::-;9045:56;;9112:19;9151:17;;9134:14;;:34;;;;:::i;:::-;-1:-1:-1;;;;;9226:18:0;;9179:24;9226:18;;;:12;:18;;;;;;9112:56;;-1:-1:-1;9179:24:0;9206:39;;:19;:39::i;:::-;-1:-1:-1;;;;;9305:22:0;;9256:28;9305:22;;;:16;:22;;;;;;9179:66;;-1:-1:-1;9256:28:0;9287:40;;:15;:40;:::i;:::-;9256:71;;9338:22;9363:39;9381:20;9363:17;:39::i;:::-;-1:-1:-1;;;;;9441:18:0;;9423:14;9441:18;;;:12;:18;;;;;;9338:64;;-1:-1:-1;9423:14:0;9488:4;;9476:8;;9441:32;;9462:11;;9441:32;:::i;:::-;:43;;;;:::i;:::-;9440:52;;;;:::i;:::-;9423:69;-1:-1:-1;9557:5:0;9540:14;9512:25;9521:16;9423:69;9512:25;:::i;:::-;:42;;;;:::i;:::-;:50;;;;:::i;:::-;9503:59;;9609:3;9591:15;;9582:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;9573:39;8907:747;-1:-1:-1;;;;;;;;8907:747:0:o;12874:366::-;1899:1;2045:7;;:19;2037:63;;;;-1:-1:-1;;;2037:63:0;;;;;;;:::i;:::-;1899:1;2111:7;:18;12966:10:::1;12936:14;12953:24:::0;;;:12:::1;:24;::::0;;;;;12996:10;12988:39:::1;;;::::0;-1:-1:-1;;;12988:39:0;;18005:2:1;12988:39:0::1;::::0;::::1;17987:21:1::0;18044:2;18024:18;;;18017:30;-1:-1:-1;;;18063:18:1;;;18056:46;18119:18;;12988:39:0::1;17803:340:1::0;12988:39:0::1;13061:10;13075:1;13048:24:::0;;;:12:::1;:24;::::0;;;;;;;:28;;;13087:16:::1;:28:::0;;;;;;:32;;;;13130:10:::1;::::0;:39;;-1:-1:-1;;;13130:39:0;;::::1;::::0;::::1;9393:51:1::0;;;;9460:18;;;9453:34;;;-1:-1:-1;;;;;13130:10:0::1;::::0;:19:::1;::::0;9366:18:1;;13130:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13195:37:0::1;::::0;160:25:1;;;13213:10:0::1;::::0;13195:37:::1;::::0;148:2:1;133:18;13195:37:0::1;14:177:1::0;19023:1914:0;19088:22;;:::i;:::-;19123:32;;:::i;:::-;-1:-1:-1;;;;;19180:18:0;;;;;;:12;:18;;;;;;:23;;19176:45;;19212:9;19023:1914;-1:-1:-1;;19023:1914:0:o;19176:45::-;-1:-1:-1;;;;;19318:22:0;;19269:28;19318:22;;;:16;:22;;;;;;19300:40;;:15;:40;:::i;:::-;19269:71;;19351:19;19390:17;;19373:14;;:34;;;;:::i;:::-;19351:56;;19483:39;19501:20;19483:17;:39::i;:::-;19456:24;;;:66;-1:-1:-1;;;;;19582:18:0;;;;;;:12;:18;;;;;;19562:39;;:19;:39::i;:::-;19533:26;;;:68;19695:21;19711:4;19695:15;:21::i;:::-;19664:52;;;19756:33;;19787:2;;19756:33;:::i;:::-;19727:26;;;;:62;;;;-1:-1:-1;;;;;19881:18:0;;19860:17;19881:18;;;:12;:18;;;;;;19925:4;;19881:32;;19902:11;;19881:32;:::i;:::-;:40;;19916:5;19881:40;:::i;:::-;19880:49;;;;:::i;:::-;19860:69;;20078:7;20060:15;;20031:9;:26;;;20004:9;:24;;;19992:9;:36;;;;:::i;:::-;:65;;;;:::i;:::-;:83;;;;:::i;:::-;:93;;;;:::i;:::-;19966:23;;;;:119;;;-1:-1:-1;;;;;20207:18:0;;;;;;:12;:18;;;;;;;20168:23;;:29;;20194:3;20168:29;:::i;:::-;:35;;20200:3;20168:35;:::i;:::-;20167:58;;;;:::i;:::-;20142:22;;;:83;20280:23;;;:46;;;20423:10;;20400:33;;20396:507;;;20499:20;20486:10;;:33;;;;:::i;:::-;20450;;;:69;20396:507;;;20564:10;;20541:20;:33;20537:366;;;20640:20;20627:10;;:33;;;;:::i;20537:366::-;20705:10;;20682:20;:33;20678:225;;;20781:20;20768:10;;:33;;;;:::i;20678:225::-;20870:1;20834:33;;;:37;20678:225;-1:-1:-1;20920:9:0;;19023:1914;-1:-1:-1;;;;19023:1914:0:o;1338:201::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1427:22:0;::::1;1419:73;;;::::0;-1:-1:-1;;;1419:73:0;;18350:2:1;1419:73:0::1;::::0;::::1;18332:21:1::0;18389:2;18369:18;;;18362:30;18428:34;18408:18;;;18401:62;-1:-1:-1;;;18479:18:1;;;18472:36;18525:19;;1419:73:0::1;18148:402:1::0;1419:73:0::1;1503:28;1522:8;1503:18;:28::i;:::-;1338:201:::0;:::o;11442:323::-;1152:10;1141:7;1052;1079:6;-1:-1:-1;;;;;1079:6:0;;1006:87;1141:7;-1:-1:-1;;;;;1141:21:0;;1133:66;;;;-1:-1:-1;;;1133:66:0;;;;;;;:::i;:::-;11541:1:::1;11528:10;:14;:52;;;;;11560:20;;11546:10;:34;;11528:52;11520:83;;;::::0;-1:-1:-1;;;11520:83:0;;18757:2:1;11520:83:0::1;::::0;::::1;18739:21:1::0;18796:2;18776:18;;;18769:30;-1:-1:-1;;;18815:18:1;;;18808:48;18873:18;;11520:83:0::1;18555:342:1::0;11520:83:0::1;11638:15;::::0;;11664:28;;;;11708:49:::1;::::0;;2357:25:1;;;2413:2;2398:18;;2391:34;;;11708:49:0::1;::::0;2330:18:1;11708:49:0::1;2183:248:1::0;2828:118:0;2477:7;;;;2635:41;;;;-1:-1:-1;;;2635:41:0;;19104:2:1;2635:41:0;;;19086:21:1;19143:2;19123:18;;;19116:30;-1:-1:-1;;;19162:18:1;;;19155:50;19222:18;;2635:41:0;18902:344:1;2635:41:0;2887:7:::1;:15:::0;;-1:-1:-1;;2887:15:0::1;::::0;;2918:20:::1;::::0;2927:10:::1;1414:51:1::0;;2918:20:0::1;::::0;1402:2:1;1387:18;2918:20:0::1;;;;;;;;2828:118::o:0;1547:191::-;1621:16;1640:6;;-1:-1:-1;;;;;1657:17:0;;;-1:-1:-1;;;;;;1657:17:0;;;;;;1690:40;;1640:6;;;;;;;1690:40;;1621:16;1690:40;1610:128;1547:191;:::o;2704:116::-;2477:7;;;;2544:9;2536:38;;;;-1:-1:-1;;;2536:38:0;;;;;;;:::i;:::-;2764:7:::1;:14:::0;;-1:-1:-1;;2764:14:0::1;2774:4;2764:14;::::0;;2794:18:::1;::::0;2801:10:::1;1414:51:1::0;;2794:18:0::1;::::0;1402:2:1;1387:18;2794::0::1;1255:216:1::0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:248::-;449:6;457;510:2;498:9;489:7;485:23;481:32;478:52;;;526:1;523;516:12;478:52;-1:-1:-1;;549:23:1;;;619:2;604:18;;;591:32;;-1:-1:-1;381:248:1:o;634:173::-;702:20;;-1:-1:-1;;;;;751:31:1;;741:42;;731:70;;797:1;794;787:12;731:70;634:173;;;:::o;812:118::-;898:5;891:13;884:21;877:5;874:32;864:60;;920:1;917;910:12;935:315;1000:6;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1100:29;1119:9;1100:29;:::i;:::-;1090:39;;1179:2;1168:9;1164:18;1151:32;1192:28;1214:5;1192:28;:::i;:::-;1239:5;1229:15;;;935:315;;;;;:::o;1476:186::-;1535:6;1588:2;1576:9;1567:7;1563:23;1559:32;1556:52;;;1604:1;1601;1594:12;1556:52;1627:29;1646:9;1627:29;:::i;:::-;1617:39;1476:186;-1:-1:-1;;;1476:186:1:o;2436:254::-;2504:6;2512;2565:2;2553:9;2544:7;2540:23;2536:32;2533:52;;;2581:1;2578;2571:12;2533:52;2604:29;2623:9;2604:29;:::i;:::-;2594:39;2680:2;2665:18;;;;2652:32;;-1:-1:-1;;;2436:254:1:o;2903:750::-;2995:6;3003;3011;3064:2;3052:9;3043:7;3039:23;3035:32;3032:52;;;3080:1;3077;3070:12;3032:52;3120:9;3107:23;3149:18;3190:2;3182:6;3179:14;3176:34;;;3206:1;3203;3196:12;3176:34;3244:6;3233:9;3229:22;3219:32;;3289:7;3282:4;3278:2;3274:13;3270:27;3260:55;;3311:1;3308;3301:12;3260:55;3351:2;3338:16;3377:2;3369:6;3366:14;3363:34;;;3393:1;3390;3383:12;3363:34;3448:7;3441:4;3431:6;3428:1;3424:14;3420:2;3416:23;3412:34;3409:47;3406:67;;;3469:1;3466;3459:12;3406:67;3500:4;3492:13;;;;-1:-1:-1;3524:6:1;-1:-1:-1;;3565:20:1;;3552:34;3595:28;3552:34;3595:28;:::i;:::-;3642:5;3632:15;;;2903:750;;;;;:::o;4761:184::-;4831:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:52;;;4900:1;4897;4890:12;4852:52;-1:-1:-1;4923:16:1;;4761:184;-1:-1:-1;4761:184:1:o;4950:356::-;5152:2;5134:21;;;5171:18;;;5164:30;5230:34;5225:2;5210:18;;5203:62;5297:2;5282:18;;4950:356::o;7063:355::-;7265:2;7247:21;;;7304:2;7284:18;;;7277:30;7343:33;7338:2;7323:18;;7316:61;7409:2;7394:18;;7063:355::o;7423:340::-;7625:2;7607:21;;;7664:2;7644:18;;;7637:30;-1:-1:-1;;;7698:2:1;7683:18;;7676:46;7754:2;7739:18;;7423:340::o;7768:346::-;7970:2;7952:21;;;8009:2;7989:18;;;7982:30;-1:-1:-1;;;8043:2:1;8028:18;;8021:52;8105:2;8090:18;;7768:346::o;8119:127::-;8180:10;8175:3;8171:20;8168:1;8161:31;8211:4;8208:1;8201:15;8235:4;8232:1;8225:15;8251:125;8316:9;;;8337:10;;;8334:36;;;8350:18;;:::i;9086:128::-;9153:9;;;9174:11;;;9171:37;;;9188:18;;:::i;9498:245::-;9565:6;9618:2;9606:9;9597:7;9593:23;9589:32;9586:52;;;9634:1;9631;9624:12;9586:52;9666:9;9660:16;9685:28;9707:5;9685:28;:::i;10440:217::-;10480:1;10506;10496:132;;10550:10;10545:3;10541:20;10538:1;10531:31;10585:4;10582:1;10575:15;10613:4;10610:1;10603:15;10496:132;-1:-1:-1;10642:9:1;;10440:217::o;10662:168::-;10735:9;;;10766;;10783:15;;;10777:22;;10763:37;10753:71;;10804:18;;:::i;16038:127::-;16099:10;16094:3;16090:20;16087:1;16080:31;16130:4;16127:1;16120:15;16154:4;16151:1;16144:15;16170:135;16209:3;16230:17;;;16227:43;;16250:18;;:::i;:::-;-1:-1:-1;16297:1:1;16286:13;;16170:135::o
Swarm Source
ipfs://ba21a4829fce366c0bed96713925b97ce9755765c1bf0c6d0669141c6e4bae2f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
APE | Ape (APE) | 100.00% | $0.99305 | 0.3 | $0.297915 |
[ 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.