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 | 11108678 | 1494 days ago | IN | 0 ETH | 0.11803211 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
sbStrongValuePool
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; import "./IERC20.sol"; import "./SafeMath.sol"; import "./sbEthFeePoolInterface.sol"; import "./sbControllerInterface.sol"; import "./sbVotesInterface.sol"; contract sbStrongValuePool { using SafeMath for uint256; bool public initDone; address public admin; address public pendingAdmin; address public superAdmin; address public pendingSuperAdmin; sbControllerInterface public sbController; sbEthFeePoolInterface public sbEthFeePool; sbVotesInterface public sbVotes; IERC20 public strongToken; mapping(address => uint256[]) public minerMineDays; mapping(address => uint256[]) public minerMineAmounts; mapping(address => uint256[]) public minerMineMineSeconds; uint256[] public mineDays; uint256[] public mineAmounts; uint256[] public mineMineSeconds; mapping(address => uint256) public minerDayLastClaimedFor; mapping(address => uint256) public mineForVotes; function init( address sbVotesAddress, address sbEthFeePoolAddress, address sbControllerAddress, address strongTokenAddress, address adminAddress, address superAdminAddress ) public { require(!initDone, "init done"); sbVotes = sbVotesInterface(sbVotesAddress); sbEthFeePool = sbEthFeePoolInterface(sbEthFeePoolAddress); sbController = sbControllerInterface(sbControllerAddress); strongToken = IERC20(strongTokenAddress); admin = adminAddress; superAdmin = superAdminAddress; initDone = true; } // ADMIN // ************************************************************************************* function setPendingAdmin(address newPendingAdmin) public { require(msg.sender == admin, "not admin"); pendingAdmin = newPendingAdmin; } function acceptAdmin() public { require( msg.sender == pendingAdmin && msg.sender != address(0), "not pendingAdmin" ); admin = pendingAdmin; pendingAdmin = address(0); } function setPendingSuperAdmin(address newPendingSuperAdmin) public { require(msg.sender == superAdmin, "not superAdmin"); pendingSuperAdmin = newPendingSuperAdmin; } function acceptSuperAdmin() public { require( msg.sender == pendingSuperAdmin && msg.sender != address(0), "not pendingSuperAdmin" ); superAdmin = pendingSuperAdmin; pendingSuperAdmin = address(0); } // MINING // ************************************************************************************* function serviceMinMined(address miner) public view returns (bool) { uint256 dayCount = sbController.getServiceMinMineDays(); uint256 amount = sbController.getServiceMinMineAmountInWei(); return _minMined(miner, dayCount, amount); } function minerMinMined(address miner) public view returns (bool) { uint256 dayCount = sbController.getMinerMinMineDays(); uint256 amount = sbController.getMinerMinMineAmountInWei(); return _minMined(miner, dayCount, amount); } function mine(uint256 amount) public payable { require(amount > 0, "zero"); (uint256 numerator, uint256 denominator) = sbController .getValuePoolMiningFee(address(this)); uint256 fee = amount.mul(numerator).div(denominator); require(msg.value == fee, "invalid fee"); sbEthFeePool.deposit{value: msg.value}(); strongToken.transferFrom(msg.sender, address(this), amount); uint256 currentDay = _getCurrentDay(); _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); } function mineFor(address miner, uint256 amount) external { require(amount > 0, "zero"); require(miner != address(0), "zero address"); require(msg.sender == address(sbController), "invalid caller"); strongToken.transferFrom(msg.sender, address(this), amount); uint256 currentDay = _getCurrentDay(); _update( minerMineDays[miner], minerMineAmounts[miner], minerMineMineSeconds[miner], amount, true, currentDay ); _update( mineDays, mineAmounts, mineMineSeconds, amount, true, currentDay ); sbVotes.updateVotes(miner, amount, true); } function unmine(uint256 amount) public payable { require(amount > 0, "zero"); (uint256 numerator, uint256 denominator) = sbController .getValuePoolUnminingFee(address(this)); uint256 fee = amount.mul(numerator).div(denominator); require(msg.value == fee, "invalid fee"); sbEthFeePool.deposit{value: msg.value}(); uint256 currentDay = _getCurrentDay(); _update( minerMineDays[msg.sender], minerMineAmounts[msg.sender], minerMineMineSeconds[msg.sender], amount, false, currentDay ); _update( mineDays, mineAmounts, mineMineSeconds, amount, false, currentDay ); strongToken.transfer(msg.sender, amount); sbVotes.updateVotes(msg.sender, amount, false); } function mineForVotesOnly(uint256 amount) public { require(amount > 0, "zero"); strongToken.transferFrom(msg.sender, address(this), amount); mineForVotes[msg.sender] = mineForVotes[msg.sender].add(amount); sbVotes.updateVotes(msg.sender, amount, true); } 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); } function getMineForVotesOnly(address miner) public view returns (uint256) { return mineForVotes[miner]; } function getMinerDayLastClaimedFor(address miner) public view returns (uint256) { uint256 len = minerMineDays[miner].length; if (len != 0) { return minerDayLastClaimedFor[miner] == 0 ? minerMineDays[miner][0].sub(1) : minerDayLastClaimedFor[miner]; } return 0; } function getMinerMineData(address miner, uint256 dayNumber) public view returns ( uint256, uint256, uint256 ) { uint256 day = dayNumber == 0 ? _getCurrentDay() : dayNumber; return _getMinerMineData(miner, day); } function getMineData(uint256 dayNumber) public view returns ( uint256, uint256, uint256 ) { uint256 day = dayNumber == 0 ? _getCurrentDay() : dayNumber; return _getMineData(day); } // CLAIMING // ************************************************************************************* function claimAll() public payable { uint256 len = minerMineDays[msg.sender].length; require(len != 0, "no mines"); uint256 currentDay = _getCurrentDay(); uint256 dayLastClaimedFor = minerDayLastClaimedFor[msg.sender] == 0 ? minerMineDays[msg.sender][0].sub(1) : minerDayLastClaimedFor[msg.sender]; uint256 vestingDays = sbController.getValuePoolVestingDays( address(this) ); require( currentDay > dayLastClaimedFor.add(vestingDays), "already claimed" ); // fee is calculated in _claim _claim(currentDay, msg.sender, dayLastClaimedFor, vestingDays); } function claimUpTo(uint256 day) public payable { uint256 len = minerMineDays[msg.sender].length; require(len != 0, "no mines"); require(day <= _getCurrentDay(), "invalid day"); sbEthFeePool.deposit{value: msg.value}(); uint256 dayLastClaimedFor = minerDayLastClaimedFor[msg.sender] == 0 ? minerMineDays[msg.sender][0].sub(1) : minerDayLastClaimedFor[msg.sender]; uint256 vestingDays = sbController.getValuePoolVestingDays( address(this) ); require(day > dayLastClaimedFor.add(vestingDays), "already claimed"); // fee is calculated in _claim _claim(day, msg.sender, dayLastClaimedFor, vestingDays); } function getRewardsDueAll(address miner) public view returns (uint256) { uint256 len = minerMineDays[miner].length; if (len == 0) { return 0; } uint256 currentDay = _getCurrentDay(); uint256 dayLastClaimedFor = minerDayLastClaimedFor[miner] == 0 ? minerMineDays[miner][0].sub(1) : minerDayLastClaimedFor[miner]; uint256 vestingDays = sbController.getValuePoolVestingDays( address(this) ); if (!(currentDay > dayLastClaimedFor.add(vestingDays))) { return 0; } return _getRewardsDue(currentDay, miner, dayLastClaimedFor, vestingDays); } function getRewardsDueUpTo(uint256 day, address miner) public view returns (uint256) { uint256 len = minerMineDays[miner].length; if (len == 0) { return 0; } require(day <= _getCurrentDay(), "invalid day"); uint256 dayLastClaimedFor = minerDayLastClaimedFor[miner] == 0 ? minerMineDays[miner][0].sub(1) : minerDayLastClaimedFor[miner]; uint256 vestingDays = sbController.getValuePoolVestingDays( address(this) ); if (!(day > dayLastClaimedFor.add(vestingDays))) { return 0; } return _getRewardsDue(day, miner, dayLastClaimedFor, vestingDays); } // SUPPORT // ************************************************************************************* 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 _getMineData(uint256 day) internal view returns ( uint256, uint256, uint256 ) { return _get(mineDays, mineAmounts, mineMineSeconds, 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 _claim( uint256 upToDay, address miner, uint256 dayLastClaimedFor, uint256 vestingDays ) internal { uint256 rewards = _getRewardsDue( upToDay, miner, dayLastClaimedFor, vestingDays ); require(rewards > 0, "no rewards"); (uint256 numerator, uint256 denominator) = sbController .getValuePoolClaimingFee(address(this)); uint256 fee = rewards.mul(numerator).div(denominator); require(msg.value == fee, "invalid fee"); sbEthFeePool.deposit{value: msg.value}(); minerDayLastClaimedFor[miner] = upToDay.sub(vestingDays); sbController.requestRewards(miner, rewards); } function _getRewardsDue( uint256 upToDay, address miner, uint256 dayLastClaimedFor, uint256 vestingDays ) internal view returns (uint256) { uint256 rewards; for ( uint256 day = dayLastClaimedFor.add(1); day <= upToDay.sub(vestingDays); day++ ) { (, , uint256 minerMineSecondsForDay) = _getMinerMineData( miner, day ); (, , uint256 mineSecondsForDay) = _getMineData(day); if (mineSecondsForDay == 0) { continue; } uint256 availableRewards = sbController.getValuePoolRewards( address(this), day ); uint256 amount = availableRewards.mul(minerMineSecondsForDay).div( mineSecondsForDay ); rewards = rewards.add(amount); } return rewards; } function _getCurrentDay() internal view returns (uint256) { return block.timestamp.div(1 days).add(1); } function _minMined( address miner, uint256 dayCount, uint256 amount ) internal view returns (bool) { if (dayCount == 0 && amount == 0) { return true; } uint256 currentDay = _getCurrentDay(); uint256 endDay = currentDay.sub(dayCount); for (uint256 day = currentDay; day >= endDay; day--) { (, uint256 minedAmount, ) = _getMinerMineData(miner, day); if (minedAmount < amount) { return false; } } return true; } }
// 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; interface sbControllerInterface { function requestRewards(address miner, uint256 amount) external; function isValuePoolAccepted(address valuePool) external view returns (bool); function getValuePoolRewards(address valuePool, uint256 day) external view returns (uint256); function getValuePoolMiningFee(address valuePool) external returns (uint256, uint256); function getValuePoolUnminingFee(address valuePool) external returns (uint256, uint256); function getValuePoolClaimingFee(address valuePool) external returns (uint256, uint256); function isServicePoolAccepted(address servicePool) external view returns (bool); function getServicePoolRewards(address servicePool, uint256 day) external view returns (uint256); function getServicePoolClaimingFee(address servicePool) external returns (uint256, uint256); function getServicePoolRequestFeeInWei(address servicePool) external returns (uint256); function getVoteForServicePoolsCount() external view returns (uint256); function getVoteForServicesCount() external view returns (uint256); function getVoteCastersRewards(uint256 dayNumber) external view returns (uint256); function getVoteReceiversRewards(uint256 dayNumber) external view returns (uint256); function getMinerMinMineDays() external view returns (uint256); function getServiceMinMineDays() external view returns (uint256); function getMinerMinMineAmountInWei() external view returns (uint256); function getServiceMinMineAmountInWei() external view returns (uint256); function getValuePoolVestingDays(address valuePool) external view returns (uint256); function getServicePoolVestingDays(address poservicePoolol) external view returns (uint256); function getVoteCasterVestingDays() external view returns (uint256); function getVoteReceiverVestingDays() external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; interface sbEthFeePoolInterface { function deposit() external payable; }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; interface sbVotesInterface { function getPriorProposalVotes(address account, uint256 blockNumber) external view returns (uint96); function updateVotes( address staker, uint256 rawAmount, bool adding ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptSuperAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAll","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"claimUpTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dayNumber","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":[{"internalType":"address","name":"miner","type":"address"},{"internalType":"uint256","name":"dayNumber","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":[{"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":[{"internalType":"address","name":"sbVotesAddress","type":"address"},{"internalType":"address","name":"sbEthFeePoolAddress","type":"address"},{"internalType":"address","name":"sbControllerAddress","type":"address"},{"internalType":"address","name":"strongTokenAddress","type":"address"},{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"address","name":"superAdminAddress","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initDone","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mineAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mineDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mineFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mineForVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mineForVotesOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mineMineSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minerDayLastClaimedFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"minerMinMined","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"minerMineAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"minerMineDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"minerMineMineSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingSuperAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sbController","outputs":[{"internalType":"contract sbControllerInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sbEthFeePool","outputs":[{"internalType":"contract sbEthFeePoolInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sbVotes","outputs":[{"internalType":"contract sbVotesInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"serviceMinMined","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingSuperAdmin","type":"address"}],"name":"setPendingSuperAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strongToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"superAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unmine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unmineForVotesOnly","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50612f94806100206000396000f3fe60806040526004361061021a5760003560e01c806371e12aac11610123578063d5c16c2f116100ab578063eb87e89b1161006f578063eb87e89b1461079b578063f1e5ff3e146107c5578063f4265715146107f8578063f851a44014610815578063fed0a20e1461082a5761021a565b8063d5c16c2f146106b7578063db02fc60146106f0578063db374cbb14610723578063e4d01a641461075c578063e7f9cefd146107865761021a565b80639900285b116100f25780639900285b146105c457806399e133f9146105ee578063a20c845114610649578063d1058e591461067c578063d39ca7de146106845761021a565b806371e12aac1461052057806372cacdd41461055357806376d53d6114610568578063965d61b9146105af5761021a565b806330d6a975116101a657806348028d631161017557806348028d631461045e5780634d04ad99146104735780634d4748981461049d5780634dd18bf5146104ba5780636de5f3a9146104ed5761021a565b806330d6a975146103a4578063358ff3d8146103dd578063426338b21461041657806346d071fc146104495761021a565b80631ba2295a116101ed5780631ba2295a146102dc57806326782247146102f957806329575f6a1461030e5780632d27a871146103235780632e7fba1d1461034d5761021a565b80630d65d00a1461021f5780630e18b681146102505780631246af89146102675780631320671d14610291575b600080fd5b34801561022b57600080fd5b5061023461083f565b604080516001600160a01b039092168252519081900360200190f35b34801561025c57600080fd5b5061026561084e565b005b34801561027357600080fd5b506102656004803603602081101561028a57600080fd5b50356108dd565b34801561029d57600080fd5b506102ca600480360360408110156102b457600080fd5b506001600160a01b038135169060200135610a40565b60408051918252519081900360200190f35b610265600480360360208110156102f257600080fd5b5035610a6e565b34801561030557600080fd5b50610234610cb5565b34801561031a57600080fd5b50610234610cc4565b34801561032f57600080fd5b506102ca6004803603602081101561034657600080fd5b5035610cd3565b34801561035957600080fd5b506103866004803603604081101561037057600080fd5b506001600160a01b038135169060200135610cf1565b60408051938452602084019290925282820152519081900360600190f35b3480156103b057600080fd5b50610265600480360360408110156103c757600080fd5b506001600160a01b038135169060200135610d24565b3480156103e957600080fd5b506102ca6004803603604081101561040057600080fd5b50803590602001356001600160a01b0316610f51565b34801561042257600080fd5b506102ca6004803603602081101561043957600080fd5b50356001600160a01b03166110db565b34801561045557600080fd5b50610234611171565b34801561046a57600080fd5b50610234611180565b34801561047f57600080fd5b506102656004803603602081101561049657600080fd5b503561118f565b610265600480360360208110156104b357600080fd5b5035611342565b3480156104c657600080fd5b50610265600480360360208110156104dd57600080fd5b50356001600160a01b0316611611565b3480156104f957600080fd5b506102ca6004803603602081101561051057600080fd5b50356001600160a01b0316611683565b34801561052c57600080fd5b506102ca6004803603602081101561054357600080fd5b50356001600160a01b031661169e565b34801561055f57600080fd5b506102346116b0565b34801561057457600080fd5b5061059b6004803603602081101561058b57600080fd5b50356001600160a01b03166116bf565b604080519115158252519081900360200190f35b3480156105bb57600080fd5b506102346117b8565b3480156105d057600080fd5b506102ca600480360360208110156105e757600080fd5b50356117c7565b3480156105fa57600080fd5b50610265600480360360c081101561061157600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a00135166117d4565b34801561065557600080fd5b5061059b6004803603602081101561066c57600080fd5b50356001600160a01b03166118a0565b610265611958565b34801561069057600080fd5b50610265600480360360208110156106a757600080fd5b50356001600160a01b0316611ad7565b3480156106c357600080fd5b506102ca600480360360408110156106da57600080fd5b506001600160a01b038135169060200135611b49565b3480156106fc57600080fd5b506102ca6004803603602081101561071357600080fd5b50356001600160a01b0316611b62565b34801561072f57600080fd5b506102ca6004803603604081101561074657600080fd5b506001600160a01b038135169060200135611b74565b34801561076857600080fd5b506102ca6004803603602081101561077f57600080fd5b5035611b8d565b34801561079257600080fd5b50610265611b9a565b3480156107a757600080fd5b50610386600480360360208110156107be57600080fd5b5035611c23565b3480156107d157600080fd5b506102ca600480360360208110156107e857600080fd5b50356001600160a01b0316611c55565b6102656004803603602081101561080e57600080fd5b5035611da2565b34801561082157600080fd5b50610234612048565b34801561083657600080fd5b5061059b61205c565b6004546001600160a01b031681565b6001546001600160a01b03163314801561086757503315155b6108ab576040805162461bcd60e51b815260206004820152601060248201526f3737ba103832b73234b733a0b236b4b760811b604482015290519081900360640190fd5b6001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b6000811161091b576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050506040513d602081101561099f57600080fd5b5050336000908152600f60205260409020546109bb9082612065565b336000818152600f6020526040808220939093556006548351639fb9ec1160e01b81526004810193909352602483018590526001604484015292516001600160a01b0390931692639fb9ec1192606480820193929182900301818387803b158015610a2557600080fd5b505af1158015610a39573d6000803e3d6000fd5b5050505050565b60086020528160005260406000208181548110610a5957fe5b90600052602060002001600091509150505481565b3360009081526008602052604090205480610abb576040805162461bcd60e51b81526020600482015260086024820152676e6f206d696e657360c01b604482015290519081900360640190fd5b610ac36120c6565b821115610b05576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642064617960a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b5557600080fd5b505af1158015610b69573d6000803e3d6000fd5b5050336000908152600e6020526040812054909350159150610b9c905057336000908152600e6020526040902054610bd4565b3360009081526008602052604081208054610bd49260019291610bbb57fe5b90600052602060002001546120e590919063ffffffff16565b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b158015610c2657600080fd5b505afa158015610c3a573d6000803e3d6000fd5b505050506040513d6020811015610c5057600080fd5b50519050610c5e8282612065565b8411610ca3576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610caf84338484612127565b50505050565b6001546001600160a01b031681565b6002546001600160a01b031681565b600c8181548110610ce057fe5b600091825260209091200154905081565b60008080808415610d025784610d0a565b610d0a6120c6565b9050610d168682612355565b935093509350509250925092565b60008111610d62576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6001600160a01b038216610dac576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b6004546001600160a01b03163314610dfc576040805162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610e5657600080fd5b505af1158015610e6a573d6000803e3d6000fd5b505050506040513d6020811015610e8057600080fd5b5060009050610e8d6120c6565b6001600160a01b038416600090815260086020908152604080832060098352818420600a9093529220929350610ec692856001866124b2565b610ed8600b600c600d856001866124b2565b60065460408051639fb9ec1160e01b81526001600160a01b038681166004830152602482018690526001604483015291519190921691639fb9ec1191606480830192600092919082900301818387803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b50505050505050565b6001600160a01b03811660009081526008602052604081205480610f795760009150506110d5565b610f816120c6565b841115610fc3576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642064617960a81b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e602052604081205415610fff576001600160a01b0384166000908152600e6020526040902054611027565b6001600160a01b038416600090815260086020526040812080546110279260019291610bbb57fe5b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b15801561107957600080fd5b505afa15801561108d573d6000803e3d6000fd5b505050506040513d60208110156110a357600080fd5b505190506110b18282612065565b86116110c357600093505050506110d5565b6110cf868684846127e3565b93505050505b92915050565b6001600160a01b0381166000908152600860205260408120548015611166576001600160a01b0383166000908152600e602052604090205415611136576001600160a01b0383166000908152600e602052604090205461115e565b6001600160a01b0383166000908152600860205260408120805461115e9260019291610bbb57fe5b91505061116c565b60009150505b919050565b6005546001600160a01b031681565b6003546001600160a01b031681565b600081116111cd576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b336000908152600f6020526040902054811115611223576040805162461bcd60e51b815260206004820152600f60248201526e6e6f7420656e6f756768206d696e6560881b604482015290519081900360640190fd5b336000908152600f602052604090205461123d90826120e5565b336000818152600f6020526040808220939093556006548351639fb9ec1160e01b81526004810193909352602483018590526044830182905292516001600160a01b0390931692639fb9ec1192606480820193929182900301818387803b1580156112a757600080fd5b505af11580156112bb573d6000803e3d6000fd5b50506007546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b03909216935063a9059cbb92506044808201926020929091908290030181600087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b505050565b60008111611380576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6004805460408051632c26a3bb60e21b81523093810193909352805160009384936001600160a01b03169263b09a8eec9260248084019382900301818787803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050506040513d60408110156113f657600080fd5b5080516020909101519092509050600061141a8261141486866128e9565b90612942565b905080341461145e576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114ae57600080fd5b505af11580156114c2573d6000803e3d6000fd5b5050600754604080516323b872dd60e01b8152336004820152306024820152604481018a905290516001600160a01b0390921694506323b872dd935060648082019350602092918290030181600087803b15801561151f57600080fd5b505af1158015611533573d6000803e3d6000fd5b505050506040513d602081101561154957600080fd5b50600090506115566120c6565b33600090815260086020908152604080832060098352818420600a909352922092935061158692886001866124b2565b611598600b600c600d886001866124b2565b60065460408051639fb9ec1160e01b8152336004820152602481018890526001604482015290516001600160a01b0390921691639fb9ec119160648082019260009290919082900301818387803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050505050505050565b60005461010090046001600160a01b03163314611661576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03166000908152600f602052604090205490565b600f6020526000908152604090205481565b6006546001600160a01b031681565b60048054604080516348e6d55d60e11b8152905160009384936001600160a01b0316926391cdaaba9281830192602092829003018186803b15801561170357600080fd5b505afa158015611717573d6000803e3d6000fd5b505050506040513d602081101561172d57600080fd5b50516004805460408051638759ecdf60e01b815290519394506000936001600160a01b0390921692638759ecdf928282019260209290829003018186803b15801561177757600080fd5b505afa15801561178b573d6000803e3d6000fd5b505050506040513d60208110156117a157600080fd5b505190506117b0848383612984565b949350505050565b6007546001600160a01b031681565b600b8181548110610ce057fe5b60005460ff1615611818576040805162461bcd60e51b8152602060048201526009602482015268696e697420646f6e6560b81b604482015290519081900360640190fd5b600680546001600160a01b03199081166001600160a01b0398891617909155600580548216968816969096179095556004805486169487169490941790935560078054851692861692909217909155600080546002805490951693861693909317909355610100600160a81b031990911661010091909316029190911760ff19166001179055565b60048054604080516334f5a4f560e11b8152905160009384936001600160a01b0316926369eb49ea9281830192602092829003018186803b1580156118e457600080fd5b505afa1580156118f8573d6000803e3d6000fd5b505050506040513d602081101561190e57600080fd5b50516004805460408051638b4ed2f360e01b815290519394506000936001600160a01b0390921692638b4ed2f3928282019260209290829003018186803b15801561177757600080fd5b33600090815260086020526040902054806119a5576040805162461bcd60e51b81526020600482015260086024820152676e6f206d696e657360c01b604482015290519081900360640190fd5b60006119af6120c6565b336000908152600e602052604081205491925090156119dd57336000908152600e60205260409020546119fc565b33600090815260086020526040812080546119fc9260019291610bbb57fe5b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b158015611a4e57600080fd5b505afa158015611a62573d6000803e3d6000fd5b505050506040513d6020811015611a7857600080fd5b50519050611a868282612065565b8311611acb576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610caf83338484612127565b6002546001600160a01b03163314611b27576040805162461bcd60e51b815260206004820152600e60248201526d3737ba1039bab832b920b236b4b760911b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60096020528160005260406000208181548110610a5957fe5b600e6020526000908152604090205481565b600a6020528160005260406000208181548110610a5957fe5b600d8181548110610ce057fe5b6003546001600160a01b031633148015611bb357503315155b611bfc576040805162461bcd60e51b81526020600482015260156024820152743737ba103832b73234b733a9bab832b920b236b4b760591b604482015290519081900360640190fd5b60038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60008080808415611c345784611c3c565b611c3c6120c6565b9050611c47816129fe565b935093509350509193909250565b6001600160a01b03811660009081526008602052604081205480611c7d57600091505061116c565b6000611c876120c6565b6001600160a01b0385166000908152600e60205260408120549192509015611cc7576001600160a01b0385166000908152600e6020526040902054611cef565b6001600160a01b03851660009081526008602052604081208054611cef9260019291610bbb57fe5b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b158015611d4157600080fd5b505afa158015611d55573d6000803e3d6000fd5b505050506040513d6020811015611d6b57600080fd5b50519050611d798282612065565b8311611d8c57600094505050505061116c565b611d98838784846127e3565b9695505050505050565b60008111611de0576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b600480546040805163a819df9d60e01b81523093810193909352805160009384936001600160a01b03169263a819df9d9260248084019382900301818787803b158015611e2c57600080fd5b505af1158015611e40573d6000803e3d6000fd5b505050506040513d6040811015611e5657600080fd5b50805160209091015190925090506000611e748261141486866128e9565b9050803414611eb8576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f0857600080fd5b505af1158015611f1c573d6000803e3d6000fd5b50505050506000611f2b6120c6565b33600090815260086020908152604080832060098352818420600a909352908320939450611f5d9390928990866124b2565b611f6f600b600c600d886000866124b2565b6007546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611fc357600080fd5b505af1158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b505060065460408051639fb9ec1160e01b81523360048201526024810188905260006044820181905291516001600160a01b0390931692639fb9ec119260648084019391929182900301818387803b1580156115f257600080fd5b60005461010090046001600160a01b031681565b60005460ff1681565b6000828201838110156120bf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006120e060016120da4262015180612942565b90612065565b905090565b60006120bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b0c565b6000612135858585856127e3565b905060008111612179576040805162461bcd60e51b815260206004820152600a6024820152696e6f207265776172647360b01b604482015290519081900360640190fd5b600480546040805163c3f147f160e01b81523093810193909352805160009384936001600160a01b03169263c3f147f19260248084019382900301818787803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b505050506040513d60408110156121ef57600080fd5b5080516020909101519092509050600061220d8261141486866128e9565b9050803414612251576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122a157600080fd5b505af11580156122b5573d6000803e3d6000fd5b50505050506122cd85896120e590919063ffffffff16565b6001600160a01b038089166000818152600e602052604080822094909455600480548551635fe43d2360e11b815291820193909352602481018990529351919092169263bfc87a4692604480830193919282900301818387803b15801561233357600080fd5b505af1158015612347573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b0382166000908152600860209081526040808320805482518185028101850190935280835284938493606093909290918301828280156123bb57602002820191906000526020600020905b8154815260200190600101908083116123a7575b5050506001600160a01b0389166000908152600960209081526040918290208054835181840281018401909452808452959650606095929450925083018282801561242557602002820191906000526020600020905b815481526020019060010190808311612411575b5050506001600160a01b038a166000908152600a60209081526040918290208054835181840281018401909452808452959650606095929450925083018282801561248f57602002820191906000526020600020905b81548152602001906001019080831161247b575b505050505090506124a28383838a612ba3565b9550955095505050509250925092565b8554620151804281900660006124c883836120e5565b90508361256d57851561252657895460018181018c5560008c815260208082209093018890558b549182018c558b815291909120018790558761250b88836128e9565b81546001810183556000928352602090922090910155612568565b6040805162461bcd60e51b8152602060048201526012602482015271313a206e6f7420656e6f756768206d696e6560701b604482015290519081900360640190fd5b6127d7565b600061257a8560016120e5565b905060008b828154811061258a57fe5b9060005260206000200154905060008b83815481106125a557fe5b9060005260206000200154905060008b84815481106125c057fe5b906000526020600020015490506000808a8514156126ab578b15612605576125e8848e612065565b91506125fe6125f78e896128e9565b8490612065565b9050612672565b8c84101561264f576040805162461bcd60e51b8152602060048201526012602482015271323a206e6f7420656e6f756768206d696e6560701b604482015290519081900360640190fd5b612659848e6120e5565b915061266f6126688e896128e9565b84906120e5565b90505b818f878154811061267f57fe5b9060005260206000200181905550808e878154811061269a57fe5b6000918252602090912001556127d0565b8b156126de576126bb848e612065565b91506126d76126ca8e896128e9565b6120da86620151806128e9565b9050612757565b8c841015612728576040805162461bcd60e51b8152602060048201526012602482015271333a206e6f7420656e6f756768206d696e6560701b604482015290519081900360640190fd5b612732848e6120e5565b91506127546127418e896128e9565b61274e86620151806128e9565b906120e5565b90505b8f8b90806001815401808255809150506001900390600052602060002001600090919091909150558e8290806001815401808255809150506001900390600052602060002001600090919091909150558d8190806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050505b50505050505050505050565b600080806127f2856001612065565b90505b6127ff87856120e5565b81116128df5760006128118783612355565b925050506000612820836129fe565b92505050806128305750506128d7565b600480546040805163966ae01b60e01b8152309381019390935260248301869052516000926001600160a01b039092169163966ae01b916044808301926020929190829003018186803b15801561288657600080fd5b505afa15801561289a573d6000803e3d6000fd5b505050506040513d60208110156128b057600080fd5b5051905060006128c48361141484876128e9565b90506128d08682612065565b9550505050505b6001016127f5565b5095945050505050565b6000826128f8575060006110d5565b8282028284828161290557fe5b04146120bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612f3e6021913960400191505060405180910390fd5b60006120bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cc7565b600082158015612992575081155b1561299f575060016120bf565b60006129a96120c6565b905060006129b782866120e5565b9050815b8181106129f15760006129ce8883612355565b50915050858110156129e75760009450505050506120bf565b50600019016129bb565b5060019695505050505050565b6000806000612aff600b805480602002602001604051908101604052809291908181526020018280548015612a5257602002820191906000526020600020905b815481526020019060010190808311612a3e575b5050505050600c805480602002602001604051908101604052809291908181526020018280548015612aa357602002820191906000526020600020905b815481526020019060010190808311612a8f575b5050505050600d805480602002602001604051908101604052809291908181526020018280548015612af457602002820191906000526020600020905b815481526020019060010190808311612ae0575b505050505087612ba3565b9250925092509193909250565b60008184841115612b9b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b60578181015183820152602001612b48565b50505050905090810190601f168015612b8d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b83516000908190819080612bc1578460008093509350935050612cbd565b87600081518110612bce57fe5b6020026020010151851015612bed578460008093509350935050612cbd565b6000612bfa8260016120e5565b90506000898281518110612c0a57fe5b6020026020010151905080871415612c535786898381518110612c2957fe5b6020026020010151898481518110612c3d57fe5b6020026020010151955095509550505050612cbd565b80871115612ca75786898381518110612c6857fe5b6020026020010151612c99620151808c8681518110612c8357fe5b60200260200101516128e990919063ffffffff16565b955095509550505050612cbd565b612cb38a8a8a8a612d2c565b9550955095505050505b9450945094915050565b60008183612d165760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612b60578181015183820152602001612b48565b506000838581612d2257fe5b0495945050505050565b600080600080600090506000612d4d60018a516120e590919063ffffffff16565b90506000612d6060026114148486612065565b90505b81831015612f0457868a8281518110612d7857fe5b60200260200101511415612da75786898281518110612d9357fe5b6020026020010151898381518110612c3d57fe5b868a8281518110612db457fe5b60200260200101511115612e6157600081118015612dee5750868a612dda8360016120e5565b81518110612de457fe5b6020026020010151105b15612e38578689612e008360016120e5565b81518110612e0a57fe5b6020026020010151612c99620151808c612e2e6001876120e590919063ffffffff16565b81518110612c8357fe5b80612e4f5786600080955095509550505050612cbd565b612e5a8160016120e5565b9150612eee565b868a8281518110612e6e57fe5b60200260200101511015612eee578951612e899060016120e5565b81108015612eb35750868a612e9f836001612065565b81518110612ea957fe5b6020026020010151115b15612ee05786898281518110612ec557fe5b6020026020010151612c99620151808c8581518110612c8357fe5b612eeb816001612065565b92505b612efd60026114148486612065565b9050612d63565b868a8281518110612f1157fe5b602002602001015114612f305786600080955095509550505050612cbd565b86898281518110612d9357fefe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220b86e1ae89f99c1ec41f4d99f5f8638e8972694678917089802c1f8ae190001e164736f6c634300060c0033
Deployed Bytecode
0x60806040526004361061021a5760003560e01c806371e12aac11610123578063d5c16c2f116100ab578063eb87e89b1161006f578063eb87e89b1461079b578063f1e5ff3e146107c5578063f4265715146107f8578063f851a44014610815578063fed0a20e1461082a5761021a565b8063d5c16c2f146106b7578063db02fc60146106f0578063db374cbb14610723578063e4d01a641461075c578063e7f9cefd146107865761021a565b80639900285b116100f25780639900285b146105c457806399e133f9146105ee578063a20c845114610649578063d1058e591461067c578063d39ca7de146106845761021a565b806371e12aac1461052057806372cacdd41461055357806376d53d6114610568578063965d61b9146105af5761021a565b806330d6a975116101a657806348028d631161017557806348028d631461045e5780634d04ad99146104735780634d4748981461049d5780634dd18bf5146104ba5780636de5f3a9146104ed5761021a565b806330d6a975146103a4578063358ff3d8146103dd578063426338b21461041657806346d071fc146104495761021a565b80631ba2295a116101ed5780631ba2295a146102dc57806326782247146102f957806329575f6a1461030e5780632d27a871146103235780632e7fba1d1461034d5761021a565b80630d65d00a1461021f5780630e18b681146102505780631246af89146102675780631320671d14610291575b600080fd5b34801561022b57600080fd5b5061023461083f565b604080516001600160a01b039092168252519081900360200190f35b34801561025c57600080fd5b5061026561084e565b005b34801561027357600080fd5b506102656004803603602081101561028a57600080fd5b50356108dd565b34801561029d57600080fd5b506102ca600480360360408110156102b457600080fd5b506001600160a01b038135169060200135610a40565b60408051918252519081900360200190f35b610265600480360360208110156102f257600080fd5b5035610a6e565b34801561030557600080fd5b50610234610cb5565b34801561031a57600080fd5b50610234610cc4565b34801561032f57600080fd5b506102ca6004803603602081101561034657600080fd5b5035610cd3565b34801561035957600080fd5b506103866004803603604081101561037057600080fd5b506001600160a01b038135169060200135610cf1565b60408051938452602084019290925282820152519081900360600190f35b3480156103b057600080fd5b50610265600480360360408110156103c757600080fd5b506001600160a01b038135169060200135610d24565b3480156103e957600080fd5b506102ca6004803603604081101561040057600080fd5b50803590602001356001600160a01b0316610f51565b34801561042257600080fd5b506102ca6004803603602081101561043957600080fd5b50356001600160a01b03166110db565b34801561045557600080fd5b50610234611171565b34801561046a57600080fd5b50610234611180565b34801561047f57600080fd5b506102656004803603602081101561049657600080fd5b503561118f565b610265600480360360208110156104b357600080fd5b5035611342565b3480156104c657600080fd5b50610265600480360360208110156104dd57600080fd5b50356001600160a01b0316611611565b3480156104f957600080fd5b506102ca6004803603602081101561051057600080fd5b50356001600160a01b0316611683565b34801561052c57600080fd5b506102ca6004803603602081101561054357600080fd5b50356001600160a01b031661169e565b34801561055f57600080fd5b506102346116b0565b34801561057457600080fd5b5061059b6004803603602081101561058b57600080fd5b50356001600160a01b03166116bf565b604080519115158252519081900360200190f35b3480156105bb57600080fd5b506102346117b8565b3480156105d057600080fd5b506102ca600480360360208110156105e757600080fd5b50356117c7565b3480156105fa57600080fd5b50610265600480360360c081101561061157600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a00135166117d4565b34801561065557600080fd5b5061059b6004803603602081101561066c57600080fd5b50356001600160a01b03166118a0565b610265611958565b34801561069057600080fd5b50610265600480360360208110156106a757600080fd5b50356001600160a01b0316611ad7565b3480156106c357600080fd5b506102ca600480360360408110156106da57600080fd5b506001600160a01b038135169060200135611b49565b3480156106fc57600080fd5b506102ca6004803603602081101561071357600080fd5b50356001600160a01b0316611b62565b34801561072f57600080fd5b506102ca6004803603604081101561074657600080fd5b506001600160a01b038135169060200135611b74565b34801561076857600080fd5b506102ca6004803603602081101561077f57600080fd5b5035611b8d565b34801561079257600080fd5b50610265611b9a565b3480156107a757600080fd5b50610386600480360360208110156107be57600080fd5b5035611c23565b3480156107d157600080fd5b506102ca600480360360208110156107e857600080fd5b50356001600160a01b0316611c55565b6102656004803603602081101561080e57600080fd5b5035611da2565b34801561082157600080fd5b50610234612048565b34801561083657600080fd5b5061059b61205c565b6004546001600160a01b031681565b6001546001600160a01b03163314801561086757503315155b6108ab576040805162461bcd60e51b815260206004820152601060248201526f3737ba103832b73234b733a0b236b4b760811b604482015290519081900360640190fd5b6001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b6000811161091b576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050506040513d602081101561099f57600080fd5b5050336000908152600f60205260409020546109bb9082612065565b336000818152600f6020526040808220939093556006548351639fb9ec1160e01b81526004810193909352602483018590526001604484015292516001600160a01b0390931692639fb9ec1192606480820193929182900301818387803b158015610a2557600080fd5b505af1158015610a39573d6000803e3d6000fd5b5050505050565b60086020528160005260406000208181548110610a5957fe5b90600052602060002001600091509150505481565b3360009081526008602052604090205480610abb576040805162461bcd60e51b81526020600482015260086024820152676e6f206d696e657360c01b604482015290519081900360640190fd5b610ac36120c6565b821115610b05576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642064617960a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b5557600080fd5b505af1158015610b69573d6000803e3d6000fd5b5050336000908152600e6020526040812054909350159150610b9c905057336000908152600e6020526040902054610bd4565b3360009081526008602052604081208054610bd49260019291610bbb57fe5b90600052602060002001546120e590919063ffffffff16565b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b158015610c2657600080fd5b505afa158015610c3a573d6000803e3d6000fd5b505050506040513d6020811015610c5057600080fd5b50519050610c5e8282612065565b8411610ca3576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610caf84338484612127565b50505050565b6001546001600160a01b031681565b6002546001600160a01b031681565b600c8181548110610ce057fe5b600091825260209091200154905081565b60008080808415610d025784610d0a565b610d0a6120c6565b9050610d168682612355565b935093509350509250925092565b60008111610d62576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6001600160a01b038216610dac576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b6004546001600160a01b03163314610dfc576040805162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610e5657600080fd5b505af1158015610e6a573d6000803e3d6000fd5b505050506040513d6020811015610e8057600080fd5b5060009050610e8d6120c6565b6001600160a01b038416600090815260086020908152604080832060098352818420600a9093529220929350610ec692856001866124b2565b610ed8600b600c600d856001866124b2565b60065460408051639fb9ec1160e01b81526001600160a01b038681166004830152602482018690526001604483015291519190921691639fb9ec1191606480830192600092919082900301818387803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b50505050505050565b6001600160a01b03811660009081526008602052604081205480610f795760009150506110d5565b610f816120c6565b841115610fc3576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642064617960a81b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e602052604081205415610fff576001600160a01b0384166000908152600e6020526040902054611027565b6001600160a01b038416600090815260086020526040812080546110279260019291610bbb57fe5b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b15801561107957600080fd5b505afa15801561108d573d6000803e3d6000fd5b505050506040513d60208110156110a357600080fd5b505190506110b18282612065565b86116110c357600093505050506110d5565b6110cf868684846127e3565b93505050505b92915050565b6001600160a01b0381166000908152600860205260408120548015611166576001600160a01b0383166000908152600e602052604090205415611136576001600160a01b0383166000908152600e602052604090205461115e565b6001600160a01b0383166000908152600860205260408120805461115e9260019291610bbb57fe5b91505061116c565b60009150505b919050565b6005546001600160a01b031681565b6003546001600160a01b031681565b600081116111cd576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b336000908152600f6020526040902054811115611223576040805162461bcd60e51b815260206004820152600f60248201526e6e6f7420656e6f756768206d696e6560881b604482015290519081900360640190fd5b336000908152600f602052604090205461123d90826120e5565b336000818152600f6020526040808220939093556006548351639fb9ec1160e01b81526004810193909352602483018590526044830182905292516001600160a01b0390931692639fb9ec1192606480820193929182900301818387803b1580156112a757600080fd5b505af11580156112bb573d6000803e3d6000fd5b50506007546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b03909216935063a9059cbb92506044808201926020929091908290030181600087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b505050565b60008111611380576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6004805460408051632c26a3bb60e21b81523093810193909352805160009384936001600160a01b03169263b09a8eec9260248084019382900301818787803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050506040513d60408110156113f657600080fd5b5080516020909101519092509050600061141a8261141486866128e9565b90612942565b905080341461145e576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114ae57600080fd5b505af11580156114c2573d6000803e3d6000fd5b5050600754604080516323b872dd60e01b8152336004820152306024820152604481018a905290516001600160a01b0390921694506323b872dd935060648082019350602092918290030181600087803b15801561151f57600080fd5b505af1158015611533573d6000803e3d6000fd5b505050506040513d602081101561154957600080fd5b50600090506115566120c6565b33600090815260086020908152604080832060098352818420600a909352922092935061158692886001866124b2565b611598600b600c600d886001866124b2565b60065460408051639fb9ec1160e01b8152336004820152602481018890526001604482015290516001600160a01b0390921691639fb9ec119160648082019260009290919082900301818387803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050505050505050565b60005461010090046001600160a01b03163314611661576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03166000908152600f602052604090205490565b600f6020526000908152604090205481565b6006546001600160a01b031681565b60048054604080516348e6d55d60e11b8152905160009384936001600160a01b0316926391cdaaba9281830192602092829003018186803b15801561170357600080fd5b505afa158015611717573d6000803e3d6000fd5b505050506040513d602081101561172d57600080fd5b50516004805460408051638759ecdf60e01b815290519394506000936001600160a01b0390921692638759ecdf928282019260209290829003018186803b15801561177757600080fd5b505afa15801561178b573d6000803e3d6000fd5b505050506040513d60208110156117a157600080fd5b505190506117b0848383612984565b949350505050565b6007546001600160a01b031681565b600b8181548110610ce057fe5b60005460ff1615611818576040805162461bcd60e51b8152602060048201526009602482015268696e697420646f6e6560b81b604482015290519081900360640190fd5b600680546001600160a01b03199081166001600160a01b0398891617909155600580548216968816969096179095556004805486169487169490941790935560078054851692861692909217909155600080546002805490951693861693909317909355610100600160a81b031990911661010091909316029190911760ff19166001179055565b60048054604080516334f5a4f560e11b8152905160009384936001600160a01b0316926369eb49ea9281830192602092829003018186803b1580156118e457600080fd5b505afa1580156118f8573d6000803e3d6000fd5b505050506040513d602081101561190e57600080fd5b50516004805460408051638b4ed2f360e01b815290519394506000936001600160a01b0390921692638b4ed2f3928282019260209290829003018186803b15801561177757600080fd5b33600090815260086020526040902054806119a5576040805162461bcd60e51b81526020600482015260086024820152676e6f206d696e657360c01b604482015290519081900360640190fd5b60006119af6120c6565b336000908152600e602052604081205491925090156119dd57336000908152600e60205260409020546119fc565b33600090815260086020526040812080546119fc9260019291610bbb57fe5b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b158015611a4e57600080fd5b505afa158015611a62573d6000803e3d6000fd5b505050506040513d6020811015611a7857600080fd5b50519050611a868282612065565b8311611acb576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610caf83338484612127565b6002546001600160a01b03163314611b27576040805162461bcd60e51b815260206004820152600e60248201526d3737ba1039bab832b920b236b4b760911b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60096020528160005260406000208181548110610a5957fe5b600e6020526000908152604090205481565b600a6020528160005260406000208181548110610a5957fe5b600d8181548110610ce057fe5b6003546001600160a01b031633148015611bb357503315155b611bfc576040805162461bcd60e51b81526020600482015260156024820152743737ba103832b73234b733a9bab832b920b236b4b760591b604482015290519081900360640190fd5b60038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60008080808415611c345784611c3c565b611c3c6120c6565b9050611c47816129fe565b935093509350509193909250565b6001600160a01b03811660009081526008602052604081205480611c7d57600091505061116c565b6000611c876120c6565b6001600160a01b0385166000908152600e60205260408120549192509015611cc7576001600160a01b0385166000908152600e6020526040902054611cef565b6001600160a01b03851660009081526008602052604081208054611cef9260019291610bbb57fe5b600480546040805163e8d3e79360e01b81523093810193909352519293506000926001600160a01b039091169163e8d3e793916024808301926020929190829003018186803b158015611d4157600080fd5b505afa158015611d55573d6000803e3d6000fd5b505050506040513d6020811015611d6b57600080fd5b50519050611d798282612065565b8311611d8c57600094505050505061116c565b611d98838784846127e3565b9695505050505050565b60008111611de0576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b600480546040805163a819df9d60e01b81523093810193909352805160009384936001600160a01b03169263a819df9d9260248084019382900301818787803b158015611e2c57600080fd5b505af1158015611e40573d6000803e3d6000fd5b505050506040513d6040811015611e5657600080fd5b50805160209091015190925090506000611e748261141486866128e9565b9050803414611eb8576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f0857600080fd5b505af1158015611f1c573d6000803e3d6000fd5b50505050506000611f2b6120c6565b33600090815260086020908152604080832060098352818420600a909352908320939450611f5d9390928990866124b2565b611f6f600b600c600d886000866124b2565b6007546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611fc357600080fd5b505af1158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b505060065460408051639fb9ec1160e01b81523360048201526024810188905260006044820181905291516001600160a01b0390931692639fb9ec119260648084019391929182900301818387803b1580156115f257600080fd5b60005461010090046001600160a01b031681565b60005460ff1681565b6000828201838110156120bf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006120e060016120da4262015180612942565b90612065565b905090565b60006120bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b0c565b6000612135858585856127e3565b905060008111612179576040805162461bcd60e51b815260206004820152600a6024820152696e6f207265776172647360b01b604482015290519081900360640190fd5b600480546040805163c3f147f160e01b81523093810193909352805160009384936001600160a01b03169263c3f147f19260248084019382900301818787803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b505050506040513d60408110156121ef57600080fd5b5080516020909101519092509050600061220d8261141486866128e9565b9050803414612251576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122a157600080fd5b505af11580156122b5573d6000803e3d6000fd5b50505050506122cd85896120e590919063ffffffff16565b6001600160a01b038089166000818152600e602052604080822094909455600480548551635fe43d2360e11b815291820193909352602481018990529351919092169263bfc87a4692604480830193919282900301818387803b15801561233357600080fd5b505af1158015612347573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b0382166000908152600860209081526040808320805482518185028101850190935280835284938493606093909290918301828280156123bb57602002820191906000526020600020905b8154815260200190600101908083116123a7575b5050506001600160a01b0389166000908152600960209081526040918290208054835181840281018401909452808452959650606095929450925083018282801561242557602002820191906000526020600020905b815481526020019060010190808311612411575b5050506001600160a01b038a166000908152600a60209081526040918290208054835181840281018401909452808452959650606095929450925083018282801561248f57602002820191906000526020600020905b81548152602001906001019080831161247b575b505050505090506124a28383838a612ba3565b9550955095505050509250925092565b8554620151804281900660006124c883836120e5565b90508361256d57851561252657895460018181018c5560008c815260208082209093018890558b549182018c558b815291909120018790558761250b88836128e9565b81546001810183556000928352602090922090910155612568565b6040805162461bcd60e51b8152602060048201526012602482015271313a206e6f7420656e6f756768206d696e6560701b604482015290519081900360640190fd5b6127d7565b600061257a8560016120e5565b905060008b828154811061258a57fe5b9060005260206000200154905060008b83815481106125a557fe5b9060005260206000200154905060008b84815481106125c057fe5b906000526020600020015490506000808a8514156126ab578b15612605576125e8848e612065565b91506125fe6125f78e896128e9565b8490612065565b9050612672565b8c84101561264f576040805162461bcd60e51b8152602060048201526012602482015271323a206e6f7420656e6f756768206d696e6560701b604482015290519081900360640190fd5b612659848e6120e5565b915061266f6126688e896128e9565b84906120e5565b90505b818f878154811061267f57fe5b9060005260206000200181905550808e878154811061269a57fe5b6000918252602090912001556127d0565b8b156126de576126bb848e612065565b91506126d76126ca8e896128e9565b6120da86620151806128e9565b9050612757565b8c841015612728576040805162461bcd60e51b8152602060048201526012602482015271333a206e6f7420656e6f756768206d696e6560701b604482015290519081900360640190fd5b612732848e6120e5565b91506127546127418e896128e9565b61274e86620151806128e9565b906120e5565b90505b8f8b90806001815401808255809150506001900390600052602060002001600090919091909150558e8290806001815401808255809150506001900390600052602060002001600090919091909150558d8190806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050505b50505050505050505050565b600080806127f2856001612065565b90505b6127ff87856120e5565b81116128df5760006128118783612355565b925050506000612820836129fe565b92505050806128305750506128d7565b600480546040805163966ae01b60e01b8152309381019390935260248301869052516000926001600160a01b039092169163966ae01b916044808301926020929190829003018186803b15801561288657600080fd5b505afa15801561289a573d6000803e3d6000fd5b505050506040513d60208110156128b057600080fd5b5051905060006128c48361141484876128e9565b90506128d08682612065565b9550505050505b6001016127f5565b5095945050505050565b6000826128f8575060006110d5565b8282028284828161290557fe5b04146120bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612f3e6021913960400191505060405180910390fd5b60006120bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cc7565b600082158015612992575081155b1561299f575060016120bf565b60006129a96120c6565b905060006129b782866120e5565b9050815b8181106129f15760006129ce8883612355565b50915050858110156129e75760009450505050506120bf565b50600019016129bb565b5060019695505050505050565b6000806000612aff600b805480602002602001604051908101604052809291908181526020018280548015612a5257602002820191906000526020600020905b815481526020019060010190808311612a3e575b5050505050600c805480602002602001604051908101604052809291908181526020018280548015612aa357602002820191906000526020600020905b815481526020019060010190808311612a8f575b5050505050600d805480602002602001604051908101604052809291908181526020018280548015612af457602002820191906000526020600020905b815481526020019060010190808311612ae0575b505050505087612ba3565b9250925092509193909250565b60008184841115612b9b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b60578181015183820152602001612b48565b50505050905090810190601f168015612b8d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b83516000908190819080612bc1578460008093509350935050612cbd565b87600081518110612bce57fe5b6020026020010151851015612bed578460008093509350935050612cbd565b6000612bfa8260016120e5565b90506000898281518110612c0a57fe5b6020026020010151905080871415612c535786898381518110612c2957fe5b6020026020010151898481518110612c3d57fe5b6020026020010151955095509550505050612cbd565b80871115612ca75786898381518110612c6857fe5b6020026020010151612c99620151808c8681518110612c8357fe5b60200260200101516128e990919063ffffffff16565b955095509550505050612cbd565b612cb38a8a8a8a612d2c565b9550955095505050505b9450945094915050565b60008183612d165760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612b60578181015183820152602001612b48565b506000838581612d2257fe5b0495945050505050565b600080600080600090506000612d4d60018a516120e590919063ffffffff16565b90506000612d6060026114148486612065565b90505b81831015612f0457868a8281518110612d7857fe5b60200260200101511415612da75786898281518110612d9357fe5b6020026020010151898381518110612c3d57fe5b868a8281518110612db457fe5b60200260200101511115612e6157600081118015612dee5750868a612dda8360016120e5565b81518110612de457fe5b6020026020010151105b15612e38578689612e008360016120e5565b81518110612e0a57fe5b6020026020010151612c99620151808c612e2e6001876120e590919063ffffffff16565b81518110612c8357fe5b80612e4f5786600080955095509550505050612cbd565b612e5a8160016120e5565b9150612eee565b868a8281518110612e6e57fe5b60200260200101511015612eee578951612e899060016120e5565b81108015612eb35750868a612e9f836001612065565b81518110612ea957fe5b6020026020010151115b15612ee05786898281518110612ec557fe5b6020026020010151612c99620151808c8581518110612c8357fe5b612eeb816001612065565b92505b612efd60026114148486612065565b9050612d63565b868a8281518110612f1157fe5b602002602001015114612f305786600080955095509550505050612cbd565b86898281518110612d9357fefe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220b86e1ae89f99c1ec41f4d99f5f8638e8972694678917089802c1f8ae190001e164736f6c634300060c0033
Deployed Bytecode Sourcemap
216:18484:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;437:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;437:41:4;;;;;;;;;;;;;;1886:229;;;;;;;;;;;;;:::i;:::-;;5811:290;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5811:290:4;;:::i;600:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;600:50:4;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8380:719;;;;;;;;;;;;;;;;-1:-1:-1;8380:719:4;;:::i;334:27::-;;;;;;;;;;;;;:::i;367:25::-;;;;;;;;;;;;;:::i;810:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;810:28:4;;:::i;6982:304::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6982:304:4;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;4134:759;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4134:759:4;;;;;;;;:::i;9801:716::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9801:716:4;;;;;;-1:-1:-1;;;;;9801:716:4;;:::i;6582:394::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6582:394:4;-1:-1:-1;;;;;6582:394:4;;:::i;484:41::-;;;;;;;;;;;;;:::i;398:32::-;;;;;;;;;;;;;:::i;6107:346::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6107:346:4;;:::i;3210:918::-;;;;;;;;;;;;;;;;-1:-1:-1;3210:918:4;;:::i;1725:155::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1725:155:4;-1:-1:-1;;;;;1725:155:4;;:::i;6459:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6459:117:4;-1:-1:-1;;;;;6459:117:4;;:::i;946:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;946:47:4;-1:-1:-1;;;;;946:47:4;;:::i;531:31::-;;;;;;;;;;;;;:::i;2684:260::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2684:260:4;-1:-1:-1;;;;;2684:260:4;;:::i;:::-;;;;;;;;;;;;;;;;;;568:25;;;;;;;;;;;;;:::i;779:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;779:25:4;;:::i;1000:613::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1000:613:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2950:254::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2950:254:4;-1:-1:-1;;;;;2950:254:4;;:::i;7679:695::-;;;:::i;2121:185::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2121:185:4;-1:-1:-1;;;;;2121:185:4;;:::i;656:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;656:53:4;;;;;;;;:::i;883:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;883:57:4;-1:-1:-1;;;;;883:57:4;;:::i;715:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;715:57:4;;;;;;;;:::i;844:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;844:32:4;;:::i;2312:259::-;;;;;;;;;;;;;:::i;7292:272::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7292:272:4;;:::i;9105:690::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9105:690:4;-1:-1:-1;;;;;9105:690:4;;:::i;4899:906::-;;;;;;;;;;;;;;;;-1:-1:-1;4899:906:4;;:::i;308:20::-;;;;;;;;;;;;;:::i;282:::-;;;;;;;;;;;;;:::i;437:41::-;;;-1:-1:-1;;;;;437:41:4;;:::o;1886:229::-;1961:12;;-1:-1:-1;;;;;1961:12:4;1947:10;:26;:54;;;;-1:-1:-1;1977:10:4;:24;;1947:54;1926:117;;;;;-1:-1:-1;;;1926:117:4;;;;;;;;;;;;-1:-1:-1;;;1926:117:4;;;;;;;;;;;;;;;2061:12;;;;2053:20;;-1:-1:-1;;;;;;2053:20:4;2061:12;-1:-1:-1;;;;;2061:12:4;;2053:20;;;;-1:-1:-1;;;;;;2083:25:4;;;1886:229::o;5811:290::-;5887:1;5878:6;:10;5870:27;;;;;-1:-1:-1;;;5870:27:4;;;;;;;;;;;;;;;-1:-1:-1;;;5870:27:4;;;;;;;;;;;;;;;5907:11;;:59;;;-1:-1:-1;;;5907:59:4;;5932:10;5907:59;;;;5952:4;5907:59;;;;;;;;;;;;-1:-1:-1;;;;;5907:11:4;;;;:24;;:59;;;;;;;;;;;;;;;:11;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6016:10:4;6003:24;;;;:12;5907:59;6003:24;;;;;:36;;6032:6;6003:28;:36::i;:::-;5989:10;5976:24;;;;:12;:24;;;;;;:63;;;;6049:7;;:45;;-1:-1:-1;;;6049:45:4;;;;;;;;;;;;;;;:7;:45;;;;;;-1:-1:-1;;;;;6049:7:4;;;;:19;;:45;;;;;5976:24;6049:45;;;;;;5976:24;6049:7;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5811:290;:::o;600:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8380:719::-;8465:10;8437:11;8451:25;;;:13;:25;;;;;:32;8501:8;8493:29;;;;;-1:-1:-1;;;8493:29:4;;;;;;;;;;;;-1:-1:-1;;;8493:29:4;;;;;;;;;;;;;;;8547:16;:14;:16::i;:::-;8540:3;:23;;8532:47;;;;;-1:-1:-1;;;8532:47:4;;;;;;;;;;;;-1:-1:-1;;;8532:47:4;;;;;;;;;;;;;;;8589:12;;;;;;;;;-1:-1:-1;;;;;8589:12:4;-1:-1:-1;;;;;8589:20:4;;8617:9;8589:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8690:10:4;8639:25;8667:34;;;:22;:34;;;;;;8639:25;;-1:-1:-1;8667:39:4;;-1:-1:-1;8667:138:4;;-1:-1:-1;8667:138:4;8794:10;8771:34;;;;:22;:34;;;;;;8667:138;;;8735:10;8721:25;;;;:13;:25;;;;;:28;;:35;;8754:1;;8721:25;:28;;;;;;;;;;;;:32;;:35;;;;:::i;:::-;8837:12;;;:73;;;-1:-1:-1;;;8837:73:4;;8895:4;8837:73;;;;;;;;8639:166;;-1:-1:-1;8815:19:4;;-1:-1:-1;;;;;8837:12:4;;;;:36;;:73;;;;;;;;;;;;;;:12;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8837:73:4;;-1:-1:-1;8934:34:4;:17;8837:73;8934:21;:34::i;:::-;8928:3;:40;8920:68;;;;;-1:-1:-1;;;8920:68:4;;;;;;;;;;;;-1:-1:-1;;;8920:68:4;;;;;;;;;;;;;;;9037:55;9044:3;9049:10;9061:17;9080:11;9037:6;:55::i;:::-;8380:719;;;;:::o;334:27::-;;;-1:-1:-1;;;;;334:27:4;;:::o;367:25::-;;;-1:-1:-1;;;;;367:25:4;;:::o;810:28::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;810:28:4;:::o;6982:304::-;7100:7;;;;7188:14;;:45;;7224:9;7188:45;;;7205:16;:14;:16::i;:::-;7174:59;;7250:29;7268:5;7275:3;7250:17;:29::i;:::-;7243:36;;;;;;;6982:304;;;;;:::o;4134:759::-;4218:1;4209:6;:10;4201:27;;;;;-1:-1:-1;;;4201:27:4;;;;;;;;;;;;;;;-1:-1:-1;;;4201:27:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;4246:19:4;;4238:44;;;;;-1:-1:-1;;;4238:44:4;;;;;;;;;;;;-1:-1:-1;;;4238:44:4;;;;;;;;;;;;;;;4322:12;;-1:-1:-1;;;;;4322:12:4;4300:10;:35;4292:62;;;;;-1:-1:-1;;;4292:62:4;;;;;;;;;;;;-1:-1:-1;;;4292:62:4;;;;;;;;;;;;;;;4364:11;;:59;;;-1:-1:-1;;;4364:59:4;;4389:10;4364:59;;;;4409:4;4364:59;;;;;;;;;;;;-1:-1:-1;;;;;4364:11:4;;;;:24;;:59;;;;;;;;;;;;;;;:11;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4433:18:4;;-1:-1:-1;4454:16:4;:14;:16::i;:::-;-1:-1:-1;;;;;4501:20:4;;;;;;:13;:20;;;;;;;;4535:16;:23;;;;;4572:20;:27;;;;;4433:37;;-1:-1:-1;4480:191:4;;4613:6;4633:4;4433:37;4480:7;:191::i;:::-;4681:155;4702:8;4724:11;4749:15;4778:6;4798:4;4816:10;4681:7;:155::i;:::-;4846:7;;:40;;;-1:-1:-1;;;4846:40:4;;-1:-1:-1;;;;;4846:40:4;;;;;;;;;;;;;:7;:40;;;;;;:7;;;;;:19;;:40;;;;;:7;;:40;;;;;;;:7;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4134:759;;;:::o;9801:716::-;-1:-1:-1;;;;;9938:20:4;;9901:7;9938:20;;;:13;:20;;;;;:27;9979:8;9975:47;;10010:1;10003:8;;;;;9975:47;10046:16;:14;:16::i;:::-;10039:3;:23;;10031:47;;;;;-1:-1:-1;;;10031:47:4;;;;;;;;;;;;-1:-1:-1;;;10031:47:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;10116:29:4;;10088:25;10116:29;;;:22;:29;;;;;;:34;:123;;-1:-1:-1;;;;;10210:29:4;;;;;;:22;:29;;;;;;10116:123;;;-1:-1:-1;;;;;10165:20:4;;;;;;:13;:20;;;;;:23;;:30;;10193:1;;10165:20;:23;;;:30;10271:12;;;:73;;;-1:-1:-1;;;10271:73:4;;10329:4;10271:73;;;;;;;;10088:151;;-1:-1:-1;10249:19:4;;-1:-1:-1;;;;;10271:12:4;;;;:36;;:73;;;;;;;;;;;;;;:12;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10271:73:4;;-1:-1:-1;10366:34:4;:17;10271:73;10366:21;:34::i;:::-;10360:3;:40;10354:82;;10424:1;10417:8;;;;;;;10354:82;10452:58;10467:3;10472:5;10479:17;10498:11;10452:14;:58::i;:::-;10445:65;;;;;9801:716;;;;;:::o;6582:394::-;-1:-1:-1;;;;;6714:20:4;;6677:7;6714:20;;;:13;:20;;;;;:27;6755:8;;6751:201;;-1:-1:-1;;;;;6802:29:4;;;;;;:22;:29;;;;;;:34;:139;;-1:-1:-1;;;;;6912:29:4;;;;;;:22;:29;;;;;;6802:139;;;-1:-1:-1;;;;;6859:20:4;;;;;;:13;:20;;;;;:23;;:30;;6887:1;;6859:20;:23;;;:30;6779:162;;;;;6751:201;6968:1;6961:8;;;6582:394;;;;:::o;484:41::-;;;-1:-1:-1;;;;;484:41:4;;:::o;398:32::-;;;-1:-1:-1;;;;;398:32:4;;:::o;6107:346::-;6185:1;6176:6;:10;6168:27;;;;;-1:-1:-1;;;6168:27:4;;;;;;;;;;;;;;;-1:-1:-1;;;6168:27:4;;;;;;;;;;;;;;;6226:10;6213:24;;;;:12;:24;;;;;;:34;-1:-1:-1;6213:34:4;6205:62;;;;;-1:-1:-1;;;6205:62:4;;;;;;;;;;;;-1:-1:-1;;;6205:62:4;;;;;;;;;;;;;;;6317:10;6304:24;;;;:12;:24;;;;;;:36;;6333:6;6304:28;:36::i;:::-;6290:10;6277:24;;;;:12;:24;;;;;;:63;;;;6350:7;;:46;;-1:-1:-1;;;6350:46:4;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6350:7:4;;;;:19;;:46;;;;;6277:24;6350:46;;;;;;6277:24;6350:7;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6406:11:4;;:40;;;-1:-1:-1;;;6406:40:4;;6427:10;6406:40;;;;;;;;;;;;-1:-1:-1;;;;;6406:11:4;;;;-1:-1:-1;6406:20:4;;-1:-1:-1;6406:40:4;;;;;;;;;;;;;;;:11;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6107:346:4:o;3210:918::-;3282:1;3273:6;:10;3265:27;;;;;-1:-1:-1;;;3265:27:4;;;;;;;;;;;;;;;-1:-1:-1;;;3265:27:4;;;;;;;;;;;;;;;3345:12;;;:62;;;-1:-1:-1;;;3345:62:4;;3401:4;3345:62;;;;;;;;;3303:17;;;;-1:-1:-1;;;;;3345:12:4;;:47;;:62;;;;;;;;;;3303:17;3345:12;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3345:62:4;;;;;;;;;-1:-1:-1;3345:62:4;-1:-1:-1;3417:11:4;3431:38;3345:62;3431:21;:6;3345:62;3431:10;:21::i;:::-;:25;;:38::i;:::-;3417:52;;3500:3;3487:9;:16;3479:40;;;;;-1:-1:-1;;;3479:40:4;;;;;;;;;;;;-1:-1:-1;;;3479:40:4;;;;;;;;;;;;;;;3529:12;;;;;;;;;-1:-1:-1;;;;;3529:12:4;-1:-1:-1;;;;;3529:20:4;;3557:9;3529:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:11:4;;:59;;;-1:-1:-1;;;3579:59:4;;3604:10;3579:59;;;;3624:4;3579:59;;;;;;;;;;;;-1:-1:-1;;;;;3579:11:4;;;;-1:-1:-1;3579:24:4;;-1:-1:-1;3579:59:4;;;;;-1:-1:-1;3579:59:4;;;;;;;;:11;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3648:18:4;;-1:-1:-1;3669:16:4;:14;:16::i;:::-;3730:10;3716:25;;;;:13;:25;;;;;;;;3755:16;:28;;;;;3797:20;:32;;;;;3648:37;;-1:-1:-1;3695:206:4;;3843:6;3863:4;3648:37;3695:7;:206::i;:::-;3911:155;3932:8;3954:11;3979:15;4008:6;4028:4;4046:10;3911:7;:155::i;:::-;4076:7;;:45;;;-1:-1:-1;;;4076:45:4;;4096:10;4076:45;;;;;;;;;;:7;:45;;;;;;-1:-1:-1;;;;;4076:7:4;;;;:19;;:45;;;;;:7;;:45;;;;;;;;:7;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3210:918;;;;;:::o;1725:155::-;1814:5;;;;;-1:-1:-1;;;;;1814:5:4;1800:10;:19;1792:41;;;;;-1:-1:-1;;;1792:41:4;;;;;;;;;;;;-1:-1:-1;;;1792:41:4;;;;;;;;;;;;;;;1843:12;:30;;-1:-1:-1;;;;;;1843:30:4;-1:-1:-1;;;;;1843:30:4;;;;;;;;;;1725:155::o;6459:117::-;-1:-1:-1;;;;;6550:19:4;6524:7;6550:19;;;:12;:19;;;;;;;6459:117::o;946:47::-;;;;;;;;;;;;;:::o;531:31::-;;;-1:-1:-1;;;;;531:31:4;;:::o;2684:260::-;2780:12;;;:36;;;-1:-1:-1;;;2780:36:4;;;;2745:4;;;;-1:-1:-1;;;;;2780:12:4;;:34;;:36;;;;;;;;;;;:12;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2780:36:4;2843:12;;;:43;;;-1:-1:-1;;;2843:43:4;;;;2780:36;;-1:-1:-1;2826:14:4;;-1:-1:-1;;;;;2843:12:4;;;;:41;;:43;;;;2780:36;;2843:43;;;;;;:12;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2843:43:4;;-1:-1:-1;2903:34:4;2913:5;2920:8;2843:43;2903:9;:34::i;:::-;2896:41;2684:260;-1:-1:-1;;;;2684:260:4:o;568:25::-;;;-1:-1:-1;;;;;568:25:4;;:::o;779:::-;;;;;;;;;;1000:613;1253:8;;;;1252:9;1244:31;;;;;-1:-1:-1;;;1244:31:4;;;;;;;;;;;;-1:-1:-1;;;1244:31:4;;;;;;;;;;;;;;;1285:7;:42;;-1:-1:-1;;;;;;1285:42:4;;;-1:-1:-1;;;;;1285:42:4;;;;;;;1337:12;:57;;;;;;;;;;;;;;1404:12;:57;;;;;;;;;;;;;;1471:11;:40;;;;;;;;;;;;;;-1:-1:-1;1521:20:4;;-1:-1:-1;1551:30:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1521:20:4;;;1285:42;1521:20;;;;;;;;;-1:-1:-1;;1591:15:4;-1:-1:-1;1591:15:4;;;1000:613::o;2950:254::-;3044:12;;;:34;;;-1:-1:-1;;;3044:34:4;;;;3009:4;;;;-1:-1:-1;;;;;3044:12:4;;:32;;:34;;;;;;;;;;;:12;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3044:34:4;3105:12;;;:41;;;-1:-1:-1;;;3105:41:4;;;;3044:34;;-1:-1:-1;3088:14:4;;-1:-1:-1;;;;;3105:12:4;;;;:39;;:41;;;;3044:34;;3105:41;;;;;;:12;:41;;;;;;;;;;7679:695;7752:10;7724:11;7738:25;;;:13;:25;;;;;:32;7788:8;7780:29;;;;;-1:-1:-1;;;7780:29:4;;;;;;;;;;;;-1:-1:-1;;;7780:29:4;;;;;;;;;;;;;;;7819:18;7840:16;:14;:16::i;:::-;7917:10;7866:25;7894:34;;;:22;:34;;;;;;7819:37;;-1:-1:-1;7866:25:4;7894:39;:138;;8021:10;7998:34;;;;:22;:34;;;;;;7894:138;;;7962:10;7948:25;;;;:13;:25;;;;;:28;;:35;;7981:1;;7948:25;:28;;;:35;8064:12;;;:73;;;-1:-1:-1;;;8064:73:4;;8122:4;8064:73;;;;;;;;7866:166;;-1:-1:-1;8042:19:4;;-1:-1:-1;;;;;8064:12:4;;;;:36;;:73;;;;;;;;;;;;;;:12;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8064:73:4;;-1:-1:-1;8181:34:4;:17;8064:73;8181:21;:34::i;:::-;8168:10;:47;8147:109;;;;;-1:-1:-1;;;8147:109:4;;;;;;;;;;;;-1:-1:-1;;;8147:109:4;;;;;;;;;;;;;;;8305:62;8312:10;8324;8336:17;8355:11;8305:6;:62::i;2121:185::-;2220:10;;-1:-1:-1;;;;;2220:10:4;2206;:24;2198:51;;;;;-1:-1:-1;;;2198:51:4;;;;;;;;;;;;-1:-1:-1;;;2198:51:4;;;;;;;;;;;;;;;2259:17;:40;;-1:-1:-1;;;;;;2259:40:4;-1:-1:-1;;;;;2259:40:4;;;;;;;;;;2121:185::o;656:53::-;;;;;;;;;;;;;;;;;;883:57;;;;;;;;;;;;;:::o;715:::-;;;;;;;;;;;;;;;;;;844:32;;;;;;;;;;2312:259;2392:17;;-1:-1:-1;;;;;2392:17:4;2378:10;:31;:59;;;;-1:-1:-1;2413:10:4;:24;;2378:59;2357:127;;;;;-1:-1:-1;;;2357:127:4;;;;;;;;;;;;-1:-1:-1;;;2357:127:4;;;;;;;;;;;;;;;2507:17;;;2494:10;:30;;-1:-1:-1;;;;;;2494:30:4;;;-1:-1:-1;;;;;2507:17:4;;2494:30;;;;2534;;;2312:259::o;7292:272::-;7390:7;;;;7478:14;;:45;;7514:9;7478:45;;;7495:16;:14;:16::i;:::-;7464:59;;7540:17;7553:3;7540:12;:17::i;:::-;7533:24;;;;;;;7292:272;;;;;:::o;9105:690::-;-1:-1:-1;;;;;9200:20:4;;9167:7;9200:20;;;:13;:20;;;;;:27;9241:8;9237:47;;9272:1;9265:8;;;;;9237:47;9293:18;9314:16;:14;:16::i;:::-;-1:-1:-1;;;;;9368:29:4;;9340:25;9368:29;;;:22;:29;;;;;;9293:37;;-1:-1:-1;9340:25:4;9368:34;:123;;-1:-1:-1;;;;;9462:29:4;;;;;;:22;:29;;;;;;9368:123;;;-1:-1:-1;;;;;9417:20:4;;;;;;:13;:20;;;;;:23;;:30;;9445:1;;9417:20;:23;;;:30;9523:12;;;:73;;;-1:-1:-1;;;9523:73:4;;9581:4;9523:73;;;;;;;;9340:151;;-1:-1:-1;9501:19:4;;-1:-1:-1;;;;;9523:12:4;;;;:36;;:73;;;;;;;;;;;;;;:12;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9523:73:4;;-1:-1:-1;9625:34:4;:17;9523:73;9625:21;:34::i;:::-;9612:10;:47;9606:89;;9683:1;9676:8;;;;;;;;9606:89;9723:65;9738:10;9750:5;9757:17;9776:11;9723:14;:65::i;:::-;9704:84;9105:690;-1:-1:-1;;;;;;9105:690:4:o;4899:906::-;4973:1;4964:6;:10;4956:27;;;;;-1:-1:-1;;;4956:27:4;;;;;;;;;;;;;;;-1:-1:-1;;;4956:27:4;;;;;;;;;;;;;;;5036:12;;;:64;;;-1:-1:-1;;;5036:64:4;;5094:4;5036:64;;;;;;;;;4994:17;;;;-1:-1:-1;;;;;5036:12:4;;:49;;:64;;;;;;;;;;4994:17;5036:12;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5036:64:4;;;;;;;;;-1:-1:-1;5036:64:4;-1:-1:-1;5110:11:4;5124:38;5036:64;5124:21;:6;5036:64;5124:10;:21::i;:38::-;5110:52;;5193:3;5180:9;:16;5172:40;;;;;-1:-1:-1;;;5172:40:4;;;;;;;;;;;;-1:-1:-1;;;5172:40:4;;;;;;;;;;;;;;;5222:12;;;;;;;;;-1:-1:-1;;;;;5222:12:4;-1:-1:-1;;;;;5222:20:4;;5250:9;5222:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5272:18;5293:16;:14;:16::i;:::-;5354:10;5340:25;;;;:13;:25;;;;;;;;5379:16;:28;;;;;5421:20;:32;;;;;;5272:37;;-1:-1:-1;5319:207:4;;5340:25;;5467:6;;5272:37;5319:7;:207::i;:::-;5536:156;5557:8;5579:11;5604:15;5633:6;5653:5;5672:10;5536:7;:156::i;:::-;5702:11;;:40;;;-1:-1:-1;;;5702:40:4;;5723:10;5702:40;;;;;;;;;;;;-1:-1:-1;;;;;5702:11:4;;;;:20;;:40;;;;;;;;;;;;;;;:11;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5752:7:4;;:46;;;-1:-1:-1;;;5752:46:4;;5772:10;5752:46;;;;;;;;;;:7;:46;;;;;;;;-1:-1:-1;;;;;5752:7:4;;;;:19;;:46;;;;;:7;;:46;;;;;;:7;;:46;;;;;;;;;;308:20;;;;;;-1:-1:-1;;;;;308:20:4;;:::o;282:::-;;;;;;:::o;874:176:1:-;932:7;963:5;;;986:6;;;;978:46;;;;;-1:-1:-1;;;978:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;874:176;-1:-1:-1;;;874:176:1:o;18016:116:4:-;18065:7;18091:34;18123:1;18091:27;:15;18111:6;18091:19;:27::i;:::-;:31;;:34::i;:::-;18084:41;;18016:116;:::o;1321:134:1:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;16297:741:4:-;16450:15;16468:120;16496:7;16517:5;16536:17;16567:11;16468:14;:120::i;:::-;16450:138;;16616:1;16606:7;:11;16598:34;;;;;-1:-1:-1;;;16598:34:4;;;;;;;;;;;;-1:-1:-1;;;16598:34:4;;;;;;;;;;;;;;;16685:12;;;:64;;;-1:-1:-1;;;16685:64:4;;16743:4;16685:64;;;;;;;;;16643:17;;;;-1:-1:-1;;;;;16685:12:4;;:49;;:64;;;;;;;;;;16643:17;16685:12;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16685:64:4;;;;;;;;;-1:-1:-1;16685:64:4;-1:-1:-1;16759:11:4;16773:39;16685:64;16773:22;:7;16685:64;16773:11;:22::i;:39::-;16759:53;;16843:3;16830:9;:16;16822:40;;;;;-1:-1:-1;;;16822:40:4;;;;;;;;;;;;-1:-1:-1;;;16822:40:4;;;;;;;;;;;;;;;16872:12;;;;;;;;;-1:-1:-1;;;;;16872:12:4;-1:-1:-1;;;;;16872:20:4;;16900:9;16872:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16954:24;16966:11;16954:7;:11;;:24;;;;:::i;:::-;-1:-1:-1;;;;;16922:29:4;;;;;;;:22;:29;;;;;;:56;;;;16988:12;;;:43;;-1:-1:-1;;;16988:43:4;;;;;;;;;;;;;;;;;:12;;;;;:27;;:43;;;;;16922:29;;16988:43;;;;;16922:29;16988:12;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16297:741;;;;;;;;:::o;10631:428::-;-1:-1:-1;;;;;10845:20:4;;10746:7;10845:20;;;:13;:20;;;;;;;;10820:45;;;;;;;;;;;;;;;;;10746:7;;;;10820:22;;:45;;10845:20;;10820:45;;10845:20;10820:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;10903:23:4;;;;;;:16;:23;;;;;;;;;10875:51;;;;;;;;;;;;;;;;;10820:45;;-1:-1:-1;10875:25:4;;:51;;-1:-1:-1;10903:23:4;-1:-1:-1;10875:51:4;;10903:23;10875:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;10968:27:4;;;;;;:20;:27;;;;;;;;;10936:59;;;;;;;;;;;;;;;;;10875:51;;-1:-1:-1;10936:29:4;;:59;;-1:-1:-1;10968:27:4;-1:-1:-1;10936:59:4;;10968:27;10936:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11012:40;11017:5;11024:8;11034:12;11048:3;11012:4;:40::i;:::-;11005:47;;;;;;;;;10631:428;;;;;:::o;13770:2521::-;14008:12;;14054:6;14103:15;:31;;;13994:11;14175:63;14054:6;14103:31;14175:17;:63::i;:::-;14144:94;-1:-1:-1;14253:8:4;14249:2036;;14281:6;14277:250;;;14307:22;;;;;;;;-1:-1:-1;14307:22:4;;;;;;;;;;;;;14347:21;;;;;;;;;;;;;;;;;;14386:12;14404:32;14361:6;14415:20;14404:10;:32::i;:::-;14386:51;;;;;;;-1:-1:-1;14386:51:4;;;;;;;;;;;14277:250;;;14476:36;;;-1:-1:-1;;;14476:36:4;;;;;;;;;;;;-1:-1:-1;;;14476:36:4;;;;;;;;;;;;;;;14249:2036;;;14557:17;14577:10;:3;14585:1;14577:7;:10::i;:::-;14557:30;;14601:20;14624:5;14630:9;14624:16;;;;;;;;;;;;;;;;14601:39;;14654:23;14680:8;14689:9;14680:19;;;;;;;;;;;;;;;;14654:45;;14713:23;14739:12;14752:9;14739:23;;;;;;;;;;;;;;;;14713:49;;14777:17;14808:22;14865:10;14849:12;:26;14845:1430;;;14899:6;14895:532;;;14941:27;:15;14961:6;14941:19;:27::i;:::-;14929:39;-1:-1:-1;15007:99:4;15052:32;:6;15063:20;15052:10;:32::i;:::-;15007:15;;:19;:99::i;:::-;14990:116;;14895:532;;;15180:6;15161:15;:25;;15153:56;;;;;-1:-1:-1;;;15153:56:4;;;;;;;;;;;;-1:-1:-1;;;15153:56:4;;;;;;;;;;;;;;;15243:27;:15;15263:6;15243:19;:27::i;:::-;15231:39;-1:-1:-1;15309:99:4;15354:32;:6;15365:20;15354:10;:32::i;:::-;15309:15;;:19;:99::i;:::-;15292:116;;14895:532;15466:9;15444:8;15453:9;15444:19;;;;;;;;;;;;;;;:31;;;;15519:14;15493:12;15506:9;15493:23;;;;;;;;;;;;;;;;;:40;14845:1430;;;15576:6;15572:556;;;15618:27;:15;15638:6;15618:19;:27::i;:::-;15606:39;-1:-1:-1;15684:111:4;15741:32;:6;15752:20;15741:10;:32::i;:::-;15684:27;:15;15704:6;15684:19;:27::i;:111::-;15667:128;;15572:556;;;15869:6;15850:15;:25;;15842:56;;;;;-1:-1:-1;;;15842:56:4;;;;;;;;;;;;-1:-1:-1;;;15842:56:4;;;;;;;;;;;;;;;15932:27;:15;15952:6;15932:19;:27::i;:::-;15920:39;-1:-1:-1;15998:111:4;16055:32;:6;16066:20;16055:10;:32::i;:::-;15998:27;:15;16018:6;15998:19;:27::i;:::-;:31;;:111::i;:::-;15981:128;;15572:556;16145:5;16156:10;16145:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16185:8;16199:9;16185:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16227:12;16245:14;16227:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14845:1430;14249:2036;;;;;;;13770:2521;;;;;;;;;;:::o;17044:966::-;17209:7;;;17285:24;:17;17307:1;17285:21;:24::i;:::-;17271:38;;17253:727;17330:24;:7;17342:11;17330;:24::i;:::-;17323:3;:31;17253:727;;17403:30;17437:75;17472:5;17495:3;17437:17;:75::i;:::-;17398:114;;;;17531:25;17560:17;17573:3;17560:12;:17::i;:::-;17526:51;-1:-1:-1;;;17595:22:4;17591:69;;17637:8;;;;17591:69;17700:12;;;:98;;;-1:-1:-1;;;17700:98:4;;17758:4;17700:98;;;;;;;;;;;;;;17673:24;;-1:-1:-1;;;;;17700:12:4;;;;:32;;:98;;;;;;;;;;;;;;:12;:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17700:98:4;;-1:-1:-1;17812:14:4;17829:97;17895:17;17829:44;17700:98;17850:22;17829:20;:44::i;:97::-;17812:114;-1:-1:-1;17950:19:4;:7;17812:114;17950:11;:19::i;:::-;17940:29;;17253:727;;;;;17368:5;;17253:727;;;-1:-1:-1;17996:7:4;17044:966;-1:-1:-1;;;;;17044:966:4: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3101:130;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;18138:560:4:-;18259:4;18279:13;;:28;;;;-1:-1:-1;18296:11:4;;18279:28;18275:70;;;-1:-1:-1;18330:4:4;18323:11;;18275:70;18354:18;18375:16;:14;:16::i;:::-;18354:37;-1:-1:-1;18401:14:4;18418:24;18354:37;18433:8;18418:14;:24::i;:::-;18401:41;-1:-1:-1;18471:10:4;18452:219;18490:6;18483:3;:13;18452:219;;18522:19;18547:29;18565:5;18572:3;18547:17;:29::i;:::-;18519:57;;;;18608:6;18594:11;:20;18590:71;;;18641:5;18634:12;;;;;;;;18590:71;-1:-1:-1;;;18498:5:4;18452:219;;;-1:-1:-1;18687:4:4;;18138:560;-1:-1:-1;;;;;;18138:560:4:o;11065:232::-;11160:7;11181;11202;11241:49;11246:8;11241:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11256:11;11241:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11269:15;11241:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11286:3;11241:4;:49::i;:::-;11234:56;;;;;;11065:232;;;;;:::o;1746:187:1:-;1832:7;1867:12;1859:6;;;;1851:29;;;;-1:-1:-1;;;1851:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1902:5:1;;;1746:187::o;11303:837:4:-;11598:12;;11510:7;;;;;;11624:8;11620:57;;11656:3;11661:1;11664;11648:18;;;;;;;;;11620:57;11696:5;11702:1;11696:8;;;;;;;;;;;;;;11690:3;:14;11686:63;;;11728:3;11733:1;11736;11720:18;;;;;;;;;11686:63;11758:17;11778:10;:3;11786:1;11778:7;:10::i;:::-;11758:30;;11798:20;11821:5;11827:9;11821:16;;;;;;;;;;;;;;11798:39;;11858:12;11851:3;:19;11847:229;;;11894:3;11899:8;11908:9;11899:19;;;;;;;;;;;;;;11920:12;11933:9;11920:23;;;;;;;;;;;;;;11886:58;;;;;;;;;;;11847:229;11971:12;11965:3;:18;11961:115;;;12007:3;12012:8;12021:9;12012:19;;;;;;;;;;;;;;12033:31;12057:6;12033:8;12042:9;12033:19;;;;;;;;;;;;;;:23;;:31;;;;:::i;:::-;11999:66;;;;;;;;;;;11961:115;12092:41;12098:5;12105:8;12115:12;12129:3;12092:5;:41::i;:::-;12085:48;;;;;;;;;11303:837;;;;;;;;;:::o;3713:272:1:-;3799:7;3833:12;3826:5;3818:28;;;;-1:-1:-1;;;3818:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;;3713:272;-1:-1:-1;;;;;3713:272:1:o;12146:1618:4:-;12354:7;12375;12396;12428:12;12443:1;12428:16;;12454:13;12470:19;12487:1;12470:5;:12;:16;;:19;;;;:::i;:::-;12454:35;-1:-1:-1;12499:14:4;12516:22;12536:1;12516:15;12454:35;12526:4;12516:9;:15::i;:22::-;12499:39;;12548:1049;12562:5;12555:4;:12;12548:1049;;;12604:3;12587:5;12593:6;12587:13;;;;;;;;;;;;;;:20;12583:959;;;12635:3;12640:8;12649:6;12640:16;;;;;;;;;;;;;;12658:12;12671:6;12658:20;;;;;;;12583:959;12720:3;12704:5;12710:6;12704:13;;;;;;;;;;;;;;:19;12700:842;;;12756:1;12747:6;:10;:40;;;;-1:-1:-1;12784:3:4;12761:5;12767:13;:6;12778:1;12767:10;:13::i;:::-;12761:20;;;;;;;;;;;;;;:26;12747:40;12743:255;;;12844:3;12873:8;12882:13;:6;12893:1;12882:10;:13::i;:::-;12873:23;;;;;;;;;;;;;;12922:35;12950:6;12922:8;12931:13;12942:1;12931:6;:10;;:13;;;;:::i;:::-;12922:23;;;;;;;12743:255;13019:11;13015:76;;13062:3;13067:1;13070;13054:18;;;;;;;;;;;13015:76;13116:13;:6;13127:1;13116:10;:13::i;:::-;13108:21;;12700:842;;;13170:3;13154:5;13160:6;13154:13;;;;;;;;;;;;;;:19;13150:392;;;13227:12;;:19;;13244:1;13227:16;:19::i;:::-;13218:6;:28;:58;;;;-1:-1:-1;13273:3:4;13250:5;13256:13;:6;13267:1;13256:10;:13::i;:::-;13250:20;;;;;;;;;;;;;;:26;13218:58;13193:297;;;13350:3;13379:8;13388:6;13379:16;;;;;;;;;;;;;;13421:28;13442:6;13421:8;13430:6;13421:16;;;;;;;13193:297;13514:13;:6;13525:1;13514:10;:13::i;:::-;13507:20;;13150:392;13564:22;13584:1;13564:15;:5;13574:4;13564:9;:15::i;:22::-;13555:31;;12548:1049;;;13627:3;13610:5;13616:6;13610:13;;;;;;;;;;;;;;:20;13606:152;;13654:3;13659:1;13662;13646:18;;;;;;;;;;;13606:152;13703:3;13708:8;13717:6;13708:16;;;;;;
Swarm Source
ipfs://b86e1ae89f99c1ec41f4d99f5f8638e8972694678917089802c1f8ae190001e1
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.