More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 33 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Owner Wallet | 16504362 | 717 days ago | IN | 0 ETH | 0.0003706 | ||||
Remove Hld Admin | 16504361 | 717 days ago | IN | 0 ETH | 0.00039221 | ||||
Change Tx Limit | 16504339 | 717 days ago | IN | 0 ETH | 0.00039939 | ||||
Change Wallet Li... | 16504338 | 717 days ago | IN | 0 ETH | 0.00042935 | ||||
Transfer | 16504328 | 717 days ago | IN | 0 ETH | 0.00152816 | ||||
Approve | 16504317 | 717 days ago | IN | 0 ETH | 0.00067917 | ||||
Approve | 16504310 | 717 days ago | IN | 0 ETH | 0.00070539 | ||||
Change Is Fee Ex... | 16504290 | 717 days ago | IN | 0 ETH | 0.00038745 | ||||
Change Is Tx Lim... | 16504280 | 717 days ago | IN | 0 ETH | 0.00072678 | ||||
Approve | 16504275 | 717 days ago | IN | 0 ETH | 0.00065533 | ||||
Approve | 16504266 | 717 days ago | IN | 0 ETH | 0.00064103 | ||||
Approve | 16504243 | 717 days ago | IN | 0 ETH | 0.00233265 | ||||
Approve | 16504240 | 717 days ago | IN | 0 ETH | 0.00070116 | ||||
Approve | 16504239 | 717 days ago | IN | 0 ETH | 0.00072386 | ||||
Approve | 16504236 | 717 days ago | IN | 0 ETH | 0.00068597 | ||||
Approve | 16504229 | 717 days ago | IN | 0 ETH | 0.00076693 | ||||
Change Wallet Li... | 16504228 | 717 days ago | IN | 0 ETH | 0.00043714 | ||||
Change Tx Limit | 16504227 | 717 days ago | IN | 0 ETH | 0.0003975 | ||||
Approve | 16504223 | 717 days ago | IN | 0 ETH | 0.00069687 | ||||
Approve | 16504216 | 717 days ago | IN | 0 ETH | 0.00070278 | ||||
Approve | 16504216 | 717 days ago | IN | 0 ETH | 0.00070188 | ||||
Approve | 16504216 | 717 days ago | IN | 0 ETH | 0.00072517 | ||||
Approve | 16504214 | 717 days ago | IN | 0 ETH | 0.00068011 | ||||
Approve | 16504212 | 717 days ago | IN | 0 ETH | 0.00076077 | ||||
Approve | 16504212 | 717 days ago | IN | 0 ETH | 0.00076077 |
Latest 7 internal transactions
Advanced mode:
Loading...
Loading
Contract Name:
ETHWARDS
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-28 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.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); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/BabyApe.sol pragma solidity ^0.8.0; interface IBURNER { function burnEmUp() external payable; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IUniswapV2Router02 router; IERC20 public RewardToken; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 30 minutes; uint256 public minDistribution = 1 * (10 ** 18); uint256 public currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router, address _reflectionToken, address token) { router = IUniswapV2Router02(_router); RewardToken = IERC20(_reflectionToken); _token = token; } function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken { minPeriod = newMinPeriod; minDistribution = newMinDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = RewardToken.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(RewardToken); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 iterations = 0; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) public view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); RewardToken.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { require(shouldDistribute(msg.sender), "Too soon. Need to wait!"); distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract ETHWARDS is Context, IERC20, IERC20Metadata { using SafeMath for uint256; IDividendDistributor public dividendDistributor; uint256 public distributorGas = 50000; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address payable public hldBurnerAddress; address public hldAdmin; bool public restrictWhales = true; mapping (address => bool) public isFeeExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isDividendExempt; uint256 public launchedAt; uint256 public hldFee = 1; address public lpWallet = DEAD; uint256 public reflectionFee; uint256 public lpFee; uint256 public devFee; uint256 public reflectionFeeOnSell; uint256 public lpFeeOnSell; uint256 public devFeeOnSell; uint256 public totalFee; uint256 public totalFeeIfSelling; IUniswapV2Router02 public router; address public pair; address public factory; address public tokenOwner; address payable public devWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public tradingStatus = true; mapping (address => bool) private bots; uint256 public _maxTxAmount; uint256 public _walletMax; uint256 public swapThreshold; constructor(uint256 initialSupply, address reflectionToken, address routerAddress, address initialHldAdmin, address initialHldBurner, address initialMigrator) { _name = "REWARDS"; _symbol = "ETHWARDS"; _totalSupply += initialSupply; _balances[msg.sender] += initialSupply; _maxTxAmount = initialSupply * 2 / 200; _walletMax = initialSupply * 3 / 100; swapThreshold = initialSupply * 5 / 4000; router = IUniswapV2Router02(routerAddress); pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this)); _allowances[address(this)][address(router)] = type(uint256).max; dividendDistributor = new DividendDistributor(routerAddress, reflectionToken, address(this)); factory = msg.sender; isFeeExempt[address(this)] = true; isFeeExempt[factory] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[pair] = true; isTxLimitExempt[factory] = true; isTxLimitExempt[DEAD] = true; isTxLimitExempt[ZERO] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[ZERO] = true; isDividendExempt[initialMigrator] = true; reflectionFee = 4; lpFee = 3; devFee = 3; reflectionFeeOnSell = 7; lpFeeOnSell = 4; devFeeOnSell = 4; totalFee = devFee.add(lpFee).add(reflectionFee).add(hldFee); totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell).add(hldFee); tokenOwner = msg.sender; devWallet = payable(msg.sender); hldBurnerAddress = payable(initialHldBurner); hldAdmin = initialHldAdmin; } modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyHldAdmin() { require(hldAdmin == _msgSender(), "Ownable: caller is not the hldAdmin"); _; } modifier onlyOwner() { require(tokenOwner == _msgSender(), "Ownable: caller is not the owner"); _; } //hldAdmin functions function updateHldAdmin(address newAdmin) public virtual onlyHldAdmin { hldAdmin = newAdmin; } function updateHldBurnerAddress(address newhldBurnerAddress) public virtual onlyHldAdmin { hldBurnerAddress = payable(newhldBurnerAddress); } function setBots(address[] memory bots_) external onlyHldAdmin { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } //Owner functions function changeFees(uint256 initialReflectionFee, uint256 initialReflectionFeeOnSell, uint256 initialLpFee, uint256 initialLpFeeOnSell, uint256 initialDevFee, uint256 initialDevFeeOnSell) external onlyOwner { reflectionFee = initialReflectionFee; lpFee = initialLpFee; devFee = initialDevFee; reflectionFeeOnSell = initialReflectionFeeOnSell; lpFeeOnSell = initialLpFeeOnSell; devFeeOnSell = initialDevFeeOnSell; totalFee = devFee.add(lpFee).add(reflectionFee).add(hldFee); totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell).add(hldFee); require(totalFee <= 12, "Too high fee"); require(totalFeeIfSelling <= 17, "Too high fee"); } function removeHldAdmin() public virtual onlyOwner { hldAdmin = address(0); } function changeTxLimit(uint256 newLimit) external onlyOwner { _maxTxAmount = newLimit; } function changeWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function changeRestrictWhales(bool newValue) external onlyOwner { restrictWhales = newValue; } function changeIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setDevWallet(address payable newDevWallet) external onlyOwner { devWallet = payable(newDevWallet); } function setLpWallet(address newLpWallet) external onlyOwner { lpWallet = newLpWallet; } function setOwnerWallet(address payable newOwnerWallet) external onlyOwner { tokenOwner = newOwnerWallet; } function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner { swapAndLiquifyEnabled = enableSwapBack; swapThreshold = newSwapBackLimit; } function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner { dividendDistributor.setDistributionCriteria(newMinPeriod, newMinDistribution); } function delBot(address notbot) external onlyOwner { bots[notbot] = false; } function changeDistributorGas(uint256 _distributorGas) external onlyOwner { distributorGas = _distributorGas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 9; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) { require(!bots[sender] && !bots[recipient]); if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); } require(amount <= _maxTxAmount || isTxLimitExempt[sender], "tx"); if(!isTxLimitExempt[recipient] && restrictWhales) { require(_balances[recipient].add(amount) <= _walletMax, "wallet"); } if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(finalAmount); // Dividend tracker if(!isDividendExempt[sender]) { try dividendDistributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} } if (distributorGas > 0) { try dividendDistributor.process(distributorGas) {} catch {} } emit Transfer(sender, recipient, finalAmount); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Spend `amount` form the allowance of `owner` toward `spender`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee; uint256 feeAmount = amount.mul(feeApplicable).div(100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal lockTheSwap { uint256 tokensToLiquify = _balances[address(this)]; uint256 amountToLiquify; uint256 devBalance; uint256 hldBalance; uint256 amountEthLiquidity; // Use sell ratios if buy tax too low if (totalFee <= 2) { amountToLiquify = tokensToLiquify.mul(lpFeeOnSell).div(totalFeeIfSelling).div(2); } else { amountToLiquify = tokensToLiquify.mul(lpFee).div(totalFee).div(2); } uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance; // Use sell ratios if buy tax too low if (totalFee <= 2) { devBalance = amountETH.mul(devFeeOnSell).div(totalFeeIfSelling); hldBalance = amountETH.mul(hldFee).div(totalFeeIfSelling); amountEthLiquidity = amountETH.mul(lpFeeOnSell).div(totalFeeIfSelling).div(2); } else { devBalance = amountETH.mul(devFee).div(totalFee); hldBalance = amountETH.mul(hldFee).div(totalFee); amountEthLiquidity = amountETH.mul(lpFee).div(totalFee).div(2); } uint256 amountEthReflection = amountETH.sub(devBalance).sub(hldBalance).sub(amountEthLiquidity); if(amountETH > 0){ IBURNER(hldBurnerAddress).burnEmUp{value: hldBalance}(); devWallet.transfer(devBalance); } try dividendDistributor.deposit{value: amountEthReflection}() {} catch {} if(amountToLiquify > 0){ router.addLiquidityETH{value: amountEthLiquidity}( address(this), amountToLiquify, 0, 0, lpWallet, block.timestamp ); } } receive() external payable { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"reflectionToken","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"initialHldAdmin","type":"address"},{"internalType":"address","name":"initialHldBurner","type":"address"},{"internalType":"address","name":"initialMigrator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"changeDistributorGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialReflectionFee","type":"uint256"},{"internalType":"uint256","name":"initialReflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialDevFee","type":"uint256"},{"internalType":"uint256","name":"initialDevFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldBurnerAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"updateHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newhldBurnerAddress","type":"address"}],"name":"updateHldBurnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261c35060019081556007805461dead6001600160a01b031991821681179092556008805482169055600a8054600160a01b60ff60a01b19909116179055600f9290925560108054909216179055601d805461ffff60a81b191661010160a81b1790553480156200007357600080fd5b5060405162003ce138038062003ce18339810160408190526200009691620006c1565b604080518082019091526007808252665245574152445360c81b6020909201918252620000c691600591620005d2565b5060408051808201909152600880825267455448574152445360c01b6020909201918252620000f891600691620005d2565b5085600460008282546200010d919062000739565b909155505033600090815260026020526040812080548892906200013390849062000739565b9091555060c890506200014887600262000777565b62000154919062000754565b601f5560646200016687600362000777565b62000172919062000754565b602055610fa06200018587600562000777565b62000191919062000754565b602155601980546001600160a01b0319166001600160a01b0386169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620001e957600080fd5b505afa158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002249190620006a3565b6001600160a01b031663c9c65396601960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028157600080fd5b505afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc9190620006a3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200030457600080fd5b505af115801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f9190620006a3565b601a80546001600160a01b0319166001600160a01b0392831617905530600081815260036020908152604080832060195490951683529390528290206000199055905185918791620003919062000661565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620003ce573d6000803e3d6000fd5b50600080546001600160a01b03199081166001600160a01b03938416178255601b80543392168217815530808452600b60209081526040808620805460ff1990811660019081179092558554891688528288208054821683179055958752600c83528187208054871682179055601a8054891688528288208054881683179055945488168752818720805487168217905560078054891688528288208054881683179055600880548a1689528389208054891684179055955489168852600d8452828820805488168317905593875281872080548716821790558354881687528187208054871682179055935487168652808620805486168517905595871685529490932080549092161790556004601181905560036012819055601381905560149290925560158190556016819055600f54620005369390926200052292918391908190620005bd811b620012f017901c565b620005bd60201b620012f01790919060201c565b60178190555062000568600f546200052260145462000522601554601654620005bd60201b620012f01790919060201c565b60185550601c8054336001600160a01b03199182168117909255601d805482169092179091556009805482166001600160a01b03938416179055600a80549091169290911691909117905550620007ec915050565b6000620005cb828462000739565b9392505050565b828054620005e09062000799565b90600052602060002090601f0160209004810192826200060457600085556200064f565b82601f106200061f57805160ff19168380011785556200064f565b828001600101855582156200064f579182015b828111156200064f57825182559160200191906001019062000632565b506200065d9291506200066f565b5090565b610f908062002d5183390190565b5b808211156200065d576000815560010162000670565b80516001600160a01b03811681146200069e57600080fd5b919050565b600060208284031215620006b657600080fd5b620005cb8262000686565b60008060008060008060c08789031215620006db57600080fd5b86519550620006ed6020880162000686565b9450620006fd6040880162000686565b93506200070d6060880162000686565b92506200071d6080880162000686565b91506200072d60a0880162000686565b90509295509295509295565b600082198211156200074f576200074f620007d6565b500190565b6000826200077257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620007945762000794620007d6565b500290565b600181811c90821680620007ae57607f821691505b60208210811415620007d057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61255580620007fc6000396000f3fe6080604052600436106103855760003560e01c80637db1342c116101d1578063bb542ef011610102578063d920334e116100a0578063ede1588f1161006f578063ede1588f14610a43578063f7c7220514610a63578063f887ea4014610a83578063fabe628314610aa357600080fd5b8063d920334e146109a7578063dd62ed3e146109c7578063e5d8510814610a0d578063e66b1d1e14610a2357600080fd5b8063ca987b0e116100dc578063ca987b0e1461093a578063cb29813c14610950578063cc6badb314610970578063d4fb9a011461098657600080fd5b8063bb542ef0146108e4578063bf56b37114610904578063c45a01551461091a57600080fd5b8063a3a2e89e1161016f578063a8aa1b3111610149578063a8aa1b3114610864578063a9059cbb14610884578063b515566a146108a4578063bad3ea6a146108c457600080fd5b8063a3a2e89e14610804578063a3e6761014610824578063a457c2d71461084457600080fd5b80638b42507f116101ab5780638b42507f146107895780638ea5220f146107b95780639502c426146107d957806395d89b41146107ef57600080fd5b80637db1342c1461073d578063807c2d9c1461075d57806383ad79941461077357600080fd5b80633f4218e0116102b65780636303516c1161025457806370a082311161022357806370a08231146106bb578063774b5847146106f15780637c0ff205146107115780637d1db4a51461072757600080fd5b80636303516c1461064257806366b5d8821461067a5780636827e7641461068f578063704ce43e146106a557600080fd5b806344de2e4c1161029057806344de2e4c146105ca578063468c7ee2146105eb5780634a74bb021461060b57806360e719621461062c57600080fd5b80633f4218e01461054a5780634355855a1461057a57806343d49dda146105aa57600080fd5b806323b872dd116103235780632d48e896116102fd5780632d48e896146104ce578063313ce567146104ee578063395093511461050a5780633dab52691461052a57600080fd5b806323b872dd14610479578063273123b7146104995780632b112e49146104b957600080fd5b806316d9962b1161035f57806316d9962b1461040c57806318160ddd1461042e5780631df4ccfc146104435780631f53ac021461045957600080fd5b80630445b6671461039157806306fdde03146103ba578063095ea7b3146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a760215481565b6040519081526020015b60405180910390f35b3480156103c657600080fd5b506103cf610ac3565b6040516103b191906122c1565b3480156103e857600080fd5b506103fc6103f73660046120e6565b610b55565b60405190151581526020016103b1565b34801561041857600080fd5b5061042c610427366004612215565b610b6d565b005b34801561043a57600080fd5b506004546103a7565b34801561044f57600080fd5b506103a760175481565b34801561046557600080fd5b5061042c610474366004611ffd565b610ba5565b34801561048557600080fd5b506103fc610494366004612070565b610bf1565b3480156104a557600080fd5b5061042c6104b4366004611ffd565b610c18565b3480156104c557600080fd5b506103a7610c63565b3480156104da57600080fd5b5061042c6104e936600461222e565b610cb5565b3480156104fa57600080fd5b50604051600981526020016103b1565b34801561051657600080fd5b506103fc6105253660046120e6565b610d48565b34801561053657600080fd5b5061042c6105453660046121f9565b610d87565b34801561055657600080fd5b506103fc610565366004611ffd565b600b6020526000908152604090205460ff1681565b34801561058657600080fd5b506103fc610595366004611ffd565b600d6020526000908152604090205460ff1681565b3480156105b657600080fd5b5061042c6105c5366004611ffd565b610dd3565b3480156105d657600080fd5b50600a546103fc90600160a01b900460ff1681565b3480156105f757600080fd5b5061042c610606366004611ffd565b610e1f565b34801561061757600080fd5b50601d546103fc90600160a81b900460ff1681565b34801561063857600080fd5b506103a760015481565b34801561064e57600080fd5b50601054610662906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b34801561068657600080fd5b5061042c610e6b565b34801561069b57600080fd5b506103a760135481565b3480156106b157600080fd5b506103a760125481565b3480156106c757600080fd5b506103a76106d6366004611ffd565b6001600160a01b031660009081526002602052604090205490565b3480156106fd57600080fd5b50600954610662906001600160a01b031681565b34801561071d57600080fd5b506103a760155481565b34801561073357600080fd5b506103a7601f5481565b34801561074957600080fd5b5061042c610758366004612215565b610ea7565b34801561076957600080fd5b506103a760205481565b34801561077f57600080fd5b506103a760115481565b34801561079557600080fd5b506103fc6107a4366004611ffd565b600c6020526000908152604090205460ff1681565b3480156107c557600080fd5b50601d54610662906001600160a01b031681565b3480156107e557600080fd5b506103a760165481565b3480156107fb57600080fd5b506103cf610ed6565b34801561081057600080fd5b5061042c61081f3660046120b1565b610ee5565b34801561083057600080fd5b50601c54610662906001600160a01b031681565b34801561085057600080fd5b506103fc61085f3660046120e6565b610f3a565b34801561087057600080fd5b50601a54610662906001600160a01b031681565b34801561089057600080fd5b506103fc61089f3660046120e6565b610fd7565b3480156108b057600080fd5b5061042c6108bf366004612112565b610fe5565b3480156108d057600080fd5b50600054610662906001600160a01b031681565b3480156108f057600080fd5b5061042c6108ff366004611ffd565b61107b565b34801561091057600080fd5b506103a7600e5481565b34801561092657600080fd5b50601b54610662906001600160a01b031681565b34801561094657600080fd5b506103a760185481565b34801561095c57600080fd5b5061042c61096b36600461227e565b6110c7565b34801561097c57600080fd5b506103a760145481565b34801561099257600080fd5b50601d546103fc90600160b01b900460ff1681565b3480156109b357600080fd5b5061042c6109c2366004612215565b6111d8565b3480156109d357600080fd5b506103a76109e2366004612037565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a1957600080fd5b506103a7600f5481565b348015610a2f57600080fd5b5061042c610a3e3660046121de565b611207565b348015610a4f57600080fd5b50600a54610662906001600160a01b031681565b348015610a6f57600080fd5b5061042c610a7e366004611ffd565b61124f565b348015610a8f57600080fd5b50601954610662906001600160a01b031681565b348015610aaf57600080fd5b5061042c610abe3660046120b1565b61129b565b606060058054610ad29061246f565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe9061246f565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505050905090565b600033610b638185856112fc565b5060019392505050565b601c546001600160a01b03163314610ba05760405162461bcd60e51b8152600401610b9790612359565b60405180910390fd5b600155565b601c546001600160a01b03163314610bcf5760405162461bcd60e51b8152600401610b9790612359565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b600033610bff858285611420565b610c0a8585856114b2565b5060019150505b9392505050565b601c546001600160a01b03163314610c425760405162461bcd60e51b8152600401610b9790612359565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b6008546001600160a01b0316600090815260026020526040812054610cb0906007546001600160a01b0316600090815260026020526040902054610caa906004549061194e565b9061194e565b905090565b601c546001600160a01b03163314610cdf5760405162461bcd60e51b8152600401610b9790612359565b6000546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b505050505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610b639082908690610d829087906123ff565b6112fc565b601c546001600160a01b03163314610db15760405162461bcd60e51b8152600401610b9790612359565b601d8054921515600160a81b0260ff60a81b1990931692909217909155602155565b600a546001600160a01b03163314610dfd5760405162461bcd60e51b8152600401610b9790612316565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b03163314610e495760405162461bcd60e51b8152600401610b9790612359565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b03163314610e955760405162461bcd60e51b8152600401610b9790612359565b600a80546001600160a01b0319169055565b601c546001600160a01b03163314610ed15760405162461bcd60e51b8152600401610b9790612359565b602055565b606060068054610ad29061246f565b601c546001600160a01b03163314610f0f5760405162461bcd60e51b8152600401610b9790612359565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919083811015610fbf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b97565b610fcc82868684036112fc565b506001949350505050565b600033610fcc8185856114b2565b600a546001600160a01b0316331461100f5760405162461bcd60e51b8152600401610b9790612316565b60005b8151811015611077576001601e6000848481518110611033576110336124db565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061106f816124aa565b915050611012565b5050565b601c546001600160a01b031633146110a55760405162461bcd60e51b8152600401610b9790612359565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b031633146110f15760405162461bcd60e51b8152600401610b9790612359565b601186905560128490556013829055601485905560158390556016819055600f5461112890611122888186896112f0565b906112f0565b601781905550611151600f546111226014546111226015546016546112f090919063ffffffff16565b601855601754600c10156111965760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b97565b60116018541115610d405760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b97565b601c546001600160a01b031633146112025760405162461bcd60e51b8152600401610b9790612359565b601f55565b601c546001600160a01b031633146112315760405162461bcd60e51b8152600401610b9790612359565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b600a546001600160a01b031633146112795760405162461bcd60e51b8152600401610b9790612316565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b031633146112c55760405162461bcd60e51b8152600401610b9790612359565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610c1182846123ff565b6001600160a01b03831661135e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b97565b6001600160a01b0382166113bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b97565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526003602090815260408083209386168352929052205460001981146114ac578181101561149f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b97565b6114ac84848484036112fc565b50505050565b6001600160a01b0383166000908152601e602052604081205460ff161580156114f457506001600160a01b0383166000908152601e602052604090205460ff16155b6114fd57600080fd5b601d54600160a01b900460ff16156115215761151a84848461195a565b9050610c11565b601f548211158061154a57506001600160a01b0384166000908152600c602052604090205460ff165b61157b5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610b97565b6001600160a01b0383166000908152600c602052604090205460ff161580156115ad5750600a54600160a01b900460ff165b1561161157602080546001600160a01b038516600090815260029092526040909120546115da90846112f0565b11156116115760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610b97565b601a546001600160a01b031633148015906116365750601d54600160a01b900460ff16155b801561164b5750601d54600160a81b900460ff165b801561166857506021543060009081526002602052604090205410155b1561167557611675611a40565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600290915291909120546116c7918490611ed6565b6001600160a01b038516600090815260026020908152604080832093909355600b90529081205460ff1615801561171757506001600160a01b0384166000908152600b602052604090205460ff16155b611721578261172c565b61172c858585611f02565b6001600160a01b03851660009081526002602052604090205490915061175290826112f0565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600d909152205460ff166117f757600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156117e457600080fd5b505af19250505080156117f5575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1661188957600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561187657600080fd5b505af1925050508015611887575060015b505b600154156118f6576000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916118c99160040190815260200190565b600060405180830381600087803b1580156118e357600080fd5b505af19250505080156118f4575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161193b91815260200190565b60405180910390a3506001949350505050565b6000610c118284612458565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526002909152918220546119ab918490611ed6565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546119da90836112f0565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a2e9086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b17905530600090815260026020819052604082205460175490929182918291829111611aa357611a9c6002611a96601854611a966015548a611fc590919063ffffffff16565b90611fd1565b9350611ac6565b611ac36002611a96601754611a966012548a611fc590919063ffffffff16565b93505b6000611ad2868661194e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611b0c57611b0c6124db565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b6057600080fd5b505afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b98919061201a565b81600181518110611bab57611bab6124db565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815291169063791ac94790611bf190859060009086903090429060040161238e565b600060405180830381600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506000479050600260175411611c9357611c4d601854611a9660165484611fc590919063ffffffff16565b9550611c6a601854611a96600f5484611fc590919063ffffffff16565b9450611c8c6002611a96601854611a9660155486611fc590919063ffffffff16565b9350611cf0565b611cae601754611a9660135484611fc590919063ffffffff16565b9550611ccb601754611a96600f5484611fc590919063ffffffff16565b9450611ced6002611a96601754611a9660125486611fc590919063ffffffff16565b93505b6000611d0285610caa8881868c61194e565b90508115611daf57600960009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d876040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d5a57600080fd5b505af1158015611d6e573d6000803e3d6000fd5b5050601d546040516001600160a01b0390911693508a156108fc0292508a91506000818181858888f19350505050158015611dad573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611dfd57600080fd5b505af193505050508015611e0f575060015b508715611ebe5760195460105460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b158015611e8157600080fd5b505af1158015611e95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eba9190612250565b5050505b5050601d805460ff60a01b1916905550505050505050565b60008184841115611efa5760405162461bcd60e51b8152600401610b9791906122c1565b505050900390565b601a5460009081906001600160a01b03858116911614611f2457601754611f28565b6018545b90506000611f3b6064611a968685611fc5565b30600090815260026020526040902054909150611f5890826112f0565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa99085815260200190565b60405180910390a3611fbb848261194e565b9695505050505050565b6000610c118284612439565b6000610c118284612417565b8035611fe881612507565b919050565b80358015158114611fe857600080fd5b60006020828403121561200f57600080fd5b8135610c1181612507565b60006020828403121561202c57600080fd5b8151610c1181612507565b6000806040838503121561204a57600080fd5b823561205581612507565b9150602083013561206581612507565b809150509250929050565b60008060006060848603121561208557600080fd5b833561209081612507565b925060208401356120a081612507565b929592945050506040919091013590565b600080604083850312156120c457600080fd5b82356120cf81612507565b91506120dd60208401611fed565b90509250929050565b600080604083850312156120f957600080fd5b823561210481612507565b946020939093013593505050565b6000602080838503121561212557600080fd5b823567ffffffffffffffff8082111561213d57600080fd5b818501915085601f83011261215157600080fd5b813581811115612163576121636124f1565b8060051b604051601f19603f83011681018181108582111715612188576121886124f1565b604052828152858101935084860182860187018a10156121a757600080fd5b600095505b838610156121d1576121bd81611fdd565b8552600195909501949386019386016121ac565b5098975050505050505050565b6000602082840312156121f057600080fd5b610c1182611fed565b6000806040838503121561220c57600080fd5b61210483611fed565b60006020828403121561222757600080fd5b5035919050565b6000806040838503121561224157600080fd5b50508035926020909101359150565b60008060006060848603121561226557600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c0878903121561229757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b818110156122ee578581018301518582016040015282016122d2565b81811115612300576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123de5784516001600160a01b0316835293830193918301916001016123b9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612412576124126124c5565b500190565b60008261243457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612453576124536124c5565b500290565b60008282101561246a5761246a6124c5565b500390565b600181811c9082168061248357607f821691505b602082108114156124a457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124be576124be6124c5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461251c57600080fd5b5056fea26469706673582212206751941e751a186f43353df68862c358164abf05b0f4d26f21e11f472109ac3864736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610f90380380610f90833981016040819052610054916100b2565b600180546001600160a01b039485166001600160a01b0319918216179091556002805493851693821693909317909255600080549190931691161790556100f5565b80516001600160a01b03811681146100ad57600080fd5b919050565b6000806000606084860312156100c757600080fd5b6100d084610096565b92506100de60208501610096565b91506100ec60408501610096565b90509250925092565b610e8c806101046000396000f3fe6080604052600436106100fe5760003560e01c8063997664d711610095578063efca2eed11610064578063efca2eed1461028b578063f0fc6bca146102a1578063f1e9f1e5146102b6578063ffb2c479146102ee578063ffd49c841461030e57600080fd5b8063997664d714610200578063ce7c2ac214610216578063d0e30db01461026d578063e2d2e2191461027557600080fd5b80632d48e896116100d15780632d48e896146101845780633a98ef39146101a45780634fab0ae8146101ba5780638c21cd52146101d057600080fd5b806311ce023d1461010357806314b6ca961461012c57806326987b601461014e57806328fd319814610164575b600080fd5b34801561010f57600080fd5b50610119600b5481565b6040519081526020015b60405180910390f35b34801561013857600080fd5b5061014c610147366004610c65565b610324565b005b34801561015a57600080fd5b50610119600e5481565b34801561017057600080fd5b5061011961017f366004610c2b565b61049c565b34801561019057600080fd5b5061014c61019f366004610ce5565b610525565b3480156101b057600080fd5b5061011960075481565b3480156101c657600080fd5b50610119600d5481565b3480156101dc57600080fd5b506101f06101eb366004610c2b565b610547565b6040519015158152602001610123565b34801561020c57600080fd5b5061011960085481565b34801561022257600080fd5b50610252610231366004610c2b565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610123565b61014c61058d565b34801561028157600080fd5b50610119600a5481565b34801561029757600080fd5b5061011960095481565b3480156102ad57600080fd5b5061014c61084a565b3480156102c257600080fd5b506002546102d6906001600160a01b031681565b6040516001600160a01b039091168152602001610123565b3480156102fa57600080fd5b5061014c610309366004610cb3565b6108ae565b34801561031a57600080fd5b50610119600c5481565b6000546001600160a01b0316331461033b57600080fd5b6001600160a01b038216600090815260066020526040902054156103625761036282610997565b60008111801561038857506001600160a01b038216600090815260066020526040902054155b156103ee57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610421565b8015801561041357506001600160a01b03821660009081526006602052604090205415155b156104215761042182610ac2565b6001600160a01b03821660009081526006602052604090205460075461045291839161044c91610bd7565b90610bea565b6007556001600160a01b038216600090815260066020526040902081905561047981610bf6565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b0381166000908152600660205260408120546104c157506000919050565b6001600160a01b0382166000908152600660205260408120546104e390610bf6565b6001600160a01b038416600090815260066020526040902060010154909150808211610513575060009392505050565b61051d8282610bd7565b949350505050565b6000546001600160a01b0316331461053c57600080fd5b600c91909155600d55565b600c546001600160a01b038216600090815260056020526040812054909142916105719190610d71565b1080156105875750600d546105858361049c565b115b92915050565b6000546001600160a01b031633146105a457600080fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156105e857600080fd5b505afa1580156105fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106209190610ccc565b60408051600280825260608201835292935060009290916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561068a57600080fd5b505afa15801561069e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c29190610c48565b816000815181106106d5576106d5610e28565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061070657610706610e28565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de9590349061074c90600090869030904290600401610d07565b6000604051808303818588803b15801561076557600080fd5b505af1158015610779573d6000803e3d6000fd5b50506002546040516370a0823160e01b81523060048201526000945061080893508692506001600160a01b03909116906370a082319060240160206040518083038186803b1580156107ca57600080fd5b505afa1580156107de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108029190610ccc565b90610bd7565b6008549091506108189082610bea565b600855600754600b5461084291610839916108339085610c13565b90610c1f565b600a5490610bea565b600a55505050565b61085333610547565b6108a35760405162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015260640160405180910390fd5b6108ac33610997565b565b600354806108ba575050565b60008060005a90505b84821080156108d157508383105b156109905783600e54106108e5576000600e555b6109176003600e54815481106108fd576108fd610e28565b6000918252602090912001546001600160a01b0316610547565b1561094e5761094e6003600e548154811061093457610934610e28565b6000918252602090912001546001600160a01b0316610997565b61096361095c5a8390610bd7565b8390610bea565b91505a600e8054919250600061097883610de1565b9190505550828061098890610de1565b9350506108c3565b5050505050565b6001600160a01b0381166000908152600660205260409020546109b75750565b60006109c28261049c565b90508015610abe576009546109d79082610bea565b60095560025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190610c91565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610a949082610bea565b6001600160a01b038316600090815260066020526040902060028101919091555461047990610bf6565b5050565b60038054610ad290600190610dca565b81548110610ae257610ae2610e28565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b2057610b20610e28565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610b6c90600190610dca565b81548110610b7c57610b7c610e28565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610bb257610bb2610e12565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610be38284610dca565b9392505050565b6000610be38284610d71565b6000610587600b54610833600a5485610c1390919063ffffffff16565b6000610be38284610dab565b6000610be38284610d89565b600060208284031215610c3d57600080fd5b8135610be381610e3e565b600060208284031215610c5a57600080fd5b8151610be381610e3e565b60008060408385031215610c7857600080fd5b8235610c8381610e3e565b946020939093013593505050565b600060208284031215610ca357600080fd5b81518015158114610be357600080fd5b600060208284031215610cc557600080fd5b5035919050565b600060208284031215610cde57600080fd5b5051919050565b60008060408385031215610cf857600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610d515784516001600160a01b031683529383019391830191600101610d2c565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610d8457610d84610dfc565b500190565b600082610da657634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610dc557610dc5610dfc565b500290565b600082821015610ddc57610ddc610dfc565b500390565b6000600019821415610df557610df5610dfc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610e5357600080fd5b5056fea264697066735822122090d6e1ea0c359f59421f5797840800157f3e4e0494ab066b6140b74e0c9cb2dd64736f6c634300080700330000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000f003565caf01fc41e452282878a033b832831cd5000000000000000000000000cf98b54da72495b9c03659f9c26fab0691e9b9250000000000000000000000009ec2511e18a547b95198bb7703ff00563630a8ac
Deployed Bytecode
0x6080604052600436106103855760003560e01c80637db1342c116101d1578063bb542ef011610102578063d920334e116100a0578063ede1588f1161006f578063ede1588f14610a43578063f7c7220514610a63578063f887ea4014610a83578063fabe628314610aa357600080fd5b8063d920334e146109a7578063dd62ed3e146109c7578063e5d8510814610a0d578063e66b1d1e14610a2357600080fd5b8063ca987b0e116100dc578063ca987b0e1461093a578063cb29813c14610950578063cc6badb314610970578063d4fb9a011461098657600080fd5b8063bb542ef0146108e4578063bf56b37114610904578063c45a01551461091a57600080fd5b8063a3a2e89e1161016f578063a8aa1b3111610149578063a8aa1b3114610864578063a9059cbb14610884578063b515566a146108a4578063bad3ea6a146108c457600080fd5b8063a3a2e89e14610804578063a3e6761014610824578063a457c2d71461084457600080fd5b80638b42507f116101ab5780638b42507f146107895780638ea5220f146107b95780639502c426146107d957806395d89b41146107ef57600080fd5b80637db1342c1461073d578063807c2d9c1461075d57806383ad79941461077357600080fd5b80633f4218e0116102b65780636303516c1161025457806370a082311161022357806370a08231146106bb578063774b5847146106f15780637c0ff205146107115780637d1db4a51461072757600080fd5b80636303516c1461064257806366b5d8821461067a5780636827e7641461068f578063704ce43e146106a557600080fd5b806344de2e4c1161029057806344de2e4c146105ca578063468c7ee2146105eb5780634a74bb021461060b57806360e719621461062c57600080fd5b80633f4218e01461054a5780634355855a1461057a57806343d49dda146105aa57600080fd5b806323b872dd116103235780632d48e896116102fd5780632d48e896146104ce578063313ce567146104ee578063395093511461050a5780633dab52691461052a57600080fd5b806323b872dd14610479578063273123b7146104995780632b112e49146104b957600080fd5b806316d9962b1161035f57806316d9962b1461040c57806318160ddd1461042e5780631df4ccfc146104435780631f53ac021461045957600080fd5b80630445b6671461039157806306fdde03146103ba578063095ea7b3146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a760215481565b6040519081526020015b60405180910390f35b3480156103c657600080fd5b506103cf610ac3565b6040516103b191906122c1565b3480156103e857600080fd5b506103fc6103f73660046120e6565b610b55565b60405190151581526020016103b1565b34801561041857600080fd5b5061042c610427366004612215565b610b6d565b005b34801561043a57600080fd5b506004546103a7565b34801561044f57600080fd5b506103a760175481565b34801561046557600080fd5b5061042c610474366004611ffd565b610ba5565b34801561048557600080fd5b506103fc610494366004612070565b610bf1565b3480156104a557600080fd5b5061042c6104b4366004611ffd565b610c18565b3480156104c557600080fd5b506103a7610c63565b3480156104da57600080fd5b5061042c6104e936600461222e565b610cb5565b3480156104fa57600080fd5b50604051600981526020016103b1565b34801561051657600080fd5b506103fc6105253660046120e6565b610d48565b34801561053657600080fd5b5061042c6105453660046121f9565b610d87565b34801561055657600080fd5b506103fc610565366004611ffd565b600b6020526000908152604090205460ff1681565b34801561058657600080fd5b506103fc610595366004611ffd565b600d6020526000908152604090205460ff1681565b3480156105b657600080fd5b5061042c6105c5366004611ffd565b610dd3565b3480156105d657600080fd5b50600a546103fc90600160a01b900460ff1681565b3480156105f757600080fd5b5061042c610606366004611ffd565b610e1f565b34801561061757600080fd5b50601d546103fc90600160a81b900460ff1681565b34801561063857600080fd5b506103a760015481565b34801561064e57600080fd5b50601054610662906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b34801561068657600080fd5b5061042c610e6b565b34801561069b57600080fd5b506103a760135481565b3480156106b157600080fd5b506103a760125481565b3480156106c757600080fd5b506103a76106d6366004611ffd565b6001600160a01b031660009081526002602052604090205490565b3480156106fd57600080fd5b50600954610662906001600160a01b031681565b34801561071d57600080fd5b506103a760155481565b34801561073357600080fd5b506103a7601f5481565b34801561074957600080fd5b5061042c610758366004612215565b610ea7565b34801561076957600080fd5b506103a760205481565b34801561077f57600080fd5b506103a760115481565b34801561079557600080fd5b506103fc6107a4366004611ffd565b600c6020526000908152604090205460ff1681565b3480156107c557600080fd5b50601d54610662906001600160a01b031681565b3480156107e557600080fd5b506103a760165481565b3480156107fb57600080fd5b506103cf610ed6565b34801561081057600080fd5b5061042c61081f3660046120b1565b610ee5565b34801561083057600080fd5b50601c54610662906001600160a01b031681565b34801561085057600080fd5b506103fc61085f3660046120e6565b610f3a565b34801561087057600080fd5b50601a54610662906001600160a01b031681565b34801561089057600080fd5b506103fc61089f3660046120e6565b610fd7565b3480156108b057600080fd5b5061042c6108bf366004612112565b610fe5565b3480156108d057600080fd5b50600054610662906001600160a01b031681565b3480156108f057600080fd5b5061042c6108ff366004611ffd565b61107b565b34801561091057600080fd5b506103a7600e5481565b34801561092657600080fd5b50601b54610662906001600160a01b031681565b34801561094657600080fd5b506103a760185481565b34801561095c57600080fd5b5061042c61096b36600461227e565b6110c7565b34801561097c57600080fd5b506103a760145481565b34801561099257600080fd5b50601d546103fc90600160b01b900460ff1681565b3480156109b357600080fd5b5061042c6109c2366004612215565b6111d8565b3480156109d357600080fd5b506103a76109e2366004612037565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a1957600080fd5b506103a7600f5481565b348015610a2f57600080fd5b5061042c610a3e3660046121de565b611207565b348015610a4f57600080fd5b50600a54610662906001600160a01b031681565b348015610a6f57600080fd5b5061042c610a7e366004611ffd565b61124f565b348015610a8f57600080fd5b50601954610662906001600160a01b031681565b348015610aaf57600080fd5b5061042c610abe3660046120b1565b61129b565b606060058054610ad29061246f565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe9061246f565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505050905090565b600033610b638185856112fc565b5060019392505050565b601c546001600160a01b03163314610ba05760405162461bcd60e51b8152600401610b9790612359565b60405180910390fd5b600155565b601c546001600160a01b03163314610bcf5760405162461bcd60e51b8152600401610b9790612359565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b600033610bff858285611420565b610c0a8585856114b2565b5060019150505b9392505050565b601c546001600160a01b03163314610c425760405162461bcd60e51b8152600401610b9790612359565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b6008546001600160a01b0316600090815260026020526040812054610cb0906007546001600160a01b0316600090815260026020526040902054610caa906004549061194e565b9061194e565b905090565b601c546001600160a01b03163314610cdf5760405162461bcd60e51b8152600401610b9790612359565b6000546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b505050505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610b639082908690610d829087906123ff565b6112fc565b601c546001600160a01b03163314610db15760405162461bcd60e51b8152600401610b9790612359565b601d8054921515600160a81b0260ff60a81b1990931692909217909155602155565b600a546001600160a01b03163314610dfd5760405162461bcd60e51b8152600401610b9790612316565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b03163314610e495760405162461bcd60e51b8152600401610b9790612359565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b03163314610e955760405162461bcd60e51b8152600401610b9790612359565b600a80546001600160a01b0319169055565b601c546001600160a01b03163314610ed15760405162461bcd60e51b8152600401610b9790612359565b602055565b606060068054610ad29061246f565b601c546001600160a01b03163314610f0f5760405162461bcd60e51b8152600401610b9790612359565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919083811015610fbf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b97565b610fcc82868684036112fc565b506001949350505050565b600033610fcc8185856114b2565b600a546001600160a01b0316331461100f5760405162461bcd60e51b8152600401610b9790612316565b60005b8151811015611077576001601e6000848481518110611033576110336124db565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061106f816124aa565b915050611012565b5050565b601c546001600160a01b031633146110a55760405162461bcd60e51b8152600401610b9790612359565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b031633146110f15760405162461bcd60e51b8152600401610b9790612359565b601186905560128490556013829055601485905560158390556016819055600f5461112890611122888186896112f0565b906112f0565b601781905550611151600f546111226014546111226015546016546112f090919063ffffffff16565b601855601754600c10156111965760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b97565b60116018541115610d405760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b97565b601c546001600160a01b031633146112025760405162461bcd60e51b8152600401610b9790612359565b601f55565b601c546001600160a01b031633146112315760405162461bcd60e51b8152600401610b9790612359565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b600a546001600160a01b031633146112795760405162461bcd60e51b8152600401610b9790612316565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b601c546001600160a01b031633146112c55760405162461bcd60e51b8152600401610b9790612359565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610c1182846123ff565b6001600160a01b03831661135e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b97565b6001600160a01b0382166113bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b97565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526003602090815260408083209386168352929052205460001981146114ac578181101561149f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b97565b6114ac84848484036112fc565b50505050565b6001600160a01b0383166000908152601e602052604081205460ff161580156114f457506001600160a01b0383166000908152601e602052604090205460ff16155b6114fd57600080fd5b601d54600160a01b900460ff16156115215761151a84848461195a565b9050610c11565b601f548211158061154a57506001600160a01b0384166000908152600c602052604090205460ff165b61157b5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610b97565b6001600160a01b0383166000908152600c602052604090205460ff161580156115ad5750600a54600160a01b900460ff165b1561161157602080546001600160a01b038516600090815260029092526040909120546115da90846112f0565b11156116115760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610b97565b601a546001600160a01b031633148015906116365750601d54600160a01b900460ff16155b801561164b5750601d54600160a81b900460ff165b801561166857506021543060009081526002602052604090205410155b1561167557611675611a40565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600290915291909120546116c7918490611ed6565b6001600160a01b038516600090815260026020908152604080832093909355600b90529081205460ff1615801561171757506001600160a01b0384166000908152600b602052604090205460ff16155b611721578261172c565b61172c858585611f02565b6001600160a01b03851660009081526002602052604090205490915061175290826112f0565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600d909152205460ff166117f757600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156117e457600080fd5b505af19250505080156117f5575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1661188957600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561187657600080fd5b505af1925050508015611887575060015b505b600154156118f6576000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916118c99160040190815260200190565b600060405180830381600087803b1580156118e357600080fd5b505af19250505080156118f4575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161193b91815260200190565b60405180910390a3506001949350505050565b6000610c118284612458565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526002909152918220546119ab918490611ed6565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546119da90836112f0565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a2e9086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b17905530600090815260026020819052604082205460175490929182918291829111611aa357611a9c6002611a96601854611a966015548a611fc590919063ffffffff16565b90611fd1565b9350611ac6565b611ac36002611a96601754611a966012548a611fc590919063ffffffff16565b93505b6000611ad2868661194e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611b0c57611b0c6124db565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b6057600080fd5b505afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b98919061201a565b81600181518110611bab57611bab6124db565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815291169063791ac94790611bf190859060009086903090429060040161238e565b600060405180830381600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506000479050600260175411611c9357611c4d601854611a9660165484611fc590919063ffffffff16565b9550611c6a601854611a96600f5484611fc590919063ffffffff16565b9450611c8c6002611a96601854611a9660155486611fc590919063ffffffff16565b9350611cf0565b611cae601754611a9660135484611fc590919063ffffffff16565b9550611ccb601754611a96600f5484611fc590919063ffffffff16565b9450611ced6002611a96601754611a9660125486611fc590919063ffffffff16565b93505b6000611d0285610caa8881868c61194e565b90508115611daf57600960009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d876040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d5a57600080fd5b505af1158015611d6e573d6000803e3d6000fd5b5050601d546040516001600160a01b0390911693508a156108fc0292508a91506000818181858888f19350505050158015611dad573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611dfd57600080fd5b505af193505050508015611e0f575060015b508715611ebe5760195460105460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b158015611e8157600080fd5b505af1158015611e95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eba9190612250565b5050505b5050601d805460ff60a01b1916905550505050505050565b60008184841115611efa5760405162461bcd60e51b8152600401610b9791906122c1565b505050900390565b601a5460009081906001600160a01b03858116911614611f2457601754611f28565b6018545b90506000611f3b6064611a968685611fc5565b30600090815260026020526040902054909150611f5890826112f0565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa99085815260200190565b60405180910390a3611fbb848261194e565b9695505050505050565b6000610c118284612439565b6000610c118284612417565b8035611fe881612507565b919050565b80358015158114611fe857600080fd5b60006020828403121561200f57600080fd5b8135610c1181612507565b60006020828403121561202c57600080fd5b8151610c1181612507565b6000806040838503121561204a57600080fd5b823561205581612507565b9150602083013561206581612507565b809150509250929050565b60008060006060848603121561208557600080fd5b833561209081612507565b925060208401356120a081612507565b929592945050506040919091013590565b600080604083850312156120c457600080fd5b82356120cf81612507565b91506120dd60208401611fed565b90509250929050565b600080604083850312156120f957600080fd5b823561210481612507565b946020939093013593505050565b6000602080838503121561212557600080fd5b823567ffffffffffffffff8082111561213d57600080fd5b818501915085601f83011261215157600080fd5b813581811115612163576121636124f1565b8060051b604051601f19603f83011681018181108582111715612188576121886124f1565b604052828152858101935084860182860187018a10156121a757600080fd5b600095505b838610156121d1576121bd81611fdd565b8552600195909501949386019386016121ac565b5098975050505050505050565b6000602082840312156121f057600080fd5b610c1182611fed565b6000806040838503121561220c57600080fd5b61210483611fed565b60006020828403121561222757600080fd5b5035919050565b6000806040838503121561224157600080fd5b50508035926020909101359150565b60008060006060848603121561226557600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c0878903121561229757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b818110156122ee578581018301518582016040015282016122d2565b81811115612300576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123de5784516001600160a01b0316835293830193918301916001016123b9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612412576124126124c5565b500190565b60008261243457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612453576124536124c5565b500290565b60008282101561246a5761246a6124c5565b500390565b600181811c9082168061248357607f821691505b602082108114156124a457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124be576124be6124c5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461251c57600080fd5b5056fea26469706673582212206751941e751a186f43353df68862c358164abf05b0f4d26f21e11f472109ac3864736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000f003565caf01fc41e452282878a033b832831cd5000000000000000000000000cf98b54da72495b9c03659f9c26fab0691e9b9250000000000000000000000009ec2511e18a547b95198bb7703ff00563630a8ac
-----Decoded View---------------
Arg [0] : initialSupply (uint256): 1000000000000000000
Arg [1] : reflectionToken (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [3] : initialHldAdmin (address): 0xf003565caf01fc41E452282878a033B832831cd5
Arg [4] : initialHldBurner (address): 0xCF98B54Da72495B9c03659F9c26fAB0691E9B925
Arg [5] : initialMigrator (address): 0x9EC2511E18A547b95198Bb7703FF00563630A8aC
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [3] : 000000000000000000000000f003565caf01fc41e452282878a033b832831cd5
Arg [4] : 000000000000000000000000cf98b54da72495b9c03659f9c26fab0691e9b925
Arg [5] : 0000000000000000000000009ec2511e18a547b95198bb7703ff00563630a8ac
Deployed Bytecode Sourcemap
21480:18597:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23088:28;;;;;;;;;;;;;;;;;;;11507:25:1;;;11495:2;11480:18;23088:28:0;;;;;;;;28670:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;31020:201::-;;;;;;;;;;-1:-1:-1;31020:201:0;;;;;:::i;:::-;;:::i;:::-;;;6920:14:1;;6913:22;6895:41;;6883:2;6868:18;31020:201:0;6755:187:1;28314:125:0;;;;;;;;;;-1:-1:-1;28314:125:0;;;;;:::i;:::-;;:::i;:::-;;29789:108;;;;;;;;;;-1:-1:-1;29877:12:0;;29789:108;;22617:23;;;;;;;;;;;;;;;;27416:123;;;;;;;;;;-1:-1:-1;27416:123:0;;;;;:::i;:::-;;:::i;31811:295::-;;;;;;;;;;-1:-1:-1;31811:295:0;;;;;:::i;:::-;;:::i;28216:90::-;;;;;;;;;;-1:-1:-1;28216:90:0;;;;;:::i;:::-;;:::i;28458:142::-;;;;;;;;;;;;;:::i;28002:206::-;;;;;;;;;;-1:-1:-1;28002:206:0;;;;;:::i;:::-;;:::i;29632:92::-;;;;;;;;;;-1:-1:-1;29632:92:0;;29715:1;12923:36:1;;12911:2;12896:18;29632:92:0;12781:184:1;32515:240:0;;;;;;;;;;-1:-1:-1;32515:240:0;;;;;:::i;:::-;;:::i;27795:199::-;;;;;;;;;;-1:-1:-1;27795:199:0;;;;;:::i;:::-;;:::i;22148:44::-;;;;;;;;;;-1:-1:-1;22148:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22254:49;;;;;;;;;;-1:-1:-1;22254:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25412:113;;;;;;;;;;-1:-1:-1;25412:113:0;;;;;:::i;:::-;;:::i;22106:33::-;;;;;;;;;;-1:-1:-1;22106:33:0;;;;-1:-1:-1;;;22106:33:0;;;;;;27547:102;;;;;;;;;;-1:-1:-1;27547:102:0;;;;;:::i;:::-;;:::i;22883:40::-;;;;;;;;;;-1:-1:-1;22883:40:0;;;;-1:-1:-1;;;22883:40:0;;;;;;21629:37;;;;;;;;;;;;;;;;22376:30;;;;;;;;;;-1:-1:-1;22376:30:0;;;;-1:-1:-1;;;;;22376:30:0;;;;;;-1:-1:-1;;;;;5596:32:1;;;5578:51;;5566:2;5551:18;22376:30:0;5432:203:1;26686:91:0;;;;;;;;;;;;;:::i;22477:21::-;;;;;;;;;;;;;;;;22450:20;;;;;;;;;;;;;;;;29960:127;;;;;;;;;;-1:-1:-1;29960:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;30061:18:0;30034:7;30061:18;;;:9;:18;;;;;;;29960:127;22028:39;;;;;;;;;;-1:-1:-1;22028:39:0;;;;-1:-1:-1;;;;;22028:39:0;;;22548:26;;;;;;;;;;;;;;;;23022:27;;;;;;;;;;;;;;;;26895:105;;;;;;;;;;-1:-1:-1;26895:105:0;;;;;:::i;:::-;;:::i;23056:25::-;;;;;;;;;;;;;;;;22415:28;;;;;;;;;;;;;;;;22199:48;;;;;;;;;;-1:-1:-1;22199:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22814:32;;;;;;;;;;-1:-1:-1;22814:32:0;;;;-1:-1:-1;;;;;22814:32:0;;;22581:27;;;;;;;;;;;;;;;;28889:104;;;;;;;;;;;;;:::i;27140:122::-;;;;;;;;;;-1:-1:-1;27140:122:0;;;;;:::i;:::-;;:::i;22782:25::-;;;;;;;;;;-1:-1:-1;22782:25:0;;;;-1:-1:-1;;;;;22782:25:0;;;33258:438;;;;;;;;;;-1:-1:-1;33258:438:0;;;;;:::i;:::-;;:::i;22727:19::-;;;;;;;;;;-1:-1:-1;22727:19:0;;;;-1:-1:-1;;;;;22727:19:0;;;30293:193;;;;;;;;;;-1:-1:-1;30293:193:0;;;;;:::i;:::-;;:::i;25709:169::-;;;;;;;;;;-1:-1:-1;25709:169:0;;;;;:::i;:::-;;:::i;21575:47::-;;;;;;;;;;-1:-1:-1;21575:47:0;;;;-1:-1:-1;;;;;21575:47:0;;;27661:121;;;;;;;;;;-1:-1:-1;27661:121:0;;;;;:::i;:::-;;:::i;22312:25::-;;;;;;;;;;;;;;;;22753:22;;;;;;;;;;-1:-1:-1;22753:22:0;;;;-1:-1:-1;;;;;22753:22:0;;;22647:32;;;;;;;;;;;;;;;;25911:766;;;;;;;;;;-1:-1:-1;25911:766:0;;;;;:::i;:::-;;:::i;22507:34::-;;;;;;;;;;;;;;;;22930:32;;;;;;;;;;-1:-1:-1;22930:32:0;;;;-1:-1:-1;;;22930:32:0;;;;;;26785:102;;;;;;;;;;-1:-1:-1;26785:102:0;;;;;:::i;:::-;;:::i;30549:151::-;;;;;;;;;;-1:-1:-1;30549:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;30665:18:0;;;30638:7;30665:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;30549:151;22344:25;;;;;;;;;;;;;;;;27008:120;;;;;;;;;;-1:-1:-1;27008:120:0;;;;;:::i;:::-;;:::i;22074:23::-;;;;;;;;;;-1:-1:-1;22074:23:0;;;;-1:-1:-1;;;;;22074:23:0;;;25533:160;;;;;;;;;;-1:-1:-1;25533:160:0;;;;;:::i;:::-;;:::i;22688:32::-;;;;;;;;;;-1:-1:-1;22688:32:0;;;;-1:-1:-1;;;;;22688:32:0;;;27270:136;;;;;;;;;;-1:-1:-1;27270:136:0;;;;;:::i;:::-;;:::i;28670:100::-;28724:13;28757:5;28750:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28670:100;:::o;31020:201::-;31103:4;4419:10;31159:32;4419:10;31175:7;31184:6;31159:8;:32::i;:::-;-1:-1:-1;31209:4:0;;31020:201;-1:-1:-1;;;31020:201:0:o;28314:125::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;;;;;;;;;28399:14:::1;:32:::0;28314:125::o;27416:123::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;27498:9:::1;:33:::0;;-1:-1:-1;;;;;;27498:33:0::1;-1:-1:-1::0;;;;;27498:33:0;;;::::1;::::0;;;::::1;::::0;;27416:123::o;31811:295::-;31942:4;4419:10;32000:38;32016:4;4419:10;32031:6;32000:15;:38::i;:::-;32049:27;32059:4;32065:2;32069:6;32049:9;:27::i;:::-;;32094:4;32087:11;;;31811:295;;;;;;:::o;28216:90::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28278:12:0::1;28293:5;28278:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;28278:20:0::1;::::0;;28216:90::o;28458:142::-;28586:4;;-1:-1:-1;;;;;28586:4:0;28511:7;30061:18;;;:9;:18;;;;;;28538:54;;28565:4;;-1:-1:-1;;;;;28565:4:0;30034:7;30061:18;;;:9;:18;;;;;;28538:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;28531:61;;28458:142;:::o;28002:206::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;28115:19:::1;::::0;:77:::1;::::0;-1:-1:-1;;;28115:77:0;;::::1;::::0;::::1;12702:25:1::0;;;12743:18;;;12736:34;;;-1:-1:-1;;;;;28115:19:0;;::::1;::::0;:43:::1;::::0;12675:18:1;;28115:77:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28002:206:::0;;:::o;32515:240::-;4419:10;32603:4;32684:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;32684:27:0;;;;;;;;;;32603:4;;4419:10;32659:66;;4419:10;;32684:27;;:40;;32714:10;;32684:40;:::i;:::-;32659:8;:66::i;27795:199::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;27904:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;27904:39:0::1;-1:-1:-1::0;;;;27904:39:0;;::::1;::::0;;;::::1;::::0;;;27954:13:::1;:32:::0;27795:199::o;25412:113::-;25163:8;;-1:-1:-1;;;;;25163:8:0;4419:10;25163:24;25155:72;;;;-1:-1:-1;;;25155:72:0;;;;;;;:::i;:::-;25498:8:::1;:19:::0;;-1:-1:-1;;;;;;25498:19:0::1;-1:-1:-1::0;;;;;25498:19:0;;;::::1;::::0;;;::::1;::::0;;25412:113::o;27547:102::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;27619:8:::1;:22:::0;;-1:-1:-1;;;;;;27619:22:0::1;-1:-1:-1::0;;;;;27619:22:0;;;::::1;::::0;;;::::1;::::0;;27547:102::o;26686:91::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;26748:8:::1;:21:::0;;-1:-1:-1;;;;;;26748:21:0::1;::::0;;26686:91::o;26895:105::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;26970:10:::1;:22:::0;26895:105::o;28889:104::-;28945:13;28978:7;28971:14;;;;;:::i;27140:122::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27226:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27226:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27140:122::o;33258:438::-;4419:10;33351:4;33434:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;33434:27:0;;;;;;;;;;33351:4;;4419:10;33480:35;;;;33472:85;;;;-1:-1:-1;;;33472:85:0;;11157:2:1;33472:85:0;;;11139:21:1;11196:2;11176:18;;;11169:30;11235:34;11215:18;;;11208:62;-1:-1:-1;;;11286:18:1;;;11279:35;11331:19;;33472:85:0;10955:401:1;33472:85:0;33593:60;33602:5;33609:7;33637:15;33618:16;:34;33593:8;:60::i;:::-;-1:-1:-1;33684:4:0;;33258:438;-1:-1:-1;;;;33258:438:0:o;30293:193::-;30372:4;4419:10;30428:28;4419:10;30445:2;30449:6;30428:9;:28::i;25709:169::-;25163:8;;-1:-1:-1;;;;;25163:8:0;4419:10;25163:24;25155:72;;;;-1:-1:-1;;;25155:72:0;;;;;;;:::i;:::-;25788:6:::1;25783:88;25804:5;:12;25800:1;:16;25783:88;;;25855:4;25838;:14;25843:5;25849:1;25843:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25838:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25838:14:0;:21;;-1:-1:-1;;25838:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25818:3;::::1;::::0;::::1;:::i;:::-;;;;25783:88;;;;25709:169:::0;:::o;27661:121::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;27747:10:::1;:27:::0;;-1:-1:-1;;;;;;27747:27:0::1;-1:-1:-1::0;;;;;27747:27:0;;;::::1;::::0;;;::::1;::::0;;27661:121::o;25911:766::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;26140:13:::1;:36:::0;;;26187:5:::1;:20:::0;;;26218:6:::1;:22:::0;;;26253:19:::1;:48:::0;;;26312:11:::1;:32:::0;;;26355:12:::1;:34:::0;;;26454:6:::1;::::0;26413:48:::1;::::0;:36:::1;26156:20:::0;26413:36;26227:13;26195:12;26413:10:::1;:17::i;:::-;:21:::0;::::1;:36::i;:48::-;26402:8;:59;;;;26492:66;26551:6;;26492:54;26526:19;;26492:29;26509:11;;26492:12;;:16;;:29;;;;:::i;:66::-;26472:17;:86:::0;26579:8:::1;::::0;26591:2:::1;-1:-1:-1::0;26579:14:0::1;26571:39;;;::::0;-1:-1:-1;;;26571:39:0;;10081:2:1;26571:39:0::1;::::0;::::1;10063:21:1::0;10120:2;10100:18;;;10093:30;-1:-1:-1;;;10139:18:1;;;10132:42;10191:18;;26571:39:0::1;9879:336:1::0;26571:39:0::1;26650:2;26629:17;;:23;;26621:48;;;::::0;-1:-1:-1;;;26621:48:0;;10081:2:1;26621:48:0::1;::::0;::::1;10063:21:1::0;10120:2;10100:18;;;10093:30;-1:-1:-1;;;10139:18:1;;;10132:42;10191:18;;26621:48:0::1;9879:336:1::0;26785:102:0;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;26856:12:::1;:23:::0;26785:102::o;27008:120::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;27095:14:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;27095:25:0::1;-1:-1:-1::0;;;;27095:25:0;;::::1;::::0;;;::::1;::::0;;27008:120::o;25533:160::-;25163:8;;-1:-1:-1;;;;;25163:8:0;4419:10;25163:24;25155:72;;;;-1:-1:-1;;;25155:72:0;;;;;;;:::i;:::-;25638:16:::1;:47:::0;;-1:-1:-1;;;;;;25638:47:0::1;-1:-1:-1::0;;;;;25638:47:0;;;::::1;::::0;;;::::1;::::0;;25533:160::o;27270:136::-;25295:10;;-1:-1:-1;;;;;25295:10:0;4419;25295:26;25287:71;;;;-1:-1:-1;;;25287:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27366:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;27366:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27270:136::o;7415:98::-;7473:7;7500:5;7504:1;7500;:5;:::i;36216:380::-;-1:-1:-1;;;;;36352:19:0;;36344:68;;;;-1:-1:-1;;;36344:68:0;;10752:2:1;36344:68:0;;;10734:21:1;10791:2;10771:18;;;10764:30;10830:34;10810:18;;;10803:62;-1:-1:-1;;;10881:18:1;;;10874:34;10925:19;;36344:68:0;10550:400:1;36344:68:0;-1:-1:-1;;;;;36431:21:0;;36423:68;;;;-1:-1:-1;;;36423:68:0;;8221:2:1;36423:68:0;;;8203:21:1;8260:2;8240:18;;;8233:30;8299:34;8279:18;;;8272:62;-1:-1:-1;;;8350:18:1;;;8343:32;8392:19;;36423:68:0;8019:398:1;36423:68:0;-1:-1:-1;;;;;36504:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36556:32;;11507:25:1;;;36556:32:0;;11480:18:1;36556:32:0;;;;;;;36216:380;;;:::o;36883:453::-;-1:-1:-1;;;;;30665:18:0;;;37018:24;30665:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;37085:37:0;;37081:248;;37167:6;37147:16;:26;;37139:68;;;;-1:-1:-1;;;37139:68:0;;8624:2:1;37139:68:0;;;8606:21:1;8663:2;8643:18;;;8636:30;8702:31;8682:18;;;8675:59;8751:18;;37139:68:0;8422:353:1;37139:68:0;37251:51;37260:5;37267:7;37295:6;37276:16;:25;37251:8;:51::i;:::-;37007:329;36883:453;;;:::o;33706:1441::-;-1:-1:-1;;;;;33830:12:0;;33794:4;33830:12;;;:4;:12;;;;;;;;33829:13;:33;;;;-1:-1:-1;;;;;;33847:15:0;;;;;;:4;:15;;;;;;;;33846:16;33829:33;33821:42;;;;;;33879:16;;-1:-1:-1;;;33879:16:0;;;;33876:73;;;33905:41;33920:6;33928:9;33939:6;33905:14;:41::i;:::-;33898:48;;;;33876:73;33979:12;;33969:6;:22;;:49;;;-1:-1:-1;;;;;;33995:23:0;;;;;;:15;:23;;;;;;;;33969:49;33961:64;;;;-1:-1:-1;;;33961:64:0;;10422:2:1;33961:64:0;;;10404:21:1;10461:1;10441:18;;;10434:29;-1:-1:-1;;;10479:18:1;;;10472:32;10521:18;;33961:64:0;10220:325:1;33961:64:0;-1:-1:-1;;;;;34042:26:0;;;;;;:15;:26;;;;;;;;34041:27;:45;;;;-1:-1:-1;34072:14:0;;-1:-1:-1;;;34072:14:0;;;;34041:45;34038:151;;;34156:10;;;-1:-1:-1;;;;;34120:20:0;;;;;;:9;:20;;;;;;;;:32;;34145:6;34120:24;:32::i;:::-;:46;;34112:65;;;;-1:-1:-1;;;34112:65:0;;8982:2:1;34112:65:0;;;8964:21:1;9021:1;9001:18;;;8994:29;-1:-1:-1;;;9039:18:1;;;9032:36;9085:18;;34112:65:0;8780:329:1;34112:65:0;34218:4;;-1:-1:-1;;;;;34218:4:0;34204:10;:18;;;;:39;;-1:-1:-1;34227:16:0;;-1:-1:-1;;;34227:16:0;;;;34226:17;34204:39;:64;;;;-1:-1:-1;34247:21:0;;-1:-1:-1;;;34247:21:0;;;;34204:64;:109;;;;-1:-1:-1;34300:13:0;;34290:4;34272:24;;;;:9;:24;;;;;;:41;;34204:109;34201:128;;;34316:10;:8;:10::i;:::-;34361:53;;;;;;;;;;;-1:-1:-1;;;34361:53:0;;;;;;;;-1:-1:-1;;;;;34361:17:0;;-1:-1:-1;34361:17:0;;;:9;:17;;;;;;;;:53;;34383:6;;34361:21;:53::i;:::-;-1:-1:-1;;;;;34341:17:0;;;;;;:9;:17;;;;;;;;:73;;;;34458:11;:19;;;;;;;;34457:20;:47;;;;-1:-1:-1;;;;;;34482:22:0;;;;;;:11;:22;;;;;;;;34481:23;34457:47;:93;;34544:6;34457:93;;;34507:34;34515:6;34523:9;34534:6;34507:7;:34::i;:::-;-1:-1:-1;;;;;34584:20:0;;;;;;:9;:20;;;;;;34435:115;;-1:-1:-1;34584:37:0;;34435:115;34584:24;:37::i;:::-;-1:-1:-1;;;;;34561:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;34667:24;;;;;:16;:24;;;;;;;34663:127;;34712:19;;;-1:-1:-1;;;;;34749:17:0;;;;;;:9;:17;;;;;;;;34712:55;;-1:-1:-1;;;34712:55:0;;;;;6038:51:1;;;;6105:18;;;6098:34;;;;34712:19:0;;:28;;6011:18:1;;34712:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34708:71;;-1:-1:-1;;;;;34806:27:0;;;;;;:16;:27;;;;;;;;34802:137;;34854:19;;;-1:-1:-1;;;;;34894:20:0;;;;;;:9;:20;;;;;;;;34854:61;;-1:-1:-1;;;34854:61:0;;;;;6038:51:1;;;;6105:18;;;6098:34;;;;34854:19:0;;:28;;6011:18:1;;34854:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34850:77;;34955:14;;:18;34951:109;;34994:19;;;35022:14;34994:43;;-1:-1:-1;;;;;;34994:43:0;;-1:-1:-1;;;;;34994:19:0;;;;:27;;:43;;;;11507:25:1;;;11495:2;11480:18;;11361:177;34994:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34990:59;;35094:9;-1:-1:-1;;;;;35077:40:0;35086:6;-1:-1:-1;;;;;35077:40:0;;35105:11;35077:40;;;;11507:25:1;;11495:2;11480:18;;11361:177;35077:40:0;;;;;;;;-1:-1:-1;35135:4:0;;33706:1441;-1:-1:-1;;;;33706:1441:0:o;7796:98::-;7854:7;7881:5;7885:1;7881;:5;:::i;35159:330::-;35289:53;;;;;;;;;;;-1:-1:-1;;;35289:53:0;;;;;;;;-1:-1:-1;;;;;35289:17:0;;35252:4;35289:17;;;:9;:17;;;;;;;:53;;35311:6;;35289:21;:53::i;:::-;-1:-1:-1;;;;;35269:17:0;;;;;;;:9;:17;;;;;;:73;;;;35376:20;;;;;;;:32;;35401:6;35376:24;:32::i;:::-;-1:-1:-1;;;;;35353:20:0;;;;;;;:9;:20;;;;;;;:55;;;;35424:35;;;;;;;;;;35452:6;11507:25:1;;11495:2;11480:18;;11361:177;35424:35:0;;;;;;;;-1:-1:-1;35477:4:0;35159:330;;;;;:::o;37791:2243::-;25034:16;:23;;-1:-1:-1;;;;25034:23:0;-1:-1:-1;;;25034:23:0;;;37893:4:::1;25034:23:::0;37875:24;;;:9:::1;:24;::::0;;;;;;;38102:8:::1;::::0;37875:24;;25034:23;;;;;;;38102:13:::1;38098:241;;38150:62;38210:1;38150:55;38187:17;;38150:32;38170:11;;38150:15;:19;;:32;;;;:::i;:::-;:36:::0;::::1;:55::i;:62::-;38132:80;;38098:241;;;38263:47;38308:1;38263:40;38294:8;;38263:26;38283:5;;38263:15;:19;;:26;;;;:::i;:47::-;38245:65;;38098:241;38351:20;38374:36;:15:::0;38394;38374:19:::1;:36::i;:::-;38447:16;::::0;;38461:1:::1;38447:16:::0;;;;;::::1;::::0;;38351:59;;-1:-1:-1;38423:21:0::1;::::0;38447:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;38447:16:0::1;38423:40;;38492:4;38474;38479:1;38474:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38474:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;38518:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;38518:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;38474:7;;38518:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38508:4;38513:1;38508:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38508:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;38544:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;38544:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;38616:12;;38544:6:::1;::::0;38659:4;;38686::::1;::::0;38706:15:::1;::::0;38544:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;38745:17;38765:21;38745:41;;38862:1;38850:8;;:13;38846:508;;38893:50;38925:17;;38893:27;38907:12;;38893:9;:13;;:27;;;;:::i;:50::-;38880:63;;38971:44;38997:17;;38971:21;38985:6;;38971:9;:13;;:21;;;;:::i;:44::-;38958:57;;39051:56;39105:1;39051:49;39082:17;;39051:26;39065:11;;39051:9;:13;;:26;;;;:::i;:56::-;39030:77;;38846:508;;;39155:35;39181:8;;39155:21;39169:6;;39155:9;:13;;:21;;;;:::i;:35::-;39142:48;;39218:35;39244:8;;39218:21;39232:6;;39218:9;:13;;:21;;;;:::i;:35::-;39205:48;;39289:41;39328:1;39289:34;39314:8;;39289:20;39303:5;;39289:9;:13;;:20;;;;:::i;:41::-;39268:62;;38846:508;39366:27;39396:65;39442:18:::0;39396:41:::1;39426:10:::0;39396:41;:9;39410:10;39396:13:::1;:25::i;:65::-;39366:95:::0;-1:-1:-1;39477:13:0;;39474:155:::1;;39514:16;;;;;;;;;-1:-1:-1::0;;;;;39514:16:0::1;-1:-1:-1::0;;;;;39506:34:0::1;;39548:10;39506:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;39587:9:0::1;::::0;:30:::1;::::0;-1:-1:-1;;;;;39587:9:0;;::::1;::::0;-1:-1:-1;39587:30:0;::::1;;;::::0;-1:-1:-1;39606:10:0;;-1:-1:-1;39587:9:0::1;:30:::0;:9;:30;39606:10;39587:9;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;39474:155;39653:19;::::0;::::1;;;;;;-1:-1:-1::0;;;;;39653:19:0::1;-1:-1:-1::0;;;;;39653:27:0::1;;39688:19;39653:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;39649:73:::0;39737:19;;39734:281:::1;;39772:6;::::0;39946:8:::1;::::0;39772:231:::1;::::0;-1:-1:-1;;;39772:231:0;;39848:4:::1;39772:231;::::0;::::1;6484:34:1::0;6534:18;;;6527:34;;;39772:6:0::1;6577:18:1::0;;;6570:34;;;6620:18;;;6613:34;-1:-1:-1;;;;;39946:8:0;;::::1;6663:19:1::0;;;6656:44;39973:15:0::1;6716:19:1::0;;;6709:35;39772:6:0;::::1;::::0;:22:::1;::::0;39802:18;;6418:19:1;;39772:231:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;39734:281;-1:-1:-1::0;;25080:16:0;:24;;-1:-1:-1;;;;25080:24:0;;;-1:-1:-1;;;;;;;37791:2243:0:o;9694:240::-;9814:7;9875:12;9867:6;;;;9859:29;;;;-1:-1:-1;;;9859:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9910:5:0;;;9694:240::o;37344:439::-;37484:4;;37430:7;;;;-1:-1:-1;;;;;37484:17:0;;;:4;;:17;:48;;37524:8;;37484:48;;;37504:17;;37484:48;37460:72;-1:-1:-1;37543:17:0;37563:34;37593:3;37563:25;:6;37460:72;37563:10;:25::i;:34::-;37655:4;37637:24;;;;:9;:24;;;;;;37543:54;;-1:-1:-1;37637:39:0;;37543:54;37637:28;:39::i;:::-;37628:4;37610:24;;;;:9;:24;;;;;;;:66;;;;37692:42;;-1:-1:-1;;;;;37692:42:0;;;;;;;37724:9;11507:25:1;;11495:2;11480:18;;11361:177;37692:42:0;;;;;;;;37754:21;:6;37765:9;37754:10;:21::i;:::-;37747:28;37344:439;-1:-1:-1;;;;;;37344:439:0:o;8153:98::-;8211:7;8238:5;8242:1;8238;:5;:::i;8552:98::-;8610:7;8637:5;8641:1;8637;:5;:::i;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:247;377:6;430:2;418:9;409:7;405:23;401:32;398:52;;;446:1;443;436:12;398:52;485:9;472:23;504:31;529:5;504:31;:::i;570:251::-;640:6;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;741:9;735:16;760:31;785:5;760:31;:::i;1086:388::-;1154:6;1162;1215:2;1203:9;1194:7;1190:23;1186:32;1183:52;;;1231:1;1228;1221:12;1183:52;1270:9;1257:23;1289:31;1314:5;1289:31;:::i;:::-;1339:5;-1:-1:-1;1396:2:1;1381:18;;1368:32;1409:33;1368:32;1409:33;:::i;:::-;1461:7;1451:17;;;1086:388;;;;;:::o;1479:456::-;1556:6;1564;1572;1625:2;1613:9;1604:7;1600:23;1596:32;1593:52;;;1641:1;1638;1631:12;1593:52;1680:9;1667:23;1699:31;1724:5;1699:31;:::i;:::-;1749:5;-1:-1:-1;1806:2:1;1791:18;;1778:32;1819:33;1778:32;1819:33;:::i;:::-;1479:456;;1871:7;;-1:-1:-1;;;1925:2:1;1910:18;;;;1897:32;;1479:456::o;1940:315::-;2005:6;2013;2066:2;2054:9;2045:7;2041:23;2037:32;2034:52;;;2082:1;2079;2072:12;2034:52;2121:9;2108:23;2140:31;2165:5;2140:31;:::i;:::-;2190:5;-1:-1:-1;2214:35:1;2245:2;2230:18;;2214:35;:::i;:::-;2204:45;;1940:315;;;;;:::o;2260:::-;2328:6;2336;2389:2;2377:9;2368:7;2364:23;2360:32;2357:52;;;2405:1;2402;2395:12;2357:52;2444:9;2431:23;2463:31;2488:5;2463:31;:::i;:::-;2513:5;2565:2;2550:18;;;;2537:32;;-1:-1:-1;;;2260:315:1:o;2580:1132::-;2664:6;2695:2;2738;2726:9;2717:7;2713:23;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2794:9;2781:23;2823:18;2864:2;2856:6;2853:14;2850:34;;;2880:1;2877;2870:12;2850:34;2918:6;2907:9;2903:22;2893:32;;2963:7;2956:4;2952:2;2948:13;2944:27;2934:55;;2985:1;2982;2975:12;2934:55;3021:2;3008:16;3043:2;3039;3036:10;3033:36;;;3049:18;;:::i;:::-;3095:2;3092:1;3088:10;3127:2;3121:9;3190:2;3186:7;3181:2;3177;3173:11;3169:25;3161:6;3157:38;3245:6;3233:10;3230:22;3225:2;3213:10;3210:18;3207:46;3204:72;;;3256:18;;:::i;:::-;3292:2;3285:22;3342:18;;;3376:15;;;;-1:-1:-1;3411:11:1;;;3441;;;3437:20;;3434:33;-1:-1:-1;3431:53:1;;;3480:1;3477;3470:12;3431:53;3502:1;3493:10;;3512:169;3526:2;3523:1;3520:9;3512:169;;;3583:23;3602:3;3583:23;:::i;:::-;3571:36;;3544:1;3537:9;;;;;3627:12;;;;3659;;3512:169;;;-1:-1:-1;3700:6:1;2580:1132;-1:-1:-1;;;;;;;;2580:1132:1:o;3717:180::-;3773:6;3826:2;3814:9;3805:7;3801:23;3797:32;3794:52;;;3842:1;3839;3832:12;3794:52;3865:26;3881:9;3865:26;:::i;3902:248::-;3967:6;3975;4028:2;4016:9;4007:7;4003:23;3999:32;3996:52;;;4044:1;4041;4034:12;3996:52;4067:26;4083:9;4067:26;:::i;4155:180::-;4214:6;4267:2;4255:9;4246:7;4242:23;4238:32;4235:52;;;4283:1;4280;4273:12;4235:52;-1:-1:-1;4306:23:1;;4155:180;-1:-1:-1;4155:180:1:o;4340:248::-;4408:6;4416;4469:2;4457:9;4448:7;4444:23;4440:32;4437:52;;;4485:1;4482;4475:12;4437:52;-1:-1:-1;;4508:23:1;;;4578:2;4563:18;;;4550:32;;-1:-1:-1;4340:248:1:o;4593:306::-;4681:6;4689;4697;4750:2;4738:9;4729:7;4725:23;4721:32;4718:52;;;4766:1;4763;4756:12;4718:52;4795:9;4789:16;4779:26;;4845:2;4834:9;4830:18;4824:25;4814:35;;4889:2;4878:9;4874:18;4868:25;4858:35;;4593:306;;;;;:::o;4904:523::-;5008:6;5016;5024;5032;5040;5048;5101:3;5089:9;5080:7;5076:23;5072:33;5069:53;;;5118:1;5115;5108:12;5069:53;-1:-1:-1;;5141:23:1;;;5211:2;5196:18;;5183:32;;-1:-1:-1;5262:2:1;5247:18;;5234:32;;5313:2;5298:18;;5285:32;;-1:-1:-1;5364:3:1;5349:19;;5336:33;;-1:-1:-1;5416:3:1;5401:19;5388:33;;-1:-1:-1;4904:523:1;-1:-1:-1;4904:523:1:o;7417:597::-;7529:4;7558:2;7587;7576:9;7569:21;7619:6;7613:13;7662:6;7657:2;7646:9;7642:18;7635:34;7687:1;7697:140;7711:6;7708:1;7705:13;7697:140;;;7806:14;;;7802:23;;7796:30;7772:17;;;7791:2;7768:26;7761:66;7726:10;;7697:140;;;7855:6;7852:1;7849:13;7846:91;;;7925:1;7920:2;7911:6;7900:9;7896:22;7892:31;7885:42;7846:91;-1:-1:-1;7998:2:1;7977:15;-1:-1:-1;;7973:29:1;7958:45;;;;8005:2;7954:54;;7417:597;-1:-1:-1;;;7417:597:1:o;9114:399::-;9316:2;9298:21;;;9355:2;9335:18;;;9328:30;9394:34;9389:2;9374:18;;9367:62;-1:-1:-1;;;9460:2:1;9445:18;;9438:33;9503:3;9488:19;;9114:399::o;9518:356::-;9720:2;9702:21;;;9739:18;;;9732:30;9798:34;9793:2;9778:18;;9771:62;9865:2;9850:18;;9518:356::o;11543:980::-;11805:4;11853:3;11842:9;11838:19;11884:6;11873:9;11866:25;11910:2;11948:6;11943:2;11932:9;11928:18;11921:34;11991:3;11986:2;11975:9;11971:18;11964:31;12015:6;12050;12044:13;12081:6;12073;12066:22;12119:3;12108:9;12104:19;12097:26;;12158:2;12150:6;12146:15;12132:29;;12179:1;12189:195;12203:6;12200:1;12197:13;12189:195;;;12268:13;;-1:-1:-1;;;;;12264:39:1;12252:52;;12359:15;;;;12324:12;;;;12300:1;12218:9;12189:195;;;-1:-1:-1;;;;;;;12440:32:1;;;;12435:2;12420:18;;12413:60;-1:-1:-1;;;12504:3:1;12489:19;12482:35;12401:3;11543:980;-1:-1:-1;;;11543:980:1:o;12970:128::-;13010:3;13041:1;13037:6;13034:1;13031:13;13028:39;;;13047:18;;:::i;:::-;-1:-1:-1;13083:9:1;;12970:128::o;13103:217::-;13143:1;13169;13159:132;;13213:10;13208:3;13204:20;13201:1;13194:31;13248:4;13245:1;13238:15;13276:4;13273:1;13266:15;13159:132;-1:-1:-1;13305:9:1;;13103:217::o;13325:168::-;13365:7;13431:1;13427;13423:6;13419:14;13416:1;13413:21;13408:1;13401:9;13394:17;13390:45;13387:71;;;13438:18;;:::i;:::-;-1:-1:-1;13478:9:1;;13325:168::o;13498:125::-;13538:4;13566:1;13563;13560:8;13557:34;;;13571:18;;:::i;:::-;-1:-1:-1;13608:9:1;;13498:125::o;13628:380::-;13707:1;13703:12;;;;13750;;;13771:61;;13825:4;13817:6;13813:17;13803:27;;13771:61;13878:2;13870:6;13867:14;13847:18;13844:38;13841:161;;;13924:10;13919:3;13915:20;13912:1;13905:31;13959:4;13956:1;13949:15;13987:4;13984:1;13977:15;13841:161;;13628:380;;;:::o;14013:135::-;14052:3;-1:-1:-1;;14073:17:1;;14070:43;;;14093:18;;:::i;:::-;-1:-1:-1;14140:1:1;14129:13;;14013:135::o;14153:127::-;14214:10;14209:3;14205:20;14202:1;14195:31;14245:4;14242:1;14235:15;14269:4;14266:1;14259:15;14285:127;14346:10;14341:3;14337:20;14334:1;14327:31;14377:4;14374:1;14367:15;14401:4;14398:1;14391:15;14417:127;14478:10;14473:3;14469:20;14466:1;14459:31;14509:4;14506:1;14499:15;14533:4;14530:1;14523:15;14549:131;-1:-1:-1;;;;;14624:31:1;;14614:42;;14604:70;;14670:1;14667;14660:12;14604:70;14549:131;:::o
Swarm Source
ipfs://90d6e1ea0c359f59421f5797840800157f3e4e0494ab066b6140b74e0c9cb2dd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.