Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 11069981 | 1500 days ago | IN | 0 ETH | 0.15864342 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
sbStrongPoolV3
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; pragma experimental ABIEncoderV2; import "./SafeMath.sol"; import "./IERC20.sol"; import "./sbControllerInterface.sol"; import "./sbVotesInterface.sol"; contract sbStrongPoolV3 { event ServiceMinMineUpdated(uint256 amount); event MinerMinMineUpdated(uint256 amount); event MinedFor( address indexed miner, address indexed receiver, uint256 amount, uint256 indexed day ); event RewardsReceived(uint256 indexed day, uint256 amount); event Mined(address indexed miner, uint256 amount, uint256 indexed day); event Unmined(address indexed miner, uint256 amount, uint256 indexed day); event MinedForVotesOnly( address indexed miner, uint256 amount, uint256 indexed day ); event UnminedForVotesOnly( address indexed miner, uint256 amount, uint256 indexed day ); event Claimed(address indexed miner, uint256 amount, uint256 indexed day); using SafeMath for uint256; bool internal initDone; IERC20 internal strongToken; sbControllerInterface internal sbController; sbVotesInterface internal sbVotes; address internal sbTimelock; uint256 internal serviceMinMine; uint256 internal minerMinMine; mapping(address => uint256[]) internal minerMineDays; mapping(address => uint256[]) internal minerMineAmounts; mapping(address => uint256[]) internal minerMineMineSeconds; uint256[] internal mineDays; uint256[] internal mineAmounts; uint256[] internal mineMineSeconds; mapping(address => uint256) internal minerDayLastClaimedFor; mapping(uint256 => uint256) internal dayRewards; mapping(address => uint256) internal mineForVotes; address internal superAdmin; address internal pendingSuperAdmin; uint256 internal delayDays; function removeTokens(address account, uint256 amount) public { require(msg.sender == superAdmin, "not superAdmin"); strongToken.transfer(account, amount); } function burnTokens(uint256 amount) public { require(msg.sender == superAdmin, "not superAdmin"); strongToken.transfer( address(0x000000000000000000000000000000000000dEaD), amount ); } function setPendingSuperAdmin(address newPendingSuperAdmin) public { require( msg.sender == superAdmin && msg.sender != address(0), "not superAdmin" ); pendingSuperAdmin = newPendingSuperAdmin; } function acceptSuperAdmin() public { require( msg.sender == pendingSuperAdmin && msg.sender != address(0), "not pendingSuperAdmin" ); superAdmin = pendingSuperAdmin; pendingSuperAdmin = address(0); } function getSuperAdminAddressUsed() public view returns (address) { return superAdmin; } function getPendingSuperAdminAddressUsed() public view returns (address) { return pendingSuperAdmin; } function setDelayDays(uint256 dayCount) external { require( msg.sender == superAdmin && msg.sender != address(0), "not superAdmin" ); require(dayCount >= 1, "zero"); delayDays = dayCount; } function getDelayDays() public view returns (uint256) { return delayDays; } function serviceMinMined(address miner) external view returns (bool) { uint256 currentDay = _getCurrentDay(); (, uint256 twoDaysAgoMine, ) = _getMinerMineData( miner, currentDay.sub(2) ); (, uint256 oneDayAgoMine, ) = _getMinerMineData( miner, currentDay.sub(1) ); (, uint256 todayMine, ) = _getMinerMineData(miner, currentDay); return twoDaysAgoMine >= serviceMinMine && oneDayAgoMine >= serviceMinMine && todayMine >= serviceMinMine; } function minerMinMined(address miner) external view returns (bool) { (, uint256 todayMine, ) = _getMinerMineData(miner, _getCurrentDay()); return todayMine >= minerMinMine; } function updateServiceMinMine(uint256 serviceMinMineAmount) external { require(serviceMinMineAmount > 0, "zero"); require(msg.sender == sbTimelock, "not sbTimelock"); serviceMinMine = serviceMinMineAmount; emit ServiceMinMineUpdated(serviceMinMineAmount); } function updateMinerMinMine(uint256 minerMinMineAmount) external { require(minerMinMineAmount > 0, "zero"); require(msg.sender == sbTimelock, "not sbTimelock"); minerMinMine = minerMinMineAmount; emit MinerMinMineUpdated(minerMinMineAmount); } function mineFor(address miner, uint256 amount) external { require(amount > 0, "zero"); require(miner != address(0), "zero address"); if (msg.sender != address(this)) { strongToken.transferFrom(msg.sender, address(this), amount); } uint256 currentDay = _getCurrentDay(); uint256 startDay = sbController.getStartDay(); uint256 MAX_YEARS = sbController.getMaxYears(); uint256 year = _getYearDayIsIn(currentDay, startDay); require(year <= MAX_YEARS, "year limit met"); _update( minerMineDays[miner], minerMineAmounts[miner], minerMineMineSeconds[miner], amount, true, currentDay ); _update( mineDays, mineAmounts, mineMineSeconds, amount, true, currentDay ); sbVotes.updateVotes(miner, amount, true); emit MinedFor(msg.sender, miner, amount, currentDay); } function getMineData(uint256 day) external view returns ( uint256, uint256, uint256 ) { return _getMineData(day); } function receiveRewards(uint256 day, uint256 amount) external { require(amount > 0, "zero"); require(msg.sender == address(sbController), "not sbController"); strongToken.transferFrom(address(sbController), address(this), amount); dayRewards[day] = dayRewards[day].add(amount); emit RewardsReceived(day, amount); } function getDayRewards(uint256 day) public view returns (uint256) { require(day <= _getCurrentDay(), "invalid day"); return dayRewards[day]; } function mine(uint256 amount) public { require(amount > 0, "zero"); strongToken.transferFrom(msg.sender, address(this), amount); uint256 currentDay = _getCurrentDay(); uint256 startDay = sbController.getStartDay(); uint256 MAX_YEARS = sbController.getMaxYears(); uint256 year = _getYearDayIsIn(currentDay, startDay); require(year <= MAX_YEARS, "year limit met"); _update( minerMineDays[msg.sender], minerMineAmounts[msg.sender], minerMineMineSeconds[msg.sender], amount, true, currentDay ); _update( mineDays, mineAmounts, mineMineSeconds, amount, true, currentDay ); sbVotes.updateVotes(msg.sender, amount, true); emit Mined(msg.sender, amount, currentDay); } function unmine(uint256 amount) public { require(amount > 0, "zero"); uint256 currentDay = _getCurrentDay(); _update( minerMineDays[msg.sender], minerMineAmounts[msg.sender], minerMineMineSeconds[msg.sender], amount, false, currentDay ); _update( mineDays, mineAmounts, mineMineSeconds, amount, false, currentDay ); sbVotes.updateVotes(msg.sender, amount, false); strongToken.transfer(msg.sender, amount); emit Unmined(msg.sender, amount, currentDay); } function mineForVotesOnly(uint256 amount) public { require(amount > 0, "zero"); strongToken.transferFrom(msg.sender, address(this), amount); uint256 currentDay = _getCurrentDay(); uint256 startDay = sbController.getStartDay(); uint256 MAX_YEARS = sbController.getMaxYears(); uint256 year = _getYearDayIsIn(currentDay, startDay); require(year <= MAX_YEARS, "year limit met"); mineForVotes[msg.sender] = mineForVotes[msg.sender].add(amount); sbVotes.updateVotes(msg.sender, amount, true); emit MinedForVotesOnly(msg.sender, amount, currentDay); } function unmineForVotesOnly(uint256 amount) public { require(amount > 0, "zero"); require(mineForVotes[msg.sender] >= amount, "not enough mine"); mineForVotes[msg.sender] = mineForVotes[msg.sender].sub(amount); sbVotes.updateVotes(msg.sender, amount, false); strongToken.transfer(msg.sender, amount); emit UnminedForVotesOnly(msg.sender, amount, _getCurrentDay()); } function getMineForVotesOnly(address miner) public view returns (uint256) { return mineForVotes[miner]; } function getServiceMinMineAmount() public view returns (uint256) { return serviceMinMine; } function getMinerMinMineAmount() public view returns (uint256) { return minerMinMine; } function getSbControllerAddressUsed() public view returns (address) { return address(sbController); } function getStrongAddressUsed() public view returns (address) { return address(strongToken); } function getSbVotesAddressUsed() public view returns (address) { return address(sbVotes); } function getSbTimelockAddressUsed() public view returns (address) { return sbTimelock; } function getMinerDayLastClaimedFor(address miner) public view returns (uint256) { return minerDayLastClaimedFor[miner] == 0 ? sbController.getStartDay().sub(1) : minerDayLastClaimedFor[miner]; } function claimAll() public { require(delayDays > 0, "zero"); uint256 currentDay = _getCurrentDay(); uint256 dayLastClaimedFor = minerDayLastClaimedFor[msg.sender] == 0 ? sbController.getStartDay().sub(1) : minerDayLastClaimedFor[msg.sender]; require( currentDay > dayLastClaimedFor.add(delayDays), "already claimed" ); // require(sbController.upToDate(), 'need rewards released'); _claim(currentDay, msg.sender, dayLastClaimedFor); } function claimUpTo(uint256 day) public { require(delayDays > 0, "zero"); require(day <= _getCurrentDay(), "invalid day"); uint256 dayLastClaimedFor = minerDayLastClaimedFor[msg.sender] == 0 ? sbController.getStartDay().sub(1) : minerDayLastClaimedFor[msg.sender]; require(day > dayLastClaimedFor.add(delayDays), "already claimed"); // require(sbController.upToDate(), 'need rewards released'); _claim(day, msg.sender, dayLastClaimedFor); } function getRewardsDueAll(address miner) public view returns (uint256) { require(delayDays > 0, "zero"); uint256 currentDay = _getCurrentDay(); uint256 dayLastClaimedFor = minerDayLastClaimedFor[miner] == 0 ? sbController.getStartDay().sub(1) : minerDayLastClaimedFor[miner]; if (!(currentDay > dayLastClaimedFor.add(delayDays))) { return 0; } // require(sbController.upToDate(), 'need rewards released'); return _getRewardsDue(currentDay, miner, dayLastClaimedFor); } function getRewardsDueUpTo(uint256 day, address miner) public view returns (uint256) { require(delayDays > 0, "zero"); require(day <= _getCurrentDay(), "invalid day"); uint256 dayLastClaimedFor = minerDayLastClaimedFor[miner] == 0 ? sbController.getStartDay().sub(1) : minerDayLastClaimedFor[miner]; if (!(day > dayLastClaimedFor.add(delayDays))) { return 0; } // require(sbController.upToDate(), 'need rewards released'); return _getRewardsDue(day, miner, dayLastClaimedFor); } function getMinerMineData(address miner, uint256 day) public view returns ( uint256, uint256, uint256 ) { return _getMinerMineData(miner, day); } function _getMineData(uint256 day) internal view returns ( uint256, uint256, uint256 ) { return _get(mineDays, mineAmounts, mineMineSeconds, day); } function _getMinerMineData(address miner, uint256 day) internal view returns ( uint256, uint256, uint256 ) { uint256[] memory _Days = minerMineDays[miner]; uint256[] memory _Amounts = minerMineAmounts[miner]; uint256[] memory _UnitSeconds = minerMineMineSeconds[miner]; return _get(_Days, _Amounts, _UnitSeconds, day); } function _get( uint256[] memory _Days, uint256[] memory _Amounts, uint256[] memory _UnitSeconds, uint256 day ) internal pure returns ( uint256, uint256, uint256 ) { uint256 len = _Days.length; if (len == 0) { return (day, 0, 0); } if (day < _Days[0]) { return (day, 0, 0); } uint256 lastIndex = len.sub(1); uint256 lastMinedDay = _Days[lastIndex]; if (day == lastMinedDay) { return (day, _Amounts[lastIndex], _UnitSeconds[lastIndex]); } else if (day > lastMinedDay) { return (day, _Amounts[lastIndex], _Amounts[lastIndex].mul(1 days)); } return _find(_Days, _Amounts, _UnitSeconds, day); } function _find( uint256[] memory _Days, uint256[] memory _Amounts, uint256[] memory _UnitSeconds, uint256 day ) internal pure returns ( uint256, uint256, uint256 ) { uint256 left = 0; uint256 right = _Days.length.sub(1); uint256 middle = right.add(left).div(2); while (left < right) { if (_Days[middle] == day) { return (day, _Amounts[middle], _UnitSeconds[middle]); } else if (_Days[middle] > day) { if (middle > 0 && _Days[middle.sub(1)] < day) { return ( day, _Amounts[middle.sub(1)], _Amounts[middle.sub(1)].mul(1 days) ); } if (middle == 0) { return (day, 0, 0); } right = middle.sub(1); } else if (_Days[middle] < day) { if ( middle < _Days.length.sub(1) && _Days[middle.add(1)] > day ) { return ( day, _Amounts[middle], _Amounts[middle].mul(1 days) ); } left = middle.add(1); } middle = right.add(left).div(2); } if (_Days[middle] != day) { return (day, 0, 0); } else { return (day, _Amounts[middle], _UnitSeconds[middle]); } } function _update( uint256[] storage _Days, uint256[] storage _Amounts, uint256[] storage _UnitSeconds, uint256 amount, bool adding, uint256 currentDay ) internal { uint256 len = _Days.length; uint256 secondsInADay = 1 days; uint256 secondsSinceStartOfDay = block.timestamp % secondsInADay; uint256 secondsUntilEndOfDay = secondsInADay.sub( secondsSinceStartOfDay ); if (len == 0) { if (adding) { _Days.push(currentDay); _Amounts.push(amount); _UnitSeconds.push(amount.mul(secondsUntilEndOfDay)); } else { require(false, "1: not enough mine"); } } else { uint256 lastIndex = len.sub(1); uint256 lastMinedDay = _Days[lastIndex]; uint256 lastMinedAmount = _Amounts[lastIndex]; uint256 lastUnitSeconds = _UnitSeconds[lastIndex]; uint256 newAmount; uint256 newUnitSeconds; if (lastMinedDay == currentDay) { if (adding) { newAmount = lastMinedAmount.add(amount); newUnitSeconds = lastUnitSeconds.add( amount.mul(secondsUntilEndOfDay) ); } else { require(lastMinedAmount >= amount, "2: not enough mine"); newAmount = lastMinedAmount.sub(amount); newUnitSeconds = lastUnitSeconds.sub( amount.mul(secondsUntilEndOfDay) ); } _Amounts[lastIndex] = newAmount; _UnitSeconds[lastIndex] = newUnitSeconds; } else { if (adding) { newAmount = lastMinedAmount.add(amount); newUnitSeconds = lastMinedAmount.mul(1 days).add( amount.mul(secondsUntilEndOfDay) ); } else { require(lastMinedAmount >= amount, "3: not enough mine"); newAmount = lastMinedAmount.sub(amount); newUnitSeconds = lastMinedAmount.mul(1 days).sub( amount.mul(secondsUntilEndOfDay) ); } _Days.push(currentDay); _Amounts.push(newAmount); _UnitSeconds.push(newUnitSeconds); } } } function _getCurrentDay() internal view returns (uint256) { return block.timestamp.div(1 days).add(1); } function _claim( uint256 upToDay, address miner, uint256 dayLastClaimedFor ) internal { uint256 rewards = _getRewardsDue(upToDay, miner, dayLastClaimedFor); require(rewards > 0, "no rewards"); minerDayLastClaimedFor[miner] = upToDay.sub(delayDays); this.mineFor(miner, rewards); emit Claimed(miner, rewards, _getCurrentDay()); } function _getRewardsDue( uint256 upToDay, address miner, uint256 dayLastClaimedFor ) internal view returns (uint256) { uint256 rewards; for ( uint256 day = dayLastClaimedFor.add(1); day <= upToDay.sub(delayDays); day++ ) { (, , uint256 minerMineSecondsForDay) = _getMinerMineData( miner, day ); (, , uint256 mineSecondsForDay) = _getMineData(day); if (mineSecondsForDay == 0) { continue; } uint256 strongPoolDayRewards = dayRewards[day]; if (strongPoolDayRewards == 0) { continue; } uint256 amount = strongPoolDayRewards .mul(minerMineSecondsForDay) .div(mineSecondsForDay); rewards = rewards.add(amount); } return rewards; } function _getYearDayIsIn(uint256 day, uint256 startDay) internal pure returns (uint256) { return day.sub(startDay).div(366).add(1); // dividing by 366 makes day 1 and 365 be in year 1 } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; pragma experimental ABIEncoderV2; interface sbControllerInterface { function getDayMineSecondsUSDTotal(uint256 day) external view returns (uint256); function getCommunityDayMineSecondsUSD(address community, uint256 day) external view returns (uint256); function getCommunityDayRewards(address community, uint256 day) external view returns (uint256); function getStartDay() external view returns (uint256); function getMaxYears() external view returns (uint256); function getStrongPoolDailyRewards(uint256 day) external view returns (uint256); function communityAccepted(address community) external view returns (bool); function getCommunities() external view returns (address[] memory); function upToDate() external pure returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; pragma experimental ABIEncoderV2; interface sbVotesInterface { function getCommunityData(address community, uint256 day) external view returns ( uint256, uint256, uint256 ); function getPriorProposalVotes(address account, uint256 blockNumber) external view returns (uint96); function receiveServiceRewards(uint256 day, uint256 amount) external; function receiveVoterRewards(uint256 day, uint256 amount) external; function updateVotes( address staker, uint256 rawAmount, bool adding ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"day","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"day","type":"uint256"}],"name":"Mined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"day","type":"uint256"}],"name":"MinedFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"day","type":"uint256"}],"name":"MinedForVotesOnly","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MinerMinMineUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"day","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ServiceMinMineUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"day","type":"uint256"}],"name":"Unmined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"day","type":"uint256"}],"name":"UnminedForVotesOnly","type":"event"},{"inputs":[],"name":"acceptSuperAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"claimUpTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"getDayRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelayDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"getMineData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"getMineForVotesOnly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"getMinerDayLastClaimedFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinerMinMineAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"},{"internalType":"uint256","name":"day","type":"uint256"}],"name":"getMinerMineData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingSuperAdminAddressUsed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"getRewardsDueAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"},{"internalType":"address","name":"miner","type":"address"}],"name":"getRewardsDueUpTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSbControllerAddressUsed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSbTimelockAddressUsed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSbVotesAddressUsed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getServiceMinMineAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStrongAddressUsed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSuperAdminAddressUsed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mineFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mineForVotesOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"minerMinMined","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"receiveRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"serviceMinMined","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dayCount","type":"uint256"}],"name":"setDelayDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingSuperAdmin","type":"address"}],"name":"setPendingSuperAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unmine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unmineForVotesOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minerMinMineAmount","type":"uint256"}],"name":"updateMinerMinMine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"serviceMinMineAmount","type":"uint256"}],"name":"updateServiceMinMine","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50612b31806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fa5760003560e01c80636de5f3a91161011a578063c0a41ea8116100ad578063e7f9cefd1161007c578063e7f9cefd146103e6578063eb87e89b146103ee578063f1e5ff3e14610401578063f36d52da14610414578063f426571514610427576101fa565b8063c0a41ea8146103bb578063c9ff8572146103c3578063d1058e59146103cb578063d39ca7de146103d3576101fa565b806399ff8a2b116100e957806399ff8a2b14610385578063a20c845114610398578063a4bc4d7f146103ab578063aaa9a984146103b3576101fa565b80636de5f3a91461033757806376d53d611461034a5780638120c3971461036a57806384e29af21461037d576101fa565b8063335479a2116101925780634d474898116101615780634d474898146102f657806357172196146103095780635a5256ef1461031c5780636d1b229d14610324576101fa565b8063335479a2146102a8578063358ff3d8146102b0578063426338b2146102d05780634d04ad99146102e3576101fa565b80631e10eeaf116101ce5780631e10eeaf146102585780632025dbb71461026b5780632e7fba1d1461027357806330d6a97514610295576101fa565b806212de11146101ff57806304a3379f146102145780631246af89146102325780631ba2295a14610245575b600080fd5b61021261020d3660046126e1565b61043a565b005b61021c6104cd565b604051610229919061275e565b60405180910390f35b6102126102403660046126e1565b6104e1565b6102126102533660046126e1565b6107b6565b610212610266366004612697565b6108f6565b61021c6109ad565b610286610281366004612697565b6109bc565b60405161022993929190612ae5565b6102126102a3366004612697565b6109d8565b61021c610d04565b6102c36102be366004612711565b610d13565b6040516102299190612adc565b6102c36102de36600461267c565b610e20565b6102126102f13660046126e1565b610eaf565b6102126103043660046126e1565b611065565b6102126103173660046126e1565b611340565b61021c6113bf565b6102126103323660046126e1565b6113ce565b6102c361034536600461267c565b611482565b61035d61035836600461267c565b61149d565b60405161022991906127d2565b6102c36103783660046126e1565b611516565b6102c3611552565b6102126103933660046126e1565b611558565b61035d6103a636600461267c565b6115b3565b61021c6115d0565b6102c36115df565b6102c36115e5565b61021c6115eb565b6102126115fa565b6102126103e136600461267c565b611654565b6102126116ab565b6102866103fc3660046126e1565b611707565b6102c361040f36600461267c565b611722565b61021261042236600461273d565b611815565b6102126104353660046126e1565b611958565b600081116104635760405162461bcd60e51b815260040161045a906128ab565b60405180910390fd5b6003546001600160a01b0316331461048d5760405162461bcd60e51b815260040161045a90612ab4565b60058190556040517fed9045cce0d5d46220f267fa3ee30f87a90037ed06da1f2d6eb2473e05b6b4fe906104c2908390612adc565b60405180910390a150565b60005461010090046001600160a01b031690565b600081116105015760405162461bcd60e51b815260040161045a906128ab565b6000546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd9061053990339030908690600401612772565b602060405180830381600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b91906126c1565b506000610596611afc565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ff4dfa516040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e857600080fd5b505afa1580156105fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062091906126f9565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663b0ff52636040518163ffffffff1660e01b815260040160206040518083038186803b15801561067257600080fd5b505afa158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa91906126f9565b905060006106b88484611b1b565b9050818111156106da5760405162461bcd60e51b815260040161045a90612a15565b336000908152600e60205260409020546106f49086611b3f565b336000818152600e602052604090819020929092556002549151639fb9ec1160e01b81526001600160a01b0390921691639fb9ec119161073b9189906001906004016127af565b600060405180830381600087803b15801561075557600080fd5b505af1158015610769573d6000803e3d6000fd5b5050505083336001600160a01b03167f74ad2781a628914d8035cf092b04344e946bd6380d0831e232db60a1472fe34d876040516107a79190612adc565b60405180910390a35050505050565b6000601154116107d85760405162461bcd60e51b815260040161045a906128ab565b6107e0611afc565b8111156107ff5760405162461bcd60e51b815260040161045a9061285c565b336000908152600c60205260408120541561082957336000908152600c60205260409020546108b2565b6001805460408051600162b205af60e01b0319815290516108b293926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b505afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac91906126f9565b90611b64565b90506108c960115482611b3f90919063ffffffff16565b82116108e75760405162461bcd60e51b815260040161045a9061292c565b6108f2823383611ba6565b5050565b600f546001600160a01b031633146109205760405162461bcd60e51b815260040161045a90612a63565b60005460405163a9059cbb60e01b81526101009091046001600160a01b03169063a9059cbb906109569085908590600401612796565b602060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a891906126c1565b505050565b600f546001600160a01b031690565b60008060006109cb8585611ca5565b9250925092509250925092565b600081116109f85760405162461bcd60e51b815260040161045a906128ab565b6001600160a01b038216610a1e5760405162461bcd60e51b815260040161045a90612a3d565b333014610ab1576000546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd90610a5d90339030908690600401612772565b602060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf91906126c1565b505b6000610abb611afc565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ff4dfa516040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906126f9565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663b0ff52636040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9757600080fd5b505afa158015610bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcf91906126f9565b90506000610bdd8484611b1b565b905081811115610bff5760405162461bcd60e51b815260040161045a90612a15565b6001600160a01b03861660009081526006602090815260408083206007835281842060089093529220610c3792919088600189611e02565b610c496009600a600b88600189611e02565b600254604051639fb9ec1160e01b81526001600160a01b0390911690639fb9ec1190610c7e90899089906001906004016127af565b600060405180830381600087803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b5050505083866001600160a01b0316336001600160a01b03167f7b41febabdf75c79974d7fc362e94e9536447c044ca7a3abd8d03a3b4f0fa72688604051610cf49190612adc565b60405180910390a4505050505050565b6010546001600160a01b031690565b60008060115411610d365760405162461bcd60e51b815260040161045a906128ab565b610d3e611afc565b831115610d5d5760405162461bcd60e51b815260040161045a9061285c565b6001600160a01b0382166000908152600c602052604081205415610d99576001600160a01b0383166000908152600c6020526040902054610de4565b6001805460408051600162b205af60e01b031981529051610de493926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b9050610dfb60115482611b3f90919063ffffffff16565b8411610e0b576000915050610e1a565b610e168484836120af565b9150505b92915050565b6001600160a01b0381166000908152600c602052604081205415610e5c576001600160a01b0382166000908152600c6020526040902054610ea7565b6001805460408051600162b205af60e01b031981529051610ea793926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b90505b919050565b60008111610ecf5760405162461bcd60e51b815260040161045a906128ab565b336000908152600e6020526040902054811115610efe5760405162461bcd60e51b815260040161045a90612a8b565b336000908152600e6020526040902054610f189082611b64565b336000818152600e6020526040808220939093556002549251639fb9ec1160e01b81526001600160a01b0390931692639fb9ec1192610f5e9290918691906004016127af565b600060405180830381600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b505060005460405163a9059cbb60e01b81526101009091046001600160a01b0316925063a9059cbb9150610fc69033908590600401612796565b602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101891906126c1565b50611021611afc565b336001600160a01b03167f18773d102e477d2052823daf6088d463d9db804476984920c4e2982764f812868360405161105a9190612adc565b60405180910390a350565b600081116110855760405162461bcd60e51b815260040161045a906128ab565b6000546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd906110bd90339030908690600401612772565b602060405180830381600087803b1580156110d757600080fd5b505af11580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110f91906126c1565b50600061111a611afc565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ff4dfa516040518163ffffffff1660e01b815260040160206040518083038186803b15801561116c57600080fd5b505afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a491906126f9565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663b0ff52636040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e91906126f9565b9050600061123c8484611b1b565b90508181111561125e5760405162461bcd60e51b815260040161045a90612a15565b336000908152600660209081526040808320600783528184206008909352922061128d92919088600189611e02565b61129f6009600a600b88600189611e02565b600254604051639fb9ec1160e01b81526001600160a01b0390911690639fb9ec11906112d490339089906001906004016127af565b600060405180830381600087803b1580156112ee57600080fd5b505af1158015611302573d6000803e3d6000fd5b5050505083336001600160a01b03167f5a9ec13c12ca9563a7b3108125f74c57ed388bb313394ea50f7e4a71b01497c2876040516107a79190612adc565b600081116113605760405162461bcd60e51b815260040161045a906128ab565b6003546001600160a01b0316331461138a5760405162461bcd60e51b815260040161045a90612ab4565b60048190556040517fe695c38ea47003514f438368412c3b22b9ad570884814783201c8a9a422ea8c6906104c2908390612adc565b6002546001600160a01b031690565b600f546001600160a01b031633146113f85760405162461bcd60e51b815260040161045a90612a63565b60005460405163a9059cbb60e01b81526101009091046001600160a01b03169063a9059cbb906114309061dead908590600401612796565b602060405180830381600087803b15801561144a57600080fd5b505af115801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f291906126c1565b6001600160a01b03166000908152600e602052604090205490565b6000806114a8611afc565b905060006114c0846114bb846002611b64565b611ca5565b509150600090506114d6856114bb856001611b64565b5091505060006114e68685611ca5565b5091505060045483101580156114fe57506004548210155b801561150c57506004548110155b9695505050505050565b6000611520611afc565b82111561153f5760405162461bcd60e51b815260040161045a9061285c565b506000908152600d602052604090205490565b60045490565b600f546001600160a01b03163314801561157157503315155b61158d5760405162461bcd60e51b815260040161045a90612a63565b60018110156115ae5760405162461bcd60e51b815260040161045a906128ab565b601155565b6000806115c2836114bb611afc565b506005541115949350505050565b6003546001600160a01b031690565b60115490565b60055490565b6001546001600160a01b031690565b60006011541161161c5760405162461bcd60e51b815260040161045a906128ab565b6000611626611afc565b336000908152600c6020526040812054919250901561082957336000908152600c60205260409020546108b2565b600f546001600160a01b03163314801561166d57503315155b6116895760405162461bcd60e51b815260040161045a90612a63565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b0316331480156116c457503315155b6116e05760405162461bcd60e51b815260040161045a90612981565b60108054600f80546001600160a01b03199081166001600160a01b03841617909155169055565b600080600061171584612150565b9250925092509193909250565b600080601154116117455760405162461bcd60e51b815260040161045a906128ab565b600061174f611afc565b6001600160a01b0384166000908152600c6020526040812054919250901561178f576001600160a01b0384166000908152600c60205260409020546117da565b6001805460408051600162b205af60e01b0319815290516117da93926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b90506117f160115482611b3f90919063ffffffff16565b821161180257600092505050610eaa565b61180d8285836120af565b949350505050565b600081116118355760405162461bcd60e51b815260040161045a906128ab565b6001546001600160a01b0316331461185f5760405162461bcd60e51b815260040161045a90612881565b6000546001546040516323b872dd60e01b81526001600160a01b036101009093048316926323b872dd9261189c9291169030908690600401612772565b602060405180830381600087803b1580156118b657600080fd5b505af11580156118ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ee91906126c1565b506000828152600d60205260409020546119089082611b3f565b6000838152600d602052604090819020919091555182907f61cb44cbea389abb97c617c7d16a62235c51f27da3406d3ec3c9ac87c0d0c8269061194c908490612adc565b60405180910390a25050565b600081116119785760405162461bcd60e51b815260040161045a906128ab565b6000611982611afc565b3360009081526006602090815260408083206007835281842060089093529083209394506119b4939092869086611e02565b6119c66009600a600b85600086611e02565b600254604051639fb9ec1160e01b81526001600160a01b0390911690639fb9ec11906119fb90339086906000906004016127af565b600060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b505060005460405163a9059cbb60e01b81526101009091046001600160a01b0316925063a9059cbb9150611a639033908690600401612796565b602060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab591906126c1565b5080336001600160a01b03167f437d8ac980e75d7fdd31465b53ee4d16d562c4d404b94bada33dd20def01b00e84604051611af09190612adc565b60405180910390a35050565b6000611b166001611b104262015180612251565b90611b3f565b905090565b6000611b386001611b1061016e611b328787611b64565b90612251565b9392505050565b600082820183811015611b385760405162461bcd60e51b815260040161045a906128f5565b6000611b3883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612293565b6000611bb38484846120af565b905060008111611bd55760405162461bcd60e51b815260040161045a906129b0565b601154611be3908590611b64565b6001600160a01b0384166000908152600c60205260409081902091909155516330d6a97560e01b815230906330d6a97590611c249086908590600401612796565b600060405180830381600087803b158015611c3e57600080fd5b505af1158015611c52573d6000803e3d6000fd5b50505050611c5e611afc565b836001600160a01b03167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a83604051611c979190612adc565b60405180910390a350505050565b6001600160a01b038216600090815260066020908152604080832080548251818502810185019093528083528493849360609390929091830182828015611d0b57602002820191906000526020600020905b815481526020019060010190808311611cf7575b5050506001600160a01b03891660009081526007602090815260409182902080548351818402810184019094528084529596506060959294509250830182828015611d7557602002820191906000526020600020905b815481526020019060010190808311611d61575b5050506001600160a01b038a1660009081526008602090815260409182902080548351818402810184019094528084529596506060959294509250830182828015611ddf57602002820191906000526020600020905b815481526020019060010190808311611dcb575b50505050509050611df28383838a6122bf565b9550955095505050509250925092565b855462015180428190066000611e188383611b64565b905083611e93578515611e7657895460018181018c5560008c815260208082209093018890558b549182018c558b8152919091200187905587611e5b88836123e3565b81546001810183556000928352602090922090910155611e8e565b60405162461bcd60e51b815260040161045a90612955565b6120a3565b6000611ea0856001611b64565b905060008b8281548110611eb057fe5b9060005260206000200154905060008b8381548110611ecb57fe5b9060005260206000200154905060008b8481548110611ee657fe5b906000526020600020015490506000808a851415611fa7578b15611f2b57611f0e848e611b3f565b9150611f24611f1d8e896123e3565b8490611b3f565b9050611f6e565b8c841015611f4b5760405162461bcd60e51b815260040161045a90612830565b611f55848e611b64565b9150611f6b611f648e896123e3565b8490611b64565b90505b818f8781548110611f7b57fe5b9060005260206000200181905550808e8781548110611f9657fe5b60009182526020909120015561209c565b8b15611fda57611fb7848e611b3f565b9150611fd3611fc68e896123e3565b611b1086620151806123e3565b9050612023565b8c841015611ffa5760405162461bcd60e51b815260040161045a906128c9565b612004848e611b64565b91506120206120138e896123e3565b6108ac86620151806123e3565b90505b8f8b90806001815401808255809150506001900390600052602060002001600090919091909150558e8290806001815401808255809150506001900390600052602060002001600090919091909150558d8190806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050505b50505050505050505050565b600080806120be846001611b3f565b90505b6011546120cf908790611b64565b81116121475760006120e18683611ca5565b9250505060006120f083612150565b925050508061210057505061213f565b6000838152600d60205260409020548061211c5750505061213f565b600061212c83611b3284876123e3565b90506121388682611b3f565b9550505050505b6001016120c1565b50949350505050565b600080600061171560098054806020026020016040519081016040528092919081815260200182805480156121a457602002820191906000526020600020905b815481526020019060010190808311612190575b5050505050600a8054806020026020016040519081016040528092919081815260200182805480156121f557602002820191906000526020600020905b8154815260200190600101908083116121e1575b5050505050600b80548060200260200160405190810160405280929190818152602001828054801561224657602002820191906000526020600020905b815481526020019060010190808311612232575b5050505050876122bf565b6000611b3883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061241d565b600081848411156122b75760405162461bcd60e51b815260040161045a91906127dd565b505050900390565b835160009081908190806122dd5784600080935093509350506123d9565b876000815181106122ea57fe5b60200260200101518510156123095784600080935093509350506123d9565b6000612316826001611b64565b9050600089828151811061232657fe5b602002602001015190508087141561236f578689838151811061234557fe5b602002602001015189848151811061235957fe5b60200260200101519550955095505050506123d9565b808711156123c3578689838151811061238457fe5b60200260200101516123b5620151808c868151811061239f57fe5b60200260200101516123e390919063ffffffff16565b9550955095505050506123d9565b6123cf8a8a8a8a612454565b9550955095505050505b9450945094915050565b6000826123f257506000610e1a565b828202828482816123ff57fe5b0414611b385760405162461bcd60e51b815260040161045a906129d4565b6000818361243e5760405162461bcd60e51b815260040161045a91906127dd565b50600083858161244a57fe5b0495945050505050565b60008060008060009050600061247560018a51611b6490919063ffffffff16565b905060006124886002611b328486611b3f565b90505b8183101561262c57868a82815181106124a057fe5b602002602001015114156124cf57868982815181106124bb57fe5b602002602001015189838151811061235957fe5b868a82815181106124dc57fe5b60200260200101511115612589576000811180156125165750868a612502836001611b64565b8151811061250c57fe5b6020026020010151105b15612560578689612528836001611b64565b8151811061253257fe5b60200260200101516123b5620151808c612556600187611b6490919063ffffffff16565b8151811061239f57fe5b8061257757866000809550955095505050506123d9565b612582816001611b64565b9150612616565b868a828151811061259657fe5b602002602001015110156126165789516125b1906001611b64565b811080156125db5750868a6125c7836001611b3f565b815181106125d157fe5b6020026020010151115b1561260857868982815181106125ed57fe5b60200260200101516123b5620151808c858151811061239f57fe5b612613816001611b3f565b92505b6126256002611b328486611b3f565b905061248b565b868a828151811061263957fe5b60200260200101511461265857866000809550955095505050506123d9565b868982815181106124bb57fe5b80356001600160a01b0381168114610e1a57600080fd5b60006020828403121561268d578081fd5b611b388383612665565b600080604083850312156126a9578081fd5b6126b38484612665565b946020939093013593505050565b6000602082840312156126d2578081fd5b81518015158114611b38578182fd5b6000602082840312156126f2578081fd5b5035919050565b60006020828403121561270a578081fd5b5051919050565b60008060408385031215612723578182fd5b823591506127348460208501612665565b90509250929050565b6000806040838503121561274f578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b901515815260200190565b6000602080835283518082850152825b81811015612809578581018301518582016040015282016127ed565b8181111561281a5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260129082015271323a206e6f7420656e6f756768206d696e6560701b604082015260600190565b6020808252600b908201526a696e76616c69642064617960a81b604082015260600190565b60208082526010908201526f3737ba1039b121b7b73a3937b63632b960811b604082015260600190565b6020808252600490820152637a65726f60e01b604082015260600190565b602080825260129082015271333a206e6f7420656e6f756768206d696e6560701b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e185b1c9958591e4818db185a5b5959608a1b604082015260600190565b602080825260129082015271313a206e6f7420656e6f756768206d696e6560701b604082015260600190565b6020808252601590820152743737ba103832b73234b733a9bab832b920b236b4b760591b604082015260600190565b6020808252600a90820152696e6f207265776172647360b01b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252600e908201526d1e59585c881b1a5b5a5d081b595d60921b604082015260600190565b6020808252600c908201526b7a65726f206164647265737360a01b604082015260600190565b6020808252600e908201526d3737ba1039bab832b920b236b4b760911b604082015260600190565b6020808252600f908201526e6e6f7420656e6f756768206d696e6560881b604082015260600190565b6020808252600e908201526d6e6f7420736254696d656c6f636b60901b604082015260600190565b90815260200190565b928352602083019190915260408201526060019056fea26469706673582212208af2515dc74160d6333be5ef6cb7ccd8b901134267bf1e627c148dfbad8f23a664736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101fa5760003560e01c80636de5f3a91161011a578063c0a41ea8116100ad578063e7f9cefd1161007c578063e7f9cefd146103e6578063eb87e89b146103ee578063f1e5ff3e14610401578063f36d52da14610414578063f426571514610427576101fa565b8063c0a41ea8146103bb578063c9ff8572146103c3578063d1058e59146103cb578063d39ca7de146103d3576101fa565b806399ff8a2b116100e957806399ff8a2b14610385578063a20c845114610398578063a4bc4d7f146103ab578063aaa9a984146103b3576101fa565b80636de5f3a91461033757806376d53d611461034a5780638120c3971461036a57806384e29af21461037d576101fa565b8063335479a2116101925780634d474898116101615780634d474898146102f657806357172196146103095780635a5256ef1461031c5780636d1b229d14610324576101fa565b8063335479a2146102a8578063358ff3d8146102b0578063426338b2146102d05780634d04ad99146102e3576101fa565b80631e10eeaf116101ce5780631e10eeaf146102585780632025dbb71461026b5780632e7fba1d1461027357806330d6a97514610295576101fa565b806212de11146101ff57806304a3379f146102145780631246af89146102325780631ba2295a14610245575b600080fd5b61021261020d3660046126e1565b61043a565b005b61021c6104cd565b604051610229919061275e565b60405180910390f35b6102126102403660046126e1565b6104e1565b6102126102533660046126e1565b6107b6565b610212610266366004612697565b6108f6565b61021c6109ad565b610286610281366004612697565b6109bc565b60405161022993929190612ae5565b6102126102a3366004612697565b6109d8565b61021c610d04565b6102c36102be366004612711565b610d13565b6040516102299190612adc565b6102c36102de36600461267c565b610e20565b6102126102f13660046126e1565b610eaf565b6102126103043660046126e1565b611065565b6102126103173660046126e1565b611340565b61021c6113bf565b6102126103323660046126e1565b6113ce565b6102c361034536600461267c565b611482565b61035d61035836600461267c565b61149d565b60405161022991906127d2565b6102c36103783660046126e1565b611516565b6102c3611552565b6102126103933660046126e1565b611558565b61035d6103a636600461267c565b6115b3565b61021c6115d0565b6102c36115df565b6102c36115e5565b61021c6115eb565b6102126115fa565b6102126103e136600461267c565b611654565b6102126116ab565b6102866103fc3660046126e1565b611707565b6102c361040f36600461267c565b611722565b61021261042236600461273d565b611815565b6102126104353660046126e1565b611958565b600081116104635760405162461bcd60e51b815260040161045a906128ab565b60405180910390fd5b6003546001600160a01b0316331461048d5760405162461bcd60e51b815260040161045a90612ab4565b60058190556040517fed9045cce0d5d46220f267fa3ee30f87a90037ed06da1f2d6eb2473e05b6b4fe906104c2908390612adc565b60405180910390a150565b60005461010090046001600160a01b031690565b600081116105015760405162461bcd60e51b815260040161045a906128ab565b6000546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd9061053990339030908690600401612772565b602060405180830381600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b91906126c1565b506000610596611afc565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ff4dfa516040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e857600080fd5b505afa1580156105fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062091906126f9565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663b0ff52636040518163ffffffff1660e01b815260040160206040518083038186803b15801561067257600080fd5b505afa158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa91906126f9565b905060006106b88484611b1b565b9050818111156106da5760405162461bcd60e51b815260040161045a90612a15565b336000908152600e60205260409020546106f49086611b3f565b336000818152600e602052604090819020929092556002549151639fb9ec1160e01b81526001600160a01b0390921691639fb9ec119161073b9189906001906004016127af565b600060405180830381600087803b15801561075557600080fd5b505af1158015610769573d6000803e3d6000fd5b5050505083336001600160a01b03167f74ad2781a628914d8035cf092b04344e946bd6380d0831e232db60a1472fe34d876040516107a79190612adc565b60405180910390a35050505050565b6000601154116107d85760405162461bcd60e51b815260040161045a906128ab565b6107e0611afc565b8111156107ff5760405162461bcd60e51b815260040161045a9061285c565b336000908152600c60205260408120541561082957336000908152600c60205260409020546108b2565b6001805460408051600162b205af60e01b0319815290516108b293926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b505afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac91906126f9565b90611b64565b90506108c960115482611b3f90919063ffffffff16565b82116108e75760405162461bcd60e51b815260040161045a9061292c565b6108f2823383611ba6565b5050565b600f546001600160a01b031633146109205760405162461bcd60e51b815260040161045a90612a63565b60005460405163a9059cbb60e01b81526101009091046001600160a01b03169063a9059cbb906109569085908590600401612796565b602060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a891906126c1565b505050565b600f546001600160a01b031690565b60008060006109cb8585611ca5565b9250925092509250925092565b600081116109f85760405162461bcd60e51b815260040161045a906128ab565b6001600160a01b038216610a1e5760405162461bcd60e51b815260040161045a90612a3d565b333014610ab1576000546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd90610a5d90339030908690600401612772565b602060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf91906126c1565b505b6000610abb611afc565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ff4dfa516040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906126f9565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663b0ff52636040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9757600080fd5b505afa158015610bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcf91906126f9565b90506000610bdd8484611b1b565b905081811115610bff5760405162461bcd60e51b815260040161045a90612a15565b6001600160a01b03861660009081526006602090815260408083206007835281842060089093529220610c3792919088600189611e02565b610c496009600a600b88600189611e02565b600254604051639fb9ec1160e01b81526001600160a01b0390911690639fb9ec1190610c7e90899089906001906004016127af565b600060405180830381600087803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b5050505083866001600160a01b0316336001600160a01b03167f7b41febabdf75c79974d7fc362e94e9536447c044ca7a3abd8d03a3b4f0fa72688604051610cf49190612adc565b60405180910390a4505050505050565b6010546001600160a01b031690565b60008060115411610d365760405162461bcd60e51b815260040161045a906128ab565b610d3e611afc565b831115610d5d5760405162461bcd60e51b815260040161045a9061285c565b6001600160a01b0382166000908152600c602052604081205415610d99576001600160a01b0383166000908152600c6020526040902054610de4565b6001805460408051600162b205af60e01b031981529051610de493926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b9050610dfb60115482611b3f90919063ffffffff16565b8411610e0b576000915050610e1a565b610e168484836120af565b9150505b92915050565b6001600160a01b0381166000908152600c602052604081205415610e5c576001600160a01b0382166000908152600c6020526040902054610ea7565b6001805460408051600162b205af60e01b031981529051610ea793926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b90505b919050565b60008111610ecf5760405162461bcd60e51b815260040161045a906128ab565b336000908152600e6020526040902054811115610efe5760405162461bcd60e51b815260040161045a90612a8b565b336000908152600e6020526040902054610f189082611b64565b336000818152600e6020526040808220939093556002549251639fb9ec1160e01b81526001600160a01b0390931692639fb9ec1192610f5e9290918691906004016127af565b600060405180830381600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b505060005460405163a9059cbb60e01b81526101009091046001600160a01b0316925063a9059cbb9150610fc69033908590600401612796565b602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101891906126c1565b50611021611afc565b336001600160a01b03167f18773d102e477d2052823daf6088d463d9db804476984920c4e2982764f812868360405161105a9190612adc565b60405180910390a350565b600081116110855760405162461bcd60e51b815260040161045a906128ab565b6000546040516323b872dd60e01b81526101009091046001600160a01b0316906323b872dd906110bd90339030908690600401612772565b602060405180830381600087803b1580156110d757600080fd5b505af11580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110f91906126c1565b50600061111a611afc565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663ff4dfa516040518163ffffffff1660e01b815260040160206040518083038186803b15801561116c57600080fd5b505afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a491906126f9565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663b0ff52636040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e91906126f9565b9050600061123c8484611b1b565b90508181111561125e5760405162461bcd60e51b815260040161045a90612a15565b336000908152600660209081526040808320600783528184206008909352922061128d92919088600189611e02565b61129f6009600a600b88600189611e02565b600254604051639fb9ec1160e01b81526001600160a01b0390911690639fb9ec11906112d490339089906001906004016127af565b600060405180830381600087803b1580156112ee57600080fd5b505af1158015611302573d6000803e3d6000fd5b5050505083336001600160a01b03167f5a9ec13c12ca9563a7b3108125f74c57ed388bb313394ea50f7e4a71b01497c2876040516107a79190612adc565b600081116113605760405162461bcd60e51b815260040161045a906128ab565b6003546001600160a01b0316331461138a5760405162461bcd60e51b815260040161045a90612ab4565b60048190556040517fe695c38ea47003514f438368412c3b22b9ad570884814783201c8a9a422ea8c6906104c2908390612adc565b6002546001600160a01b031690565b600f546001600160a01b031633146113f85760405162461bcd60e51b815260040161045a90612a63565b60005460405163a9059cbb60e01b81526101009091046001600160a01b03169063a9059cbb906114309061dead908590600401612796565b602060405180830381600087803b15801561144a57600080fd5b505af115801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f291906126c1565b6001600160a01b03166000908152600e602052604090205490565b6000806114a8611afc565b905060006114c0846114bb846002611b64565b611ca5565b509150600090506114d6856114bb856001611b64565b5091505060006114e68685611ca5565b5091505060045483101580156114fe57506004548210155b801561150c57506004548110155b9695505050505050565b6000611520611afc565b82111561153f5760405162461bcd60e51b815260040161045a9061285c565b506000908152600d602052604090205490565b60045490565b600f546001600160a01b03163314801561157157503315155b61158d5760405162461bcd60e51b815260040161045a90612a63565b60018110156115ae5760405162461bcd60e51b815260040161045a906128ab565b601155565b6000806115c2836114bb611afc565b506005541115949350505050565b6003546001600160a01b031690565b60115490565b60055490565b6001546001600160a01b031690565b60006011541161161c5760405162461bcd60e51b815260040161045a906128ab565b6000611626611afc565b336000908152600c6020526040812054919250901561082957336000908152600c60205260409020546108b2565b600f546001600160a01b03163314801561166d57503315155b6116895760405162461bcd60e51b815260040161045a90612a63565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b0316331480156116c457503315155b6116e05760405162461bcd60e51b815260040161045a90612981565b60108054600f80546001600160a01b03199081166001600160a01b03841617909155169055565b600080600061171584612150565b9250925092509193909250565b600080601154116117455760405162461bcd60e51b815260040161045a906128ab565b600061174f611afc565b6001600160a01b0384166000908152600c6020526040812054919250901561178f576001600160a01b0384166000908152600c60205260409020546117da565b6001805460408051600162b205af60e01b0319815290516117da93926001600160a01b03169163ff4dfa51916004808301926020929190829003018186803b15801561087457600080fd5b90506117f160115482611b3f90919063ffffffff16565b821161180257600092505050610eaa565b61180d8285836120af565b949350505050565b600081116118355760405162461bcd60e51b815260040161045a906128ab565b6001546001600160a01b0316331461185f5760405162461bcd60e51b815260040161045a90612881565b6000546001546040516323b872dd60e01b81526001600160a01b036101009093048316926323b872dd9261189c9291169030908690600401612772565b602060405180830381600087803b1580156118b657600080fd5b505af11580156118ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ee91906126c1565b506000828152600d60205260409020546119089082611b3f565b6000838152600d602052604090819020919091555182907f61cb44cbea389abb97c617c7d16a62235c51f27da3406d3ec3c9ac87c0d0c8269061194c908490612adc565b60405180910390a25050565b600081116119785760405162461bcd60e51b815260040161045a906128ab565b6000611982611afc565b3360009081526006602090815260408083206007835281842060089093529083209394506119b4939092869086611e02565b6119c66009600a600b85600086611e02565b600254604051639fb9ec1160e01b81526001600160a01b0390911690639fb9ec11906119fb90339086906000906004016127af565b600060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b505060005460405163a9059cbb60e01b81526101009091046001600160a01b0316925063a9059cbb9150611a639033908690600401612796565b602060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab591906126c1565b5080336001600160a01b03167f437d8ac980e75d7fdd31465b53ee4d16d562c4d404b94bada33dd20def01b00e84604051611af09190612adc565b60405180910390a35050565b6000611b166001611b104262015180612251565b90611b3f565b905090565b6000611b386001611b1061016e611b328787611b64565b90612251565b9392505050565b600082820183811015611b385760405162461bcd60e51b815260040161045a906128f5565b6000611b3883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612293565b6000611bb38484846120af565b905060008111611bd55760405162461bcd60e51b815260040161045a906129b0565b601154611be3908590611b64565b6001600160a01b0384166000908152600c60205260409081902091909155516330d6a97560e01b815230906330d6a97590611c249086908590600401612796565b600060405180830381600087803b158015611c3e57600080fd5b505af1158015611c52573d6000803e3d6000fd5b50505050611c5e611afc565b836001600160a01b03167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a83604051611c979190612adc565b60405180910390a350505050565b6001600160a01b038216600090815260066020908152604080832080548251818502810185019093528083528493849360609390929091830182828015611d0b57602002820191906000526020600020905b815481526020019060010190808311611cf7575b5050506001600160a01b03891660009081526007602090815260409182902080548351818402810184019094528084529596506060959294509250830182828015611d7557602002820191906000526020600020905b815481526020019060010190808311611d61575b5050506001600160a01b038a1660009081526008602090815260409182902080548351818402810184019094528084529596506060959294509250830182828015611ddf57602002820191906000526020600020905b815481526020019060010190808311611dcb575b50505050509050611df28383838a6122bf565b9550955095505050509250925092565b855462015180428190066000611e188383611b64565b905083611e93578515611e7657895460018181018c5560008c815260208082209093018890558b549182018c558b8152919091200187905587611e5b88836123e3565b81546001810183556000928352602090922090910155611e8e565b60405162461bcd60e51b815260040161045a90612955565b6120a3565b6000611ea0856001611b64565b905060008b8281548110611eb057fe5b9060005260206000200154905060008b8381548110611ecb57fe5b9060005260206000200154905060008b8481548110611ee657fe5b906000526020600020015490506000808a851415611fa7578b15611f2b57611f0e848e611b3f565b9150611f24611f1d8e896123e3565b8490611b3f565b9050611f6e565b8c841015611f4b5760405162461bcd60e51b815260040161045a90612830565b611f55848e611b64565b9150611f6b611f648e896123e3565b8490611b64565b90505b818f8781548110611f7b57fe5b9060005260206000200181905550808e8781548110611f9657fe5b60009182526020909120015561209c565b8b15611fda57611fb7848e611b3f565b9150611fd3611fc68e896123e3565b611b1086620151806123e3565b9050612023565b8c841015611ffa5760405162461bcd60e51b815260040161045a906128c9565b612004848e611b64565b91506120206120138e896123e3565b6108ac86620151806123e3565b90505b8f8b90806001815401808255809150506001900390600052602060002001600090919091909150558e8290806001815401808255809150506001900390600052602060002001600090919091909150558d8190806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050505b50505050505050505050565b600080806120be846001611b3f565b90505b6011546120cf908790611b64565b81116121475760006120e18683611ca5565b9250505060006120f083612150565b925050508061210057505061213f565b6000838152600d60205260409020548061211c5750505061213f565b600061212c83611b3284876123e3565b90506121388682611b3f565b9550505050505b6001016120c1565b50949350505050565b600080600061171560098054806020026020016040519081016040528092919081815260200182805480156121a457602002820191906000526020600020905b815481526020019060010190808311612190575b5050505050600a8054806020026020016040519081016040528092919081815260200182805480156121f557602002820191906000526020600020905b8154815260200190600101908083116121e1575b5050505050600b80548060200260200160405190810160405280929190818152602001828054801561224657602002820191906000526020600020905b815481526020019060010190808311612232575b5050505050876122bf565b6000611b3883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061241d565b600081848411156122b75760405162461bcd60e51b815260040161045a91906127dd565b505050900390565b835160009081908190806122dd5784600080935093509350506123d9565b876000815181106122ea57fe5b60200260200101518510156123095784600080935093509350506123d9565b6000612316826001611b64565b9050600089828151811061232657fe5b602002602001015190508087141561236f578689838151811061234557fe5b602002602001015189848151811061235957fe5b60200260200101519550955095505050506123d9565b808711156123c3578689838151811061238457fe5b60200260200101516123b5620151808c868151811061239f57fe5b60200260200101516123e390919063ffffffff16565b9550955095505050506123d9565b6123cf8a8a8a8a612454565b9550955095505050505b9450945094915050565b6000826123f257506000610e1a565b828202828482816123ff57fe5b0414611b385760405162461bcd60e51b815260040161045a906129d4565b6000818361243e5760405162461bcd60e51b815260040161045a91906127dd565b50600083858161244a57fe5b0495945050505050565b60008060008060009050600061247560018a51611b6490919063ffffffff16565b905060006124886002611b328486611b3f565b90505b8183101561262c57868a82815181106124a057fe5b602002602001015114156124cf57868982815181106124bb57fe5b602002602001015189838151811061235957fe5b868a82815181106124dc57fe5b60200260200101511115612589576000811180156125165750868a612502836001611b64565b8151811061250c57fe5b6020026020010151105b15612560578689612528836001611b64565b8151811061253257fe5b60200260200101516123b5620151808c612556600187611b6490919063ffffffff16565b8151811061239f57fe5b8061257757866000809550955095505050506123d9565b612582816001611b64565b9150612616565b868a828151811061259657fe5b602002602001015110156126165789516125b1906001611b64565b811080156125db5750868a6125c7836001611b3f565b815181106125d157fe5b6020026020010151115b1561260857868982815181106125ed57fe5b60200260200101516123b5620151808c858151811061239f57fe5b612613816001611b3f565b92505b6126256002611b328486611b3f565b905061248b565b868a828151811061263957fe5b60200260200101511461265857866000809550955095505050506123d9565b868982815181106124bb57fe5b80356001600160a01b0381168114610e1a57600080fd5b60006020828403121561268d578081fd5b611b388383612665565b600080604083850312156126a9578081fd5b6126b38484612665565b946020939093013593505050565b6000602082840312156126d2578081fd5b81518015158114611b38578182fd5b6000602082840312156126f2578081fd5b5035919050565b60006020828403121561270a578081fd5b5051919050565b60008060408385031215612723578182fd5b823591506127348460208501612665565b90509250929050565b6000806040838503121561274f578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b901515815260200190565b6000602080835283518082850152825b81811015612809578581018301518582016040015282016127ed565b8181111561281a5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260129082015271323a206e6f7420656e6f756768206d696e6560701b604082015260600190565b6020808252600b908201526a696e76616c69642064617960a81b604082015260600190565b60208082526010908201526f3737ba1039b121b7b73a3937b63632b960811b604082015260600190565b6020808252600490820152637a65726f60e01b604082015260600190565b602080825260129082015271333a206e6f7420656e6f756768206d696e6560701b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e185b1c9958591e4818db185a5b5959608a1b604082015260600190565b602080825260129082015271313a206e6f7420656e6f756768206d696e6560701b604082015260600190565b6020808252601590820152743737ba103832b73234b733a9bab832b920b236b4b760591b604082015260600190565b6020808252600a90820152696e6f207265776172647360b01b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252600e908201526d1e59585c881b1a5b5a5d081b595d60921b604082015260600190565b6020808252600c908201526b7a65726f206164647265737360a01b604082015260600190565b6020808252600e908201526d3737ba1039bab832b920b236b4b760911b604082015260600190565b6020808252600f908201526e6e6f7420656e6f756768206d696e6560881b604082015260600190565b6020808252600e908201526d6e6f7420736254696d656c6f636b60901b604082015260600190565b90815260200190565b928352602083019190915260408201526060019056fea26469706673582212208af2515dc74160d6333be5ef6cb7ccd8b901134267bf1e627c148dfbad8f23a664736f6c634300060c0033
Deployed Bytecode Sourcemap
212:19919:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4491:279;;;;;;:::i;:::-;;:::i;:::-;;9663:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8149:628;;;;;;:::i;:::-;;:::i;10821:515::-;;;;;;:::i;:::-;;:::i;1888:177::-;;;;;;:::i;:::-;;:::i;2831:100::-;;;:::i;12520:229::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;4776:1033::-;;;;;;:::i;:::-;;:::i;2937:114::-;;;:::i;11912:602::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9990:278::-;;;;;;:::i;:::-;;:::i;8783:418::-;;;;;;:::i;:::-;;:::i;6552:912::-;;;;;;:::i;:::-;;:::i;4192:293::-;;;;;;:::i;:::-;;:::i;9775:103::-;;;:::i;2071:236::-;;;;;;:::i;:::-;;:::i;9207:117::-;;;;;;:::i;:::-;;:::i;3405:581::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6384:162::-;;;;;;:::i;:::-;;:::i;9330:103::-;;;:::i;3057:249::-;;;;;;:::i;:::-;;:::i;3992:194::-;;;;;;:::i;:::-;;:::i;9884:100::-;;;:::i;3312:87::-;;;:::i;9439:99::-;;;:::i;9544:113::-;;;:::i;10274:541::-;;;:::i;2313:247::-;;;;;;:::i;:::-;;:::i;2566:259::-;;;:::i;5815:199::-;;;;;;:::i;:::-;;:::i;11342:564::-;;;;;;:::i;:::-;;:::i;6020:358::-;;;;;;:::i;:::-;;:::i;7470:673::-;;;;;;:::i;:::-;;:::i;4491:279::-;4595:1;4574:18;:22;4566:39;;;;-1:-1:-1;;;4566:39:3;;;;;;;:::i;:::-;;;;;;;;;4637:10;;-1:-1:-1;;;;;4637:10:3;4623;:24;4615:51;;;;-1:-1:-1;;;4615:51:3;;;;;;;:::i;:::-;4676:12;:33;;;4724:39;;;;;;4691:18;;4724:39;:::i;:::-;;;;;;;;4491:279;:::o;9663:106::-;9716:7;9750:11;;;;-1:-1:-1;;;;;9750:11:3;;9663:106::o;8149:628::-;8225:1;8216:6;:10;8208:27;;;;-1:-1:-1;;;8208:27:3;;;;;;;:::i;:::-;8245:11;;:59;;-1:-1:-1;;;8245:59:3;;:11;;;;-1:-1:-1;;;;;8245:11:3;;:24;;:59;;8270:10;;8290:4;;8297:6;;8245:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8314:18;8335:16;:14;:16::i;:::-;8314:37;;8361:16;8380:12;;;;;;;;;-1:-1:-1;;;;;8380:12:3;-1:-1:-1;;;;;8380:24:3;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8361:45;;8416:17;8436:12;;;;;;;;;-1:-1:-1;;;;;8436:12:3;-1:-1:-1;;;;;8436:24:3;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8416:46;;8472:12;8487:37;8503:10;8515:8;8487:15;:37::i;:::-;8472:52;;8550:9;8542:4;:17;;8534:44;;;;-1:-1:-1;;;8534:44:3;;;;;;;:::i;:::-;8628:10;8615:24;;;;:12;:24;;;;;;:36;;8644:6;8615:28;:36::i;:::-;8601:10;8588:24;;;;:12;:24;;;;;;;:63;;;;8661:7;;:45;;-1:-1:-1;;;8661:45:3;;-1:-1:-1;;;;;8661:7:3;;;;:19;;:45;;8693:6;;8661:7;;:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8759:10;8739;-1:-1:-1;;;;;8721:49:3;;8751:6;8721:49;;;;;;:::i;:::-;;;;;;;;8149:628;;;;;:::o;10821:515::-;10890:1;10878:9;;:13;10870:30;;;;-1:-1:-1;;;10870:30:3;;;;;;;:::i;:::-;10925:16;:14;:16::i;:::-;10918:3;:23;;10910:47;;;;-1:-1:-1;;;10910:47:3;;;;;;;:::i;:::-;11018:10;10967:25;10995:34;;;:22;:34;;;;;;:39;:136;;11120:10;11097:34;;;;:22;:34;;;;;;10995:136;;;11080:1;11049:12;;:26;;;-1:-1:-1;;;;;;11049:26:3;;;;:33;;11080:1;-1:-1:-1;;;;;11049:12:3;;:24;;:26;;;;;;;;;;;;;;:12;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;;:33::i;:::-;10967:164;;11155:32;11177:9;;11155:17;:21;;:32;;;;:::i;:::-;11149:3;:38;11141:66;;;;-1:-1:-1;;;11141:66:3;;;;;;;:::i;:::-;11287:42;11294:3;11299:10;11311:17;11287:6;:42::i;:::-;10821:515;;:::o;1888:177::-;1982:10;;-1:-1:-1;;;;;1982:10:3;1968;:24;1960:51;;;;-1:-1:-1;;;1960:51:3;;;;;;;:::i;:::-;2021:11;;:37;;-1:-1:-1;;;2021:37:3;;:11;;;;-1:-1:-1;;;;;2021:11:3;;:20;;:37;;2042:7;;2051:6;;2021:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1888:177;;:::o;2831:100::-;2914:10;;-1:-1:-1;;;;;2914:10:3;2831:100;:::o;12520:229::-;12632:7;12653;12674;12713:29;12731:5;12738:3;12713:17;:29::i;:::-;12706:36;;;;;;12520:229;;;;;:::o;4776:1033::-;4860:1;4851:6;:10;4843:27;;;;-1:-1:-1;;;4843:27:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;4888:19:3;;4880:44;;;;-1:-1:-1;;;4880:44:3;;;;;;;:::i;:::-;4938:10;4960:4;4938:27;4934:117;;4981:11;;:59;;-1:-1:-1;;;4981:59:3;;:11;;;;-1:-1:-1;;;;;4981:11:3;;:24;;:59;;5006:10;;5026:4;;5033:6;;4981:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4934:117;5060:18;5081:16;:14;:16::i;:::-;5060:37;;5107:16;5126:12;;;;;;;;;-1:-1:-1;;;;;5126:12:3;-1:-1:-1;;;;;5126:24:3;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5107:45;;5162:17;5182:12;;;;;;;;;-1:-1:-1;;;;;5182:12:3;-1:-1:-1;;;;;5182:24:3;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5162:46;;5218:12;5233:37;5249:10;5261:8;5233:15;:37::i;:::-;5218:52;;5296:9;5288:4;:17;;5280:44;;;;-1:-1:-1;;;5280:44:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;5355:20:3;;;;;;:13;:20;;;;;;;;5389:16;:23;;;;;5426:20;:27;;;;;5334:191;;5355:20;5389:23;5467:6;5487:4;5505:10;5334:7;:191::i;:::-;5535:155;5556:8;5578:11;5603:15;5632:6;5652:4;5670:10;5535:7;:155::i;:::-;5700:7;;:40;;-1:-1:-1;;;5700:40:3;;-1:-1:-1;;;;;5700:7:3;;;;:19;;:40;;5720:5;;5727:6;;5700:7;;:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5791:10;5776:5;-1:-1:-1;;;;;5755:47:3;5764:10;-1:-1:-1;;;;;5755:47:3;;5783:6;5755:47;;;;;;:::i;:::-;;;;;;;;4776:1033;;;;;;:::o;2937:114::-;3027:17;;-1:-1:-1;;;;;3027:17:3;2937:114;:::o;11912:602::-;12012:7;12055:1;12043:9;;:13;12035:30;;;;-1:-1:-1;;;12035:30:3;;;;;;;:::i;:::-;12090:16;:14;:16::i;:::-;12083:3;:23;;12075:47;;;;-1:-1:-1;;;12075:47:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;12160:29:3;;12132:25;12160:29;;;:22;:29;;;;;;:34;:126;;-1:-1:-1;;;;;12257:29:3;;;;;;:22;:29;;;;;;12160:126;;;12240:1;12209:12;;:26;;;-1:-1:-1;;;;;;12209:26:3;;;;:33;;12240:1;-1:-1:-1;;;;;12209:12:3;;:24;;:26;;;;;;;;;;;;;;:12;:26;;;;;;;;;;:33;12132:154;;12308:32;12330:9;;12308:17;:21;;:32;;;;:::i;:::-;12302:3;:38;12296:80;;12364:1;12357:8;;;;;12296:80;12462:45;12477:3;12482:5;12489:17;12462:14;:45::i;:::-;12455:52;;;11912:602;;;;;:::o;9990:278::-;-1:-1:-1;;;;;10127:29:3;;10085:7;10127:29;;;:22;:29;;;;;;:34;:134;;-1:-1:-1;;;;;10232:29:3;;;;;;:22;:29;;;;;;10127:134;;;10211:1;10180:12;;:26;;;-1:-1:-1;;;;;;10180:26:3;;;;:33;;10211:1;-1:-1:-1;;;;;10180:12:3;;:24;;:26;;;;;;;;;;;;;;:12;:26;;;;;;;;;;:33;10108:153;;9990:278;;;;:::o;8783:418::-;8861:1;8852:6;:10;8844:27;;;;-1:-1:-1;;;8844:27:3;;;;;;;:::i;:::-;8902:10;8889:24;;;;:12;:24;;;;;;:34;-1:-1:-1;8889:34:3;8881:62;;;;-1:-1:-1;;;8881:62:3;;;;;;;:::i;:::-;8993:10;8980:24;;;;:12;:24;;;;;;:36;;9009:6;8980:28;:36::i;:::-;8966:10;8953:24;;;;:12;:24;;;;;;:63;;;;9026:7;;:46;;-1:-1:-1;;;9026:46:3;;-1:-1:-1;;;;;9026:7:3;;;;:19;;:46;;8966:10;;9058:6;;8953:24;9026:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9082:11:3;;:40;;-1:-1:-1;;;9082:40:3;;:11;;;;-1:-1:-1;;;;;9082:11:3;;-1:-1:-1;9082:20:3;;-1:-1:-1;9082:40:3;;9103:10;;9115:6;;9082:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9177:16;:14;:16::i;:::-;9157:10;-1:-1:-1;;;;;9137:57:3;;9169:6;9137:57;;;;;;:::i;:::-;;;;;;;;8783:418;:::o;6552:912::-;6616:1;6607:6;:10;6599:27;;;;-1:-1:-1;;;6599:27:3;;;;;;;:::i;:::-;6636:11;;:59;;-1:-1:-1;;;6636:59:3;;:11;;;;-1:-1:-1;;;;;6636:11:3;;:24;;:59;;6661:10;;6681:4;;6688:6;;6636:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6705:18;6726:16;:14;:16::i;:::-;6705:37;;6752:16;6771:12;;;;;;;;;-1:-1:-1;;;;;6771:12:3;-1:-1:-1;;;;;6771:24:3;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6752:45;;6807:17;6827:12;;;;;;;;;-1:-1:-1;;;;;6827:12:3;-1:-1:-1;;;;;6827:24:3;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6807:46;;6863:12;6878:37;6894:10;6906:8;6878:15;:37::i;:::-;6863:52;;6941:9;6933:4;:17;;6925:44;;;;-1:-1:-1;;;6925:44:3;;;;;;;:::i;:::-;7014:10;7000:25;;;;:13;:25;;;;;;;;7039:16;:28;;;;;7081:20;:32;;;;;6979:206;;7000:25;7039:28;7127:6;7147:4;7165:10;6979:7;:206::i;:::-;7195:155;7216:8;7238:11;7263:15;7292:6;7312:4;7330:10;7195:7;:155::i;:::-;7360:7;;:45;;-1:-1:-1;;;7360:45:3;;-1:-1:-1;;;;;7360:7:3;;;;:19;;:45;;7380:10;;7392:6;;7360:7;;:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7446:10;7426;-1:-1:-1;;;;;7420:37:3;;7438:6;7420:37;;;;;;:::i;4192:293::-;4302:1;4279:20;:24;4271:41;;;;-1:-1:-1;;;4271:41:3;;;;;;;:::i;:::-;4344:10;;-1:-1:-1;;;;;4344:10:3;4330;:24;4322:51;;;;-1:-1:-1;;;4322:51:3;;;;;;;:::i;:::-;4383:14;:37;;;4435:43;;;;;;4400:20;;4435:43;:::i;9775:103::-;9863:7;;-1:-1:-1;;;;;9863:7:3;9775:103;:::o;2071:236::-;2146:10;;-1:-1:-1;;;;;2146:10:3;2132;:24;2124:51;;;;-1:-1:-1;;;2124:51:3;;;;;;;:::i;:::-;2185:11;;:115;;-1:-1:-1;;;2185:115:3;;:11;;;;-1:-1:-1;;;;;2185:11:3;;:20;;:115;;2227:42;;2284:6;;2185:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9207:117::-;-1:-1:-1;;;;;9298:19:3;9272:7;9298:19;;;:12;:19;;;;;;;9207:117::o;3405:581::-;3468:4;3484:18;3505:16;:14;:16::i;:::-;3484:37;-1:-1:-1;3534:22:3;3562:77;3593:5;3612:17;3484:37;3627:1;3612:14;:17::i;:::-;3562;:77::i;:::-;-1:-1:-1;3531:108:3;-1:-1:-1;3652:21:3;;-1:-1:-1;3679:77:3;3710:5;3729:17;:10;3744:1;3729:14;:17::i;3679:77::-;3649:107;;;;3769:17;3792:36;3810:5;3817:10;3792:17;:36::i;:::-;3766:62;;;;3875:14;;3857;:32;;:79;;;;;3922:14;;3905:13;:31;;3857:79;:122;;;;;3965:14;;3952:9;:27;;3857:122;3838:141;3405:581;-1:-1:-1;;;;;;3405:581:3:o;6384:162::-;6441:7;6475:16;:14;:16::i;:::-;6468:3;:23;;6460:47;;;;-1:-1:-1;;;6460:47:3;;;;;;;:::i;:::-;-1:-1:-1;6524:15:3;;;;:10;:15;;;;;;;6384:162::o;9330:103::-;9412:14;;9330:103;:::o;3057:249::-;3151:10;;-1:-1:-1;;;;;3151:10:3;3137;:24;:52;;;;-1:-1:-1;3165:10:3;:24;;3137:52;3116:113;;;;-1:-1:-1;;;3116:113:3;;;;;;;:::i;:::-;3259:1;3247:8;:13;;3239:30;;;;-1:-1:-1;;;3239:30:3;;;;;;;:::i;:::-;3279:9;:20;3057:249::o;3992:194::-;4053:4;4072:17;4095:42;4113:5;4120:16;:14;:16::i;4095:42::-;-1:-1:-1;4167:12:3;;-1:-1:-1;4154:25:3;;3992:194;-1:-1:-1;;;;3992:194:3:o;9884:100::-;9967:10;;-1:-1:-1;;;;;9967:10:3;9884:100;:::o;3312:87::-;3383:9;;3312:87;:::o;9439:99::-;9519:12;;9439:99;:::o;9544:113::-;9637:12;;-1:-1:-1;;;;;9637:12:3;9544:113;:::o;10274:541::-;10331:1;10319:9;;:13;10311:30;;;;-1:-1:-1;;;10311:30:3;;;;;;;:::i;:::-;10351:18;10372:16;:14;:16::i;:::-;10449:10;10398:25;10426:34;;;:22;:34;;;;;;10351:37;;-1:-1:-1;10398:25:3;10426:39;:136;;10551:10;10528:34;;;;:22;:34;;;;;;10426:136;;2313:247;2425:10;;-1:-1:-1;;;;;2425:10:3;2411;:24;:52;;;;-1:-1:-1;2439:10:3;:24;;2411:52;2390:113;;;;-1:-1:-1;;;2390:113:3;;;;;;;:::i;:::-;2513:17;:40;;-1:-1:-1;;;;;;2513:40:3;-1:-1:-1;;;;;2513:40:3;;;;;;;;;;2313:247::o;2566:259::-;2646:17;;-1:-1:-1;;;;;2646:17:3;2632:10;:31;:59;;;;-1:-1:-1;2667:10:3;:24;;2632:59;2611:127;;;;-1:-1:-1;;;2611:127:3;;;;;;;:::i;:::-;2761:17;;;2748:10;:30;;-1:-1:-1;;;;;;2748:30:3;;;-1:-1:-1;;;;;2761:17:3;;2748:30;;;;2788;;;2566:259::o;5815:199::-;5909:7;5930;5951;5990:17;6003:3;5990:12;:17::i;:::-;5983:24;;;;;;5815:199;;;;;:::o;11342:564::-;11404:7;11443:1;11431:9;;:13;11423:30;;;;-1:-1:-1;;;11423:30:3;;;;;;;:::i;:::-;11463:18;11484:16;:14;:16::i;:::-;-1:-1:-1;;;;;11538:29:3;;11510:25;11538:29;;;:22;:29;;;;;;11463:37;;-1:-1:-1;11510:25:3;11538:34;:126;;-1:-1:-1;;;;;11635:29:3;;;;;;:22;:29;;;;;;11538:126;;;11618:1;11587:12;;:26;;;-1:-1:-1;;;;;;11587:26:3;;;;:33;;11618:1;-1:-1:-1;;;;;11587:12:3;;:24;;:26;;;;;;;;;;;;;;:12;:26;;;;;;;;;;:33;11510:154;;11693:32;11715:9;;11693:17;:21;;:32;;;;:::i;:::-;11680:10;:45;11674:87;;11749:1;11742:8;;;;;;11674:87;11847:52;11862:10;11874:5;11881:17;11847:14;:52::i;:::-;11840:59;11342:564;-1:-1:-1;;;;11342:564:3:o;6020:358::-;6109:1;6100:6;:10;6092:27;;;;-1:-1:-1;;;6092:27:3;;;;;;;:::i;:::-;6159:12;;-1:-1:-1;;;;;6159:12:3;6137:10;:35;6129:64;;;;-1:-1:-1;;;6129:64:3;;;;;;;:::i;:::-;6203:11;;;6236:12;6203:70;;-1:-1:-1;;;6203:70:3;;-1:-1:-1;;;;;6203:11:3;;;;;;;:24;;:70;;6236:12;;;6259:4;;6266:6;;6203:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6301:15:3;;;;:10;:15;;;;;;:27;;6321:6;6301:19;:27::i;:::-;6283:15;;;;:10;:15;;;;;;;:45;;;;6343:28;6294:3;;6343:28;;;;6364:6;;6343:28;:::i;:::-;;;;;;;;6020:358;;:::o;7470:673::-;7536:1;7527:6;:10;7519:27;;;;-1:-1:-1;;;7519:27:3;;;;;;;:::i;:::-;7556:18;7577:16;:14;:16::i;:::-;7638:10;7624:25;;;;:13;:25;;;;;;;;7663:16;:28;;;;;7705:20;:32;;;;;;7556:37;;-1:-1:-1;7603:207:3;;7624:25;;7751:6;;7556:37;7603:7;:207::i;:::-;7820:156;7841:8;7863:11;7888:15;7917:6;7937:5;7956:10;7820:7;:156::i;:::-;7986:7;;:46;;-1:-1:-1;;;7986:46:3;;-1:-1:-1;;;;;7986:7:3;;;;:19;;:46;;8006:10;;8018:6;;7986:7;;:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8042:11:3;;:40;;-1:-1:-1;;;8042:40:3;;:11;;;;-1:-1:-1;;;;;8042:11:3;;-1:-1:-1;8042:20:3;;-1:-1:-1;8042:40:3;;8063:10;;8075:6;;8042:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8125:10;8105;-1:-1:-1;;;;;8097:39:3;;8117:6;8097:39;;;;;;:::i;:::-;;;;;;;;7470:673;;:::o;18421:116::-;18470:7;18496:34;18528:1;18496:27;:15;18516:6;18496:19;:27::i;:::-;:31;;:34::i;:::-;18489:41;;18421:116;:::o;19904:225::-;20007:7;20037:33;20068:1;20037:26;20059:3;20037:17;:3;20045:8;20037:7;:17::i;:::-;:21;;:26::i;:33::-;20030:40;19904:225;-1:-1:-1;;;19904:225:3:o;874:176:1:-;932:7;963:5;;;986:6;;;;978:46;;;;-1:-1:-1;;;978:46:1;;;;;;;:::i;1321:134::-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;18543:400:3:-;18667:15;18685:49;18700:7;18709:5;18716:17;18685:14;:49::i;:::-;18667:67;;18762:1;18752:7;:11;18744:34;;;;-1:-1:-1;;;18744:34:3;;;;;;;:::i;:::-;18832:9;;18820:22;;:7;;:11;:22::i;:::-;-1:-1:-1;;;;;18788:29:3;;;;;;:22;:29;;;;;;;:54;;;;18852:28;-1:-1:-1;;;18852:28:3;;:4;;:12;;:28;;18811:5;;18872:7;;18852:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18919:16;:14;:16::i;:::-;18903:5;-1:-1:-1;;;;;18895:41:3;;18910:7;18895:41;;;;;;:::i;:::-;;;;;;;;18543:400;;;;:::o;12993:428::-;-1:-1:-1;;;;;13207:20:3;;13108:7;13207:20;;;:13;:20;;;;;;;;13182:45;;;;;;;;;;;;;;;;;13108:7;;;;13182:22;;:45;;13207:20;;13182:45;;13207:20;13182:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;13265:23:3;;;;;;:16;:23;;;;;;;;;13237:51;;;;;;;;;;;;;;;;;13182:45;;-1:-1:-1;13237:25:3;;:51;;-1:-1:-1;13265:23:3;-1:-1:-1;13237:51:3;;13265:23;13237:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;13330:27:3;;;;;;:20;:27;;;;;;;;;13298:59;;;;;;;;;;;;;;;;;13237:51;;-1:-1:-1;13298:29:3;;:59;;-1:-1:-1;13330:27:3;-1:-1:-1;13298:59:3;;13330:27;13298:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13374:40;13379:5;13386:8;13396:12;13410:3;13374:4;:40::i;:::-;13367:47;;;;;;;;;12993:428;;;;;:::o;15894:2521::-;16132:12;;16178:6;16227:15;:31;;;16118:11;16299:63;16178:6;16227:31;16299:17;:63::i;:::-;16268:94;-1:-1:-1;16377:8:3;16373:2036;;16405:6;16401:250;;;16431:22;;;;;;;;-1:-1:-1;16431:22:3;;;;;;;;;;;;;16471:21;;;;;;;;;;;;;;;;;;16510:12;16528:32;16485:6;16539:20;16528:10;:32::i;:::-;16510:51;;;;;;;-1:-1:-1;16510:51:3;;;;;;;;;;;16401:250;;;16600:36;;-1:-1:-1;;;16600:36:3;;;;;;;:::i;:::-;16373:2036;;;16681:17;16701:10;:3;16709:1;16701:7;:10::i;:::-;16681:30;;16725:20;16748:5;16754:9;16748:16;;;;;;;;;;;;;;;;16725:39;;16778:23;16804:8;16813:9;16804:19;;;;;;;;;;;;;;;;16778:45;;16837:23;16863:12;16876:9;16863:23;;;;;;;;;;;;;;;;16837:49;;16901:17;16932:22;16989:10;16973:12;:26;16969:1430;;;17023:6;17019:532;;;17065:27;:15;17085:6;17065:19;:27::i;:::-;17053:39;-1:-1:-1;17131:99:3;17176:32;:6;17187:20;17176:10;:32::i;:::-;17131:15;;:19;:99::i;:::-;17114:116;;17019:532;;;17304:6;17285:15;:25;;17277:56;;;;-1:-1:-1;;;17277:56:3;;;;;;;:::i;:::-;17367:27;:15;17387:6;17367:19;:27::i;:::-;17355:39;-1:-1:-1;17433:99:3;17478:32;:6;17489:20;17478:10;:32::i;:::-;17433:15;;:19;:99::i;:::-;17416:116;;17019:532;17590:9;17568:8;17577:9;17568:19;;;;;;;;;;;;;;;:31;;;;17643:14;17617:12;17630:9;17617:23;;;;;;;;;;;;;;;;;:40;16969:1430;;;17700:6;17696:556;;;17742:27;:15;17762:6;17742:19;:27::i;:::-;17730:39;-1:-1:-1;17808:111:3;17865:32;:6;17876:20;17865:10;:32::i;:::-;17808:27;:15;17828:6;17808:19;:27::i;:111::-;17791:128;;17696:556;;;17993:6;17974:15;:25;;17966:56;;;;-1:-1:-1;;;17966:56:3;;;;;;;:::i;:::-;18056:27;:15;18076:6;18056:19;:27::i;:::-;18044:39;-1:-1:-1;18122:111:3;18179:32;:6;18190:20;18179:10;:32::i;:::-;18122:27;:15;18142:6;18122:19;:27::i;:111::-;18105:128;;17696:556;18269:5;18280:10;18269:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18309:8;18323:9;18309:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18351:12;18369:14;18351:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16969:1430;16373:2036;;;;;;;15894:2521;;;;;;;;;;:::o;18949:949::-;19085:7;;;19161:24;:17;19183:1;19161:21;:24::i;:::-;19147:38;;19129:739;19218:9;;19206:22;;:7;;:11;:22::i;:::-;19199:3;:29;19129:739;;19277:30;19311:75;19346:5;19369:3;19311:17;:75::i;:::-;19272:114;;;;19405:25;19434:17;19447:3;19434:12;:17::i;:::-;19400:51;-1:-1:-1;;;19469:22:3;19465:69;;19511:8;;;;19465:69;19547:28;19578:15;;;:10;:15;;;;;;19611:25;19607:72;;19656:8;;;;;19607:72;19692:14;19709:105;19796:17;19709:65;:20;19751:22;19709:41;:65::i;:105::-;19692:122;-1:-1:-1;19838:19:3;:7;19692:122;19838:11;:19::i;:::-;19828:29;;19129:739;;;;;19242:5;;19129:739;;;-1:-1:-1;19884:7:3;18949:949;-1:-1:-1;;;;18949:949:3:o;12755:232::-;12850:7;12871;12892;12931:49;12936:8;12931:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12946:11;12931:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12959:15;12931:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12976:3;12931:4;:49::i;3101:130:1:-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;1746:187::-;1832:7;1867:12;1859:6;;;;1851:29;;;;-1:-1:-1;;;1851:29:1;;;;;;;;:::i;:::-;-1:-1:-1;;;1902:5:1;;;1746:187::o;13427:837:3:-;13722:12;;13634:7;;;;;;13748:8;13744:57;;13780:3;13785:1;13788;13772:18;;;;;;;;;13744:57;13820:5;13826:1;13820:8;;;;;;;;;;;;;;13814:3;:14;13810:63;;;13852:3;13857:1;13860;13844:18;;;;;;;;;13810:63;13882:17;13902:10;:3;13910:1;13902:7;:10::i;:::-;13882:30;;13922:20;13945:5;13951:9;13945:16;;;;;;;;;;;;;;13922:39;;13982:12;13975:3;:19;13971:229;;;14018:3;14023:8;14032:9;14023:19;;;;;;;;;;;;;;14044:12;14057:9;14044:23;;;;;;;;;;;;;;14010:58;;;;;;;;;;;13971:229;14095:12;14089:3;:18;14085:115;;;14131:3;14136:8;14145:9;14136:19;;;;;;;;;;;;;;14157:31;14181:6;14157:8;14166:9;14157:19;;;;;;;;;;;;;;:23;;:31;;;;:::i;:::-;14123:66;;;;;;;;;;;14085:115;14216:41;14222:5;14229:8;14239:12;14253:3;14216:5;:41::i;:::-;14209:48;;;;;;;;;13427:837;;;;;;;;;:::o;2180:459:1:-;2238:7;2479:6;2475:45;;-1:-1:-1;2508:1:1;2501:8;;2475:45;2542:5;;;2546:1;2542;:5;:1;2565:5;;;;;:10;2557:56;;;;-1:-1:-1;;;2557:56:1;;;;;;;:::i;3713:272::-;3799:7;3833:12;3826:5;3818:28;;;;-1:-1:-1;;;3818:28:1;;;;;;;;:::i;:::-;;3856:9;3872:1;3868;:5;;;;;;;3713:272;-1:-1:-1;;;;;3713:272:1:o;14270:1618:3:-;14478:7;14499;14520;14552:12;14567:1;14552:16;;14578:13;14594:19;14611:1;14594:5;:12;:16;;:19;;;;:::i;:::-;14578:35;-1:-1:-1;14623:14:3;14640:22;14660:1;14640:15;14578:35;14650:4;14640:9;:15::i;:22::-;14623:39;;14672:1049;14686:5;14679:4;:12;14672:1049;;;14728:3;14711:5;14717:6;14711:13;;;;;;;;;;;;;;:20;14707:959;;;14759:3;14764:8;14773:6;14764:16;;;;;;;;;;;;;;14782:12;14795:6;14782:20;;;;;;;14707:959;14844:3;14828:5;14834:6;14828:13;;;;;;;;;;;;;;:19;14824:842;;;14880:1;14871:6;:10;:40;;;;-1:-1:-1;14908:3:3;14885:5;14891:13;:6;14902:1;14891:10;:13::i;:::-;14885:20;;;;;;;;;;;;;;:26;14871:40;14867:255;;;14968:3;14997:8;15006:13;:6;15017:1;15006:10;:13::i;:::-;14997:23;;;;;;;;;;;;;;15046:35;15074:6;15046:8;15055:13;15066:1;15055:6;:10;;:13;;;;:::i;:::-;15046:23;;;;;;;14867:255;15143:11;15139:76;;15186:3;15191:1;15194;15178:18;;;;;;;;;;;15139:76;15240:13;:6;15251:1;15240:10;:13::i;:::-;15232:21;;14824:842;;;15294:3;15278:5;15284:6;15278:13;;;;;;;;;;;;;;:19;15274:392;;;15351:12;;:19;;15368:1;15351:16;:19::i;:::-;15342:6;:28;:58;;;;-1:-1:-1;15397:3:3;15374:5;15380:13;:6;15391:1;15380:10;:13::i;:::-;15374:20;;;;;;;;;;;;;;:26;15342:58;15317:297;;;15474:3;15503:8;15512:6;15503:16;;;;;;;;;;;;;;15545:28;15566:6;15545:8;15554:6;15545:16;;;;;;;15317:297;15638:13;:6;15649:1;15638:10;:13::i;:::-;15631:20;;15274:392;15688:22;15708:1;15688:15;:5;15698:4;15688:9;:15::i;:22::-;15679:31;;14672:1049;;;15751:3;15734:5;15740:6;15734:13;;;;;;;;;;;;;;:20;15730:152;;15778:3;15783:1;15786;15770:18;;;;;;;;;;;15730:152;15827:3;15832:8;15841:6;15832:16;;;;;;;5:130:-1;72:20;;-1:-1;;;;;20070:54;;21035:35;;21025:2;;21084:1;;21074:12;555:241;;659:2;647:9;638:7;634:23;630:32;627:2;;;-1:-1;;665:12;627:2;727:53;772:7;748:22;727:53;:::i;803:366::-;;;924:2;912:9;903:7;899:23;895:32;892:2;;;-1:-1;;930:12;892:2;992:53;1037:7;1013:22;992:53;:::i;:::-;982:63;1082:2;1121:22;;;;344:20;;-1:-1;;;886:283::o;1176:257::-;;1288:2;1276:9;1267:7;1263:23;1259:32;1256:2;;;-1:-1;;1294:12;1256:2;223:6;217:13;21181:5;19982:13;19975:21;21159:5;21156:32;21146:2;;-1:-1;;21192:12;1440:241;;1544:2;1532:9;1523:7;1519:23;1515:32;1512:2;;;-1:-1;;1550:12;1512:2;-1:-1;344:20;;1506:175;-1:-1;1506:175::o;1688:263::-;;1803:2;1791:9;1782:7;1778:23;1774:32;1771:2;;;-1:-1;;1809:12;1771:2;-1:-1;492:13;;1765:186;-1:-1;1765:186::o;1958:366::-;;;2079:2;2067:9;2058:7;2054:23;2050:32;2047:2;;;-1:-1;;2085:12;2047:2;357:6;344:20;2137:63;;2255:53;2300:7;2237:2;2280:9;2276:22;2255:53;:::i;:::-;2245:63;;2041:283;;;;;:::o;2331:366::-;;;2452:2;2440:9;2431:7;2427:23;2423:32;2420:2;;;-1:-1;;2458:12;2420:2;-1:-1;;344:20;;;2610:2;2649:22;;;344:20;;-1:-1;2414:283::o;8798:222::-;-1:-1;;;;;20070:54;;;;2924:37;;8925:2;8910:18;;8896:124::o;9027:460::-;-1:-1;;;;;20070:54;;;2783:58;;20070:54;;;;9390:2;9375:18;;2924:37;9473:2;9458:18;;8749:37;;;;9218:2;9203:18;;9189:298::o;9494:349::-;-1:-1;;;;;20070:54;;;;2783:58;;9829:2;9814:18;;8749:37;9657:2;9642:18;;9628:215::o;9850:448::-;-1:-1;;;;;20070:54;;;;2783:58;;10207:2;10192:18;;8749:37;;;;19982:13;19975:21;10284:2;10269:18;;3038:34;10035:2;10020:18;;10006:292::o;11535:210::-;19982:13;;19975:21;3038:34;;11656:2;11641:18;;11627:118::o;11752:310::-;;11899:2;;11920:17;11913:47;3229:5;19605:12;19762:6;11899:2;11888:9;11884:18;19750:19;-1:-1;20667:101;20681:6;20678:1;20675:13;20667:101;;;20748:11;;;;;20742:18;20729:11;;;19790:14;20729:11;20722:39;20696:10;;20667:101;;;20783:6;20780:1;20777:13;20774:2;;;-1:-1;19790:14;20839:6;11888:9;20830:16;;20823:27;20774:2;-1:-1;20955:7;20939:14;-1:-1;;20935:28;3387:39;;;;19790:14;3387:39;;11870:192;-1:-1;;;11870:192::o;12069:416::-;12269:2;12283:47;;;3663:2;12254:18;;;19750:19;-1:-1;;;19790:14;;;3679:41;3739:12;;;12240:245::o;12492:416::-;12692:2;12706:47;;;3990:2;12677:18;;;19750:19;-1:-1;;;19790:14;;;4006:34;4059:12;;;12663:245::o;12915:416::-;13115:2;13129:47;;;4310:2;13100:18;;;19750:19;-1:-1;;;19790:14;;;4326:39;4384:12;;;13086:245::o;13338:416::-;13538:2;13552:47;;;4635:1;13523:18;;;19750:19;-1:-1;;;19790:14;;;4650:27;4696:12;;;13509:245::o;13761:416::-;13961:2;13975:47;;;4947:2;13946:18;;;19750:19;-1:-1;;;19790:14;;;4963:41;5023:12;;;13932:245::o;14184:416::-;14384:2;14398:47;;;5274:2;14369:18;;;19750:19;5310:29;19790:14;;;5290:50;5359:12;;;14355:245::o;14607:416::-;14807:2;14821:47;;;5610:2;14792:18;;;19750:19;-1:-1;;;19790:14;;;5626:38;5683:12;;;14778:245::o;15030:416::-;15230:2;15244:47;;;5934:2;15215:18;;;19750:19;-1:-1;;;19790:14;;;5950:41;6010:12;;;15201:245::o;15453:416::-;15653:2;15667:47;;;6261:2;15638:18;;;19750:19;-1:-1;;;19790:14;;;6277:44;6340:12;;;15624:245::o;15876:416::-;16076:2;16090:47;;;6591:2;16061:18;;;19750:19;-1:-1;;;19790:14;;;6607:33;6659:12;;;16047:245::o;16299:416::-;16499:2;16513:47;;;6910:2;16484:18;;;19750:19;6946:34;19790:14;;;6926:55;-1:-1;;;7001:12;;;6994:25;7038:12;;;16470:245::o;16722:416::-;16922:2;16936:47;;;7289:2;16907:18;;;19750:19;-1:-1;;;19790:14;;;7305:37;7361:12;;;16893:245::o;17145:416::-;17345:2;17359:47;;;7612:2;17330:18;;;19750:19;-1:-1;;;19790:14;;;7628:35;7682:12;;;17316:245::o;17568:416::-;17768:2;17782:47;;;7933:2;17753:18;;;19750:19;-1:-1;;;19790:14;;;7949:37;8005:12;;;17739:245::o;17991:416::-;18191:2;18205:47;;;8256:2;18176:18;;;19750:19;-1:-1;;;19790:14;;;8272:38;8329:12;;;18162:245::o;18414:416::-;18614:2;18628:47;;;8580:2;18599:18;;;19750:19;-1:-1;;;19790:14;;;8596:37;8652:12;;;18585:245::o;18837:222::-;8749:37;;;18964:2;18949:18;;18935:124::o;19066:444::-;8749:37;;;19413:2;19398:18;;8749:37;;;;19496:2;19481:18;;8749:37;19249:2;19234:18;;19220:290::o
Swarm Source
ipfs://8af2515dc74160d6333be5ef6cb7ccd8b901134267bf1e627c148dfbad8f23a6
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.