Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 467 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
_extract DEST Se... | 14767958 | 996 days ago | IN | 0 ETH | 0.00310649 | ||||
Finish Stake | 12611487 | 1332 days ago | IN | 0 ETH | 0.00133485 | ||||
Withdraw | 12611481 | 1332 days ago | IN | 0 ETH | 0.00161775 | ||||
Finish Stake | 12578041 | 1337 days ago | IN | 0 ETH | 0.002997 | ||||
Finish Stake | 12554980 | 1341 days ago | IN | 0 ETH | 0.0066268 | ||||
Create Stake | 12381183 | 1368 days ago | IN | 0 ETH | 0.01230574 | ||||
Finish Stake | 12317589 | 1378 days ago | IN | 0 ETH | 0.004984 | ||||
Finish Stake | 12315781 | 1378 days ago | IN | 0 ETH | 0.00574106 | ||||
Finish Stake | 12301786 | 1380 days ago | IN | 0 ETH | 0.01226711 | ||||
Finish Stake | 12217509 | 1393 days ago | IN | 0 ETH | 0.01114718 | ||||
Finish Stake | 12209353 | 1394 days ago | IN | 0 ETH | 0.00264 | ||||
Finish Stake | 12085544 | 1413 days ago | IN | 0 ETH | 0.00544 | ||||
Finish Stake | 12085256 | 1413 days ago | IN | 0 ETH | 0.004 | ||||
Finish Stake | 12066774 | 1416 days ago | IN | 0 ETH | 0.02232244 | ||||
Finish Stake | 11932877 | 1437 days ago | IN | 0 ETH | 0.01515781 | ||||
Withdraw | 11932874 | 1437 days ago | IN | 0 ETH | 0.01640602 | ||||
Finish Stake | 11871096 | 1446 days ago | IN | 0 ETH | 0.02994662 | ||||
Finish Stake | 11850852 | 1450 days ago | IN | 0 ETH | 0.01866566 | ||||
Finish Stake | 11717445 | 1470 days ago | IN | 0 ETH | 0.00863218 | ||||
Finish Stake | 11705187 | 1472 days ago | IN | 0 ETH | 0.01524656 | ||||
Finish Stake | 11677972 | 1476 days ago | IN | 0 ETH | 0.00943494 | ||||
Create Stake | 11676909 | 1476 days ago | IN | 0 ETH | 0.01039782 | ||||
Create Stake | 11670405 | 1477 days ago | IN | 0 ETH | 0.006047 | ||||
Finish Stake | 11670239 | 1477 days ago | IN | 0 ETH | 0.00677115 | ||||
Finish Stake | 11644752 | 1481 days ago | IN | 0 ETH | 0.00911322 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
StakingPool
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-04 */ // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; library Date { struct _Date { uint16 year; uint8 month; uint8 day; } uint constant DAY_IN_SECONDS = 86400; uint constant YEAR_IN_SECONDS = 31536000; uint constant LEAP_YEAR_IN_SECONDS = 31622400; uint16 constant ORIGIN_YEAR = 1970; function isLeapYear(uint16 year) public pure returns (bool) { if (year % 4 != 0) { return false; } if (year % 100 != 0) { return true; } if (year % 400 != 0) { return false; } return true; } function leapYearsBefore(uint year) public pure returns (uint) { year -= 1; return year / 4 - year / 100 + year / 400; } function getDaysInMonth(uint8 month, uint16 year) public pure returns (uint8) { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { return 31; } else if (month == 4 || month == 6 || month == 9 || month == 11) { return 30; } else if (isLeapYear(year)) { return 29; } else { return 28; } } function parseTimestamp(uint timestamp) internal pure returns (_Date memory dt) { uint secondsAccountedFor = 0; uint buf; uint8 i; // Year dt.year = getYear(timestamp); buf = leapYearsBefore(dt.year) - leapYearsBefore(ORIGIN_YEAR); secondsAccountedFor += LEAP_YEAR_IN_SECONDS * buf; secondsAccountedFor += YEAR_IN_SECONDS * (dt.year - ORIGIN_YEAR - buf); // Month uint secondsInMonth; for (i = 1; i <= 12; i++) { secondsInMonth = DAY_IN_SECONDS * getDaysInMonth(i, dt.year); if (secondsInMonth + secondsAccountedFor > timestamp) { dt.month = i; break; } secondsAccountedFor += secondsInMonth; } // Day for (i = 1; i <= getDaysInMonth(dt.month, dt.year); i++) { if (DAY_IN_SECONDS + secondsAccountedFor > timestamp) { dt.day = i; break; } secondsAccountedFor += DAY_IN_SECONDS; } } function getYear(uint timestamp) public pure returns (uint16) { uint secondsAccountedFor = 0; uint16 year; uint numLeapYears; // Year year = uint16(ORIGIN_YEAR + timestamp / YEAR_IN_SECONDS); numLeapYears = leapYearsBefore(year) - leapYearsBefore(ORIGIN_YEAR); secondsAccountedFor += LEAP_YEAR_IN_SECONDS * numLeapYears; secondsAccountedFor += YEAR_IN_SECONDS * (year - ORIGIN_YEAR - numLeapYears); while (secondsAccountedFor > timestamp) { if (isLeapYear(uint16(year - 1))) { secondsAccountedFor -= LEAP_YEAR_IN_SECONDS; } else { secondsAccountedFor -= YEAR_IN_SECONDS; } year -= 1; } return year; } function getMonth(uint timestamp) public pure returns (uint8) { return parseTimestamp(timestamp).month; } function getDay(uint timestamp) public pure returns (uint8) { return parseTimestamp(timestamp).day; } function toTimestamp(uint16 year, uint8 month, uint8 day) public pure returns (uint timestamp) { uint16 i; // Year for (i = ORIGIN_YEAR; i < year; i++) { if (isLeapYear(i)) { timestamp += LEAP_YEAR_IN_SECONDS; } else { timestamp += YEAR_IN_SECONDS; } } // Month uint8[12] memory monthDayCounts; monthDayCounts[0] = 31; if (isLeapYear(year)) { monthDayCounts[1] = 29; } else { monthDayCounts[1] = 28; } monthDayCounts[2] = 31; monthDayCounts[3] = 30; monthDayCounts[4] = 31; monthDayCounts[5] = 30; monthDayCounts[6] = 31; monthDayCounts[7] = 31; monthDayCounts[8] = 30; monthDayCounts[9] = 31; monthDayCounts[10] = 30; monthDayCounts[11] = 31; for (i = 1; i < month; i++) { timestamp += DAY_IN_SECONDS * monthDayCounts[i - 1]; } // Day timestamp += DAY_IN_SECONDS * (day - 1); return timestamp; } } contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner || tx.origin == _owner; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a); return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; require(c / a == b); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } contract StakingPool is Ownable { using SafeMath for uint256; IERC20 token; uint256 decimals = 18; uint256 minimumStakeAmount = 1000; address ZERO_ADDRESS = 0x0000000000000000000000000000000000000000; address BURN_ADDRESS; //Stats uint256 public totalStakes = 0; uint256 public totalStaked = 0; uint256 public adminCanWithdraw = 0; mapping(uint8 => uint256) public totalByLockup; uint256 public totalCompounding = 0; uint256 public totalNotCompounding = 0; struct Stake { bool exists; uint256 createdOn; uint256 initialAmount; bool compound; uint8 lockupPeriod; uint256 withdrawn; address referrer; } mapping(address => Stake) public stakes; uint256 DEFAULT_ROI1 = 13; //0.13% daily ROI, equivalent to 4% monthly uint256 DEFAULT_ROI2 = 15; //0.15% daily ROI uint256 DEFAULT_ROI3 = 17; //0.17% daily ROI uint256 DEFAULT_ROI6 = 19; //0.19% daily ROI bool isValidLockup1 = true; bool isValidLockup2 = false; bool isValidLockup3 = false; bool isValidLockup6 = false; struct ROI { bool exists; uint256 roi1; uint256 roi2; uint256 roi3; uint256 roi6; } //Year to Month to ROI mapping (uint256 => mapping (uint256 => ROI)) private rois; event NewStake(address indexed staker, uint256 totalStaked, uint8 lockupPeriod, bool compound, address referrer); event StakeIncreasedForReferral(address indexed staker, uint256 initialAmount, uint256 delta); event RewardsWithdrawn(address indexed staker, uint256 total); event StakeFinished(address indexed staker, uint256 totalReturned, uint256 totalDeducted); event TokensBurnt(address indexed staker, uint256 totalBurnt); constructor(IERC20 _token, address _burnAddress) public { token = _token; BURN_ADDRESS = _burnAddress; } function createStake(uint256 _amount, uint8 _lockupPeriod, bool _compound, address _referrer) public { require(!stakes[msg.sender].exists, "You already have a stake"); require(_isValidLockupPeriod(_lockupPeriod), "Invalid lockup period"); require(_amount >= getMinimumStakeAmount(), "Invalid minimum"); require(IERC20(token).transferFrom(msg.sender, address(this), calculateTotalWithDecimals(_amount)), "Couldn't take the tokens"); if (_referrer != address(0) && stakes[_referrer].exists) { uint256 amountToIncrease = stakes[_referrer].initialAmount.mul(1).div(100); emit StakeIncreasedForReferral(_referrer, stakes[_referrer].initialAmount, amountToIncrease); stakes[_referrer].initialAmount += amountToIncrease; totalStaked = totalStaked.add(amountToIncrease); } else { _referrer = ZERO_ADDRESS; } Stake memory stake = Stake({exists:true, createdOn: now, initialAmount:_amount, compound:_compound, lockupPeriod:_lockupPeriod, withdrawn:0, referrer:_referrer }); stakes[msg.sender] = stake; totalStakes = totalStakes.add(1); totalStaked = totalStaked.add(_amount); totalByLockup[_lockupPeriod] += 1; if (_compound) { totalCompounding = totalCompounding.add(1); } else { totalNotCompounding = totalNotCompounding.add(1); } emit NewStake(msg.sender, _amount, _lockupPeriod, _compound, _referrer); } function withdraw() public { require(stakes[msg.sender].exists, "Invalid stake"); require(!stakes[msg.sender].compound, "Compounders can't withdraw before they finish their stake"); Stake storage stake = stakes[msg.sender]; uint256 total = getPartialToWidthdrawForNotCompounders(msg.sender, now); stake.withdrawn += total; require(token.transfer(msg.sender, calculateTotalWithDecimals(total)), "Couldn't withdraw"); emit RewardsWithdrawn(msg.sender, total); } function finishStake() public { require(stakes[msg.sender].exists, "Invalid stake"); Stake memory stake = stakes[msg.sender]; uint256 finishesOn = _calculateFinishTimestamp(stake.createdOn, stake.lockupPeriod); require(now > finishesOn || !stake.compound, "Can't be finished yet"); uint256 totalRewards; uint256 totalFees; uint256 totalPenalty; if (stake.compound) { totalRewards = getTotalToWidthdrawForCompounders(msg.sender); //This includes the initial amount totalRewards = totalRewards.sub(stake.initialAmount); totalFees = totalRewards.mul(5).div(100); //Flat fee of 5% } else { if (now > finishesOn) { totalRewards = getTotalToWidthdrawForNotCompounders(msg.sender); } else { totalRewards = getPartialToWidthdrawForNotCompounders(msg.sender, now); //As it didn't finish, pay a fee of 10% (before first half) or 5% (after first half) uint8 penalty = _isFirstHalf(stake.createdOn, stake.lockupPeriod) ? 10 : 5; totalPenalty = totalRewards.mul(penalty).div(100); } totalFees = totalRewards.mul(2).div(100); //Flat fee of 2% } uint256 totalToDeduct = totalFees.add(totalPenalty); uint256 totalToTransfer = totalRewards.add(stake.initialAmount).sub(totalToDeduct); //10% of the fees are for the Admin. adminCanWithdraw = adminCanWithdraw.add(totalToDeduct.div(10)); //The rest are burnt uint256 totalToBurn = totalToDeduct.mul(9).div(10); require(token.transfer(BURN_ADDRESS, calculateTotalWithDecimals(totalToBurn)), "Couldn't burn the tokens"); emit TokensBurnt(msg.sender, totalToBurn); totalStakes = totalStakes.sub(1); totalStaked = totalStaked.sub(stake.initialAmount); totalByLockup[stake.lockupPeriod] = totalByLockup[stake.lockupPeriod].sub(1); if (stake.compound) { totalCompounding = totalCompounding.sub(1); } else { totalNotCompounding = totalNotCompounding.sub(1); } delete stakes[msg.sender]; require(token.transfer(msg.sender, calculateTotalWithDecimals(totalToTransfer)), "Couldn't transfer the tokens"); emit StakeFinished(msg.sender, totalToTransfer, totalToDeduct); } function calculateTotalWithDecimals(uint256 _amount) internal view returns (uint256) { return _amount * 10 ** decimals; } function _isFirstHalf(uint256 _createdOn, uint8 _lockupPeriod) internal view returns (bool) { uint256 day = 60 * 60 * 24; if (_lockupPeriod == 1) { return _createdOn + day.mul(15) > now; } if (_lockupPeriod == 2) { return _createdOn + day.mul(30) > now; } if (_lockupPeriod == 3) { return _createdOn + day.mul(45) > now; } return _createdOn + day.mul(90) > now; } function calcPartialRewardsForInitialMonth(Stake memory stake, uint8 _todayDay, Date._Date memory _initial, bool compounding) internal view returns (uint256) { uint256 roi = getRoi(_initial.month, _initial.year, stake.lockupPeriod); uint8 totalDays = _todayDay - _initial.day; return calculateRewards(stake.initialAmount, totalDays, roi, compounding); } function calcFullRewardsForInitialMonth(Stake memory stake, Date._Date memory _initial, bool compounding) internal view returns (uint256) { uint8 totalDays = Date.getDaysInMonth(_initial.month, _initial.year); uint256 roi = getRoi(_initial.month, _initial.year, stake.lockupPeriod); uint8 countDays = totalDays - _initial.day; return calculateRewards(stake.initialAmount, countDays, roi, compounding); } function calcFullRewardsForMonth(uint256 _currentTotal, uint256 _roi, uint16 _year, uint8 _month, bool compounding) internal pure returns (uint256) { uint256 totalDays = Date.getDaysInMonth(_month, _year); return calculateRewards(_currentTotal, totalDays, _roi, compounding); } function calculateRewards(uint256 currentTotal, uint256 totalDays, uint256 roi, bool compounding) internal pure returns (uint256) { if (compounding) { uint256 divFactor = 10000 ** 10; while(totalDays > 10) { currentTotal = currentTotal.mul(roi.add(10000) ** 10).div(divFactor); totalDays -= 10; } return currentTotal = currentTotal.mul(roi.add(10000) ** totalDays).div(10000 ** totalDays); } //Not compounding return currentTotal.mul(totalDays).mul(roi).div(10000); } //This function is meant to be called internally when finishing your stake function getTotalToWidthdrawForNotCompounders(address _account) internal view returns (uint256) { Stake memory stake = stakes[_account]; Date._Date memory initial = Date.parseTimestamp(stake.createdOn); uint256 total = calcFullRewardsForInitialMonth(stake, initial, false); uint256 finishTimestamp = _calculateFinishTimestamp(stake.createdOn, stake.lockupPeriod); Date._Date memory finishes = Date.parseTimestamp(finishTimestamp); for(uint8 i=1;i<=stake.lockupPeriod;i++) { uint8 currentMonth = initial.month + i; uint16 currentYear = initial.year; if (currentMonth > 12) { currentYear += 1; currentMonth = currentMonth % 12; } uint256 roi = getRoi(currentMonth, currentYear ,stake.lockupPeriod); //This is the month it finishes on if (currentMonth == finishes.month) { //Calculates partial rewards for month total += calculateRewards(stake.initialAmount, finishes.day, roi, false); break; } //This is a complete month I need to add total += calcFullRewardsForMonth(stake.initialAmount, roi, currentYear, currentMonth, false); } total = total.sub(stake.withdrawn); return total; } //This function is meant to be called internally when withdrawing as much as you can, or by the UI function getPartialToWidthdrawForNotCompounders(address _account, uint256 _now) public view returns (uint256) { Stake memory stake = stakes[_account]; Date._Date memory initial = Date.parseTimestamp(stake.createdOn); Date._Date memory today = Date.parseTimestamp(_now); //I am still in my first month of staking if (initial.month == today.month) { uint256 total = calcPartialRewardsForInitialMonth(stake, today.day, initial, false); total = total.sub(stake.withdrawn); return total; } //I am in a month after my first month of staking uint256 total = calcFullRewardsForInitialMonth(stake, initial, false); uint256 finishTimestamp = _calculateFinishTimestamp(stake.createdOn, stake.lockupPeriod); Date._Date memory finishes = Date.parseTimestamp(finishTimestamp); for(uint8 i=1;i<=stake.lockupPeriod;i++) { uint8 currentMonth = initial.month + i; uint16 currentYear = initial.year; if (currentMonth > 12) { currentYear += 1; currentMonth = currentMonth % 12; } uint256 roi = getRoi(currentMonth, currentYear, stake.lockupPeriod); //This is the month it finishes if (currentMonth == finishes.month) { uint8 upToDay = _getMin(finishes.day, today.day); //Calculates partial rewards for month total += calculateRewards(stake.initialAmount, upToDay, roi, false); break; } else if (currentMonth == today.month) { // We reached the current month //Calculates partial rewards for month total += calculateRewards(stake.initialAmount, today.day, roi, false); break; } //This is a complete month I need to add total += calcFullRewardsForMonth(stake.initialAmount, roi, currentYear, currentMonth, false); } total = total.sub(stake.withdrawn); return total; } //This function is meant to be called internally on finishing your stake function getTotalToWidthdrawForCompounders(address _account) internal view returns (uint256) { Stake memory stake = stakes[_account]; Date._Date memory initial = Date.parseTimestamp(stake.createdOn); uint256 total = calcFullRewardsForInitialMonth(stake, initial, true); uint256 finishTimestamp = _calculateFinishTimestamp(stake.createdOn, stake.lockupPeriod); Date._Date memory finishes = Date.parseTimestamp(finishTimestamp); for(uint8 i=1;i<=stake.lockupPeriod;i++) { uint8 currentMonth = initial.month + i; uint16 currentYear = initial.year; if (currentMonth > 12) { currentYear += 1; currentMonth = currentMonth % 12; } uint256 roi = getRoi(currentMonth, currentYear, stake.lockupPeriod); //This is the month it finishes on if (currentMonth == finishes.month) { //Calculates partial rewards for month return calculateRewards(total, finishes.day, roi, true); } //This is a complete month I need to add total = calcFullRewardsForMonth(total, roi, currentYear, currentMonth, true); } } //This function is meant to be called from the UI function getPartialRewardsForCompounders(address _account, uint256 _now) public view returns (uint256) { Stake memory stake = stakes[_account]; Date._Date memory initial = Date.parseTimestamp(stake.createdOn); Date._Date memory today = Date.parseTimestamp(_now); //I am still in my first month of staking if (initial.month == today.month) { uint256 total = calcPartialRewardsForInitialMonth(stake, today.day, initial, true); total = total.sub(stake.withdrawn); return total; } //I am in a month after my first month of staking uint256 total = calcFullRewardsForInitialMonth(stake, initial, true); uint256 finishTimestamp = _calculateFinishTimestamp(stake.createdOn, stake.lockupPeriod); Date._Date memory finishes = Date.parseTimestamp(finishTimestamp); for(uint8 i=1;i<=stake.lockupPeriod;i++) { uint8 currentMonth = initial.month + i; uint16 currentYear = initial.year; if (currentMonth > 12) { currentYear += 1; currentMonth = currentMonth % 12; } uint256 roi = getRoi(currentMonth, currentYear, stake.lockupPeriod); //This is the month it finishes if (currentMonth == finishes.month) { uint8 upToDay = _getMin(finishes.day, today.day); //Calculates partial rewards for month return calculateRewards(total, upToDay, roi, true); } else if (currentMonth == today.month) { // We reached the current month //Calculates partial rewards for month return calculateRewards(total, today.day, roi, true); } //This is a complete month I need to add total = calcFullRewardsForMonth(total, roi, currentYear, currentMonth, true); } } function _getMin(uint8 num1, uint8 num2) internal pure returns (uint8) { if (num1 < num2) { return num1; } return num2; } function calculateFinishTimestamp(address account) public view returns (uint256) { return _calculateFinishTimestamp(stakes[account].createdOn, stakes[account].lockupPeriod); } function _calculateFinishTimestamp(uint256 _timestamp, uint8 _lockupPeriod) internal pure returns (uint256) { uint16 year = Date.getYear(_timestamp); uint8 month = Date.getMonth(_timestamp); month += _lockupPeriod; if (month > 12) { year += 1; month = month % 12; } uint8 day = Date.getDay(_timestamp); return Date.toTimestamp(year, month, day); } function _isValidLockupPeriod(uint8 n) public view returns (bool) { return (isValidLockup1 && n == 1) || (isValidLockup2 && n == 2) || (isValidLockup3 && n == 3) || (isValidLockup6 && n == 6); } function _setValidLockups(bool _isValidLockup1, bool _isValidLockup2, bool _isValidLockup3, bool _isValidLockup6) public onlyOwner { isValidLockup1 = _isValidLockup1; isValidLockup2 = _isValidLockup2; isValidLockup3 = _isValidLockup3; isValidLockup6 = _isValidLockup6; } function _adminWithdraw() public onlyOwner { uint256 amount = adminCanWithdraw; adminCanWithdraw = 0; require(token.transfer(msg.sender, calculateTotalWithDecimals(amount)), "Couldn't withdraw"); } function _extractDESTSentByMistake(uint256 amount, address _sendTo) public onlyOwner { require(token.transfer(_sendTo, amount)); } function _setMinimumStakeAmount(uint256 _minimumStakeAmount) public onlyOwner { minimumStakeAmount = _minimumStakeAmount; } function getMinimumStakeAmount() public view returns (uint256) { return minimumStakeAmount; } function _setRoi(uint256 _month, uint256 _year, uint256 _roi1, uint256 _roi2, uint256 _roi3, uint256 _roi6) public onlyOwner { uint256 today_year = Date.getYear(now); uint256 today_month = Date.getMonth(now); require((_month >= today_month && _year == today_year) || _year > today_year, "You can only set it for this month or a future month"); rois[_year][_month].exists = true; rois[_year][_month].roi1 = _roi1; rois[_year][_month].roi2 = _roi2; rois[_year][_month].roi3 = _roi3; rois[_year][_month].roi6 = _roi6; } function _setDefaultRoi(uint256 _roi1, uint256 _roi2, uint256 _roi3, uint256 _roi6) public onlyOwner { DEFAULT_ROI1 = _roi1; DEFAULT_ROI2 = _roi2; DEFAULT_ROI3 = _roi3; DEFAULT_ROI6 = _roi6; } function getRoi(uint256 month, uint256 year, uint8 lockupPeriod) public view returns (uint256) { if (rois[year][month].exists) { if (lockupPeriod == 1) { return rois[year][month].roi1; } else if (lockupPeriod == 2) { return rois[year][month].roi2; } else if (lockupPeriod == 3) { return rois[year][month].roi3; } else if (lockupPeriod == 6) { return rois[year][month].roi6; } } if (lockupPeriod == 1) { return DEFAULT_ROI1; } else if (lockupPeriod == 2) { return DEFAULT_ROI2; } else if (lockupPeriod == 3) { return DEFAULT_ROI3; } else if (lockupPeriod == 6) { return DEFAULT_ROI6; } return 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"_burnAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalStaked","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"lockupPeriod","type":"uint8"},{"indexed":false,"internalType":"bool","name":"compound","type":"bool"},{"indexed":false,"internalType":"address","name":"referrer","type":"address"}],"name":"NewStake","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":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"RewardsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalReturned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalDeducted","type":"uint256"}],"name":"StakeFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"initialAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"delta","type":"uint256"}],"name":"StakeIncreasedForReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalBurnt","type":"uint256"}],"name":"TokensBurnt","type":"event"},{"inputs":[],"name":"_adminWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"_sendTo","type":"address"}],"name":"_extractDESTSentByMistake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"n","type":"uint8"}],"name":"_isValidLockupPeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roi1","type":"uint256"},{"internalType":"uint256","name":"_roi2","type":"uint256"},{"internalType":"uint256","name":"_roi3","type":"uint256"},{"internalType":"uint256","name":"_roi6","type":"uint256"}],"name":"_setDefaultRoi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumStakeAmount","type":"uint256"}],"name":"_setMinimumStakeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_month","type":"uint256"},{"internalType":"uint256","name":"_year","type":"uint256"},{"internalType":"uint256","name":"_roi1","type":"uint256"},{"internalType":"uint256","name":"_roi2","type":"uint256"},{"internalType":"uint256","name":"_roi3","type":"uint256"},{"internalType":"uint256","name":"_roi6","type":"uint256"}],"name":"_setRoi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isValidLockup1","type":"bool"},{"internalType":"bool","name":"_isValidLockup2","type":"bool"},{"internalType":"bool","name":"_isValidLockup3","type":"bool"},{"internalType":"bool","name":"_isValidLockup6","type":"bool"}],"name":"_setValidLockups","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminCanWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"calculateFinishTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"_lockupPeriod","type":"uint8"},{"internalType":"bool","name":"_compound","type":"bool"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"createStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finishStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMinimumStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_now","type":"uint256"}],"name":"getPartialRewardsForCompounders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_now","type":"uint256"}],"name":"getPartialToWidthdrawForNotCompounders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"month","type":"uint256"},{"internalType":"uint256","name":"year","type":"uint256"},{"internalType":"uint8","name":"lockupPeriod","type":"uint8"}],"name":"getRoi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakes","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint256","name":"createdOn","type":"uint256"},{"internalType":"uint256","name":"initialAmount","type":"uint256"},{"internalType":"bool","name":"compound","type":"bool"},{"internalType":"uint8","name":"lockupPeriod","type":"uint8"},{"internalType":"uint256","name":"withdrawn","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"totalByLockup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCompounding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalNotCompounding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260126002556103e8600355600480546001600160a01b03191690556000600681905560078190556008819055600a819055600b55600d8055600f600e8190556011908190556013601055805460ff191660011763ffffff001916905534801561006c57600080fd5b50604051612be1380380612be18339818101604052604081101561008f57600080fd5b508051602090910151600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055612ac58061011c6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063b219ed0f11610097578063c81bf2b111610071578063c81bf2b11461044a578063d830d27c14610452578063f2b519bc14610489578063f2fde38b1461049157610173565b8063b219ed0f146103db578063b85cf43e14610407578063bf9befb11461044257610173565b80638da5cb5b146103035780638f32d59b146103275780639ebdaa6d14610343578063a284150714610372578063a56a30ec1461038f578063b1a6043d146103af57610173565b806324db2c861161013057806324db2c861461025c5780633765cf02146102825780633ccfd60b1461028a578063674a932d14610292578063705142b8146102be578063817b1cd2146102fb57610173565b806308a37f31146101785780630ad3c765146101825780630ff3f6c61461019c5780631600ec4b146101a457806316934fc4146101d05780631d71b8501461023c575b600080fd5b6101806104b7565b005b61018a610a94565b60408051918252519081900360200190f35b61018a610a9a565b61018a600480360360408110156101ba57600080fd5b506001600160a01b038135169060200135610aa0565b6101f6600480360360208110156101e657600080fd5b50356001600160a01b0316610cd6565b604080519715158852602088019690965286860194909452911515606086015260ff16608085015260a08401526001600160a01b031660c0830152519081900360e00190f35b61018a6004803603602081101561025257600080fd5b503560ff16610d25565b61018a6004803603602081101561027257600080fd5b50356001600160a01b0316610d37565b61018a610d74565b610180610d7a565b610180600480360360408110156102a857600080fd5b50803590602001356001600160a01b0316610f5c565b610180600480360360808110156102d457600080fd5b50803590602081013560ff16906040810135151590606001356001600160a01b0316610ffc565b61018a6114b1565b61030b6114b7565b604080516001600160a01b039092168252519081900360200190f35b61032f6114c6565b604080519115158252519081900360200190f35b6101806004803603608081101561035957600080fd5b50803590602081013590604081013590606001356114ef565b6101806004803603602081101561038857600080fd5b5035611514565b61032f600480360360208110156103a557600080fd5b503560ff1661152a565b61018a600480360360608110156103c557600080fd5b508035906020810135906040013560ff166115a7565b61018a600480360360408110156103f157600080fd5b506001600160a01b0381351690602001356116e4565b610180600480360360c081101561041d57600080fd5b5080359060208101359060408101359060608101359060808101359060a0013561190c565b61018a611abe565b61018a611ac4565b6101806004803603608081101561046857600080fd5b50803515159060208101351515906040810135151590606001351515611aca565b610180611b27565b610180600480360360208110156104a757600080fd5b50356001600160a01b0316611c1f565b336000908152600c602052604090205460ff1661050b576040805162461bcd60e51b815260206004820152600d60248201526c496e76616c6964207374616b6560981b604482015290519081900360640190fd5b6105136129c6565b50336000908152600c60209081526040808320815160e081018352815460ff908116151582526001830154948201859052600283015493820193909352600382015480841615156060830152610100900490921660808301819052600482015460a08401526005909101546001600160a01b031660c083015290929161059891611c39565b9050804211806105aa57508160600151155b6105f3576040805162461bcd60e51b815260206004820152601560248201527410d85b89dd08189948199a5b9a5cda1959081e595d605a1b604482015290519081900360640190fd5b600080600084606001511561064f5761060b33611e7f565b925061062485604001518461200690919063ffffffff16565b9250610648606461063c85600563ffffffff61204816565b9063ffffffff61207016565b91506106cc565b8342111561066757610660336120b2565b92506106b3565b61067133426116e4565b9250600061068786602001518760800151612253565b610692576005610695565b600a5b90506106af606461063c8660ff851663ffffffff61204816565b9150505b6106c9606461063c85600263ffffffff61204816565b91505b60006106de838363ffffffff6122dc16565b90506000610709826106fd8960400151886122dc90919063ffffffff16565b9063ffffffff61200616565b905061072e61071f83600a63ffffffff61207016565b6008549063ffffffff6122dc16565b6008556000610749600a61063c85600963ffffffff61204816565b6001546005549192506001600160a01b039081169163a9059cbb911661076e846122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b505050506040513d60208110156107e757600080fd5b505161083a576040805162461bcd60e51b815260206004820152601860248201527f436f756c646e2774206275726e2074686520746f6b656e730000000000000000604482015290519081900360640190fd5b60408051828152905133917f22d306e0cdbeeb823d6327362b35337dc3125a6aa905b6a014da1b08a5389ba4919081900360200190a260065461088490600163ffffffff61200616565b600655604088015160075461089e9163ffffffff61200616565b600755608088015160ff166000908152600960205260409020546108c990600163ffffffff61200616565b608089015160ff1660009081526009602052604090205560608801511561090657600a546108fe90600163ffffffff61200616565b600a5561091e565b600b5461091a90600163ffffffff61200616565b600b555b336000818152600c60205260408120805460ff1916815560018082018390556002820183905560038201805461ffff19169055600482019290925560050180546001600160a01b0319169055546001600160a01b03169063a9059cbb90610984856122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b505050506040513d60208110156109fd57600080fd5b5051610a50576040805162461bcd60e51b815260206004820152601c60248201527f436f756c646e2774207472616e736665722074686520746f6b656e7300000000604482015290519081900360640190fd5b6040805183815260208101859052815133927fa287afc36219422479b90fe9ac2672e28735d1bdd05d78553521159f9f525f6d928290030190a25050505050505050565b600a5481565b600b5481565b6000610aaa6129c6565b506001600160a01b038084166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c0820152610b2d612a02565b610b3a82602001516122f6565b9050610b44612a02565b610b4d856122f6565b9050806020015160ff16826020015160ff161415610b9d576000610b788483604001518560016123fe565b9050610b918460a001518261200690919063ffffffff16565b9450610cd09350505050565b6000610bab8484600161244c565b90506000610bc185602001518660800151611c39565b9050610bcb612a02565b610bd4826122f6565b905060015b866080015160ff168160ff1611610cc8576020860151865190820190600c60ff83161115610c0e57600101600c60ff83160691505b6000610c268360ff168361ffff168c608001516115a7565b9050846020015160ff168360ff161415610c72576000610c4e86604001518a60400151612526565b9050610c60888260ff16846001612543565b9b505050505050505050505050610cd0565b876020015160ff168360ff161415610ca957610c9887896040015160ff16836001612543565b9a5050505050505050505050610cd0565b610cb78782848660016125f9565b96505060019092019150610bd99050565b505050505050505b92915050565b600c6020526000908152604090208054600182015460028301546003840154600485015460059095015460ff94851695939492938284169361010090930490921691906001600160a01b031687565b60096020526000908152604090205481565b6001600160a01b0381166000908152600c602052604081206001810154600390910154610d6c9190610100900460ff16611c39565b90505b919050565b60035490565b336000908152600c602052604090205460ff16610dce576040805162461bcd60e51b815260206004820152600d60248201526c496e76616c6964207374616b6560981b604482015290519081900360640190fd5b336000908152600c602052604090206003015460ff1615610e205760405162461bcd60e51b8152600401808060200182810382526039815260200180612a576039913960400191505060405180910390fd5b336000818152600c6020526040812091610e3a90426116e4565b600483018054820190556001549091506001600160a01b031663a9059cbb33610e62846122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610eb157600080fd5b505af1158015610ec5573d6000803e3d6000fd5b505050506040513d6020811015610edb57600080fd5b5051610f22576040805162461bcd60e51b8152602060048201526011602482015270436f756c646e277420776974686472617760781b604482015290519081900360640190fd5b60408051828152905133917f8a43c4352486ec339f487f64af78ca5cbf06cd47833f073d3baf3a193e503161919081900360200190a25050565b610f646114c6565b610f6d57600080fd5b6001546040805163a9059cbb60e01b81526001600160a01b038481166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506040513d6020811015610fed57600080fd5b5051610ff857600080fd5b5050565b336000908152600c602052604090205460ff1615611061576040805162461bcd60e51b815260206004820152601860248201527f596f7520616c726561647920686176652061207374616b650000000000000000604482015290519081900360640190fd5b61106a8361152a565b6110b3576040805162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b1bd8dadd5c081c195c9a5bd9605a1b604482015290519081900360640190fd5b6110bb610d74565b841015611101576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206d696e696d756d60881b604482015290519081900360640190fd5b6001546001600160a01b03166323b872dd333061111d886122ec565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561118557600080fd5b505af1158015611199573d6000803e3d6000fd5b505050506040513d60208110156111af57600080fd5b5051611202576040805162461bcd60e51b815260206004820152601860248201527f436f756c646e27742074616b652074686520746f6b656e730000000000000000604482015290519081900360640190fd5b6001600160a01b0381161580159061123257506001600160a01b0381166000908152600c602052604090205460ff165b15611304576001600160a01b0381166000908152600c602052604081206002015461126b9060649061063c90600163ffffffff61204816565b6001600160a01b0383166000818152600c6020908152604091829020600201548251908152908101849052815193945091927f137164f93582d8b617ea3f6901a1d521e2610ec8397fe92459e6cf85a9dc83e89281900390910190a26001600160a01b0382166000908152600c602052604090206002018054820190556007546112fb908263ffffffff6122dc16565b60075550611312565b506004546001600160a01b03165b61131a6129c6565b506040805160e08101825260018082524260208084019182528385018981528715156060860190815260ff8a811660808801908152600060a089018181526001600160a01b038c811660c08c01908152338452600c9098529a9091208951815460ff199081169115159190911782559751818a01559451600286015592516003850180549251929097169015151761ff0019166101009190921602179093559151600483015551600590910180546001600160a01b031916919094161790925560065490916113e991906122dc565b6006556007546113ff908663ffffffff6122dc16565b60075560ff8416600090815260096020526040902080546001019055821561143d57600a5461143590600163ffffffff6122dc16565b600a55611455565b600b5461145190600163ffffffff6122dc16565b600b555b6040805186815260ff86166020820152841515818301526001600160a01b0384166060820152905133917f400e171aacda0e3d4172b349f5580803cee665adbac7a82751db1de4e8985309919081900360800190a25050505050565b60075481565b6000546001600160a01b031690565b600080546001600160a01b03163314806114ea57506000546001600160a01b031632145b905090565b6114f76114c6565b61150057600080fd5b600d93909355600e91909155600f55601055565b61151c6114c6565b61152557600080fd5b600355565b60115460009060ff16801561154257508160ff166001145b806115625750601154610100900460ff16801561156257508160ff166002145b80611583575060115462010000900460ff16801561158357508160ff166003145b80610d6c57506011546301000000900460ff168015610d6c57505060ff1660061490565b600082815260126020908152604080832086845290915281205460ff1615611685578160ff16600114156115f8575060008281526012602090815260408083208684529091529020600101546116dd565b8160ff1660021415611627575060008281526012602090815260408083208684529091529020600201546116dd565b8160ff1660031415611656575060008281526012602090815260408083208684529091529020600301546116dd565b8160ff1660061415611685575060008281526012602090815260408083208684529091529020600401546116dd565b8160ff166001141561169a5750600d546116dd565b8160ff16600214156116af5750600e546116dd565b8160ff16600314156116c45750600f546116dd565b8160ff16600614156116d957506010546116dd565b5060005b9392505050565b60006116ee6129c6565b506001600160a01b038084166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c0820152611771612a02565b61177e82602001516122f6565b9050611788612a02565b611791856122f6565b9050806020015160ff16826020015160ff1614156117bc576000610b788483604001518560006123fe565b60006117ca8484600061244c565b905060006117e085602001518660800151611c39565b90506117ea612a02565b6117f3826122f6565b905060015b866080015160ff168160ff16116118e8576020860151865190820190600c60ff8316111561182d57600101600c60ff83160691505b60006118458360ff168361ffff168c608001516115a7565b9050846020015160ff168360ff16141561189057600061186d86604001518a60400151612526565b90506118838b604001518260ff16846000612543565b88019750505050506118e8565b876020015160ff168360ff1614156118c6576118ba8a60400151896040015160ff16836000612543565b870196505050506118e8565b6118d88a6040015182848660006125f9565b96909601955050506001016117f8565b5060a08601516118ff90849063ffffffff61200616565b9998505050505050505050565b6119146114c6565b61191d57600080fd5b600073d4dec04810fcb50ac2332b332a333f7211162c266392d66313426040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561196e57600080fd5b505af4158015611982573d6000803e3d6000fd5b505050506040513d602081101561199857600080fd5b5051604080516328c92b4960e21b8152426004820152905161ffff909216925060009173d4dec04810fcb50ac2332b332a333f7211162c269163a324ad24916024808301926020929190829003018186803b1580156119f657600080fd5b505af4158015611a0a573d6000803e3d6000fd5b505050506040513d6020811015611a2057600080fd5b505160ff169050808810801590611a3657508187145b80611a4057508187115b611a7b5760405162461bcd60e51b8152600401808060200182810382526034815260200180612a236034913960400191505060405180910390fd5b5050600094855260126020908152604080872097875296905294909320805460ff1916600190811782558101929092556002820155600381019190915560040155565b60065481565b60085481565b611ad26114c6565b611adb57600080fd5b6011805460ff19169415159490941761ff001916610100931515939093029290921762ff0000191662010000911515919091021763ff0000001916630100000091151591909102179055565b611b2f6114c6565b611b3857600080fd5b6008805460009091556001546001600160a01b031663a9059cbb33611b5c846122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611bab57600080fd5b505af1158015611bbf573d6000803e3d6000fd5b505050506040513d6020811015611bd557600080fd5b5051611c1c576040805162461bcd60e51b8152602060048201526011602482015270436f756c646e277420776974686472617760781b604482015290519081900360640190fd5b50565b611c276114c6565b611c3057600080fd5b611c1c81612699565b60008073d4dec04810fcb50ac2332b332a333f7211162c266392d66313856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c8b57600080fd5b505af4158015611c9f573d6000803e3d6000fd5b505050506040513d6020811015611cb557600080fd5b5051604080516328c92b4960e21b815260048101879052905191925060009173d4dec04810fcb50ac2332b332a333f7211162c269163a324ad24916024808301926020929190829003018186803b158015611d0f57600080fd5b505af4158015611d23573d6000803e3d6000fd5b505050506040513d6020811015611d3957600080fd5b505184019050600c60ff82161115611d6257600182019150600c8160ff1681611d5e57fe5b0690505b600073d4dec04810fcb50ac2332b332a333f7211162c266365c72840876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611db357600080fd5b505af4158015611dc7573d6000803e3d6000fd5b505050506040513d6020811015611ddd57600080fd5b5051604080516304646cc560e51b815261ffff8616600482015260ff808616602483015283166044820152905191925073d4dec04810fcb50ac2332b332a333f7211162c2691638c8d98a091606480820192602092909190829003018186803b158015611e4957600080fd5b505af4158015611e5d573d6000803e3d6000fd5b505050506040513d6020811015611e7357600080fd5b50519695505050505050565b6000611e896129c6565b506001600160a01b038083166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c0820152611f0c612a02565b611f1982602001516122f6565b90506000611f298383600161244c565b90506000611f3f84602001518560800151611c39565b9050611f49612a02565b611f52826122f6565b905060015b856080015160ff168160ff1611611ffb576020850151855190820190600c60ff83161115611f8c57600101600c60ff83160691505b6000611fa48360ff168361ffff168b608001516115a7565b9050846020015160ff168360ff161415611fdc57611fcc87866040015160ff16836001612543565b9950505050505050505050610d6f565b611fea8782848660016125f9565b96505060019092019150611f579050565b505050505050919050565b60006116dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612707565b60008261205757506000610cd0565b508181028183828161206557fe5b0414610cd057600080fd5b60006116dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061279e565b60006120bc6129c6565b506001600160a01b038083166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c082015261213f612a02565b61214c82602001516122f6565b9050600061215c8383600061244c565b9050600061217284602001518560800151611c39565b905061217c612a02565b612185826122f6565b905060015b856080015160ff168160ff1611612231576020850151855190820190600c60ff831611156121bf57600101600c60ff83160691505b60006121d78360ff168361ffff168b608001516115a7565b9050846020015160ff168360ff16141561220f576122038960400151866040015160ff16836000612543565b87019650505050612231565b612221896040015182848660006125f9565b969096019550505060010161218a565b5060a085015161224890849063ffffffff61200616565b979650505050505050565b600062015180600160ff84161415612282574261227782600f63ffffffff61204816565b850111915050610cd0565b8260ff16600214156122a0574261227782601e63ffffffff61204816565b8260ff16600314156122be574261227782602d63ffffffff61204816565b426122d082605a63ffffffff61204816565b85011191505092915050565b81810182811015610cd057600080fd5b600254600a0a0290565b6122fe612a02565b6000808061230b85612803565b61ffff16845261231c6107b2612893565b845161232b9061ffff16612893565b039150816301e285000283019250816107b285600001510361ffff16036301e1338002830192506000600191505b600c8260ff16116123a3576123728286600001516128ae565b60ff16620151800290508584820111156123945760ff821660208601526123a3565b92830192600190910190612359565b600191505b6123ba856020015186600001516128ae565b60ff168260ff16116123f5578584620151800111156123e15760ff821660408601526123f5565b6201518093909301926001909101906123a8565b50505050919050565b60008061241f846020015160ff16856000015161ffff1688608001516115a7565b9050600084604001518603905061243f87604001518260ff168487612543565b925050505b949350505050565b60208083015183516040805163591c568760e11b815260ff909316600484015261ffff909116602483015251600092839273d4dec04810fcb50ac2332b332a333f7211162c269263b238ad0e92604480840193919291829003018186803b1580156124b657600080fd5b505af41580156124ca573d6000803e3d6000fd5b505050506040513d60208110156124e057600080fd5b50516020850151855160808801519293506000926125069260ff169161ffff16906115a7565b9050600085604001518303905061224887604001518260ff168488612543565b60008160ff168360ff16101561253d575081610cd0565b50919050565b600081156125ca57701d6329f1c35ca4bfabb9f56100000000005b600a85111561259e576125918161063c600a6125828861271063ffffffff6122dc16565b8a91900a63ffffffff61204816565b9550600a8503945061255e565b6125bf856127100a61063c87612582612710896122dc90919063ffffffff16565b955085915050612444565b6125f061271061063c856125e4898963ffffffff61204816565b9063ffffffff61204816565b95945050505050565b6040805163591c568760e11b815260ff8416600482015261ffff851660248201529051600091829173d4dec04810fcb50ac2332b332a333f7211162c269163b238ad0e916044808301926020929190829003018186803b15801561265c57600080fd5b505af4158015612670573d6000803e3d6000fd5b505050506040513d602081101561268657600080fd5b505160ff16905061224887828886612543565b6001600160a01b0381166126ac57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156127965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561275b578181015183820152602001612743565b50505050905090810190601f1680156127885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836127ed5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561275b578181015183820152602001612743565b5060008385816127f957fe5b0495945050505050565b6000806107b26301e133808404810190829061281e90612893565b61282b8361ffff16612893565b039050806301e285000283019250806107b2830361ffff16036301e1338002830192505b8483111561288b5761286360018303612974565b15612876576301e2850083039250612880565b6301e13380830392505b60018203915061284f565b509392505050565b60001901600061019082046064830460048404030192915050565b60008260ff16600114806128c557508260ff166003145b806128d357508260ff166005145b806128e157508260ff166007145b806128ef57508260ff166008145b806128fd57508260ff16600a145b8061290b57508260ff16600c145b156129185750601f610cd0565b8260ff166004148061292d57508260ff166006145b8061293b57508260ff166009145b8061294957508260ff16600b145b156129565750601e610cd0565b61295f82612974565b1561296c5750601d610cd0565b50601c610cd0565b6000600382161561298757506000610d6f565b606461ffff83160661ffff166000146129a257506001610d6f565b61019061ffff83160661ffff166000146129be57506000610d6f565b506001919050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60408051606081018252600080825260208201819052918101919091529056fe596f752063616e206f6e6c792073657420697420666f722074686973206d6f6e7468206f72206120667574757265206d6f6e7468436f6d706f756e646572732063616e2774207769746864726177206265666f726520746865792066696e697368207468656972207374616b65a264697066735822122076d4617847b5164b6653fe2f8a25c41e63396ca613a11b88597c8b74d3171ca464736f6c63430006060033000000000000000000000000d379700999f4805ce80aa32db46a94df645611080000000000000000000000006878e597350ba74ab65ae9afffe0d25702a844c9
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063b219ed0f11610097578063c81bf2b111610071578063c81bf2b11461044a578063d830d27c14610452578063f2b519bc14610489578063f2fde38b1461049157610173565b8063b219ed0f146103db578063b85cf43e14610407578063bf9befb11461044257610173565b80638da5cb5b146103035780638f32d59b146103275780639ebdaa6d14610343578063a284150714610372578063a56a30ec1461038f578063b1a6043d146103af57610173565b806324db2c861161013057806324db2c861461025c5780633765cf02146102825780633ccfd60b1461028a578063674a932d14610292578063705142b8146102be578063817b1cd2146102fb57610173565b806308a37f31146101785780630ad3c765146101825780630ff3f6c61461019c5780631600ec4b146101a457806316934fc4146101d05780631d71b8501461023c575b600080fd5b6101806104b7565b005b61018a610a94565b60408051918252519081900360200190f35b61018a610a9a565b61018a600480360360408110156101ba57600080fd5b506001600160a01b038135169060200135610aa0565b6101f6600480360360208110156101e657600080fd5b50356001600160a01b0316610cd6565b604080519715158852602088019690965286860194909452911515606086015260ff16608085015260a08401526001600160a01b031660c0830152519081900360e00190f35b61018a6004803603602081101561025257600080fd5b503560ff16610d25565b61018a6004803603602081101561027257600080fd5b50356001600160a01b0316610d37565b61018a610d74565b610180610d7a565b610180600480360360408110156102a857600080fd5b50803590602001356001600160a01b0316610f5c565b610180600480360360808110156102d457600080fd5b50803590602081013560ff16906040810135151590606001356001600160a01b0316610ffc565b61018a6114b1565b61030b6114b7565b604080516001600160a01b039092168252519081900360200190f35b61032f6114c6565b604080519115158252519081900360200190f35b6101806004803603608081101561035957600080fd5b50803590602081013590604081013590606001356114ef565b6101806004803603602081101561038857600080fd5b5035611514565b61032f600480360360208110156103a557600080fd5b503560ff1661152a565b61018a600480360360608110156103c557600080fd5b508035906020810135906040013560ff166115a7565b61018a600480360360408110156103f157600080fd5b506001600160a01b0381351690602001356116e4565b610180600480360360c081101561041d57600080fd5b5080359060208101359060408101359060608101359060808101359060a0013561190c565b61018a611abe565b61018a611ac4565b6101806004803603608081101561046857600080fd5b50803515159060208101351515906040810135151590606001351515611aca565b610180611b27565b610180600480360360208110156104a757600080fd5b50356001600160a01b0316611c1f565b336000908152600c602052604090205460ff1661050b576040805162461bcd60e51b815260206004820152600d60248201526c496e76616c6964207374616b6560981b604482015290519081900360640190fd5b6105136129c6565b50336000908152600c60209081526040808320815160e081018352815460ff908116151582526001830154948201859052600283015493820193909352600382015480841615156060830152610100900490921660808301819052600482015460a08401526005909101546001600160a01b031660c083015290929161059891611c39565b9050804211806105aa57508160600151155b6105f3576040805162461bcd60e51b815260206004820152601560248201527410d85b89dd08189948199a5b9a5cda1959081e595d605a1b604482015290519081900360640190fd5b600080600084606001511561064f5761060b33611e7f565b925061062485604001518461200690919063ffffffff16565b9250610648606461063c85600563ffffffff61204816565b9063ffffffff61207016565b91506106cc565b8342111561066757610660336120b2565b92506106b3565b61067133426116e4565b9250600061068786602001518760800151612253565b610692576005610695565b600a5b90506106af606461063c8660ff851663ffffffff61204816565b9150505b6106c9606461063c85600263ffffffff61204816565b91505b60006106de838363ffffffff6122dc16565b90506000610709826106fd8960400151886122dc90919063ffffffff16565b9063ffffffff61200616565b905061072e61071f83600a63ffffffff61207016565b6008549063ffffffff6122dc16565b6008556000610749600a61063c85600963ffffffff61204816565b6001546005549192506001600160a01b039081169163a9059cbb911661076e846122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b505050506040513d60208110156107e757600080fd5b505161083a576040805162461bcd60e51b815260206004820152601860248201527f436f756c646e2774206275726e2074686520746f6b656e730000000000000000604482015290519081900360640190fd5b60408051828152905133917f22d306e0cdbeeb823d6327362b35337dc3125a6aa905b6a014da1b08a5389ba4919081900360200190a260065461088490600163ffffffff61200616565b600655604088015160075461089e9163ffffffff61200616565b600755608088015160ff166000908152600960205260409020546108c990600163ffffffff61200616565b608089015160ff1660009081526009602052604090205560608801511561090657600a546108fe90600163ffffffff61200616565b600a5561091e565b600b5461091a90600163ffffffff61200616565b600b555b336000818152600c60205260408120805460ff1916815560018082018390556002820183905560038201805461ffff19169055600482019290925560050180546001600160a01b0319169055546001600160a01b03169063a9059cbb90610984856122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b505050506040513d60208110156109fd57600080fd5b5051610a50576040805162461bcd60e51b815260206004820152601c60248201527f436f756c646e2774207472616e736665722074686520746f6b656e7300000000604482015290519081900360640190fd5b6040805183815260208101859052815133927fa287afc36219422479b90fe9ac2672e28735d1bdd05d78553521159f9f525f6d928290030190a25050505050505050565b600a5481565b600b5481565b6000610aaa6129c6565b506001600160a01b038084166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c0820152610b2d612a02565b610b3a82602001516122f6565b9050610b44612a02565b610b4d856122f6565b9050806020015160ff16826020015160ff161415610b9d576000610b788483604001518560016123fe565b9050610b918460a001518261200690919063ffffffff16565b9450610cd09350505050565b6000610bab8484600161244c565b90506000610bc185602001518660800151611c39565b9050610bcb612a02565b610bd4826122f6565b905060015b866080015160ff168160ff1611610cc8576020860151865190820190600c60ff83161115610c0e57600101600c60ff83160691505b6000610c268360ff168361ffff168c608001516115a7565b9050846020015160ff168360ff161415610c72576000610c4e86604001518a60400151612526565b9050610c60888260ff16846001612543565b9b505050505050505050505050610cd0565b876020015160ff168360ff161415610ca957610c9887896040015160ff16836001612543565b9a5050505050505050505050610cd0565b610cb78782848660016125f9565b96505060019092019150610bd99050565b505050505050505b92915050565b600c6020526000908152604090208054600182015460028301546003840154600485015460059095015460ff94851695939492938284169361010090930490921691906001600160a01b031687565b60096020526000908152604090205481565b6001600160a01b0381166000908152600c602052604081206001810154600390910154610d6c9190610100900460ff16611c39565b90505b919050565b60035490565b336000908152600c602052604090205460ff16610dce576040805162461bcd60e51b815260206004820152600d60248201526c496e76616c6964207374616b6560981b604482015290519081900360640190fd5b336000908152600c602052604090206003015460ff1615610e205760405162461bcd60e51b8152600401808060200182810382526039815260200180612a576039913960400191505060405180910390fd5b336000818152600c6020526040812091610e3a90426116e4565b600483018054820190556001549091506001600160a01b031663a9059cbb33610e62846122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610eb157600080fd5b505af1158015610ec5573d6000803e3d6000fd5b505050506040513d6020811015610edb57600080fd5b5051610f22576040805162461bcd60e51b8152602060048201526011602482015270436f756c646e277420776974686472617760781b604482015290519081900360640190fd5b60408051828152905133917f8a43c4352486ec339f487f64af78ca5cbf06cd47833f073d3baf3a193e503161919081900360200190a25050565b610f646114c6565b610f6d57600080fd5b6001546040805163a9059cbb60e01b81526001600160a01b038481166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506040513d6020811015610fed57600080fd5b5051610ff857600080fd5b5050565b336000908152600c602052604090205460ff1615611061576040805162461bcd60e51b815260206004820152601860248201527f596f7520616c726561647920686176652061207374616b650000000000000000604482015290519081900360640190fd5b61106a8361152a565b6110b3576040805162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b1bd8dadd5c081c195c9a5bd9605a1b604482015290519081900360640190fd5b6110bb610d74565b841015611101576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206d696e696d756d60881b604482015290519081900360640190fd5b6001546001600160a01b03166323b872dd333061111d886122ec565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561118557600080fd5b505af1158015611199573d6000803e3d6000fd5b505050506040513d60208110156111af57600080fd5b5051611202576040805162461bcd60e51b815260206004820152601860248201527f436f756c646e27742074616b652074686520746f6b656e730000000000000000604482015290519081900360640190fd5b6001600160a01b0381161580159061123257506001600160a01b0381166000908152600c602052604090205460ff165b15611304576001600160a01b0381166000908152600c602052604081206002015461126b9060649061063c90600163ffffffff61204816565b6001600160a01b0383166000818152600c6020908152604091829020600201548251908152908101849052815193945091927f137164f93582d8b617ea3f6901a1d521e2610ec8397fe92459e6cf85a9dc83e89281900390910190a26001600160a01b0382166000908152600c602052604090206002018054820190556007546112fb908263ffffffff6122dc16565b60075550611312565b506004546001600160a01b03165b61131a6129c6565b506040805160e08101825260018082524260208084019182528385018981528715156060860190815260ff8a811660808801908152600060a089018181526001600160a01b038c811660c08c01908152338452600c9098529a9091208951815460ff199081169115159190911782559751818a01559451600286015592516003850180549251929097169015151761ff0019166101009190921602179093559151600483015551600590910180546001600160a01b031916919094161790925560065490916113e991906122dc565b6006556007546113ff908663ffffffff6122dc16565b60075560ff8416600090815260096020526040902080546001019055821561143d57600a5461143590600163ffffffff6122dc16565b600a55611455565b600b5461145190600163ffffffff6122dc16565b600b555b6040805186815260ff86166020820152841515818301526001600160a01b0384166060820152905133917f400e171aacda0e3d4172b349f5580803cee665adbac7a82751db1de4e8985309919081900360800190a25050505050565b60075481565b6000546001600160a01b031690565b600080546001600160a01b03163314806114ea57506000546001600160a01b031632145b905090565b6114f76114c6565b61150057600080fd5b600d93909355600e91909155600f55601055565b61151c6114c6565b61152557600080fd5b600355565b60115460009060ff16801561154257508160ff166001145b806115625750601154610100900460ff16801561156257508160ff166002145b80611583575060115462010000900460ff16801561158357508160ff166003145b80610d6c57506011546301000000900460ff168015610d6c57505060ff1660061490565b600082815260126020908152604080832086845290915281205460ff1615611685578160ff16600114156115f8575060008281526012602090815260408083208684529091529020600101546116dd565b8160ff1660021415611627575060008281526012602090815260408083208684529091529020600201546116dd565b8160ff1660031415611656575060008281526012602090815260408083208684529091529020600301546116dd565b8160ff1660061415611685575060008281526012602090815260408083208684529091529020600401546116dd565b8160ff166001141561169a5750600d546116dd565b8160ff16600214156116af5750600e546116dd565b8160ff16600314156116c45750600f546116dd565b8160ff16600614156116d957506010546116dd565b5060005b9392505050565b60006116ee6129c6565b506001600160a01b038084166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c0820152611771612a02565b61177e82602001516122f6565b9050611788612a02565b611791856122f6565b9050806020015160ff16826020015160ff1614156117bc576000610b788483604001518560006123fe565b60006117ca8484600061244c565b905060006117e085602001518660800151611c39565b90506117ea612a02565b6117f3826122f6565b905060015b866080015160ff168160ff16116118e8576020860151865190820190600c60ff8316111561182d57600101600c60ff83160691505b60006118458360ff168361ffff168c608001516115a7565b9050846020015160ff168360ff16141561189057600061186d86604001518a60400151612526565b90506118838b604001518260ff16846000612543565b88019750505050506118e8565b876020015160ff168360ff1614156118c6576118ba8a60400151896040015160ff16836000612543565b870196505050506118e8565b6118d88a6040015182848660006125f9565b96909601955050506001016117f8565b5060a08601516118ff90849063ffffffff61200616565b9998505050505050505050565b6119146114c6565b61191d57600080fd5b600073d4dec04810fcb50ac2332b332a333f7211162c266392d66313426040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561196e57600080fd5b505af4158015611982573d6000803e3d6000fd5b505050506040513d602081101561199857600080fd5b5051604080516328c92b4960e21b8152426004820152905161ffff909216925060009173d4dec04810fcb50ac2332b332a333f7211162c269163a324ad24916024808301926020929190829003018186803b1580156119f657600080fd5b505af4158015611a0a573d6000803e3d6000fd5b505050506040513d6020811015611a2057600080fd5b505160ff169050808810801590611a3657508187145b80611a4057508187115b611a7b5760405162461bcd60e51b8152600401808060200182810382526034815260200180612a236034913960400191505060405180910390fd5b5050600094855260126020908152604080872097875296905294909320805460ff1916600190811782558101929092556002820155600381019190915560040155565b60065481565b60085481565b611ad26114c6565b611adb57600080fd5b6011805460ff19169415159490941761ff001916610100931515939093029290921762ff0000191662010000911515919091021763ff0000001916630100000091151591909102179055565b611b2f6114c6565b611b3857600080fd5b6008805460009091556001546001600160a01b031663a9059cbb33611b5c846122ec565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611bab57600080fd5b505af1158015611bbf573d6000803e3d6000fd5b505050506040513d6020811015611bd557600080fd5b5051611c1c576040805162461bcd60e51b8152602060048201526011602482015270436f756c646e277420776974686472617760781b604482015290519081900360640190fd5b50565b611c276114c6565b611c3057600080fd5b611c1c81612699565b60008073d4dec04810fcb50ac2332b332a333f7211162c266392d66313856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c8b57600080fd5b505af4158015611c9f573d6000803e3d6000fd5b505050506040513d6020811015611cb557600080fd5b5051604080516328c92b4960e21b815260048101879052905191925060009173d4dec04810fcb50ac2332b332a333f7211162c269163a324ad24916024808301926020929190829003018186803b158015611d0f57600080fd5b505af4158015611d23573d6000803e3d6000fd5b505050506040513d6020811015611d3957600080fd5b505184019050600c60ff82161115611d6257600182019150600c8160ff1681611d5e57fe5b0690505b600073d4dec04810fcb50ac2332b332a333f7211162c266365c72840876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611db357600080fd5b505af4158015611dc7573d6000803e3d6000fd5b505050506040513d6020811015611ddd57600080fd5b5051604080516304646cc560e51b815261ffff8616600482015260ff808616602483015283166044820152905191925073d4dec04810fcb50ac2332b332a333f7211162c2691638c8d98a091606480820192602092909190829003018186803b158015611e4957600080fd5b505af4158015611e5d573d6000803e3d6000fd5b505050506040513d6020811015611e7357600080fd5b50519695505050505050565b6000611e896129c6565b506001600160a01b038083166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c0820152611f0c612a02565b611f1982602001516122f6565b90506000611f298383600161244c565b90506000611f3f84602001518560800151611c39565b9050611f49612a02565b611f52826122f6565b905060015b856080015160ff168160ff1611611ffb576020850151855190820190600c60ff83161115611f8c57600101600c60ff83160691505b6000611fa48360ff168361ffff168b608001516115a7565b9050846020015160ff168360ff161415611fdc57611fcc87866040015160ff16836001612543565b9950505050505050505050610d6f565b611fea8782848660016125f9565b96505060019092019150611f579050565b505050505050919050565b60006116dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612707565b60008261205757506000610cd0565b508181028183828161206557fe5b0414610cd057600080fd5b60006116dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061279e565b60006120bc6129c6565b506001600160a01b038083166000908152600c6020908152604091829020825160e081018452815460ff9081161515825260018301549382019390935260028201549381019390935260038101548083161515606085015261010090049091166080830152600481015460a08301526005015490911660c082015261213f612a02565b61214c82602001516122f6565b9050600061215c8383600061244c565b9050600061217284602001518560800151611c39565b905061217c612a02565b612185826122f6565b905060015b856080015160ff168160ff1611612231576020850151855190820190600c60ff831611156121bf57600101600c60ff83160691505b60006121d78360ff168361ffff168b608001516115a7565b9050846020015160ff168360ff16141561220f576122038960400151866040015160ff16836000612543565b87019650505050612231565b612221896040015182848660006125f9565b969096019550505060010161218a565b5060a085015161224890849063ffffffff61200616565b979650505050505050565b600062015180600160ff84161415612282574261227782600f63ffffffff61204816565b850111915050610cd0565b8260ff16600214156122a0574261227782601e63ffffffff61204816565b8260ff16600314156122be574261227782602d63ffffffff61204816565b426122d082605a63ffffffff61204816565b85011191505092915050565b81810182811015610cd057600080fd5b600254600a0a0290565b6122fe612a02565b6000808061230b85612803565b61ffff16845261231c6107b2612893565b845161232b9061ffff16612893565b039150816301e285000283019250816107b285600001510361ffff16036301e1338002830192506000600191505b600c8260ff16116123a3576123728286600001516128ae565b60ff16620151800290508584820111156123945760ff821660208601526123a3565b92830192600190910190612359565b600191505b6123ba856020015186600001516128ae565b60ff168260ff16116123f5578584620151800111156123e15760ff821660408601526123f5565b6201518093909301926001909101906123a8565b50505050919050565b60008061241f846020015160ff16856000015161ffff1688608001516115a7565b9050600084604001518603905061243f87604001518260ff168487612543565b925050505b949350505050565b60208083015183516040805163591c568760e11b815260ff909316600484015261ffff909116602483015251600092839273d4dec04810fcb50ac2332b332a333f7211162c269263b238ad0e92604480840193919291829003018186803b1580156124b657600080fd5b505af41580156124ca573d6000803e3d6000fd5b505050506040513d60208110156124e057600080fd5b50516020850151855160808801519293506000926125069260ff169161ffff16906115a7565b9050600085604001518303905061224887604001518260ff168488612543565b60008160ff168360ff16101561253d575081610cd0565b50919050565b600081156125ca57701d6329f1c35ca4bfabb9f56100000000005b600a85111561259e576125918161063c600a6125828861271063ffffffff6122dc16565b8a91900a63ffffffff61204816565b9550600a8503945061255e565b6125bf856127100a61063c87612582612710896122dc90919063ffffffff16565b955085915050612444565b6125f061271061063c856125e4898963ffffffff61204816565b9063ffffffff61204816565b95945050505050565b6040805163591c568760e11b815260ff8416600482015261ffff851660248201529051600091829173d4dec04810fcb50ac2332b332a333f7211162c269163b238ad0e916044808301926020929190829003018186803b15801561265c57600080fd5b505af4158015612670573d6000803e3d6000fd5b505050506040513d602081101561268657600080fd5b505160ff16905061224887828886612543565b6001600160a01b0381166126ac57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156127965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561275b578181015183820152602001612743565b50505050905090810190601f1680156127885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836127ed5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561275b578181015183820152602001612743565b5060008385816127f957fe5b0495945050505050565b6000806107b26301e133808404810190829061281e90612893565b61282b8361ffff16612893565b039050806301e285000283019250806107b2830361ffff16036301e1338002830192505b8483111561288b5761286360018303612974565b15612876576301e2850083039250612880565b6301e13380830392505b60018203915061284f565b509392505050565b60001901600061019082046064830460048404030192915050565b60008260ff16600114806128c557508260ff166003145b806128d357508260ff166005145b806128e157508260ff166007145b806128ef57508260ff166008145b806128fd57508260ff16600a145b8061290b57508260ff16600c145b156129185750601f610cd0565b8260ff166004148061292d57508260ff166006145b8061293b57508260ff166009145b8061294957508260ff16600b145b156129565750601e610cd0565b61295f82612974565b1561296c5750601d610cd0565b50601c610cd0565b6000600382161561298757506000610d6f565b606461ffff83160661ffff166000146129a257506001610d6f565b61019061ffff83160661ffff166000146129be57506000610d6f565b506001919050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60408051606081018252600080825260208201819052918101919091529056fe596f752063616e206f6e6c792073657420697420666f722074686973206d6f6e7468206f72206120667574757265206d6f6e7468436f6d706f756e646572732063616e2774207769746864726177206265666f726520746865792066696e697368207468656972207374616b65a264697066735822122076d4617847b5164b6653fe2f8a25c41e63396ca613a11b88597c8b74d3171ca464736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d379700999f4805ce80aa32db46a94df645611080000000000000000000000006878e597350ba74ab65ae9afffe0d25702a844c9
-----Decoded View---------------
Arg [0] : _token (address): 0xd379700999F4805Ce80aa32DB46A94dF64561108
Arg [1] : _burnAddress (address): 0x6878E597350Ba74ab65ae9aFfFe0D25702A844c9
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d379700999f4805ce80aa32db46a94df64561108
Arg [1] : 0000000000000000000000006878e597350ba74ab65ae9afffe0d25702a844c9
Deployed Bytecode Sourcemap
8251:20621:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8251:20621:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;12684:2548:0;;;:::i;:::-;;8695:35;;;:::i;:::-;;;;;;;;;;;;;;;;8737:38;;;:::i;22983:2017::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;22983:2017:0;;;;;;;;:::i;9007:39::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9007:39:0;-1:-1:-1;;;;;9007:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9007:39:0;;;;;;;;;;;;;;8642:46;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8642:46:0;;;;:::i;25200:189::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25200:189:0;-1:-1:-1;;;;;25200:189:0;;:::i;26935:107::-;;;:::i;12131:541::-;;;:::i;26634:144::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26634:144:0;;;;;;-1:-1:-1;;;;;26634:144:0;;:::i;10267:1852::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;10267:1852:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10267:1852:0;;:::i;8563:30::-;;;:::i;5266:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;5266:79:0;;;;;;;;;;;;;;5601:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;27680:233;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;27680:233:0;;;;;;;;;;;;;;;;;:::i;26790:137::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26790:137:0;;:::i;25854:208::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25854:208:0;;;;:::i;27925:944::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27925:944:0;;;;;;;;;;;;;;:::i;19314:2202::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;19314:2202:0;;;;;;;;:::i;27054:614::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;27054:614:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8526:30::-;;;:::i;8600:35::-;;;:::i;26074:311::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;26074:311:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26397:229::-;;;:::i;5893:109::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5893:109:0;-1:-1:-1;;;;;5893:109:0;;:::i;12684:2548::-;12740:10;12733:18;;;;:6;:18;;;;;:25;;;12725:51;;;;;-1:-1:-1;;;12725:51:0;;;;;;;;;;;;-1:-1:-1;;;12725:51:0;;;;;;;;;;;;;;;12797:18;;:::i;:::-;-1:-1:-1;12825:10:0;12818:18;;;;:6;:18;;;;;;;;12797:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12797:39:0;;;;;;;12818:18;12878:62;;:25;:62::i;:::-;12857:83;;12965:10;12959:3;:16;:35;;;;12980:5;:14;;;12979:15;12959:35;12951:69;;;;;-1:-1:-1;;;12951:69:0;;;;;;;;;;;;-1:-1:-1;;;12951:69:0;;;;;;;;;;;;;;;13041:20;13072:17;13100:20;13145:5;:14;;;13141:903;;;13191:45;13225:10;13191:33;:45::i;:::-;13176:60;;13301:37;13318:5;:19;;;13301:12;:16;;:37;;;;:::i;:::-;13286:52;-1:-1:-1;13365:28:0;13389:3;13365:19;13286:52;13382:1;13365:19;:16;:19;:::i;:::-;:23;:28;:23;:28;:::i;:::-;13353:40;;13141:903;;;13462:10;13456:3;:16;13452:509;;;13508:48;13545:10;13508:36;:48::i;:::-;13493:63;;13452:509;;;13627:55;13666:10;13678:3;13627:38;:55::i;:::-;13612:70;;13803:13;13819:49;13832:5;:15;;;13849:5;:18;;;13819:12;:49::i;:::-;:58;;13876:1;13819:58;;;13871:2;13819:58;13803:74;-1:-1:-1;13911:34:0;13941:3;13911:25;:12;:25;;;;:16;:25;:::i;:34::-;13896:49;;13452:509;;13987:28;14011:3;13987:19;:12;14004:1;13987:19;:16;:19;:::i;:28::-;13975:40;;13141:903;14064:21;14088:27;:9;14102:12;14088:27;:13;:27;:::i;:::-;14064:51;;14126:23;14152:56;14194:13;14152:37;14169:5;:19;;;14152:12;:16;;:37;;;;:::i;:::-;:41;:56;:41;:56;:::i;:::-;14126:82;-1:-1:-1;14294:43:0;14315:21;:13;14333:2;14315:21;:17;:21;:::i;:::-;14294:16;;;:43;:20;:43;:::i;:::-;14275:16;:62;14378:19;14400:28;14425:2;14400:20;:13;14418:1;14400:20;:17;:20;:::i;:28::-;14457:5;;14472:12;;14378:50;;-1:-1:-1;;;;;;14457:5:0;;;;:14;;14472:12;14486:39;14378:50;14486:26;:39::i;:::-;14457:69;;;;;;;;;;;;;-1:-1:-1;;;;;14457:69:0;-1:-1:-1;;;;;14457:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14457:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14457:69:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14457:69:0;14449:106;;;;;-1:-1:-1;;;14449:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14571:36;;;;;;;;14583:10;;14571:36;;;;;;;;;;14634:11;;:18;;14650:1;14634:18;:15;:18;:::i;:::-;14620:11;:32;14693:19;;;;14677:11;;:36;;;:15;:36;:::i;:::-;14663:11;:50;14774:18;;;;14760:33;;;;;;:13;:33;;;;;;:40;;14798:1;14760:40;:37;:40;:::i;:::-;14738:18;;;;14724:33;;;;;;:13;:33;;;;;:76;14815:14;;;;14811:170;;;14865:16;;:23;;14886:1;14865:23;:20;:23;:::i;:::-;14846:16;:42;14811:170;;;14943:19;;:26;;14967:1;14943:26;:23;:26;:::i;:::-;14921:19;:48;14811:170;15005:10;14998:18;;;;:6;:18;;;;;14991:25;;-1:-1:-1;;14991:25:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14991:25:0;;;;;;;;;;;;;;-1:-1:-1;;;;;;14991:25:0;;;15037:5;-1:-1:-1;;;;;15037:5:0;;:14;;15064:43;15091:15;15064:26;:43::i;:::-;15037:71;;;;;;;;;;;;;-1:-1:-1;;;;;15037:71:0;-1:-1:-1;;;;;15037:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15037:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15037:71:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15037:71:0;15029:112;;;;;-1:-1:-1;;;15029:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15167:57;;;;;;;;;;;;;;15181:10;;15167:57;;;;;;;;12684:2548;;;;;;;;:::o;8695:35::-;;;;:::o;8737:38::-;;;;:::o;22983:2017::-;23077:7;23097:18;;:::i;:::-;-1:-1:-1;;;;;;23118:16:0;;;;;;;:6;:16;;;;;;;;;23097:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23155:25;;:::i;:::-;23183:36;23203:5;:15;;;23183:19;:36::i;:::-;23155:64;;23230:23;;:::i;:::-;23256:25;23276:4;23256:19;:25::i;:::-;23230:51;;23374:5;:11;;;23357:28;;:7;:13;;;:28;;;23353:219;;;23402:13;23418:66;23452:5;23459;:9;;;23470:7;23479:4;23418:33;:66::i;:::-;23402:82;;23507:26;23517:5;:15;;;23507:5;:9;;:26;;;;:::i;:::-;23499:34;-1:-1:-1;23548:12:0;;-1:-1:-1;;;;23548:12:0;23353:219;23651:13;23667:52;23698:5;23705:7;23714:4;23667:30;:52::i;:::-;23651:68;;23740:23;23766:62;23792:5;:15;;;23809:5;:18;;;23766:25;:62::i;:::-;23740:88;;23839:26;;:::i;:::-;23868:36;23888:15;23868:19;:36::i;:::-;23839:65;-1:-1:-1;23937:1:0;23925:1068;23942:5;:18;;;23939:21;;:1;:21;;;23925:1068;;24002:13;;;;24055:12;;24002:17;;;;24101:2;24086:17;;;;24082:125;;;24139:1;24124:16;24189:2;24174:17;;;;24159:32;;24082:125;24223:11;24237:53;24244:12;24237:53;;24258:11;24237:53;;24271:5;:18;;;24237:6;:53::i;:::-;24223:67;;24372:8;:14;;;24356:30;;:12;:30;;;24352:471;;;24407:13;24423:32;24431:8;:12;;;24445:5;:9;;;24423:7;:32::i;:::-;24407:48;;24537:43;24554:5;24561:7;24537:43;;24570:3;24575:4;24537:16;:43::i;:::-;24530:50;;;;;;;;;;;;;;;24352:471;24635:5;:11;;;24619:27;;:12;:27;;;24615:208;;;24762:45;24779:5;24786;:9;;;24762:45;;24797:3;24802:4;24762:16;:45::i;:::-;24755:52;;;;;;;;;;;;;;24615:208;24913:68;24937:5;24944:3;24949:11;24962:12;24976:4;24913:23;:68::i;:::-;24905:76;-1:-1:-1;;23961:3:0;;;;;-1:-1:-1;23925:1068:0;;-1:-1:-1;23925:1068:0;;;22983:2017;;;;;;;;;;;:::o;9007:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9007:39:0;;:::o;8642:46::-;;;;;;;;;;;;;:::o;25200:189::-;-1:-1:-1;;;;;25325:15:0;;25272:7;25325:15;;;:6;:15;;;;;:25;;;;25352:28;;;;;25299:82;;25325:25;25352:28;;;;;25299:25;:82::i;:::-;25292:89;;25200:189;;;;:::o;26935:107::-;27016:18;;26935:107;:::o;12131:541::-;12184:10;12177:18;;;;:6;:18;;;;;:25;;;12169:51;;;;;-1:-1:-1;;;12169:51:0;;;;;;;;;;;;-1:-1:-1;;;12169:51:0;;;;;;;;;;;;;;;12247:10;12240:18;;;;:6;:18;;;;;:27;;;;;12239:28;12231:98;;;;-1:-1:-1;;;12231:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12371:10;12342:19;12364:18;;;:6;:18;;;;;;12409:55;;12460:3;12409:38;:55::i;:::-;12475:15;;;:24;;;;;;-1:-1:-1;12528:5:0;12393:71;;-1:-1:-1;;;;;;12528:5:0;:14;12543:10;12555:33;12393:71;12555:26;:33::i;:::-;12528:61;;;;;;;;;;;;;-1:-1:-1;;;;;12528:61:0;-1:-1:-1;;;;;12528:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12528:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12528:61:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12528:61:0;12520:91;;;;;-1:-1:-1;;;12520:91:0;;;;;;;;;;;;-1:-1:-1;;;12520:91:0;;;;;;;;;;;;;;;12629:35;;;;;;;;12646:10;;12629:35;;;;;;;;;;12131:541;;:::o;26634:144::-;5478:9;:7;:9::i;:::-;5470:18;;12:1:-1;9;2:12;5470:18:0;26738:5:::1;::::0;:31:::1;::::0;;-1:-1:-1;;;26738:31:0;;-1:-1:-1;;;;;26738:31:0;;::::1;;::::0;::::1;::::0;;;;;;;;;:5;;;::::1;::::0;:14:::1;::::0;:31;;;;;::::1;::::0;;;;;;;;:5:::1;::::0;:31;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;26738:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;26738:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;26738:31:0;26730:40:::1;;12:1:-1;9::::0;2:12:::1;26730:40:0;26634:144:::0;;:::o;10267:1852::-;10395:10;10388:18;;;;:6;:18;;;;;:25;;;10387:26;10379:63;;;;;-1:-1:-1;;;10379:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10461:35;10482:13;10461:20;:35::i;:::-;10453:69;;;;;-1:-1:-1;;;10453:69:0;;;;;;;;;;;;-1:-1:-1;;;10453:69:0;;;;;;;;;;;;;;;10552:23;:21;:23::i;:::-;10541:7;:34;;10533:62;;;;;-1:-1:-1;;;10533:62:0;;;;;;;;;;;;-1:-1:-1;;;10533:62:0;;;;;;;;;;;;;;;10631:5;;-1:-1:-1;;;;;10631:5:0;10624:26;10651:10;10671:4;10678:35;10705:7;10678:26;:35::i;:::-;10624:90;;;;;;;;;;;;;-1:-1:-1;;;;;10624:90:0;-1:-1:-1;;;;;10624:90:0;;;;;;-1:-1:-1;;;;;10624:90:0;-1:-1:-1;;;;;10624:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10624:90:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10624:90:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10624:90:0;10616:127;;;;;-1:-1:-1;;;10616:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10768:23:0;;;;;;:51;;-1:-1:-1;;;;;;10795:17:0;;;;;;:6;:17;;;;;:24;;;10768:51;10764:460;;;-1:-1:-1;;;;;10863:17:0;;10836:24;10863:17;;;:6;:17;;;;;:31;;;:47;;10906:3;;10863:38;;10899:1;10863:38;:35;:38;:::i;:47::-;-1:-1:-1;;;;;10930:87:0;;10967:17;;;;:6;:17;;;;;;;;;:31;;;10930:87;;;;;;;;;;;;;10836:74;;-1:-1:-1;10930:87:0;;;;;;;;;;;;-1:-1:-1;;;;;11032:17:0;;;;;;:6;:17;;;;;:31;;:51;;;;;;11112:11;;:33;;11067:16;11112:33;:15;:33;:::i;:::-;11098:11;:47;-1:-1:-1;10764:460:0;;;-1:-1:-1;11200:12:0;;-1:-1:-1;;;;;11200:12:0;10764:460;11236:18;;:::i;:::-;-1:-1:-1;11257:376:0;;;;;;;;11271:4;11257:376;;;11325:3;11257:376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11257:376:0;;;;;;-1:-1:-1;;;;;11257:376:0;;;;;;;;;11689:10;11682:18;;:6;:18;;;;;;;:26;;;;-1:-1:-1;;11682:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11682:26:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11682:26:0;;;;;;;;;11733:11;;11257:376;;11733:18;;:11;:15;:18::i;:::-;11719:11;:32;11776:11;;:24;;11792:7;11776:24;:15;:24;:::i;:::-;11762:11;:38;11811:28;;;;;;;:13;:28;;;;;:33;;11843:1;11811:33;;;11855:165;;;;11904:16;;:23;;11925:1;11904:23;:20;:23;:::i;:::-;11885:16;:42;11855:165;;;11982:19;;:26;;12006:1;11982:26;:23;:26;:::i;:::-;11960:19;:48;11855:165;12045:66;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12045:66:0;;;;;;;;12054:10;;12045:66;;;;;;;;;;10267:1852;;;;;:::o;8563:30::-;;;;:::o;5266:79::-;5304:7;5331:6;-1:-1:-1;;;;;5331:6:0;5266:79;:::o;5601:115::-;5641:4;5679:6;;-1:-1:-1;;;;;5679:6:0;5665:10;:20;;:43;;-1:-1:-1;5702:6:0;;-1:-1:-1;;;;;5702:6:0;5689:9;:19;5665:43;5658:50;;5601:115;:::o;27680:233::-;5478:9;:7;:9::i;:::-;5470:18;;12:1:-1;9;2:12;5470:18:0;27792:12:::1;:20:::0;;;;27823:12:::1;:20:::0;;;;27854:12:::1;:20:::0;27885:12:::1;:20:::0;27680:233::o;26790:137::-;5478:9;:7;:9::i;:::-;5470:18;;12:1:-1;9;2:12;5470:18:0;26879::::1;:40:::0;26790:137::o;25854:208::-;25939:14;;25914:4;;25939:14;;:24;;;;;25957:1;:6;;25962:1;25957:6;25939:24;25938:56;;;-1:-1:-1;25969:14:0;;;;;;;:24;;;;;25987:1;:6;;25992:1;25987:6;25969:24;25938:86;;;-1:-1:-1;25999:14:0;;;;;;;:24;;;;;26017:1;:6;;26022:1;26017:6;25999:24;25938:116;;;-1:-1:-1;26029:14:0;;;;;;;:24;;;;-1:-1:-1;;26047:6:0;;26052:1;26047:6;;25854:208::o;27925:944::-;28011:7;28035:10;;;:4;:10;;;;;;;;:17;;;;;;;;:24;;;28031:461;;;28080:12;:17;;28096:1;28080:17;28076:405;;;-1:-1:-1;28125:10:0;;;;:4;:10;;;;;;;;:17;;;;;;;;:22;;;28118:29;;28076:405;28186:12;:17;;28202:1;28186:17;28182:299;;;-1:-1:-1;28231:10:0;;;;:4;:10;;;;;;;;:17;;;;;;;;:22;;;28224:29;;28182:299;28292:12;:17;;28308:1;28292:17;28288:193;;;-1:-1:-1;28337:10:0;;;;:4;:10;;;;;;;;:17;;;;;;;;:22;;;28330:29;;28288:193;28398:12;:17;;28414:1;28398:17;28394:87;;;-1:-1:-1;28443:10:0;;;;:4;:10;;;;;;;;:17;;;;;;;;:22;;;28436:29;;28394:87;28516:12;:17;;28532:1;28516:17;28512:321;;;-1:-1:-1;28557:12:0;;28550:19;;28512:321;28600:12;:17;;28616:1;28600:17;28596:237;;;-1:-1:-1;28641:12:0;;28634:19;;28596:237;28684:12;:17;;28700:1;28684:17;28680:153;;;-1:-1:-1;28725:12:0;;28718:19;;28680:153;28768:12;:17;;28784:1;28768:17;28764:69;;;-1:-1:-1;28809:12:0;;28802:19;;28764:69;-1:-1:-1;28860:1:0;27925:944;;;;;;:::o;19314:2202::-;19415:7;19435:18;;:::i;:::-;-1:-1:-1;;;;;;19456:16:0;;;;;;;:6;:16;;;;;;;;;19435:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19493:25;;:::i;:::-;19521:36;19541:5;:15;;;19521:19;:36::i;:::-;19493:64;;19568:23;;:::i;:::-;19594:25;19614:4;19594:19;:25::i;:::-;19568:51;;19712:5;:11;;;19695:28;;:7;:13;;;:28;;;19691:220;;;19740:13;19756:67;19790:5;19797;:9;;;19808:7;19817:5;19756:33;:67::i;19691:220::-;19990:13;20006:53;20037:5;20044:7;20053:5;20006:30;:53::i;:::-;19990:69;;20080:23;20106:62;20132:5;:15;;;20149:5;:18;;;20106:25;:62::i;:::-;20080:88;;20179:26;;:::i;:::-;20208:36;20228:15;20208:19;:36::i;:::-;20179:65;-1:-1:-1;20277:1:0;20265:1166;20282:5;:18;;;20279:21;;:1;:21;;;20265:1166;;20342:13;;;;20395:12;;20342:17;;;;20441:2;20426:17;;;;20422:125;;;20479:1;20464:16;20529:2;20514:17;;;;20499:32;;20422:125;20563:11;20577:53;20584:12;20577:53;;20598:11;20577:53;;20611:5;:18;;;20577:6;:53::i;:::-;20563:67;;20712:8;:14;;;20696:30;;:12;:30;;;20692:553;;;20747:13;20763:32;20771:8;:12;;;20785:5;:9;;;20763:7;:32::i;:::-;20747:48;;20879:58;20896:5;:19;;;20917:7;20879:58;;20926:3;20931:5;20879:16;:58::i;:::-;20870:67;;;;20956:5;;;;;;20692:553;21016:5;:11;;;21000:27;;:12;:27;;;20996:249;;;21145:60;21162:5;:19;;;21183:5;:9;;;21145:60;;21194:3;21199:5;21145:16;:60::i;:::-;21136:69;;;;21224:5;;;;;20996:249;21336:83;21360:5;:19;;;21381:3;21386:11;21399:12;21413:5;21336:23;:83::i;:::-;21327:92;;;;;-1:-1:-1;;;20301:3:0;;20265:1166;;;-1:-1:-1;21469:15:0;;;;21459:26;;:5;;:26;:9;:26;:::i;:::-;21451:34;19314:2202;-1:-1:-1;;;;;;;;;19314:2202:0:o;27054:614::-;5478:9;:7;:9::i;:::-;5470:18;;12:1:-1;9;2:12;5470:18:0;27190::::1;27211:4;:12;27224:3;27211:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27211:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27211:17:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27211:17:0;27261:18:::1;::::0;;-1:-1:-1;;;27261:18:0;;27275:3:::1;27261:18;::::0;::::1;::::0;;;27190:38:::1;::::0;;::::1;::::0;-1:-1:-1;27239:19:0::1;::::0;27261:4:::1;::::0;:13:::1;::::0;:18;;;;;27211:17:::1;::::0;27261:18;;;;;;;:4;:18;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;27261:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27261:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27261:18:0;27239:40:::1;;::::0;-1:-1:-1;27309:21:0;;::::1;::::0;::::1;::::0;:45:::1;;;27344:10;27335:5;:19;27309:45;27308:69;;;;27367:10;27359:5;:18;27308:69;27300:134;;;;-1:-1:-1::0;;;27300:134:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;27455:11:0::1;::::0;;;:4:::1;:11;::::0;;;;;;;:19;;;;;;;;;;:33;;-1:-1:-1;;27455:33:0::1;27484:4;27455:33:::0;;::::1;::::0;;27499:24;::::1;:32:::0;;;;27542:24:::1;::::0;::::1;:32:::0;27585:24:::1;::::0;::::1;:32:::0;;;;27628:24:::1;;:32:::0;27054:614::o;8526:30::-;;;;:::o;8600:35::-;;;;:::o;26074:311::-;5478:9;:7;:9::i;:::-;5470:18;;12:1:-1;9;2:12;5470:18:0;26216:14:::1;:32:::0;;-1:-1:-1;;26216:32:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;26259:32:0::1;26216;26259::::0;::::1;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;26302:32:0::1;::::0;;::::1;;::::0;;;::::1;;-1:-1:-1::0;;26345:32:0::1;::::0;;::::1;;::::0;;;::::1;;::::0;;26074:311::o;26397:229::-;5478:9;:7;:9::i;:::-;5470:18;;12:1:-1;9;2:12;5470:18:0;26468:16:::1;::::0;;26451:14:::1;26495:20:::0;;;-1:-1:-1;26534:5:0;-1:-1:-1;;;;;26534:5:0::1;:14;26549:10;26561:34;26468:16:::0;26561:26:::1;:34::i;:::-;26534:62;;;;;;;;;;;;;-1:-1:-1::0;;;;;26534:62:0::1;-1:-1:-1::0;;;;;26534:62:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;26534:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;26534:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;26534:62:0;26526:92:::1;;;::::0;;-1:-1:-1;;;26526:92:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;26526:92:0;;;;;;;;;;;;;::::1;;5499:1;26397:229::o:0;5893:109::-;5478:9;:7;:9::i;:::-;5470:18;;12:1:-1;9;2:12;5470:18:0;5966:28:::1;5985:8;5966:18;:28::i;25401:441::-:0;25500:7;25520:11;25534:4;:12;25547:10;25534:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25534:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25534:24:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25534:24:0;25583:25;;;-1:-1:-1;;;25583:25:0;;;;;;;;;;25534:24;;-1:-1:-1;25569:11:0;;25583:4;;:13;;:25;;;;;25534:24;;25583:25;;;;;;;:4;:25;;;2:2:-1;;;;27:1;24;17:12;2:2;25583:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25583:25:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25583:25:0;25619:22;;;-1:-1:-1;25664:2:0;25656:10;;;;25652:85;;;25691:1;25683:9;;;;25723:2;25715:5;:10;;;;;;;;25707:18;;25652:85;25747:9;25759:4;:11;25771:10;25759:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25759:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25759:23:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25759:23:0;25800:34;;;-1:-1:-1;;;25800:34:0;;;;;;;;;;;;;;;;;;;;;;;;;25759:23;;-1:-1:-1;25800:4:0;;:16;;:34;;;;;25759:23;;25800:34;;;;;;;;:4;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;25800:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25800:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25800:34:0;;25401:441;-1:-1:-1;;;;;;25401:441:0:o;21606:1310::-;21690:7;21710:18;;:::i;:::-;-1:-1:-1;;;;;;21731:16:0;;;;;;;:6;:16;;;;;;;;;21710:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21768:25;;:::i;:::-;21796:36;21816:5;:15;;;21796:19;:36::i;:::-;21768:64;;21853:13;21869:52;21900:5;21907:7;21916:4;21869:30;:52::i;:::-;21853:68;;21942:23;21968:62;21994:5;:15;;;22011:5;:18;;;21968:25;:62::i;:::-;21942:88;;22041:26;;:::i;:::-;22070:36;22090:15;22070:19;:36::i;:::-;22041:65;-1:-1:-1;22139:1:0;22127:782;22144:5;:18;;;22141:21;;:1;:21;;;22127:782;;22204:13;;;;22257:12;;22204:17;;;;22303:2;22288:17;;;;22284:125;;;22341:1;22326:16;22391:2;22376:17;;;;22361:32;;22284:125;22425:11;22439:53;22446:12;22439:53;;22460:11;22439:53;;22473:5;:18;;;22439:6;:53::i;:::-;22425:67;;22577:8;:14;;;22561:30;;:12;:30;;;22557:182;;;22675:48;22692:5;22699:8;:12;;;22675:48;;22713:3;22718:4;22675:16;:48::i;:::-;22668:55;;;;;;;;;;;;;22557:182;22829:68;22853:5;22860:3;22865:11;22878:12;22892:4;22829:23;:68::i;:::-;22821:76;-1:-1:-1;;22163:3:0;;;;;-1:-1:-1;22127:782:0;;-1:-1:-1;22127:782:0;;;21606:1310;;;;;;;;:::o;7403:136::-;7461:7;7488:43;7492:1;7495;7488:43;;;;;;;;;;;;;;;;;:3;:43::i;7188:203::-;7246:9;7272:6;7268:47;;-1:-1:-1;7302:1:0;7295:8;;7268:47;-1:-1:-1;7329:5:0;;;7333:1;7329;:5;:1;7353:5;;;;;:10;7345:19;;12:1:-1;9;2:12;7755:132:0;7813:7;7840:39;7844:1;7847;7840:39;;;;;;;;;;;;;;;;;:3;:39::i;17749:1449::-;17836:7;17856:18;;:::i;:::-;-1:-1:-1;;;;;;17877:16:0;;;;;;;:6;:16;;;;;;;;;17856:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17914:25;;:::i;:::-;17942:36;17962:5;:15;;;17942:19;:36::i;:::-;17914:64;;17999:13;18015:53;18046:5;18053:7;18062:5;18015:30;:53::i;:::-;17999:69;;18089:23;18115:62;18141:5;:15;;;18158:5;:18;;;18115:25;:62::i;:::-;18089:88;;18188:26;;:::i;:::-;18217:36;18237:15;18217:19;:36::i;:::-;18188:65;-1:-1:-1;18286:1:0;18274:839;18291:5;:18;;;18288:21;;:1;:21;;;18274:839;;18351:13;;;;18404:12;;18351:17;;;;18450:2;18435:17;;;;18431:125;;;18488:1;18473:16;18538:2;18523:17;;;;18508:32;;18431:125;18572:11;18586:53;18593:12;18586:53;;18607:11;18586:53;;18620:5;:18;;;18586:6;:53::i;:::-;18572:67;;18724:8;:14;;;18708:30;;:12;:30;;;18704:223;;;18824:63;18841:5;:19;;;18862:8;:12;;;18824:63;;18876:3;18881:5;18824:16;:63::i;:::-;18815:72;;;;18906:5;;;;;18704:223;19018:83;19042:5;:19;;;19063:3;19068:11;19081:12;19095:5;19018:23;:83::i;:::-;19009:92;;;;;-1:-1:-1;;;18310:3:0;;18274:839;;;-1:-1:-1;19151:15:0;;;;19141:26;;:5;;:26;:9;:26;:::i;:::-;19133:34;17749:1449;-1:-1:-1;;;;;;;17749:1449:0:o;15391:489::-;15477:4;15508:12;15562:1;15545:18;;;;15541:88;;;15614:3;15600:11;:3;15608:2;15600:11;:7;:11;:::i;:::-;15587:10;:24;:30;15580:37;;;;;15541:88;15643:13;:18;;15660:1;15643:18;15639:88;;;15712:3;15698:11;:3;15706:2;15698:11;:7;:11;:::i;15639:88::-;15741:13;:18;;15758:1;15741:18;15737:88;;;15810:3;15796:11;:3;15804:2;15796:11;:7;:11;:::i;15737:88::-;15869:3;15855:11;:3;15863:2;15855:11;:7;:11;:::i;:::-;15842:10;:24;:30;15835:37;;;15391:489;;;;:::o;7038:142::-;7122:5;;;7146:6;;;;7138:15;;12:1:-1;9;2:12;15244:135:0;15363:8;;15357:2;:14;15347:24;;15244:135::o;1324:1147::-;1387:15;;:::i;:::-;1415:24;;;1520:18;1528:9;1520:7;:18::i;:::-;1510:28;;;;1582;351:4;1582:15;:28::i;:::-;1571:7;;1555:24;;;;:15;:24::i;:::-;:55;1549:61;;1669:3;304:8;1646:26;1623:49;;;;1749:3;351:4;1725:2;:7;;;:21;:27;;;252:8;1706:47;1683:70;;;;1784:19;1823:1;1819:5;;1814:336;1831:2;1826:1;:7;;;1814:336;;1893:26;1908:1;1911:2;:7;;;1893:14;:26::i;:::-;1876:43;;208:5;1876:43;1859:60;;1981:9;1959:19;1942:14;:36;:48;1938:145;;;2019:12;;;:8;;;:12;2058:5;;1938:145;2101:37;;;;1835:3;;;;;1814:336;;;2187:1;2183:5;;2178:286;2195:33;2210:2;:8;;;2220:2;:7;;;2195:14;:33::i;:::-;2190:38;;:1;:38;;;2178:286;;2297:9;2275:19;208:5;2258:36;:48;2254:143;;;2335:10;;;:6;;;:10;2372:5;;2254:143;208:5;2415:37;;;;;2230:3;;;;;2178:286;;;1324:1147;;;;;;;:::o;15892:385::-;16041:7;16061:11;16075:57;16082:8;:14;;;16075:57;;16098:8;:13;;;16075:57;;16113:5;:18;;;16075:6;:57::i;:::-;16061:71;;16143:15;16173:8;:12;;;16161:9;:24;16143:42;;16203:66;16220:5;:19;;;16241:9;16203:66;;16252:3;16257:11;16203:16;:66::i;:::-;16196:73;;;;15892:385;;;;;;;:::o;16285:444::-;16472:14;;;;;16488:13;;16452:50;;;-1:-1:-1;;;16452:50:0;;;;;;;;;;;;;;;;;;;16414:7;;;;16452:4;;:19;;:50;;;;;16472:14;;16452:50;;;;;;:4;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;16452:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16452:50:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16452:50:0;;16534:14;;;16550:13;;16565:18;;;;16452:50;;-1:-1:-1;16513:11:0;;16527:57;;;;;;;;:6;:57::i;:::-;16513:71;;16595:15;16625:8;:12;;;16613:9;:24;16595:42;;16655:66;16672:5;:19;;;16693:9;16655:66;;16704:3;16709:11;16655:16;:66::i;25012:176::-;25076:5;25105:4;25098:11;;:4;:11;;;25094:55;;;-1:-1:-1;25133:4:0;25126:11;;25094:55;-1:-1:-1;25176:4:0;25012:176;-1:-1:-1;25012:176:0:o;17053:604::-;17174:7;17198:11;17194:354;;;17246:11;17272:159;17290:2;17278:9;:14;17272:159;;;17328:53;17371:9;17328:38;17363:2;17345:14;:3;17353:5;17345:14;:7;:14;:::i;:::-;17328:12;;17345:20;;17328:38;:16;:38;:::i;:53::-;17313:68;;17413:2;17400:15;;;;17272:159;;;17467:69;17526:9;17517:5;:18;17467:45;17502:9;17484:14;17492:5;17484:3;:7;;:14;;;;:::i;17467:69::-;17452:84;;;17445:91;;;;;17194:354;17602:47;17643:5;17602:36;17634:3;17602:27;:12;17619:9;17602:27;:16;:27;:::i;:::-;:31;:36;:31;:36;:::i;:47::-;17595:54;17053:604;-1:-1:-1;;;;;17053:604:0:o;16741:300::-;16920:34;;;-1:-1:-1;;;16920:34:0;;;;;;;;;;;;;;;;;;16880:7;;;;16920:4;;:19;;:34;;;;;;;;;;;;;;:4;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;16920:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16920:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16920:34:0;16900:54;;;-1:-1:-1;16972:61:0;16989:13;16900:54;17015:4;17021:11;16972:16;:61::i;6152:187::-;-1:-1:-1;;;;;6226:22:0;;6218:31;;12:1:-1;9;2:12;6218:31:0;6286:6;;;6265:38;;-1:-1:-1;;;;;6265:38:0;;;;6286:6;;;6265:38;;;6314:6;:17;;-1:-1:-1;;;;;;6314:17:0;-1:-1:-1;;;;;6314:17:0;;;;;;;;;;6152:187::o;7551:192::-;7637:7;7673:12;7665:6;;;;7657:29;;;;-1:-1:-1;;;7657:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7657:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7709:5:0;;;7551:192::o;7899:345::-;7985:7;8087:12;8080:5;8072:28;;;;-1:-1:-1;;;8072:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;8072:28:0;;8111:9;8127:1;8123;:5;;;;;;;7899:345;-1:-1:-1;;;;;7899:345:0:o;2479:845::-;2533:6;;351:4;252:8;2688:27;;2674:41;;;2533:6;;2766:28;;:15;:28::i;:::-;2742:21;2758:4;2742:21;;:15;:21::i;:::-;:52;2727:67;;2853:12;304:8;2830:35;2807:58;;;;2939:12;351:4;2918;:18;:33;;;252:8;2899:53;2876:76;;;;2965:330;2994:9;2972:19;:31;2965:330;;;3028:28;3053:1;3046:4;:8;3028:10;:28::i;:::-;3024:232;;;304:8;3085:43;;;;3024:232;;;252:8;3198:38;;;;3024:232;3282:1;3274:9;;;;2965:330;;;-1:-1:-1;3312:4:0;2479:845;-1:-1:-1;;;2479:845:0:o;681:143::-;-1:-1:-1;;755:9:0;738:4;813:3;755:9;806:10;800:3;793:4;:10;789:1;782:4;:8;:21;:34;;681:143;-1:-1:-1;;681:143:0:o;832:484::-;903:5;925;:10;;934:1;925:10;:24;;;;939:5;:10;;948:1;939:10;925:24;:38;;;;953:5;:10;;962:1;953:10;925:38;:52;;;;967:5;:10;;976:1;967:10;925:52;:66;;;;981:5;:10;;990:1;981:10;925:66;:81;;;;995:5;:11;;1004:2;995:11;925:81;:96;;;;1010:5;:11;;1019:2;1010:11;925:96;921:388;;;-1:-1:-1;1049:2:0;1042:9;;921:388;1082:5;:10;;1091:1;1082:10;:24;;;;1096:5;:10;;1105:1;1096:10;1082:24;:38;;;;1110:5;:10;;1119:1;1110:10;1082:38;:53;;;;1124:5;:11;;1133:2;1124:11;1082:53;1078:231;;;-1:-1:-1;1163:2:0;1156:9;;1078:231;1196:16;1207:4;1196:10;:16::i;:::-;1192:117;;;-1:-1:-1;1240:2:0;1233:9;;1192:117;-1:-1:-1;1295:2:0;1288:9;;364:309;418:4;439:8;;;:13;435:62;;-1:-1:-1;480:5:0;473:12;;435:62;518:3;511:10;;;;:15;;525:1;511:15;507:63;;-1:-1:-1;554:4:0;547:11;;507:63;591:3;584:10;;;;:15;;598:1;584:15;580:64;;-1:-1:-1;627:5:0;620:12;;580:64;-1:-1:-1;661:4:0;364:309;;;:::o;8251:20621::-;;;;;;;;;-1:-1:-1;8251:20621:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;8251:20621:0;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://76d4617847b5164b6653fe2f8a25c41e63396ca613a11b88597c8b74d3171ca4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.