Contract Address Details
0x7B885838FEAcADc1399CDdF03cD784Db25C9bD5E
- Contract Name
- WOWSTAKE_DogeChain
- Creator
- 0x17bed7–69a062 at 0x33f1ff–735101
- Balance
- 0 Doge
- Tokens
-
Fetching tokens...
- Transactions
- 33 Transactions
- Transfers
- 88 Transfers
- Gas Used
- 9,012,454
- Last Balance Update
- 26826251
Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
- Contract name:
- WOWSTAKE_DogeChain
- Optimization enabled
- true
- Compiler version
- v0.8.9+commit.e5eed63a
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2022-10-01T09:00:37.326699Z
Constructor Arguments
000000000000000000000000a8525e8ada1bef4bde661236636bd07aaf44ff33000000000000000000000000903b575da41579495813b5a0665df4fef5fccb3b0000000000000000000000007ef7a2f007a412247d44276c2e7ca63d19daa161
Arg [0] (address) : 0xa8525e8ada1bef4bde661236636bd07aaf44ff33
Arg [1] (address) : 0x903b575da41579495813b5a0665df4fef5fccb3b
Arg [2] (address) : 0x7ef7a2f007a412247d44276c2e7ca63d19daa161
Contract source code
/** WOW! Stake ROI DAPP A sustainable investment platform based on DOGECHAIN (DC) smart-contract technology. © WowStake. All rights reserved 2022. ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ Twitter: https://twitter.com/WowStake_App │ │ Telegram Public Group: https://t.me/WowStake │ │ Telegram Channel: https://t.me/WowStake_App │ │ Site: https://WowStake.App │ └───────────────────────────────────────────────────────────────────────┘ PROFIT PLANS: Stake 1 - 3.7% daily, 555% for 150 days Stake 2 - 4.1% daily, 492% for 120 days Stake 3 - 4.7% daily, 282% for 60 days Stake 4 - 5.4% daily, 243% for 45 days TAX MODEL: 3.3% Dev. 3.3% Service. 3.3% Marketing. REQUIREMENTS: Stake 1 - min. 40000 DC, max. of 8000000 DC Stake 2 - min. 70000 DC, max. of 10000000 DC Stake 3 - min. 100000 DC, max. of 12000000 DC Stake 4 - min. 150000 DC, max. of 15000000 DC REFERRAL SYSTEM: 1 level referral bonus of 15%. ANTI-WHALE CONTROL FEATURES: 48 hours cut off time 24 hours withdraw cooldown. 12 hours compound cooldown. Max active deposit limit of 25000000 DC. Max withdraw amount of 2000000 DC per day. LAUNCH EVENT: Reinvest Bonus will be 10% for the first week. DISCLAIMER: Funds that are used to invest cannot be withdrawn. Please use the application at your own risk. **/ //SPDX-License-Identifier: MIT pragma solidity 0.8.9; 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 ); } contract WOWSTAKE_DogeChain { using SafeMath for uint256; IERC20 public erctoken; address token = 0x7B4328c127B85369D9f82ca0503B000D09CF9180; /** DC **/ /** default percentages **/ uint256 public PROJECT_FEE = 33; uint256 public MKT_BUYBACK_FEE = 33; uint256 public REFERRAL_PERCENT = 150; uint256 public SUSTAINABILITY_TAX = 0; uint256 constant public TIME_STEP = 1 days; uint256 constant private PERCENTS_DIVIDER = 1000; /* whale control features. **/ uint256 public CUTOFF_STEP = 48 * 60 * 60; uint256 public WITHDRAW_COOLDOWN = 24 * 60 * 60; uint256 public COMPOUND_COOLDOWN = 12 * 60 * 60; uint256 public REINVEST_BONUS = 100; uint256 public MAX_WITHDRAW = 2000000 ether; uint256 public WALLET_LIMIT = 25000000 ether; /** deposits after this timestamp gets additional percentages **/ uint256 public PERCENTAGE_BONUS_STARTTIME = 0; uint256 public PERCENTAGE_BONUS_PLAN_1 = 0; uint256 public PERCENTAGE_BONUS_PLAN_2 = 0; uint256 public PERCENTAGE_BONUS_PLAN_3 = 0; uint256 public PERCENTAGE_BONUS_PLAN_4 = 0; /* project statistics **/ uint256 public totalInvested; uint256 public totalReInvested; uint256 public totalRefBonus; uint256 public totalInvestorCount; struct Plan { uint256 time; uint256 percent; uint256 mininvest; uint256 maxinvest; /** plan statistics **/ uint256 planTotalInvestorCount; uint256 planTotalInvestments; uint256 planTotalReInvestorCount; uint256 planTotalReInvestments; bool planActivated; } struct Deposit { uint8 plan; uint256 amount; uint256 start; bool reinvested; } Plan[] internal plans; struct User { Deposit[] deposits; mapping (uint8 => uint256) checkpoints; /** a checkpoint for each plan **/ uint256 cutoff; uint256 totalInvested; address referrer; uint256 referralsCount; uint256 bonus; uint256 totalBonus; uint256 withdrawn; uint256 reinvested; uint256 totalDepositAmount; } mapping (address => User) internal users; address private dev; address private service; address private mktAndBuyBack; address private contractOwner; uint public startTime = 1665082800; //Thu Oct 06 2022 19:00:00 GMT+0000 https://www.unixtimestamp.com/ event Newbie(address user); event NewDeposit(address indexed user, uint8 plan, uint256 amount); event ReinvestedDeposit(address indexed user, uint8 plan, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RefBonus(address indexed referrer, address indexed referral, uint256 amount); event FeePayed(address indexed user, uint256 totalAmount); constructor(address _dev, address _service, address _mkt) { require(!isContract(_dev) && !isContract(_service) && !isContract(_mkt)); contractOwner = msg.sender; dev = _dev; service = _service; mktAndBuyBack = _mkt; erctoken = IERC20(token); plans.push(Plan( 150, 37, 40000 ether, 8000000 ether, 0, 0, 0, 0, true)); plans.push(Plan( 120, 41, 70000 ether, 10000000 ether, 0, 0, 0, 0, true)); plans.push(Plan( 60, 47, 100000 ether, 12000000 ether, 0, 0, 0, 0, true)); plans.push(Plan( 45, 54, 150000 ether, 15000000 ether, 0, 0, 0, 0, true)); } function invest(address referrer, uint8 plan, uint256 amounterc) public { require(block.timestamp > startTime); require(plan < plans.length, "Invalid Plan."); require(amounterc >= plans[plan].mininvest, "Less than minimum amount required for the selected Plan."); require(amounterc <= plans[plan].maxinvest, "More than maximum amount required for the selected Plan."); require(plans[plan].planActivated, "Plan selected is disabled"); require(getUserActiveProjectInvestments(msg.sender).add(amounterc) <= WALLET_LIMIT, "Max wallet deposit limit reached."); /** fees **/ erctoken.transferFrom(address(msg.sender), address(this), amounterc); emit FeePayed(msg.sender, payFees(amounterc)); User storage user = users[msg.sender]; if (user.referrer == address(0)) { if (referrer != msg.sender) { user.referrer = referrer; } address upline1 = user.referrer; if (upline1 != address(0)) { users[upline1].referralsCount = users[upline1].referralsCount.add(1); } } if (user.referrer != address(0)) { address upline = user.referrer; if (upline != address(0)) { uint256 amount = amounterc.mul(REFERRAL_PERCENT).div(PERCENTS_DIVIDER); users[upline].bonus = users[upline].bonus.add(amount); users[upline].totalBonus = users[upline].totalBonus.add(amount); totalRefBonus = totalRefBonus.add(amount); emit RefBonus(upline, msg.sender, amount); } } /** new user gets current time + CUTOFF_STEP for initial time window **/ if (user.deposits.length == 0) { user.checkpoints[plan] = block.timestamp; user.cutoff = block.timestamp.add(CUTOFF_STEP); emit Newbie(msg.sender); } /** deposit from new invest **/ user.deposits.push(Deposit(plan, amounterc, block.timestamp, false)); user.totalInvested = user.totalInvested.add(amounterc); totalInvested = totalInvested.add(amounterc); /** statistics **/ totalInvestorCount = totalInvestorCount.add(1); plans[plan].planTotalInvestorCount = plans[plan].planTotalInvestorCount.add(1); plans[plan].planTotalInvestments = plans[plan].planTotalInvestments.add(amounterc); emit NewDeposit(msg.sender, plan, amounterc); } function reinvest(uint8 plan) public { require(block.timestamp > startTime); require(plan < plans.length, "Invalid plan"); require(plans[plan].planActivated, "Plan selected is disabled."); User storage user = users[msg.sender]; if(user.checkpoints[plan].add(COMPOUND_COOLDOWN) > block.timestamp){ revert("Compounding/Reinvesting can only be made after compound cooldown."); } uint256 totalAmount = getUserDividends(msg.sender, int8(plan)); uint256 finalAmount = totalAmount.add(totalAmount.mul(REINVEST_BONUS).div(PERCENTS_DIVIDER)); user.deposits.push(Deposit(plan, finalAmount, block.timestamp, true)); user.reinvested = user.reinvested.add(finalAmount); user.checkpoints[plan] = block.timestamp; user.cutoff = block.timestamp.add(CUTOFF_STEP); /** statistics **/ totalReInvested = totalReInvested.add(finalAmount); plans[plan].planTotalReInvestments = plans[plan].planTotalReInvestments.add(finalAmount); plans[plan].planTotalReInvestorCount = plans[plan].planTotalReInvestorCount.add(1); emit ReinvestedDeposit(msg.sender, plan, finalAmount); } function withdraw() public { require(block.timestamp > startTime); User storage user = users[msg.sender]; uint256 totalAmount = getUserDividends(msg.sender); uint256 referralBonus = getUserReferralBonus(msg.sender); if (referralBonus > 0) { user.bonus = 0; totalAmount = totalAmount.add(referralBonus); } require(totalAmount > 0, "User has no dividends"); uint256 contractBalance = erctoken.balanceOf(address(this)); if (contractBalance < totalAmount) { user.bonus = totalAmount.sub(contractBalance); user.totalBonus = user.totalBonus.add(user.bonus); totalAmount = contractBalance; } for(uint8 i = 0; i < plans.length; i++){ if(user.checkpoints[i].add(WITHDRAW_COOLDOWN) > block.timestamp){ revert("Withdrawals can only be made after withdraw cooldown."); } user.checkpoints[i] = block.timestamp; /** global withdraw will reset checkpoints on all plans **/ } /** Excess dividends are sent back to the user's account available for the next withdrawal. **/ if(totalAmount > MAX_WITHDRAW) { user.bonus = totalAmount.sub(MAX_WITHDRAW); totalAmount = MAX_WITHDRAW; } totalAmount = totalAmount.sub(totalAmount.mul(SUSTAINABILITY_TAX).div(PERCENTS_DIVIDER)); user.cutoff = block.timestamp.add(CUTOFF_STEP); /** global withdraw will also reset CUTOFF **/ user.withdrawn = user.withdrawn.add(totalAmount); erctoken.transfer(msg.sender, totalAmount-MKT_BUYBACK_FEE*3); erctoken.transfer(dev, totalAmount/30); erctoken.transfer(service, totalAmount/30); erctoken.transfer(mktAndBuyBack, totalAmount/30); emit Withdrawn(msg.sender, totalAmount); } function payFees(uint256 amounterc) internal returns(uint256) { uint256 fee = amounterc.mul(PROJECT_FEE).div(PERCENTS_DIVIDER); uint256 marketing = amounterc.mul(MKT_BUYBACK_FEE).div(PERCENTS_DIVIDER); erctoken.transfer(dev, fee); erctoken.transfer(service, fee); erctoken.transfer(mktAndBuyBack, marketing); uint256 totalFee = fee.mul(2); return totalFee.add(marketing); } function getUserDividends(address userAddress, int8 plan) public view returns (uint256) { User storage user = users[userAddress]; uint256 totalAmount; uint256 endPoint = block.timestamp < user.cutoff ? block.timestamp : user.cutoff; for (uint256 i = 0; i < user.deposits.length; i++) { if(plan > -1){ if(user.deposits[i].plan != uint8(plan)){ continue; } } uint256 finish = user.deposits[i].start.add(plans[user.deposits[i].plan].time.mul(1 days)); /** check if plan is not yet finished. **/ if (user.checkpoints[user.deposits[i].plan] < finish) { uint256 percent = plans[user.deposits[i].plan].percent; if(user.deposits[i].start >= PERCENTAGE_BONUS_STARTTIME){ if(user.deposits[i].plan == 0){ percent = percent.add(PERCENTAGE_BONUS_PLAN_1); }else if(user.deposits[i].plan == 1){ percent = percent.add(PERCENTAGE_BONUS_PLAN_2); }else if(user.deposits[i].plan == 2){ percent = percent.add(PERCENTAGE_BONUS_PLAN_3); }else if(user.deposits[i].plan == 3){ percent = percent.add(PERCENTAGE_BONUS_PLAN_4); } } uint256 share = user.deposits[i].amount.mul(percent).div(PERCENTS_DIVIDER); uint256 from = user.deposits[i].start > user.checkpoints[user.deposits[i].plan] ? user.deposits[i].start : user.checkpoints[user.deposits[i].plan]; /** uint256 to = finish < block.timestamp ? finish : block.timestamp; **/ uint256 to = finish < endPoint ? finish : endPoint; if (from < to) { totalAmount = totalAmount.add(share.mul(to.sub(from)).div(TIME_STEP)); } } } return totalAmount; } function getUserActiveProjectInvestments(address userAddress) public view returns (uint256){ uint256 totalAmount; /** get total active investments in all plans. **/ for(uint8 i = 0; i < plans.length; i++){ totalAmount = totalAmount.add(getUserActiveInvestments(userAddress, i)); } return totalAmount; } function getUserActiveInvestments(address userAddress, uint8 plan) public view returns (uint256){ User storage user = users[userAddress]; uint256 totalAmount; for (uint256 i = 0; i < user.deposits.length; i++) { if(user.deposits[i].plan != uint8(plan)){ continue; } uint256 finish = user.deposits[i].start.add(plans[user.deposits[i].plan].time.mul(1 days)); if (user.checkpoints[uint8(plan)] < finish) { /** sum of all unfinished deposits from plan **/ totalAmount = totalAmount.add(user.deposits[i].amount); } } return totalAmount; } function getPlanInfo(uint8 plan) public view returns(uint256 time, uint256 percent, uint256 minimumInvestment, uint256 maximumInvestment, uint256 planTotalInvestorCount, uint256 planTotalInvestments , uint256 planTotalReInvestorCount, uint256 planTotalReInvestments, bool planActivated) { time = plans[plan].time; percent = plans[plan].percent; minimumInvestment = plans[plan].mininvest; maximumInvestment = plans[plan].maxinvest; planTotalInvestorCount = plans[plan].planTotalInvestorCount; planTotalInvestments = plans[plan].planTotalInvestments; planTotalReInvestorCount = plans[plan].planTotalReInvestorCount; planTotalReInvestments = plans[plan].planTotalReInvestments; planActivated = plans[plan].planActivated; } function getContractBalance() public view returns (uint256) { return erctoken.balanceOf(address(this)); } function getUserDividends(address userAddress) public view returns (uint256) { return getUserDividends(userAddress, -1); } function getUserCutoff(address userAddress) public view returns (uint256) { return users[userAddress].cutoff; } function getUserTotalWithdrawn(address userAddress) public view returns (uint256) { return users[userAddress].withdrawn; } function getUserCheckpoint(address userAddress, uint8 plan) public view returns(uint256) { return users[userAddress].checkpoints[plan]; } function getUserReferrer(address userAddress) public view returns(address) { return users[userAddress].referrer; } function getUserTotalReferrals(address userAddress) public view returns (uint256){ return users[userAddress].referralsCount; } function getUserReferralBonus(address userAddress) public view returns(uint256) { return users[userAddress].bonus; } function getUserReferralTotalBonus(address userAddress) public view returns(uint256) { return users[userAddress].totalBonus; } function getUserReferralWithdrawn(address userAddress) public view returns(uint256) { return users[userAddress].totalBonus.sub(users[userAddress].bonus); } function getUserAvailable(address userAddress) public view returns(uint256) { return getUserReferralBonus(userAddress).add(getUserDividends(userAddress)); } function getUserAmountOfDeposits(address userAddress) public view returns(uint256) { return users[userAddress].deposits.length; } function getUserTotalDeposits(address userAddress) public view returns(uint256 amount) { for (uint256 i = 0; i < users[userAddress].deposits.length; i++) { amount = amount.add(users[userAddress].deposits[i].amount); } } function getUserDepositInfo(address userAddress, uint256 index) public view returns(uint8 plan, uint256 percent, uint256 amount, uint256 start, uint256 finish, bool reinvested) { User storage user = users[userAddress]; plan = user.deposits[index].plan; percent = plans[plan].percent; amount = user.deposits[index].amount; start = user.deposits[index].start; finish = user.deposits[index].start.add(plans[user.deposits[index].plan].time.mul(1 days)); reinvested = user.deposits[index].reinvested; } function getSiteInfo() public view returns (uint256 _totalInvested, uint256 _totalBonus) { return (totalInvested, totalRefBonus); } function getUserInfo(address userAddress) public view returns(uint256 totalDeposit, uint256 totalWithdrawn, uint256 totalReferrals) { return(getUserTotalDeposits(userAddress), getUserTotalWithdrawn(userAddress), getUserTotalReferrals(userAddress)); } /** Get Block Timestamp **/ function getBlockTimeStamp() public view returns (uint256) { return block.timestamp; } /** Get Plans Length **/ function getPlansLength() public view returns (uint256) { return plans.length; } function isContract(address addr) internal view returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; } /** Add additional plans in the Plan structure. **/ function CHANGE_OWNERSHIP(address value) external { require(msg.sender == contractOwner, "Admin use only"); contractOwner = value; } function SET_REFERRAL_PERCENT(uint256 value) external { require(msg.sender == contractOwner, "Admin use only"); require(value <= 160); REFERRAL_PERCENT = value; } function SET_REINVEST_BONUS(uint256 value) external { require(msg.sender == contractOwner, "Admin use only"); require(value <= 100); REINVEST_BONUS = value; } function SET_START_TIME(uint256 value) external { require(msg.sender == contractOwner, "Admin use only"); startTime = value; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_dev","internalType":"address"},{"type":"address","name":"_service","internalType":"address"},{"type":"address","name":"_mkt","internalType":"address"}]},{"type":"event","name":"FeePayed","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"totalAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewDeposit","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint8","name":"plan","internalType":"uint8","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Newbie","inputs":[{"type":"address","name":"user","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"RefBonus","inputs":[{"type":"address","name":"referrer","internalType":"address","indexed":true},{"type":"address","name":"referral","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ReinvestedDeposit","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint8","name":"plan","internalType":"uint8","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"CHANGE_OWNERSHIP","inputs":[{"type":"address","name":"value","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"COMPOUND_COOLDOWN","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"CUTOFF_STEP","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAX_WITHDRAW","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MKT_BUYBACK_FEE","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_1","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_3","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_4","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_STARTTIME","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PROJECT_FEE","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"REFERRAL_PERCENT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"REINVEST_BONUS","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SET_REFERRAL_PERCENT","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SET_REINVEST_BONUS","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SET_START_TIME","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SUSTAINABILITY_TAX","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TIME_STEP","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WALLET_LIMIT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WITHDRAW_COOLDOWN","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"erctoken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getBlockTimeStamp","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getContractBalance","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"time","internalType":"uint256"},{"type":"uint256","name":"percent","internalType":"uint256"},{"type":"uint256","name":"minimumInvestment","internalType":"uint256"},{"type":"uint256","name":"maximumInvestment","internalType":"uint256"},{"type":"uint256","name":"planTotalInvestorCount","internalType":"uint256"},{"type":"uint256","name":"planTotalInvestments","internalType":"uint256"},{"type":"uint256","name":"planTotalReInvestorCount","internalType":"uint256"},{"type":"uint256","name":"planTotalReInvestments","internalType":"uint256"},{"type":"bool","name":"planActivated","internalType":"bool"}],"name":"getPlanInfo","inputs":[{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getPlansLength","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_totalInvested","internalType":"uint256"},{"type":"uint256","name":"_totalBonus","internalType":"uint256"}],"name":"getSiteInfo","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserActiveInvestments","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserActiveProjectInvestments","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserAmountOfDeposits","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserAvailable","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserCheckpoint","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserCutoff","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"plan","internalType":"uint8"},{"type":"uint256","name":"percent","internalType":"uint256"},{"type":"uint256","name":"amount","internalType":"uint256"},{"type":"uint256","name":"start","internalType":"uint256"},{"type":"uint256","name":"finish","internalType":"uint256"},{"type":"bool","name":"reinvested","internalType":"bool"}],"name":"getUserDepositInfo","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserDividends","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserDividends","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"int8","name":"plan","internalType":"int8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"totalDeposit","internalType":"uint256"},{"type":"uint256","name":"totalWithdrawn","internalType":"uint256"},{"type":"uint256","name":"totalReferrals","internalType":"uint256"}],"name":"getUserInfo","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserReferralBonus","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserReferralTotalBonus","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserReferralWithdrawn","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getUserReferrer","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"amount","internalType":"uint256"}],"name":"getUserTotalDeposits","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserTotalReferrals","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserTotalWithdrawn","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"invest","inputs":[{"type":"address","name":"referrer","internalType":"address"},{"type":"uint8","name":"plan","internalType":"uint8"},{"type":"uint256","name":"amounterc","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reinvest","inputs":[{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"startTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalInvested","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalInvestorCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalReInvested","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalRefBonus","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdraw","inputs":[]}]
Contract Creation Code
0x6080604052600180546001600160a01b031916737b4328c127b85369d9f82ca0503b000d09cf9180179055602160028190556003556096600455600060058190556202a3006006556201518060075561a8c060085560646009556a01a784379d99db42000000600a556a14adf4b7320334b9000000600b55600c819055600d819055600e819055600f81905560105563633f25b0601b55348015620000a357600080fd5b5060405162002f2938038062002f29833981016040819052620000c691620005d8565b823b158015620000d55750813b155b8015620000e15750803b155b620000eb57600080fd5b33601a60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082601760006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601860006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080601960006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160009054906101000a90046001600160a01b03166000806101000a8154816001600160a01b0302191690836001600160a01b0316021790555060156040518061012001604052806096815260200160258152602001690878678326eac900000081526020016a069e10de76676d08000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908315150217905550505060156040518061012001604052806078815260200160298152602001690ed2b525841adfc0000081526020016a084595161401484a000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff02191690831515021790555050506015604051806101200160405280603c8152602001602f815260200169152d02c7e14af680000081526020016a09ed194db19b238c000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff02191690831515021790555050506015604051806101200160405280602d815260200160368152602001691fc3842bd1f071c0000081526020016a0c685fa11e01ec6f000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908315150217905550505050505062000622565b80516001600160a01b0381168114620005d357600080fd5b919050565b600080600060608486031215620005ee57600080fd5b620005f984620005bb565b92506200060960208501620005bb565b91506200061960408501620005bb565b90509250925092565b6128f780620006326000396000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c806378e979251161019d578063aecaa634116100e9578063e84cdabc116100a2578063f5b7628c1161007c578063f5b7628c146106fa578063f9eb400814610702578063fb4cb32b1461070b578063fbfcb2791461073757600080fd5b8063e84cdabc146106a8578063e85abe09146106bb578063f4f9f3a9146106e757600080fd5b8063aecaa634146105c5578063bd4a982b1461061e578063c0806b031461064a578063c25f57e914610690578063ca49a54314610699578063e3d190031461069f57600080fd5b8063899b8f371161015657806398b7baa91161013057806398b7baa914610542578063a8aeb6c214610555578063a9996f291461057e578063ac0b49be1461058757600080fd5b8063899b8f371461051d5780639383e5cd14610526578063950d91e91461053957600080fd5b806378e97925146104dd5780637e3abeea146104e6578063852aa16b146104f9578063852edd3d146105025780638687d8a91461050b578063890f137b1461051457600080fd5b806336144c9a1161025c5780634ce87053116102155780636386c1c7116101ef5780636386c1c71461048b57806369b11dd5146104b95780636bb18556146104c25780636f9fb98a146104d557600080fd5b80634ce87053146104545780635216aeec1461046f578063582c80d81461047857600080fd5b806336144c9a146103cc5780633ccfd60b146103fb578063452bc1da14610403578063485217171461041657806348c372031461041f57806348d44bd11461044b57600080fd5b80632d9a5353116102ae5780632d9a535314610369578063325b37db1461039457806332bc298c146103a757806333a8915a146103b1578063351ed951146103ba5780633578584f146103c357600080fd5b8063040a772e146102f657806309f83b381461031c578063153ab9df146103315780631b537d7e1461034457806320600bd71461034d5780632b039d0e14610356575b600080fd5b610309610304366004612651565b610763565b6040519081526020015b60405180910390f35b61032f61032a36600461266c565b610777565b005b61030961033f366004612651565b6107bd565b610309600d5481565b61030960035481565b61032f610364366004612651565b6107ee565b60005461037c906001600160a01b031681565b6040516001600160a01b039091168152602001610313565b6103096103a2366004612685565b61083a565b6103096201518081565b61030960045481565b610309600b5481565b61030960065481565b61037c6103da366004612651565b6001600160a01b039081166000908152601660205260409020600401541690565b61032f610cac565b61032f6104113660046126d3565b61120d565b61030960095481565b61030961042d366004612651565b6001600160a01b031660009081526016602052604090206007015490565b61030960025481565b60115460135460408051928352602083019190915201610313565b61030960115481565b610309610486366004612651565b61158a565b61049e610499366004612651565b6115c5565b60408051938452602084019290925290820152606001610313565b61030960135481565b6103096104d0366004612651565b611603565b61030961162f565b610309601b5481565b6103096104f4366004612651565b6116b0565b610309600a5481565b610309600e5481565b61030960085481565b610309600c5481565b61030960145481565b6103096105343660046126ee565b61173e565b61030960075481565b61032f61055036600461266c565b611849565b610309610563366004612651565b6001600160a01b031660009081526016602052604090205490565b61030960055481565b6103096105953660046126ee565b6001600160a01b038216600090815260166020908152604080832060ff8516845260010190915290205492915050565b6105d86105d33660046126d3565b611878565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152151561010082015261012001610313565b61030961062c366004612651565b6001600160a01b031660009081526016602052604090206002015490565b61065d610658366004612721565b611a1a565b6040805160ff909716875260208701959095529385019290925260608401526080830152151560a082015260c001610313565b61030960125481565b42610309565b61030960105481565b61032f6106b636600461274b565b611b5d565b6103096106c9366004612651565b6001600160a01b031660009081526016602052604090206006015490565b61032f6106f536600461266c565b612254565b601554610309565b610309600f5481565b610309610719366004612651565b6001600160a01b031660009081526016602052604090206008015490565b610309610745366004612651565b6001600160a01b031660009081526016602052604090206005015490565b60006107718260001961083a565b92915050565b601a546001600160a01b031633146107aa5760405162461bcd60e51b81526004016107a190612787565b60405180910390fd5b60a08111156107b857600080fd5b600455565b60006107716107cb83610763565b6001600160a01b0384166000908152601660205260409020600601545b90612291565b601a546001600160a01b031633146108185760405162461bcd60e51b81526004016107a190612787565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152601660205260408120600281015482908190421061086b57826002015461086d565b425b905060005b8354811015610ca1576000198660000b13156108bf578560ff168460000182815481106108a1576108a16127af565b600091825260209091206004909102015460ff16146108bf57610c8f565b60006109556109206201518060158860000186815481106108e2576108e26127af565b6000918252602090912060049091020154815460ff909116908110610909576109096127af565b6000918252602090912060099091020154906122f7565b866000018481548110610935576109356127af565b90600052602060002090600402016002015461229190919063ffffffff16565b905080856001016000876000018581548110610973576109736127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020541015610c8d57600060158660000184815481106109b6576109b66127af565b6000918252602090912060049091020154815460ff9091169081106109dd576109dd6127af565b9060005260206000209060090201600101549050600c54866000018481548110610a0957610a096127af565b90600052602060002090600402016002015410610b2257856000018381548110610a3557610a356127af565b600091825260209091206004909102015460ff16610a6257600d54610a5b908290612291565b9050610b22565b856000018381548110610a7757610a776127af565b600091825260209091206004909102015460ff1660011415610aa157600e54610a5b908290612291565b856000018381548110610ab657610ab66127af565b600091825260209091206004909102015460ff1660021415610ae057600f54610a5b908290612291565b856000018381548110610af557610af56127af565b600091825260209091206004909102015460ff1660031415610b2257601054610b1f908290612291565b90505b6000610b696103e8610b63848a6000018881548110610b4357610b436127af565b9060005260206000209060040201600101546122f790919063ffffffff16565b90612376565b90506000876001016000896000018781548110610b8857610b886127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020548854899087908110610bc057610bc06127af565b90600052602060002090600402016002015411610c1b57876001016000896000018781548110610bf257610bf26127af565b6000918252602080832060049092029091015460ff168352820192909252604001902054610c43565b876000018581548110610c3057610c306127af565b9060005260206000209060040201600201545b90506000868510610c545786610c56565b845b905080821015610c8857610c85610c7e62015180610b63610c7785876123db565b87906122f7565b8990612291565b97505b505050505b505b80610c99816127db565b915050610872565b509095945050505050565b601b544211610cba57600080fd5b33600081815260166020526040812091610cd390610763565b336000908152601660205260409020600601549091508015610d035760006006840155610d008282612291565b91505b60008211610d4b5760405162461bcd60e51b81526020600482015260156024820152745573657220686173206e6f206469766964656e647360581b60448201526064016107a1565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc791906127f6565b905082811015610df957610ddb83826123db565b600685018190556007850154610df091612291565b60078501559150815b60005b60155460ff82161015610ec25760075460ff821660009081526001870160205260409020544291610e2d9190612291565b1115610e995760405162461bcd60e51b815260206004820152603560248201527f5769746864726177616c732063616e206f6e6c79206265206d6164652061667460448201527432b9103bb4ba34323930bb9031b7b7b63237bbb71760591b60648201526084016107a1565b60ff81166000908152600186016020526040902042905580610eba8161280f565b915050610dfc565b50600a54831115610ee657600a54610edb9084906123db565b6006850155600a5492505b610f0b610f046103e8610b63600554876122f790919063ffffffff16565b84906123db565b9250610f226006544261229190919063ffffffff16565b60028501556008840154610f369084612291565b6008850155600054600380546001600160a01b039092169163a9059cbb913391610f5f9161282f565b610f69908761284e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612865565b506000546017546001600160a01b039182169163a9059cbb911661100c601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a9190612865565b506000546018546001600160a01b039182169163a9059cbb91166110af601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612865565b506000546019546001600160a01b039182169163a9059cbb9116611152601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612865565b5060405183815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a250505050565b601b54421161121b57600080fd5b60155460ff82161061125e5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b210383630b760a11b60448201526064016107a1565b60158160ff1681548110611274576112746127af565b600091825260209091206008600990920201015460ff166112d75760405162461bcd60e51b815260206004820152601a60248201527f506c616e2073656c65637465642069732064697361626c65642e00000000000060448201526064016107a1565b33600090815260166020908152604080832060085460ff861685526001820190935292205442916113089190612291565b11156113865760405162461bcd60e51b815260206004820152604160248201527f436f6d706f756e64696e672f5265696e76657374696e672063616e206f6e6c7960448201527f206265206d61646520616674657220636f6d706f756e6420636f6f6c646f776e6064820152601760f91b608482015260a4016107a1565b6000611392338461083a565b905060006113bb6113b46103e8610b63600954866122f790919063ffffffff16565b8390612291565b6040805160808101825260ff80881682526020808301858152429484019485526001606085018181528a548083018c5560008c8152949094209551600490940290950180549390941660ff199384161784559051908301559251600282015590516003909101805491151591909216179055600984015490915061143f9082612291565b600984015560ff841660009081526001840160205260409020429081905560065461146a9190612291565b600284015560125461147c9082612291565b6012819055506114bc8160158660ff168154811061149c5761149c6127af565b90600052602060002090600902016007015461229190919063ffffffff16565b60158560ff16815481106114d2576114d26127af565b906000526020600020906009020160070181905550611522600160158660ff1681548110611502576115026127af565b90600052602060002090600902016006015461229190919063ffffffff16565b60158560ff1681548110611538576115386127af565b6000918252602091829020600660099092020101919091556040805160ff8716815291820183905233917f9c2ae386c34bd727f17e92b569b309633eea3f3a6ded6debcec58fc3d15de10c91016111ff565b60008060005b60155460ff821610156115be576115aa6113b4858361173e565b9150806115b68161280f565b915050611590565b5092915050565b60008060006115d3846116b0565b6001600160a01b039490941660009081526016602052604090206008810154600590910154949590949350915050565b6001600160a01b03811660009081526016602052604081206006810154600790910154610771916123db565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561167357600080fd5b505afa158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab91906127f6565b905090565b6000805b6001600160a01b038316600090815260166020526040902054811015611738576001600160a01b03831660009081526016602052604090208054611724919083908110611703576117036127af565b9060005260206000209060040201600101548361229190919063ffffffff16565b915080611730816127db565b9150506116b4565b50919050565b6001600160a01b038216600090815260166020526040812081805b8254811015611840578460ff1683600001828154811061177b5761177b6127af565b600091825260209091206004909102015460ff16146117995761182e565b60006117d16117bc6201518060158760000186815481106108e2576108e26127af565b856000018481548110610935576109356127af565b60ff8716600090815260018601602052604090205490915081111561182c57611829846000018381548110611808576118086127af565b9060005260206000209060040201600101548461229190919063ffffffff16565b92505b505b80611838816127db565b915050611759565b50949350505050565b601a546001600160a01b031633146118735760405162461bcd60e51b81526004016107a190612787565b601b55565b600080600080600080600080600060158a60ff168154811061189c5761189c6127af565b906000526020600020906009020160000154985060158a60ff16815481106118c6576118c66127af565b906000526020600020906009020160010154975060158a60ff16815481106118f0576118f06127af565b906000526020600020906009020160020154965060158a60ff168154811061191a5761191a6127af565b906000526020600020906009020160030154955060158a60ff1681548110611944576119446127af565b906000526020600020906009020160040154945060158a60ff168154811061196e5761196e6127af565b906000526020600020906009020160050154935060158a60ff1681548110611998576119986127af565b906000526020600020906009020160060154925060158a60ff16815481106119c2576119c26127af565b906000526020600020906009020160070154915060158a60ff16815481106119ec576119ec6127af565b906000526020600020906009020160080160009054906101000a900460ff1690509193959799909294969850565b6001600160a01b038216600090815260166020526040812080548291829182918291829190819089908110611a5157611a516127af565b60009182526020909120600490910201546015805460ff90921698509088908110611a7e57611a7e6127af565b9060005260206000209060090201600101549550806000018881548110611aa757611aa76127af565b9060005260206000209060040201600101549450806000018881548110611ad057611ad06127af565b9060005260206000209060040201600201549350611b1a611b05620151806015846000018c815481106108e2576108e26127af565b826000018a81548110610935576109356127af565b9250806000018881548110611b3157611b316127af565b906000526020600020906004020160030160009054906101000a900460ff169150509295509295509295565b601b544211611b6b57600080fd5b60155460ff831610611baf5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283630b71760991b60448201526064016107a1565b60158260ff1681548110611bc557611bc56127af565b906000526020600020906009020160020154811015611c475760405162461bcd60e51b815260206004820152603860248201527f4c657373207468616e206d696e696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611c5d57611c5d6127af565b906000526020600020906009020160030154811115611cdf5760405162461bcd60e51b815260206004820152603860248201527f4d6f7265207468616e206d6178696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611cf557611cf56127af565b600091825260209091206008600990920201015460ff16611d585760405162461bcd60e51b815260206004820152601960248201527f506c616e2073656c65637465642069732064697361626c65640000000000000060448201526064016107a1565b600b54611d68826107e83361158a565b1115611dc05760405162461bcd60e51b815260206004820152602160248201527f4d61782077616c6c6574206465706f736974206c696d697420726561636865646044820152601760f91b60648201526084016107a1565b6000546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190612865565b50337f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1611e7683612439565b60405190815260200160405180910390a233600090815260166020526040902060048101546001600160a01b0316611f30576001600160a01b0384163314611ed6576004810180546001600160a01b0319166001600160a01b0386161790555b60048101546001600160a01b03168015611f2e576001600160a01b038116600090815260166020526040902060050154611f11906001612291565b6001600160a01b0382166000908152601660205260409020600501555b505b60048101546001600160a01b03161561203b5760048101546001600160a01b03168015612039576000611f746103e8610b63600454876122f790919063ffffffff16565b6001600160a01b038316600090815260166020526040902060060154909150611f9d9082612291565b6001600160a01b0383166000908152601660205260409020600681019190915560070154611fcb9082612291565b6001600160a01b038316600090815260166020526040902060070155601354611ff49082612291565b60135560405181815233906001600160a01b038416907f328838ddfc48ad5ae5531b1ad95dfb22b42ff1866853e474375ffef2c63d8e509060200160405180910390a3505b505b80546120a05760ff83166000908152600182016020526040902042908190556006546120679190612291565b60028201556040513381527f9fd565cd14c3c391679eb0cad12a14dcf7534e9d3462bcb9b67a098a9bbbc24a9060200160405180910390a15b6040805160808101825260ff8086168252602080830186815242948401948552600060608501818152875460018181018a55898452949092209551600490920290950180549190941660ff199182161784559051918301919091559251600282015590516003918201805491151591909316179091558101546121239083612291565b60038201556011546121359083612291565b601155601454612146906001612291565b601481905550612187600160158560ff1681548110612167576121676127af565b90600052602060002090600902016004015461229190919063ffffffff16565b60158460ff168154811061219d5761219d6127af565b9060005260206000209060090201600401819055506121ec8260158560ff16815481106121cc576121cc6127af565b90600052602060002090600902016005015461229190919063ffffffff16565b60158460ff1681548110612202576122026127af565b6000918252602091829020600560099092020101919091556040805160ff8616815291820184905233917f3a89eb89956dcf6537585a2372d4e629e18622cce06c2b4fee6301ae0840e24191016111ff565b601a546001600160a01b0316331461227e5760405162461bcd60e51b81526004016107a190612787565b606481111561228c57600080fd5b600955565b60008061229e83856128a9565b9050838110156122f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a1565b9392505050565b60008261230657506000610771565b6000612312838561282f565b90508261231f8583612887565b146122f05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a1565b60008082116123c75760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016107a1565b60006123d38385612887565b949350505050565b60008282111561242d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016107a1565b60006123d3838561284e565b6000806124576103e8610b63600254866122f790919063ffffffff16565b905060006124766103e8610b63600354876122f790919063ffffffff16565b60005460175460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101869052929350169063a9059cbb90604401602060405180830381600087803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612865565b5060005460185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb90604401602060405180830381600087803b15801561255157600080fd5b505af1158015612565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125899190612865565b5060005460195460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125da57600080fd5b505af11580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126129190612865565b5060006126208360026122f7565b905061262c8183612291565b95945050505050565b80356001600160a01b038116811461264c57600080fd5b919050565b60006020828403121561266357600080fd5b6122f082612635565b60006020828403121561267e57600080fd5b5035919050565b6000806040838503121561269857600080fd5b6126a183612635565b915060208301358060000b81146126b757600080fd5b809150509250929050565b803560ff8116811461264c57600080fd5b6000602082840312156126e557600080fd5b6122f0826126c2565b6000806040838503121561270157600080fd5b61270a83612635565b9150612718602084016126c2565b90509250929050565b6000806040838503121561273457600080fd5b61273d83612635565b946020939093013593505050565b60008060006060848603121561276057600080fd5b61276984612635565b9250612777602085016126c2565b9150604084013590509250925092565b6020808252600e908201526d41646d696e20757365206f6e6c7960901b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127ef576127ef6127c5565b5060010190565b60006020828403121561280857600080fd5b5051919050565b600060ff821660ff811415612826576128266127c5565b60010192915050565b6000816000190483118215151615612849576128496127c5565b500290565b600082821015612860576128606127c5565b500390565b60006020828403121561287757600080fd5b815180151581146122f057600080fd5b6000826128a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156128bc576128bc6127c5565b50019056fea2646970667358221220d7dde76938218eef7a1f06b28c6283f17c839ce9140270b9e571e16901378f0964736f6c63430008090033000000000000000000000000a8525e8ada1bef4bde661236636bd07aaf44ff33000000000000000000000000903b575da41579495813b5a0665df4fef5fccb3b0000000000000000000000007ef7a2f007a412247d44276c2e7ca63d19daa161
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106102f15760003560e01c806378e979251161019d578063aecaa634116100e9578063e84cdabc116100a2578063f5b7628c1161007c578063f5b7628c146106fa578063f9eb400814610702578063fb4cb32b1461070b578063fbfcb2791461073757600080fd5b8063e84cdabc146106a8578063e85abe09146106bb578063f4f9f3a9146106e757600080fd5b8063aecaa634146105c5578063bd4a982b1461061e578063c0806b031461064a578063c25f57e914610690578063ca49a54314610699578063e3d190031461069f57600080fd5b8063899b8f371161015657806398b7baa91161013057806398b7baa914610542578063a8aeb6c214610555578063a9996f291461057e578063ac0b49be1461058757600080fd5b8063899b8f371461051d5780639383e5cd14610526578063950d91e91461053957600080fd5b806378e97925146104dd5780637e3abeea146104e6578063852aa16b146104f9578063852edd3d146105025780638687d8a91461050b578063890f137b1461051457600080fd5b806336144c9a1161025c5780634ce87053116102155780636386c1c7116101ef5780636386c1c71461048b57806369b11dd5146104b95780636bb18556146104c25780636f9fb98a146104d557600080fd5b80634ce87053146104545780635216aeec1461046f578063582c80d81461047857600080fd5b806336144c9a146103cc5780633ccfd60b146103fb578063452bc1da14610403578063485217171461041657806348c372031461041f57806348d44bd11461044b57600080fd5b80632d9a5353116102ae5780632d9a535314610369578063325b37db1461039457806332bc298c146103a757806333a8915a146103b1578063351ed951146103ba5780633578584f146103c357600080fd5b8063040a772e146102f657806309f83b381461031c578063153ab9df146103315780631b537d7e1461034457806320600bd71461034d5780632b039d0e14610356575b600080fd5b610309610304366004612651565b610763565b6040519081526020015b60405180910390f35b61032f61032a36600461266c565b610777565b005b61030961033f366004612651565b6107bd565b610309600d5481565b61030960035481565b61032f610364366004612651565b6107ee565b60005461037c906001600160a01b031681565b6040516001600160a01b039091168152602001610313565b6103096103a2366004612685565b61083a565b6103096201518081565b61030960045481565b610309600b5481565b61030960065481565b61037c6103da366004612651565b6001600160a01b039081166000908152601660205260409020600401541690565b61032f610cac565b61032f6104113660046126d3565b61120d565b61030960095481565b61030961042d366004612651565b6001600160a01b031660009081526016602052604090206007015490565b61030960025481565b60115460135460408051928352602083019190915201610313565b61030960115481565b610309610486366004612651565b61158a565b61049e610499366004612651565b6115c5565b60408051938452602084019290925290820152606001610313565b61030960135481565b6103096104d0366004612651565b611603565b61030961162f565b610309601b5481565b6103096104f4366004612651565b6116b0565b610309600a5481565b610309600e5481565b61030960085481565b610309600c5481565b61030960145481565b6103096105343660046126ee565b61173e565b61030960075481565b61032f61055036600461266c565b611849565b610309610563366004612651565b6001600160a01b031660009081526016602052604090205490565b61030960055481565b6103096105953660046126ee565b6001600160a01b038216600090815260166020908152604080832060ff8516845260010190915290205492915050565b6105d86105d33660046126d3565b611878565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152151561010082015261012001610313565b61030961062c366004612651565b6001600160a01b031660009081526016602052604090206002015490565b61065d610658366004612721565b611a1a565b6040805160ff909716875260208701959095529385019290925260608401526080830152151560a082015260c001610313565b61030960125481565b42610309565b61030960105481565b61032f6106b636600461274b565b611b5d565b6103096106c9366004612651565b6001600160a01b031660009081526016602052604090206006015490565b61032f6106f536600461266c565b612254565b601554610309565b610309600f5481565b610309610719366004612651565b6001600160a01b031660009081526016602052604090206008015490565b610309610745366004612651565b6001600160a01b031660009081526016602052604090206005015490565b60006107718260001961083a565b92915050565b601a546001600160a01b031633146107aa5760405162461bcd60e51b81526004016107a190612787565b60405180910390fd5b60a08111156107b857600080fd5b600455565b60006107716107cb83610763565b6001600160a01b0384166000908152601660205260409020600601545b90612291565b601a546001600160a01b031633146108185760405162461bcd60e51b81526004016107a190612787565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152601660205260408120600281015482908190421061086b57826002015461086d565b425b905060005b8354811015610ca1576000198660000b13156108bf578560ff168460000182815481106108a1576108a16127af565b600091825260209091206004909102015460ff16146108bf57610c8f565b60006109556109206201518060158860000186815481106108e2576108e26127af565b6000918252602090912060049091020154815460ff909116908110610909576109096127af565b6000918252602090912060099091020154906122f7565b866000018481548110610935576109356127af565b90600052602060002090600402016002015461229190919063ffffffff16565b905080856001016000876000018581548110610973576109736127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020541015610c8d57600060158660000184815481106109b6576109b66127af565b6000918252602090912060049091020154815460ff9091169081106109dd576109dd6127af565b9060005260206000209060090201600101549050600c54866000018481548110610a0957610a096127af565b90600052602060002090600402016002015410610b2257856000018381548110610a3557610a356127af565b600091825260209091206004909102015460ff16610a6257600d54610a5b908290612291565b9050610b22565b856000018381548110610a7757610a776127af565b600091825260209091206004909102015460ff1660011415610aa157600e54610a5b908290612291565b856000018381548110610ab657610ab66127af565b600091825260209091206004909102015460ff1660021415610ae057600f54610a5b908290612291565b856000018381548110610af557610af56127af565b600091825260209091206004909102015460ff1660031415610b2257601054610b1f908290612291565b90505b6000610b696103e8610b63848a6000018881548110610b4357610b436127af565b9060005260206000209060040201600101546122f790919063ffffffff16565b90612376565b90506000876001016000896000018781548110610b8857610b886127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020548854899087908110610bc057610bc06127af565b90600052602060002090600402016002015411610c1b57876001016000896000018781548110610bf257610bf26127af565b6000918252602080832060049092029091015460ff168352820192909252604001902054610c43565b876000018581548110610c3057610c306127af565b9060005260206000209060040201600201545b90506000868510610c545786610c56565b845b905080821015610c8857610c85610c7e62015180610b63610c7785876123db565b87906122f7565b8990612291565b97505b505050505b505b80610c99816127db565b915050610872565b509095945050505050565b601b544211610cba57600080fd5b33600081815260166020526040812091610cd390610763565b336000908152601660205260409020600601549091508015610d035760006006840155610d008282612291565b91505b60008211610d4b5760405162461bcd60e51b81526020600482015260156024820152745573657220686173206e6f206469766964656e647360581b60448201526064016107a1565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc791906127f6565b905082811015610df957610ddb83826123db565b600685018190556007850154610df091612291565b60078501559150815b60005b60155460ff82161015610ec25760075460ff821660009081526001870160205260409020544291610e2d9190612291565b1115610e995760405162461bcd60e51b815260206004820152603560248201527f5769746864726177616c732063616e206f6e6c79206265206d6164652061667460448201527432b9103bb4ba34323930bb9031b7b7b63237bbb71760591b60648201526084016107a1565b60ff81166000908152600186016020526040902042905580610eba8161280f565b915050610dfc565b50600a54831115610ee657600a54610edb9084906123db565b6006850155600a5492505b610f0b610f046103e8610b63600554876122f790919063ffffffff16565b84906123db565b9250610f226006544261229190919063ffffffff16565b60028501556008840154610f369084612291565b6008850155600054600380546001600160a01b039092169163a9059cbb913391610f5f9161282f565b610f69908761284e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612865565b506000546017546001600160a01b039182169163a9059cbb911661100c601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a9190612865565b506000546018546001600160a01b039182169163a9059cbb91166110af601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612865565b506000546019546001600160a01b039182169163a9059cbb9116611152601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612865565b5060405183815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a250505050565b601b54421161121b57600080fd5b60155460ff82161061125e5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b210383630b760a11b60448201526064016107a1565b60158160ff1681548110611274576112746127af565b600091825260209091206008600990920201015460ff166112d75760405162461bcd60e51b815260206004820152601a60248201527f506c616e2073656c65637465642069732064697361626c65642e00000000000060448201526064016107a1565b33600090815260166020908152604080832060085460ff861685526001820190935292205442916113089190612291565b11156113865760405162461bcd60e51b815260206004820152604160248201527f436f6d706f756e64696e672f5265696e76657374696e672063616e206f6e6c7960448201527f206265206d61646520616674657220636f6d706f756e6420636f6f6c646f776e6064820152601760f91b608482015260a4016107a1565b6000611392338461083a565b905060006113bb6113b46103e8610b63600954866122f790919063ffffffff16565b8390612291565b6040805160808101825260ff80881682526020808301858152429484019485526001606085018181528a548083018c5560008c8152949094209551600490940290950180549390941660ff199384161784559051908301559251600282015590516003909101805491151591909216179055600984015490915061143f9082612291565b600984015560ff841660009081526001840160205260409020429081905560065461146a9190612291565b600284015560125461147c9082612291565b6012819055506114bc8160158660ff168154811061149c5761149c6127af565b90600052602060002090600902016007015461229190919063ffffffff16565b60158560ff16815481106114d2576114d26127af565b906000526020600020906009020160070181905550611522600160158660ff1681548110611502576115026127af565b90600052602060002090600902016006015461229190919063ffffffff16565b60158560ff1681548110611538576115386127af565b6000918252602091829020600660099092020101919091556040805160ff8716815291820183905233917f9c2ae386c34bd727f17e92b569b309633eea3f3a6ded6debcec58fc3d15de10c91016111ff565b60008060005b60155460ff821610156115be576115aa6113b4858361173e565b9150806115b68161280f565b915050611590565b5092915050565b60008060006115d3846116b0565b6001600160a01b039490941660009081526016602052604090206008810154600590910154949590949350915050565b6001600160a01b03811660009081526016602052604081206006810154600790910154610771916123db565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561167357600080fd5b505afa158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab91906127f6565b905090565b6000805b6001600160a01b038316600090815260166020526040902054811015611738576001600160a01b03831660009081526016602052604090208054611724919083908110611703576117036127af565b9060005260206000209060040201600101548361229190919063ffffffff16565b915080611730816127db565b9150506116b4565b50919050565b6001600160a01b038216600090815260166020526040812081805b8254811015611840578460ff1683600001828154811061177b5761177b6127af565b600091825260209091206004909102015460ff16146117995761182e565b60006117d16117bc6201518060158760000186815481106108e2576108e26127af565b856000018481548110610935576109356127af565b60ff8716600090815260018601602052604090205490915081111561182c57611829846000018381548110611808576118086127af565b9060005260206000209060040201600101548461229190919063ffffffff16565b92505b505b80611838816127db565b915050611759565b50949350505050565b601a546001600160a01b031633146118735760405162461bcd60e51b81526004016107a190612787565b601b55565b600080600080600080600080600060158a60ff168154811061189c5761189c6127af565b906000526020600020906009020160000154985060158a60ff16815481106118c6576118c66127af565b906000526020600020906009020160010154975060158a60ff16815481106118f0576118f06127af565b906000526020600020906009020160020154965060158a60ff168154811061191a5761191a6127af565b906000526020600020906009020160030154955060158a60ff1681548110611944576119446127af565b906000526020600020906009020160040154945060158a60ff168154811061196e5761196e6127af565b906000526020600020906009020160050154935060158a60ff1681548110611998576119986127af565b906000526020600020906009020160060154925060158a60ff16815481106119c2576119c26127af565b906000526020600020906009020160070154915060158a60ff16815481106119ec576119ec6127af565b906000526020600020906009020160080160009054906101000a900460ff1690509193959799909294969850565b6001600160a01b038216600090815260166020526040812080548291829182918291829190819089908110611a5157611a516127af565b60009182526020909120600490910201546015805460ff90921698509088908110611a7e57611a7e6127af565b9060005260206000209060090201600101549550806000018881548110611aa757611aa76127af565b9060005260206000209060040201600101549450806000018881548110611ad057611ad06127af565b9060005260206000209060040201600201549350611b1a611b05620151806015846000018c815481106108e2576108e26127af565b826000018a81548110610935576109356127af565b9250806000018881548110611b3157611b316127af565b906000526020600020906004020160030160009054906101000a900460ff169150509295509295509295565b601b544211611b6b57600080fd5b60155460ff831610611baf5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283630b71760991b60448201526064016107a1565b60158260ff1681548110611bc557611bc56127af565b906000526020600020906009020160020154811015611c475760405162461bcd60e51b815260206004820152603860248201527f4c657373207468616e206d696e696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611c5d57611c5d6127af565b906000526020600020906009020160030154811115611cdf5760405162461bcd60e51b815260206004820152603860248201527f4d6f7265207468616e206d6178696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611cf557611cf56127af565b600091825260209091206008600990920201015460ff16611d585760405162461bcd60e51b815260206004820152601960248201527f506c616e2073656c65637465642069732064697361626c65640000000000000060448201526064016107a1565b600b54611d68826107e83361158a565b1115611dc05760405162461bcd60e51b815260206004820152602160248201527f4d61782077616c6c6574206465706f736974206c696d697420726561636865646044820152601760f91b60648201526084016107a1565b6000546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190612865565b50337f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1611e7683612439565b60405190815260200160405180910390a233600090815260166020526040902060048101546001600160a01b0316611f30576001600160a01b0384163314611ed6576004810180546001600160a01b0319166001600160a01b0386161790555b60048101546001600160a01b03168015611f2e576001600160a01b038116600090815260166020526040902060050154611f11906001612291565b6001600160a01b0382166000908152601660205260409020600501555b505b60048101546001600160a01b03161561203b5760048101546001600160a01b03168015612039576000611f746103e8610b63600454876122f790919063ffffffff16565b6001600160a01b038316600090815260166020526040902060060154909150611f9d9082612291565b6001600160a01b0383166000908152601660205260409020600681019190915560070154611fcb9082612291565b6001600160a01b038316600090815260166020526040902060070155601354611ff49082612291565b60135560405181815233906001600160a01b038416907f328838ddfc48ad5ae5531b1ad95dfb22b42ff1866853e474375ffef2c63d8e509060200160405180910390a3505b505b80546120a05760ff83166000908152600182016020526040902042908190556006546120679190612291565b60028201556040513381527f9fd565cd14c3c391679eb0cad12a14dcf7534e9d3462bcb9b67a098a9bbbc24a9060200160405180910390a15b6040805160808101825260ff8086168252602080830186815242948401948552600060608501818152875460018181018a55898452949092209551600490920290950180549190941660ff199182161784559051918301919091559251600282015590516003918201805491151591909316179091558101546121239083612291565b60038201556011546121359083612291565b601155601454612146906001612291565b601481905550612187600160158560ff1681548110612167576121676127af565b90600052602060002090600902016004015461229190919063ffffffff16565b60158460ff168154811061219d5761219d6127af565b9060005260206000209060090201600401819055506121ec8260158560ff16815481106121cc576121cc6127af565b90600052602060002090600902016005015461229190919063ffffffff16565b60158460ff1681548110612202576122026127af565b6000918252602091829020600560099092020101919091556040805160ff8616815291820184905233917f3a89eb89956dcf6537585a2372d4e629e18622cce06c2b4fee6301ae0840e24191016111ff565b601a546001600160a01b0316331461227e5760405162461bcd60e51b81526004016107a190612787565b606481111561228c57600080fd5b600955565b60008061229e83856128a9565b9050838110156122f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a1565b9392505050565b60008261230657506000610771565b6000612312838561282f565b90508261231f8583612887565b146122f05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a1565b60008082116123c75760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016107a1565b60006123d38385612887565b949350505050565b60008282111561242d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016107a1565b60006123d3838561284e565b6000806124576103e8610b63600254866122f790919063ffffffff16565b905060006124766103e8610b63600354876122f790919063ffffffff16565b60005460175460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101869052929350169063a9059cbb90604401602060405180830381600087803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612865565b5060005460185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb90604401602060405180830381600087803b15801561255157600080fd5b505af1158015612565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125899190612865565b5060005460195460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125da57600080fd5b505af11580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126129190612865565b5060006126208360026122f7565b905061262c8183612291565b95945050505050565b80356001600160a01b038116811461264c57600080fd5b919050565b60006020828403121561266357600080fd5b6122f082612635565b60006020828403121561267e57600080fd5b5035919050565b6000806040838503121561269857600080fd5b6126a183612635565b915060208301358060000b81146126b757600080fd5b809150509250929050565b803560ff8116811461264c57600080fd5b6000602082840312156126e557600080fd5b6122f0826126c2565b6000806040838503121561270157600080fd5b61270a83612635565b9150612718602084016126c2565b90509250929050565b6000806040838503121561273457600080fd5b61273d83612635565b946020939093013593505050565b60008060006060848603121561276057600080fd5b61276984612635565b9250612777602085016126c2565b9150604084013590509250925092565b6020808252600e908201526d41646d696e20757365206f6e6c7960901b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127ef576127ef6127c5565b5060010190565b60006020828403121561280857600080fd5b5051919050565b600060ff821660ff811415612826576128266127c5565b60010192915050565b6000816000190483118215151615612849576128496127c5565b500290565b600082821015612860576128606127c5565b500390565b60006020828403121561287757600080fd5b815180151581146122f057600080fd5b6000826128a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156128bc576128bc6127c5565b50019056fea2646970667358221220d7dde76938218eef7a1f06b28c6283f17c839ce9140270b9e571e16901378f0964736f6c63430008090033