More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 646 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20453662 | 156 days ago | IN | 0 ETH | 0.00005609 | ||||
Approve | 19907762 | 232 days ago | IN | 0 ETH | 0.00029586 | ||||
Approve | 19779903 | 250 days ago | IN | 0 ETH | 0.00022993 | ||||
Approve | 17059758 | 632 days ago | IN | 0 ETH | 0.00061859 | ||||
Approve | 15894852 | 795 days ago | IN | 0 ETH | 0.00044356 | ||||
Approve | 15849144 | 802 days ago | IN | 0 ETH | 0.00127043 | ||||
Approve | 15835199 | 803 days ago | IN | 0 ETH | 0.00079767 | ||||
Approve | 15808515 | 807 days ago | IN | 0 ETH | 0.00061202 | ||||
Approve | 15750667 | 815 days ago | IN | 0 ETH | 0.00100169 | ||||
Approve | 15748983 | 816 days ago | IN | 0 ETH | 0.00083795 | ||||
Approve | 15747648 | 816 days ago | IN | 0 ETH | 0.00078344 | ||||
Approve | 15738412 | 817 days ago | IN | 0 ETH | 0.00067058 | ||||
Approve | 15734236 | 818 days ago | IN | 0 ETH | 0.00091978 | ||||
Transfer | 15734226 | 818 days ago | IN | 0 ETH | 0.00133147 | ||||
Transfer | 15734212 | 818 days ago | IN | 0 ETH | 0.00139327 | ||||
Approve | 15734195 | 818 days ago | IN | 0 ETH | 0.0009078 | ||||
Approve | 15734192 | 818 days ago | IN | 0 ETH | 0.00091456 | ||||
Approve | 15734187 | 818 days ago | IN | 0 ETH | 0.00096841 | ||||
Approve | 15734177 | 818 days ago | IN | 0 ETH | 0.00084557 | ||||
Approve | 15734174 | 818 days ago | IN | 0 ETH | 0.00084783 | ||||
Approve | 15734167 | 818 days ago | IN | 0 ETH | 0.00097065 | ||||
Approve | 15734164 | 818 days ago | IN | 0 ETH | 0.00091623 | ||||
Approve | 15734160 | 818 days ago | IN | 0 ETH | 0.00099654 | ||||
Approve | 15734145 | 818 days ago | IN | 0 ETH | 0.00093499 | ||||
Approve | 15734131 | 818 days ago | IN | 0 ETH | 0.00094177 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
19907766 | 232 days ago | 0.00217199 ETH | ||||
19907766 | 232 days ago | 0.00217199 ETH | ||||
15849145 | 802 days ago | 0.0041535 ETH | ||||
15849145 | 802 days ago | 0.0041535 ETH | ||||
15849145 | 802 days ago | 0.0044783 ETH | ||||
15849145 | 802 days ago | 0.0044783 ETH | ||||
15849145 | 802 days ago | 0.00484276 ETH | ||||
15849145 | 802 days ago | 0.00484276 ETH | ||||
15849145 | 802 days ago | 0.00525362 ETH | ||||
15849145 | 802 days ago | 0.00525362 ETH | ||||
15849145 | 802 days ago | 0.00571911 ETH | ||||
15849145 | 802 days ago | 0.00571911 ETH | ||||
15755674 | 815 days ago | 0.00614205 ETH | ||||
15755674 | 815 days ago | 0.00614205 ETH | ||||
15751560 | 815 days ago | 0.02420344 ETH | ||||
15751560 | 815 days ago | 0.02420344 ETH | ||||
15738416 | 817 days ago | 0.0099133 ETH | ||||
15738416 | 817 days ago | 0.0099133 ETH | ||||
15738037 | 817 days ago | 0.02259538 ETH | ||||
15738037 | 817 days ago | 0.02259538 ETH | ||||
15734598 | 818 days ago | 0.01784047 ETH | ||||
15734598 | 818 days ago | 0.01784047 ETH | ||||
15734194 | 818 days ago | 0.03824476 ETH | ||||
15734194 | 818 days ago | 0.03824476 ETH | ||||
15734185 | 818 days ago | 0.02775242 ETH |
Loading...
Loading
Contract Name:
TsukaHelper
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-24 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; // 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; } } // OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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); } } // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // OpenZeppelin Contracts (last updated v4.6.0) (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 subtraction 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; } } } pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( 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 swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract TsukaHelper is Context, IERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 private _uniswapV2Router; mapping (address => uint) private _cooldown; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedMaxTransactionAmount; mapping (address => bool) private _isBlacklisted; bool public tradingOpen; bool private _swapping; bool public swapEnabled = false; bool public cooldownEnabled = false; bool public feesEnabled = true; string private constant _name = "Tsuka Helper"; string private constant _symbol = "HELP"; uint8 private constant _decimals = 18; uint256 private constant _tSupply = 1e9 * (10**_decimals); uint256 public maxBuyAmount = _tSupply; uint256 public maxSellAmount = _tSupply; uint256 public maxWalletAmount = _tSupply; uint256 private _cooldownBlocks = 1; uint256 public constant FEE_DIVISOR = 1000; uint256 public buyTreasuryFee = 50; uint256 private _previousBuyTreasuryFee = buyTreasuryFee; uint256 public sellTreasuryFee = 50; uint256 private _previousSellTreasuryFee = sellTreasuryFee; uint256 private _tokensForTreasury; uint256 private _swapTokensAtAmount = 0; address payable private treasuryWallet = payable(0x1a2284042aa54Ac57Ac1acDE6E19978D7E5E1992); address private _uniswapV2Pair; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; constructor () { _balances[_msgSender()] = _tSupply; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _isExcludedFromFees[treasuryWallet] = true; _isExcludedMaxTransactionAmount[owner()] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedMaxTransactionAmount[DEAD] = true; _isExcludedMaxTransactionAmount[treasuryWallet] = true; emit Transfer(ZERO, _msgSender(), _tSupply); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function setCooldownEnabled(bool onoff) public onlyOwner { cooldownEnabled = onoff; } function setSwapEnabled(bool onoff) public onlyOwner { swapEnabled = onoff; } function setFeesEnabled(bool onoff) public onlyOwner { feesEnabled = onoff; } function _approve(address owner, address spender, uint256 amount) private { require(owner != ZERO, "ERC20: approve from the zero address"); require(spender != ZERO, "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != ZERO, "ERC20: transfer from the zero address"); require(to != ZERO, "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); bool takeFee = true; bool shouldSwap = false; if (from != owner() && to != owner() && to != ZERO && to != DEAD && !_swapping) { require(!_isBlacklisted[from] && !_isBlacklisted[to]); if(!tradingOpen) require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not allowed yet."); if (cooldownEnabled) { if (to != address(_uniswapV2Router) && to != address(_uniswapV2Pair)) { require(_cooldown[tx.origin] < block.number - _cooldownBlocks && _cooldown[to] < block.number - _cooldownBlocks, "Transfer delay enabled. Try again later."); _cooldown[tx.origin] = block.number; _cooldown[to] = block.number; } } if (from == _uniswapV2Pair && to != address(_uniswapV2Router) && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxBuyAmount, "Transfer amount exceeds the maxBuyAmount."); require(balanceOf(to) + amount <= maxWalletAmount, "Exceeds maximum wallet token amount."); } if (to == _uniswapV2Pair && from != address(_uniswapV2Router) && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxSellAmount, "Transfer amount exceeds the maxSellAmount."); shouldSwap = true; } } if(_isExcludedFromFees[from] || _isExcludedFromFees[to] || !feesEnabled) takeFee = false; uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = (contractTokenBalance > _swapTokensAtAmount) && shouldSwap; if (canSwap && swapEnabled && !_swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { _swapping = true; swapBack(); _swapping = false; } _tokenTransfer(from, to, amount, takeFee, shouldSwap); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); bool success; if (contractBalance == 0 || _tokensForTreasury == 0) return; if (contractBalance > _swapTokensAtAmount * 5) contractBalance = _swapTokensAtAmount * 5; swapTokensForETH(contractBalance); _tokensForTreasury = 0; (success,) = address(treasuryWallet).call{value: address(this).balance}(""); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { treasuryWallet.transfer(amount); } function isBlacklisted(address wallet) external view returns (bool) { return _isBlacklisted[wallet]; } function launch() public onlyOwner { require(!tradingOpen,"Trading is already open"); _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(_uniswapV2Router), _tSupply); _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); swapEnabled = true; cooldownEnabled = true; maxBuyAmount = _tSupply.mul(1).div(100); maxSellAmount = _tSupply.mul(1).div(100); maxWalletAmount = _tSupply.mul(1).div(100); _swapTokensAtAmount = _tSupply.mul(5).div(10000); tradingOpen = true; IERC20(_uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max); } function setMaxBuyAmount(uint256 maxBuy) public onlyOwner { require(maxBuy >= (totalSupply().mul(1).div(10000)), "Max buy amount cannot be lower than 0.01% total supply."); maxBuyAmount = maxBuy; } function setMaxSellAmount(uint256 maxSell) public onlyOwner { require(maxSell >= (totalSupply().mul(1).div(10000)), "Max sell amount cannot be lower than 0.01% total supply."); maxSellAmount = maxSell; } function setMaxWalletAmount(uint256 maxToken) public onlyOwner { require(maxToken >= (totalSupply().mul(1).div(1000)), "Max wallet amount cannot be lower than 0.1% total supply."); maxWalletAmount = maxToken; } function setSwapTokensAtAmount(uint256 swapAmount) public onlyOwner { require(swapAmount >= (totalSupply().mul(1).div(100000)), "Swap amount cannot be lower than 0.001% total supply."); require(swapAmount <= (totalSupply().mul(5).div(1000)), "Swap amount cannot be higher than 0.5% total supply."); _swapTokensAtAmount = swapAmount; } function setTreasuryWallet(address treasuryWalletAddy) public onlyOwner { require(treasuryWalletAddy != ZERO, "treasuryWallet address cannot be 0"); _isExcludedFromFees[treasuryWallet] = false; _isExcludedMaxTransactionAmount[treasuryWallet] = false; treasuryWallet = payable(treasuryWalletAddy); _isExcludedFromFees[treasuryWallet] = true; _isExcludedMaxTransactionAmount[treasuryWallet] = true; } function setExcludedFromFees(address[] memory accounts, bool isEx) public onlyOwner { for (uint i = 0; i < accounts.length; i++) _isExcludedFromFees[accounts[i]] = isEx; } function setExcludeFromMaxTransaction(address[] memory accounts, bool isEx) public onlyOwner { for (uint i = 0; i < accounts.length; i++) _isExcludedMaxTransactionAmount[accounts[i]] = isEx; } function setBlacklisted(address[] memory accounts, bool exempt) public onlyOwner { for (uint i = 0; i < accounts.length; i++) _isBlacklisted[accounts[i]] = exempt; } function setBuyFee(uint256 newBuyTreasuryFee) public onlyOwner { require(newBuyTreasuryFee <= 100, "Must keep buy taxes below 10%"); buyTreasuryFee = newBuyTreasuryFee; } function setSellFee(uint256 newSellTreasuryFee) public onlyOwner { require(newSellTreasuryFee <= 100, "Must keep sell taxes below 10%"); sellTreasuryFee = newSellTreasuryFee; } function setCooldownBlocks(uint256 blocks) public onlyOwner { _cooldownBlocks = blocks; } function removeAllFee() private { if (buyTreasuryFee == 0 && sellTreasuryFee == 0) return; _previousBuyTreasuryFee = buyTreasuryFee; _previousSellTreasuryFee = sellTreasuryFee; buyTreasuryFee = 0; sellTreasuryFee = 0; } function restoreAllFee() private { buyTreasuryFee = _previousBuyTreasuryFee; sellTreasuryFee = _previousSellTreasuryFee; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private { if (!takeFee) removeAllFee(); else amount = _takeFees(sender, amount, isSell); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { _balances[sender] = _balances[sender].sub(tAmount); _balances[recipient] = _balances[recipient].add(tAmount); emit Transfer(sender, recipient, tAmount); } function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) { uint256 _totalFees = _getTotalFees(isSell); uint256 fees; if (_totalFees > 0) { fees = amount.mul(_totalFees).div(FEE_DIVISOR); _tokensForTreasury += fees * _totalFees / _totalFees; } if (fees > 0) _transferStandard(sender, address(this), fees); return amount -= fees; } function _getTotalFees(bool isSell) private view returns(uint256) { if (isSell) return sellTreasuryFee; return buyTreasuryFee; } receive() external payable {} fallback() external payable {} function unclog() public { require(msg.sender == treasuryWallet, "Unauthorized."); uint256 contractBalance = balanceOf(address(this)); swapTokensForETH(contractBalance); } function distributeFees() public { require(msg.sender == treasuryWallet, "Unauthorized."); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function withdrawStuckETH() public { require(msg.sender == treasuryWallet, "Unauthorized."); bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function withdrawStuckTokens(address tkn) public { require(msg.sender == treasuryWallet, "Unauthorized."); require(tkn != address(this), "Cannot withdraw this token"); require(IERC20(tkn).balanceOf(address(this)) > 0, "No tokens"); uint amount = IERC20(tkn).balanceOf(address(this)); IERC20(tkn).transfer(msg.sender, amount); } function removeLimits() public onlyOwner { maxBuyAmount = _tSupply; maxSellAmount = _tSupply; maxWalletAmount = _tSupply; cooldownEnabled = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"FEE_DIVISOR","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":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTreasuryFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setCooldownBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"setExcludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTreasuryFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasuryWalletAddy","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526008805464ffffff00001916640100000000179055620000276012600a6200038b565b6200003790633b9aca00620003a3565b600955620000486012600a6200038b565b6200005890633b9aca00620003a3565b600a556012600a6200006b91906200038b565b6200007b90633b9aca00620003a3565b600b556001600c556032600d819055600e819055600f8190556010556000601255601380546001600160a01b0319908116731a2284042aa54ac57ac1acde6e19978d7e5e19921790915560158054821661dead179055601680549091169055348015620000e757600080fd5b50620000f33362000226565b620001016012600a6200038b565b6200011190633b9aca00620003a3565b3360008181526003602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff1991821681179092553080865287862080548316841790556015805485168752888720805484168517905560138054861688528988208054851686179055875486168852600690965288872080548416851790559086528786208054831684179055548316855286852080548216831790559254821684529490922080549091169093179092556016549091167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001ff6012600a6200038b565b6200020f90633b9aca00620003a3565b60405190815260200160405180910390a3620003bd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002cd578160001904821115620002b157620002b162000276565b80851615620002bf57918102915b93841c939080029062000291565b509250929050565b600082620002e65750600162000385565b81620002f55750600062000385565b81600181146200030e5760028114620003195762000339565b600191505062000385565b60ff8411156200032d576200032d62000276565b50506001821b62000385565b5060208310610133831016604e8410600b84101617156200035e575081810a62000385565b6200036a83836200028c565b806000190482111562000381576200038162000276565b0290505b92915050565b60006200039c60ff841683620002d5565b9392505050565b808202811582820484141762000385576200038562000276565b61297d80620003cd6000396000f3fe6080604052600436106102485760003560e01c80638da5cb5b11610138578063cb963728116100b0578063f2fde38b11610077578063f2fde38b14610708578063f34eb0b814610728578063f5648a4f14610748578063f5a6682f1461075d578063fe575a871461077d578063ffb54a99146107b657005b8063cb96372814610642578063dd62ed3e14610662578063e01af92c146106a8578063e1baae1f146106c8578063e99c9d09146106e857005b8063a901dd92116100ff578063a901dd9214610596578063a9059cbb146105b6578063a985ceef146105d6578063aa4bde28146105f7578063afa4f3b21461060d578063bb57ad201461062d57005b80638da5cb5b146104e957806395d89b41146105115780639e93ad8e1461053e578063a64e4f8a14610554578063a8602fea1461057657005b80635932ead1116101cb5780636ddd1713116101925780636ddd17131461043357806370a0823114610453578063715018a614610489578063751039fc1461049e57806388e765ff146104b35780638b4cee08146104c957005b80635932ead1146103bc5780635c068a8c146103dc57806366d602ae146103f257806367c45349146104085780636b2fb1241461041d57005b806314626dc61161020f57806314626dc61461031d57806318160ddd1461033d57806323b872dd1461036057806327a14fc214610380578063313ce567146103a057005b806301339c211461025157806306fdde0314610266578063095ea7b3146102ad5780630cc835a3146102dd578063105222f9146102fd57005b3661024f57005b005b34801561025d57600080fd5b5061024f6107d0565b34801561027257600080fd5b5060408051808201909152600c81526b2a39bab5b0902432b63832b960a11b60208201525b6040516102a491906123fd565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004612470565b610bfc565b60405190151581526020016102a4565b3480156102e957600080fd5b5061024f6102f836600461249c565b610c13565b34801561030957600080fd5b5061024f6103183660046124e4565b610c71565b34801561032957600080fd5b5061024f61033836600461249c565b610ce5565b34801561034957600080fd5b50610352610cf2565b6040519081526020016102a4565b34801561036c57600080fd5b506102cd61037b3660046125bb565b610d13565b34801561038c57600080fd5b5061024f61039b36600461249c565b610d77565b3480156103ac57600080fd5b50604051601281526020016102a4565b3480156103c857600080fd5b5061024f6103d73660046125fc565b610e0c565b3480156103e857600080fd5b50610352600d5481565b3480156103fe57600080fd5b50610352600a5481565b34801561041457600080fd5b5061024f610e32565b34801561042957600080fd5b50610352600f5481565b34801561043f57600080fd5b506008546102cd9062010000900460ff1681565b34801561045f57600080fd5b5061035261046e366004612619565b6001600160a01b031660009081526003602052604090205490565b34801561049557600080fd5b5061024f610e75565b3480156104aa57600080fd5b5061024f610e89565b3480156104bf57600080fd5b5061035260095481565b3480156104d557600080fd5b5061024f6104e436600461249c565b610ef9565b3480156104f557600080fd5b506000546040516001600160a01b0390911681526020016102a4565b34801561051d57600080fd5b50604080518082019091526004815263048454c560e41b6020820152610297565b34801561054a57600080fd5b506103526103e881565b34801561056057600080fd5b506008546102cd90640100000000900460ff1681565b34801561058257600080fd5b5061024f610591366004612619565b610f57565b3480156105a257600080fd5b5061024f6105b13660046125fc565b611046565b3480156105c257600080fd5b506102cd6105d1366004612470565b61106e565b3480156105e257600080fd5b506008546102cd906301000000900460ff1681565b34801561060357600080fd5b50610352600b5481565b34801561061957600080fd5b5061024f61062836600461249c565b61107b565b34801561063957600080fd5b5061024f611188565b34801561064e57600080fd5b5061024f61065d366004612619565b6111bc565b34801561066e57600080fd5b5061035261067d366004612636565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106b457600080fd5b5061024f6106c33660046125fc565b6113c1565b3480156106d457600080fd5b5061024f6106e33660046124e4565b6113e5565b3480156106f457600080fd5b5061024f61070336600461249c565b611454565b34801561071457600080fd5b5061024f610723366004612619565b6114e9565b34801561073457600080fd5b5061024f61074336600461249c565b61155f565b34801561075457600080fd5b5061024f6115f4565b34801561076957600080fd5b5061024f6107783660046124e4565b61166b565b34801561078957600080fd5b506102cd610798366004612619565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107c257600080fd5b506008546102cd9060ff1681565b6107d86116da565b60085460ff16156108305760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561087e90309061086b6012600a612769565b61087990633b9aca00612778565b611734565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f5919061278f565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061278f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec919061278f565b601480546001600160a01b039283166001600160a01b03199091161790556001541663f305d7194730610a34816001600160a01b031660009081526003602052604090205490565b600080610a496000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ab1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad691906127ac565b50506008805463ffff00001916630101000017905550610b1c6064610b166001610b026012600a612769565b610b1090633b9aca00612778565b90611869565b9061187c565b600955610b356064610b166001610b026012600a612769565b600a81905550610b536064610b1660016012600a610b029190612769565b600b55610b6d612710610b166005610b026012600a612769565b6012556008805460ff19166001908117909155601454905460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906127da565b50565b6000610c09338484611734565b5060015b92915050565b610c1b6116da565b6064811115610c6c5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203130250000006044820152606401610827565b600d55565b610c796116da565b60005b8251811015610ce0578160056000858481518110610c9c57610c9c6127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cd88161280d565b915050610c7c565b505050565b610ced6116da565b600c55565b6000610d006012600a612769565b610d0e90633b9aca00612778565b905090565b6000610d20848484611888565b610d6d843361087985604051806060016040528060288152602001612920602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611f76565b5060019392505050565b610d7f6116da565b610d926103e8610b166001610b10610cf2565b811015610e075760405162461bcd60e51b815260206004820152603960248201527f4d61782077616c6c657420616d6f756e742063616e6e6f74206265206c6f776560448201527f72207468616e20302e312520746f74616c20737570706c792e000000000000006064820152608401610827565b600b55565b610e146116da565b6008805491151563010000000263ff00000019909216919091179055565b6013546001600160a01b03163314610e5c5760405162461bcd60e51b815260040161082790612826565b30600090815260036020526040902054610bf981611fa2565b610e7d6116da565b610e8760006120fc565b565b610e916116da565b610e9d6012600a612769565b610eab90633b9aca00612778565b600955610eba6012600a612769565b610ec890633b9aca00612778565b600a908155610ed990601290612769565b610ee790633b9aca00612778565b600b556008805463ff00000019169055565b610f016116da565b6064811115610f525760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772031302500006044820152606401610827565b600f55565b610f5f6116da565b6016546001600160a01b0390811690821603610fc85760405162461bcd60e51b815260206004820152602260248201527f747265617375727957616c6c657420616464726573732063616e6e6f74206265604482015261020360f41b6064820152608401610827565b601380546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600680845282862080548316905587546001600160a01b03191698871698891788559785529282528084208054841660019081179091559554909416835294909452208054909216179055565b61104e6116da565b600880549115156401000000000264ff0000000019909216919091179055565b6000610c09338484611888565b6110836116da565b611097620186a0610b166001610b10610cf2565b8110156111045760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610827565b6111176103e8610b166005610b10610cf2565b8111156111835760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610827565b601255565b6013546001600160a01b031633146111b25760405162461bcd60e51b815260040161082790612826565b47610bf98161214c565b6013546001600160a01b031633146111e65760405162461bcd60e51b815260040161082790612826565b306001600160a01b0382160361123e5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207769746864726177207468697320746f6b656e0000000000006044820152606401610827565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a9919061284d565b116112e25760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610827565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134d919061284d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561139d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce091906127da565b6113c96116da565b60088054911515620100000262ff000019909216919091179055565b6113ed6116da565b60005b8251811015610ce0578160076000858481518110611410576114106127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061144c8161280d565b9150506113f0565b61145c6116da565b61146f612710610b166001610b10610cf2565b8110156114e45760405162461bcd60e51b815260206004820152603860248201527f4d61782073656c6c20616d6f756e742063616e6e6f74206265206c6f7765722060448201527f7468616e20302e30312520746f74616c20737570706c792e00000000000000006064820152608401610827565b600a55565b6114f16116da565b6001600160a01b0381166115565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610827565b610bf9816120fc565b6115676116da565b61157a612710610b166001610b10610cf2565b8110156115ef5760405162461bcd60e51b815260206004820152603760248201527f4d61782062757920616d6f756e742063616e6e6f74206265206c6f776572207460448201527f68616e20302e30312520746f74616c20737570706c792e0000000000000000006064820152608401610827565b600955565b6013546001600160a01b0316331461161e5760405162461bcd60e51b815260040161082790612826565b604051600090339047908381818185875af1925050503d8060008114611660576040519150601f19603f3d011682016040523d82523d6000602084013e611665565b606091505b50505050565b6116736116da565b60005b8251811015610ce0578160066000858481518110611696576116966127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116d28161280d565b915050611676565b6000546001600160a01b03163314610e875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610827565b6016546001600160a01b039081169084160361179e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610827565b6016546001600160a01b03908116908316036118075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610827565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006118758284612778565b9392505050565b60006118758284612866565b6016546001600160a01b03908116908416036118f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610827565b6016546001600160a01b039081169083160361195e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610827565b600081116119c05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610827565b600160006119d66000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015611a0557506000546001600160a01b03858116911614155b8015611a1f57506016546001600160a01b03858116911614155b8015611a3957506015546001600160a01b03858116911614155b8015611a4d5750600854610100900460ff16155b15611e42576001600160a01b03851660009081526007602052604090205460ff16158015611a9457506001600160a01b03841660009081526007602052604090205460ff16155b611a9d57600080fd5b60085460ff16611b32576001600160a01b03851660009081526005602052604090205460ff1680611ae657506001600160a01b03841660009081526005602052604090205460ff165b611b325760405162461bcd60e51b815260206004820152601b60248201527f54726164696e67206973206e6f7420616c6c6f776564207965742e00000000006044820152606401610827565b6008546301000000900460ff1615611c44576001546001600160a01b03858116911614801590611b7057506014546001600160a01b03858116911614155b15611c4457600c54611b829043612888565b32600090815260026020526040902054108015611bc25750600c54611ba79043612888565b6001600160a01b038516600090815260026020526040902054105b611c1f5760405162461bcd60e51b815260206004820152602860248201527f5472616e736665722064656c617920656e61626c65642e20547279206167616960448201526737103630ba32b91760c11b6064820152608401610827565b3260009081526002602052604080822043908190556001600160a01b03871683529120555b6014546001600160a01b038681169116148015611c6f57506001546001600160a01b03858116911614155b8015611c9457506001600160a01b03841660009081526006602052604090205460ff16155b15611d8457600954831115611cfd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610827565b600b5483611d20866001600160a01b031660009081526003602052604090205490565b611d2a919061289b565b1115611d845760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610827565b6014546001600160a01b038581169116148015611daf57506001546001600160a01b03868116911614155b8015611dd457506001600160a01b03851660009081526006602052604090205460ff16155b15611e4257600a54831115611e3e5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610827565b5060015b6001600160a01b03851660009081526005602052604090205460ff1680611e8157506001600160a01b03841660009081526005602052604090205460ff165b80611e975750600854640100000000900460ff16155b15611ea157600091505b306000908152600360205260408120549050600060125482118015611ec35750825b9050808015611eda575060085462010000900460ff165b8015611eee5750600854610100900460ff16155b8015611f1357506001600160a01b03871660009081526005602052604090205460ff16155b8015611f3857506001600160a01b03861660009081526005602052604090205460ff16155b15611f60576008805461ff001916610100179055611f5461218a565b6008805461ff00191690555b611f6d878787878761223f565b50505050505050565b60008184841115611f9a5760405162461bcd60e51b815260040161082791906123fd565b505050900390565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fd757611fd76127f7565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612030573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612054919061278f565b81600181518110612067576120676127f7565b6001600160a01b03928316602091820292909201015260015461208d9130911684611734565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906120c69085906000908690309042906004016128ae565b600060405180830381600087803b1580156120e057600080fd5b505af11580156120f4573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612186573d6000803e3d6000fd5b5050565b30600090815260036020526040812054908115806121a85750601154155b156121b1575050565b6012546121bf906005612778565b8211156121d7576012546121d4906005612778565b91505b6121e082611fa2565b600060118190556013546040516001600160a01b039091169147919081818185875af1925050503d8060008114612233576040519150601f19603f3d011682016040523d82523d6000602084013e612238565b606091505b5050505050565b816122515761224c612280565b61225f565b61225c8584836122ae565b92505b61226a858585612327565b8161223857612238600e54600d55601054600f55565b600d541580156122905750600f54155b1561229757565b600d8054600e55600f805460105560009182905555565b6000806122ba836123cd565b905060008115612302576122d46103e8610b168785611869565b9050816122e18183612778565b6122eb9190612866565b601160008282546122fc919061289b565b90915550505b801561231357612313863083612327565b61231d8186612888565b9695505050505050565b6001600160a01b03831660009081526003602052604090205461234a90826123e5565b6001600160a01b03808516600090815260036020526040808220939093559084168152205461237990826123f1565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061185c9085815260200190565b600081156123dd575050600f5490565b5050600d5490565b60006118758284612888565b6000611875828461289b565b600060208083528351808285015260005b8181101561242a5785810183015185820160400152820161240e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bf957600080fd5b803561246b8161244b565b919050565b6000806040838503121561248357600080fd5b823561248e8161244b565b946020939093013593505050565b6000602082840312156124ae57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b8015158114610bf957600080fd5b803561246b816124cb565b600080604083850312156124f757600080fd5b823567ffffffffffffffff8082111561250f57600080fd5b818501915085601f83011261252357600080fd5b8135602082821115612537576125376124b5565b8160051b604051601f19603f8301168101818110868211171561255c5761255c6124b5565b60405292835281830193508481018201928984111561257a57600080fd5b948201945b8386101561259f5761259086612460565b8552948201949382019361257f565b96506125ae90508782016124d9565b9450505050509250929050565b6000806000606084860312156125d057600080fd5b83356125db8161244b565b925060208401356125eb8161244b565b929592945050506040919091013590565b60006020828403121561260e57600080fd5b8135611875816124cb565b60006020828403121561262b57600080fd5b81356118758161244b565b6000806040838503121561264957600080fd5b82356126548161244b565b915060208301356126648161244b565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156126c05781600019048211156126a6576126a661266f565b808516156126b357918102915b93841c939080029061268a565b509250929050565b6000826126d757506001610c0d565b816126e457506000610c0d565b81600181146126fa576002811461270457612720565b6001915050610c0d565b60ff8411156127155761271561266f565b50506001821b610c0d565b5060208310610133831016604e8410600b8410161715612743575081810a610c0d565b61274d8383612685565b80600019048211156127615761276161266f565b029392505050565b600061187560ff8416836126c8565b8082028115828204841417610c0d57610c0d61266f565b6000602082840312156127a157600080fd5b81516118758161244b565b6000806000606084860312156127c157600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156127ec57600080fd5b8151611875816124cb565b634e487b7160e01b600052603260045260246000fd5b60006001820161281f5761281f61266f565b5060010190565b6020808252600d908201526c2ab730baba3437b934bd32b21760991b604082015260600190565b60006020828403121561285f57600080fd5b5051919050565b60008261288357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c0d57610c0d61266f565b80820180821115610c0d57610c0d61266f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128fe5784516001600160a01b0316835293830193918301916001016128d9565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f8b70f8785a75c98a2de699818d42abe348b4f83a544839bf727c28510441a9c64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102485760003560e01c80638da5cb5b11610138578063cb963728116100b0578063f2fde38b11610077578063f2fde38b14610708578063f34eb0b814610728578063f5648a4f14610748578063f5a6682f1461075d578063fe575a871461077d578063ffb54a99146107b657005b8063cb96372814610642578063dd62ed3e14610662578063e01af92c146106a8578063e1baae1f146106c8578063e99c9d09146106e857005b8063a901dd92116100ff578063a901dd9214610596578063a9059cbb146105b6578063a985ceef146105d6578063aa4bde28146105f7578063afa4f3b21461060d578063bb57ad201461062d57005b80638da5cb5b146104e957806395d89b41146105115780639e93ad8e1461053e578063a64e4f8a14610554578063a8602fea1461057657005b80635932ead1116101cb5780636ddd1713116101925780636ddd17131461043357806370a0823114610453578063715018a614610489578063751039fc1461049e57806388e765ff146104b35780638b4cee08146104c957005b80635932ead1146103bc5780635c068a8c146103dc57806366d602ae146103f257806367c45349146104085780636b2fb1241461041d57005b806314626dc61161020f57806314626dc61461031d57806318160ddd1461033d57806323b872dd1461036057806327a14fc214610380578063313ce567146103a057005b806301339c211461025157806306fdde0314610266578063095ea7b3146102ad5780630cc835a3146102dd578063105222f9146102fd57005b3661024f57005b005b34801561025d57600080fd5b5061024f6107d0565b34801561027257600080fd5b5060408051808201909152600c81526b2a39bab5b0902432b63832b960a11b60208201525b6040516102a491906123fd565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004612470565b610bfc565b60405190151581526020016102a4565b3480156102e957600080fd5b5061024f6102f836600461249c565b610c13565b34801561030957600080fd5b5061024f6103183660046124e4565b610c71565b34801561032957600080fd5b5061024f61033836600461249c565b610ce5565b34801561034957600080fd5b50610352610cf2565b6040519081526020016102a4565b34801561036c57600080fd5b506102cd61037b3660046125bb565b610d13565b34801561038c57600080fd5b5061024f61039b36600461249c565b610d77565b3480156103ac57600080fd5b50604051601281526020016102a4565b3480156103c857600080fd5b5061024f6103d73660046125fc565b610e0c565b3480156103e857600080fd5b50610352600d5481565b3480156103fe57600080fd5b50610352600a5481565b34801561041457600080fd5b5061024f610e32565b34801561042957600080fd5b50610352600f5481565b34801561043f57600080fd5b506008546102cd9062010000900460ff1681565b34801561045f57600080fd5b5061035261046e366004612619565b6001600160a01b031660009081526003602052604090205490565b34801561049557600080fd5b5061024f610e75565b3480156104aa57600080fd5b5061024f610e89565b3480156104bf57600080fd5b5061035260095481565b3480156104d557600080fd5b5061024f6104e436600461249c565b610ef9565b3480156104f557600080fd5b506000546040516001600160a01b0390911681526020016102a4565b34801561051d57600080fd5b50604080518082019091526004815263048454c560e41b6020820152610297565b34801561054a57600080fd5b506103526103e881565b34801561056057600080fd5b506008546102cd90640100000000900460ff1681565b34801561058257600080fd5b5061024f610591366004612619565b610f57565b3480156105a257600080fd5b5061024f6105b13660046125fc565b611046565b3480156105c257600080fd5b506102cd6105d1366004612470565b61106e565b3480156105e257600080fd5b506008546102cd906301000000900460ff1681565b34801561060357600080fd5b50610352600b5481565b34801561061957600080fd5b5061024f61062836600461249c565b61107b565b34801561063957600080fd5b5061024f611188565b34801561064e57600080fd5b5061024f61065d366004612619565b6111bc565b34801561066e57600080fd5b5061035261067d366004612636565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106b457600080fd5b5061024f6106c33660046125fc565b6113c1565b3480156106d457600080fd5b5061024f6106e33660046124e4565b6113e5565b3480156106f457600080fd5b5061024f61070336600461249c565b611454565b34801561071457600080fd5b5061024f610723366004612619565b6114e9565b34801561073457600080fd5b5061024f61074336600461249c565b61155f565b34801561075457600080fd5b5061024f6115f4565b34801561076957600080fd5b5061024f6107783660046124e4565b61166b565b34801561078957600080fd5b506102cd610798366004612619565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107c257600080fd5b506008546102cd9060ff1681565b6107d86116da565b60085460ff16156108305760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561087e90309061086b6012600a612769565b61087990633b9aca00612778565b611734565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f5919061278f565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061278f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec919061278f565b601480546001600160a01b039283166001600160a01b03199091161790556001541663f305d7194730610a34816001600160a01b031660009081526003602052604090205490565b600080610a496000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ab1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad691906127ac565b50506008805463ffff00001916630101000017905550610b1c6064610b166001610b026012600a612769565b610b1090633b9aca00612778565b90611869565b9061187c565b600955610b356064610b166001610b026012600a612769565b600a81905550610b536064610b1660016012600a610b029190612769565b600b55610b6d612710610b166005610b026012600a612769565b6012556008805460ff19166001908117909155601454905460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906127da565b50565b6000610c09338484611734565b5060015b92915050565b610c1b6116da565b6064811115610c6c5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203130250000006044820152606401610827565b600d55565b610c796116da565b60005b8251811015610ce0578160056000858481518110610c9c57610c9c6127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cd88161280d565b915050610c7c565b505050565b610ced6116da565b600c55565b6000610d006012600a612769565b610d0e90633b9aca00612778565b905090565b6000610d20848484611888565b610d6d843361087985604051806060016040528060288152602001612920602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611f76565b5060019392505050565b610d7f6116da565b610d926103e8610b166001610b10610cf2565b811015610e075760405162461bcd60e51b815260206004820152603960248201527f4d61782077616c6c657420616d6f756e742063616e6e6f74206265206c6f776560448201527f72207468616e20302e312520746f74616c20737570706c792e000000000000006064820152608401610827565b600b55565b610e146116da565b6008805491151563010000000263ff00000019909216919091179055565b6013546001600160a01b03163314610e5c5760405162461bcd60e51b815260040161082790612826565b30600090815260036020526040902054610bf981611fa2565b610e7d6116da565b610e8760006120fc565b565b610e916116da565b610e9d6012600a612769565b610eab90633b9aca00612778565b600955610eba6012600a612769565b610ec890633b9aca00612778565b600a908155610ed990601290612769565b610ee790633b9aca00612778565b600b556008805463ff00000019169055565b610f016116da565b6064811115610f525760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772031302500006044820152606401610827565b600f55565b610f5f6116da565b6016546001600160a01b0390811690821603610fc85760405162461bcd60e51b815260206004820152602260248201527f747265617375727957616c6c657420616464726573732063616e6e6f74206265604482015261020360f41b6064820152608401610827565b601380546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600680845282862080548316905587546001600160a01b03191698871698891788559785529282528084208054841660019081179091559554909416835294909452208054909216179055565b61104e6116da565b600880549115156401000000000264ff0000000019909216919091179055565b6000610c09338484611888565b6110836116da565b611097620186a0610b166001610b10610cf2565b8110156111045760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610827565b6111176103e8610b166005610b10610cf2565b8111156111835760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610827565b601255565b6013546001600160a01b031633146111b25760405162461bcd60e51b815260040161082790612826565b47610bf98161214c565b6013546001600160a01b031633146111e65760405162461bcd60e51b815260040161082790612826565b306001600160a01b0382160361123e5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207769746864726177207468697320746f6b656e0000000000006044820152606401610827565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a9919061284d565b116112e25760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610827565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134d919061284d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561139d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce091906127da565b6113c96116da565b60088054911515620100000262ff000019909216919091179055565b6113ed6116da565b60005b8251811015610ce0578160076000858481518110611410576114106127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061144c8161280d565b9150506113f0565b61145c6116da565b61146f612710610b166001610b10610cf2565b8110156114e45760405162461bcd60e51b815260206004820152603860248201527f4d61782073656c6c20616d6f756e742063616e6e6f74206265206c6f7765722060448201527f7468616e20302e30312520746f74616c20737570706c792e00000000000000006064820152608401610827565b600a55565b6114f16116da565b6001600160a01b0381166115565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610827565b610bf9816120fc565b6115676116da565b61157a612710610b166001610b10610cf2565b8110156115ef5760405162461bcd60e51b815260206004820152603760248201527f4d61782062757920616d6f756e742063616e6e6f74206265206c6f776572207460448201527f68616e20302e30312520746f74616c20737570706c792e0000000000000000006064820152608401610827565b600955565b6013546001600160a01b0316331461161e5760405162461bcd60e51b815260040161082790612826565b604051600090339047908381818185875af1925050503d8060008114611660576040519150601f19603f3d011682016040523d82523d6000602084013e611665565b606091505b50505050565b6116736116da565b60005b8251811015610ce0578160066000858481518110611696576116966127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116d28161280d565b915050611676565b6000546001600160a01b03163314610e875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610827565b6016546001600160a01b039081169084160361179e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610827565b6016546001600160a01b03908116908316036118075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610827565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006118758284612778565b9392505050565b60006118758284612866565b6016546001600160a01b03908116908416036118f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610827565b6016546001600160a01b039081169083160361195e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610827565b600081116119c05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610827565b600160006119d66000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015611a0557506000546001600160a01b03858116911614155b8015611a1f57506016546001600160a01b03858116911614155b8015611a3957506015546001600160a01b03858116911614155b8015611a4d5750600854610100900460ff16155b15611e42576001600160a01b03851660009081526007602052604090205460ff16158015611a9457506001600160a01b03841660009081526007602052604090205460ff16155b611a9d57600080fd5b60085460ff16611b32576001600160a01b03851660009081526005602052604090205460ff1680611ae657506001600160a01b03841660009081526005602052604090205460ff165b611b325760405162461bcd60e51b815260206004820152601b60248201527f54726164696e67206973206e6f7420616c6c6f776564207965742e00000000006044820152606401610827565b6008546301000000900460ff1615611c44576001546001600160a01b03858116911614801590611b7057506014546001600160a01b03858116911614155b15611c4457600c54611b829043612888565b32600090815260026020526040902054108015611bc25750600c54611ba79043612888565b6001600160a01b038516600090815260026020526040902054105b611c1f5760405162461bcd60e51b815260206004820152602860248201527f5472616e736665722064656c617920656e61626c65642e20547279206167616960448201526737103630ba32b91760c11b6064820152608401610827565b3260009081526002602052604080822043908190556001600160a01b03871683529120555b6014546001600160a01b038681169116148015611c6f57506001546001600160a01b03858116911614155b8015611c9457506001600160a01b03841660009081526006602052604090205460ff16155b15611d8457600954831115611cfd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610827565b600b5483611d20866001600160a01b031660009081526003602052604090205490565b611d2a919061289b565b1115611d845760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610827565b6014546001600160a01b038581169116148015611daf57506001546001600160a01b03868116911614155b8015611dd457506001600160a01b03851660009081526006602052604090205460ff16155b15611e4257600a54831115611e3e5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610827565b5060015b6001600160a01b03851660009081526005602052604090205460ff1680611e8157506001600160a01b03841660009081526005602052604090205460ff165b80611e975750600854640100000000900460ff16155b15611ea157600091505b306000908152600360205260408120549050600060125482118015611ec35750825b9050808015611eda575060085462010000900460ff165b8015611eee5750600854610100900460ff16155b8015611f1357506001600160a01b03871660009081526005602052604090205460ff16155b8015611f3857506001600160a01b03861660009081526005602052604090205460ff16155b15611f60576008805461ff001916610100179055611f5461218a565b6008805461ff00191690555b611f6d878787878761223f565b50505050505050565b60008184841115611f9a5760405162461bcd60e51b815260040161082791906123fd565b505050900390565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fd757611fd76127f7565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612030573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612054919061278f565b81600181518110612067576120676127f7565b6001600160a01b03928316602091820292909201015260015461208d9130911684611734565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906120c69085906000908690309042906004016128ae565b600060405180830381600087803b1580156120e057600080fd5b505af11580156120f4573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612186573d6000803e3d6000fd5b5050565b30600090815260036020526040812054908115806121a85750601154155b156121b1575050565b6012546121bf906005612778565b8211156121d7576012546121d4906005612778565b91505b6121e082611fa2565b600060118190556013546040516001600160a01b039091169147919081818185875af1925050503d8060008114612233576040519150601f19603f3d011682016040523d82523d6000602084013e612238565b606091505b5050505050565b816122515761224c612280565b61225f565b61225c8584836122ae565b92505b61226a858585612327565b8161223857612238600e54600d55601054600f55565b600d541580156122905750600f54155b1561229757565b600d8054600e55600f805460105560009182905555565b6000806122ba836123cd565b905060008115612302576122d46103e8610b168785611869565b9050816122e18183612778565b6122eb9190612866565b601160008282546122fc919061289b565b90915550505b801561231357612313863083612327565b61231d8186612888565b9695505050505050565b6001600160a01b03831660009081526003602052604090205461234a90826123e5565b6001600160a01b03808516600090815260036020526040808220939093559084168152205461237990826123f1565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061185c9085815260200190565b600081156123dd575050600f5490565b5050600d5490565b60006118758284612888565b6000611875828461289b565b600060208083528351808285015260005b8181101561242a5785810183015185820160400152820161240e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bf957600080fd5b803561246b8161244b565b919050565b6000806040838503121561248357600080fd5b823561248e8161244b565b946020939093013593505050565b6000602082840312156124ae57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b8015158114610bf957600080fd5b803561246b816124cb565b600080604083850312156124f757600080fd5b823567ffffffffffffffff8082111561250f57600080fd5b818501915085601f83011261252357600080fd5b8135602082821115612537576125376124b5565b8160051b604051601f19603f8301168101818110868211171561255c5761255c6124b5565b60405292835281830193508481018201928984111561257a57600080fd5b948201945b8386101561259f5761259086612460565b8552948201949382019361257f565b96506125ae90508782016124d9565b9450505050509250929050565b6000806000606084860312156125d057600080fd5b83356125db8161244b565b925060208401356125eb8161244b565b929592945050506040919091013590565b60006020828403121561260e57600080fd5b8135611875816124cb565b60006020828403121561262b57600080fd5b81356118758161244b565b6000806040838503121561264957600080fd5b82356126548161244b565b915060208301356126648161244b565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156126c05781600019048211156126a6576126a661266f565b808516156126b357918102915b93841c939080029061268a565b509250929050565b6000826126d757506001610c0d565b816126e457506000610c0d565b81600181146126fa576002811461270457612720565b6001915050610c0d565b60ff8411156127155761271561266f565b50506001821b610c0d565b5060208310610133831016604e8410600b8410161715612743575081810a610c0d565b61274d8383612685565b80600019048211156127615761276161266f565b029392505050565b600061187560ff8416836126c8565b8082028115828204841417610c0d57610c0d61266f565b6000602082840312156127a157600080fd5b81516118758161244b565b6000806000606084860312156127c157600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156127ec57600080fd5b8151611875816124cb565b634e487b7160e01b600052603260045260246000fd5b60006001820161281f5761281f61266f565b5060010190565b6020808252600d908201526c2ab730baba3437b934bd32b21760991b604082015260600190565b60006020828403121561285f57600080fd5b5051919050565b60008261288357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c0d57610c0d61266f565b80820180821115610c0d57610c0d61266f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128fe5784516001600160a01b0316835293830193918301916001016128d9565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f8b70f8785a75c98a2de699818d42abe348b4f83a544839bf727c28510441a9c64736f6c63430008110033
Deployed Bytecode Sourcemap
18935:14360:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26670:917;;;;;;;;;;;;;:::i;21230:83::-;;;;;;;;;;-1:-1:-1;21300:5:0;;;;;;;;;;;;-1:-1:-1;;;21300:5:0;;;;21230:83;;;;;;;:::i;:::-;;;;;;;;22064:161;;;;;;;;;;-1:-1:-1;22064:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;22064:161:0;1162:187:1;29747:193:0;;;;;;;;;;-1:-1:-1;29747:193:0;;;;;:::i;:::-;;:::i;29145:185::-;;;;;;;;;;-1:-1:-1;29145:185:0;;;;;:::i;:::-;;:::i;30155:103::-;;;;;;;;;;-1:-1:-1;30155:103:0;;;;;:::i;:::-;;:::i;21507:96::-;;;;;;;;;;;;;:::i;:::-;;;3269:25:1;;;3257:2;3242:18;21507:96:0;3123:177:1;22233:313:0;;;;;;;;;;-1:-1:-1;22233:313:0;;;;;:::i;:::-;;:::i;28061:233::-;;;;;;;;;;-1:-1:-1;28061:233:0;;;;;:::i;:::-;;:::i;21416:83::-;;;;;;;;;;-1:-1:-1;21416:83:0;;19767:2;3908:36:1;;3896:2;3881:18;21416:83:0;3766:184:1;22554:99:0;;;;;;;;;;-1:-1:-1;22554:99:0;;;;;:::i;:::-;;:::i;20072:34::-;;;;;;;;;;;;;;;;19887:39;;;;;;;;;;;;;;;;32062:203;;;;;;;;;;;;;:::i;20176:35::-;;;;;;;;;;;;;;;;19511:31;;;;;;;;;;-1:-1:-1;19511:31:0;;;;;;;;;;;21611:119;;;;;;;;;;-1:-1:-1;21611:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;21704:18:0;21677:7;21704:18;;;:9;:18;;;;;;;21611:119;2724:103;;;;;;;;;;;;;:::i;33101:189::-;;;;;;;;;;;;;:::i;19842:38::-;;;;;;;;;;;;;;;;29948:199;;;;;;;;;;-1:-1:-1;29948:199:0;;;;;:::i;:::-;;:::i;2076:87::-;;;;;;;;;;-1:-1:-1;2122:7:0;2149:6;2076:87;;-1:-1:-1;;;;;2149:6:0;;;4599:51:1;;4587:2;4572:18;2076:87:0;4453:203:1;21321:87:0;;;;;;;;;;-1:-1:-1;21393:7:0;;;;;;;;;;;;-1:-1:-1;;;21393:7:0;;;;21321:87;;20023:42;;;;;;;;;;;;20061:4;20023:42;;19591:30;;;;;;;;;;-1:-1:-1;19591:30:0;;;;;;;;;;;28680:457;;;;;;;;;;-1:-1:-1;28680:457:0;;;;;:::i;:::-;;:::i;22760:91::-;;;;;;;;;;-1:-1:-1;22760:91:0;;;;;:::i;:::-;;:::i;21738:167::-;;;;;;;;;;-1:-1:-1;21738:167:0;;;;;:::i;:::-;;:::i;19549:35::-;;;;;;;;;;-1:-1:-1;19549:35:0;;;;;;;;;;;19933:41;;;;;;;;;;;;;;;;28306:366;;;;;;;;;;-1:-1:-1;28306:366:0;;;;;:::i;:::-;;:::i;32277:210::-;;;;;;;;;;;;;:::i;32716:377::-;;;;;;;;;;-1:-1:-1;32716:377:0;;;;;:::i;:::-;;:::i;21913:143::-;;;;;;;;;;-1:-1:-1;21913:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;22021:18:0;;;21994:7;22021:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21913:143;22661:91;;;;;;;;;;-1:-1:-1;22661:91:0;;;;;:::i;:::-;;:::i;29560:179::-;;;;;;;;;;-1:-1:-1;29560:179:0;;;;;:::i;:::-;;:::i;27823:226::-;;;;;;;;;;-1:-1:-1;27823:226:0;;;;;:::i;:::-;;:::i;2982:201::-;;;;;;;;;;-1:-1:-1;2982:201:0;;;;;:::i;:::-;;:::i;27595:220::-;;;;;;;;;;-1:-1:-1;27595:220:0;;;;;:::i;:::-;;:::i;32495:213::-;;;;;;;;;;;;;:::i;29342:206::-;;;;;;;;;;-1:-1:-1;29342:206:0;;;;;:::i;:::-;;:::i;26542:116::-;;;;;;;;;;-1:-1:-1;26542:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;26628:22:0;26604:4;26628:22;;;:14;:22;;;;;;;;;26542:116;19452:23;;;;;;;;;;-1:-1:-1;19452:23:0;;;;;;;;26670:917;1962:13;:11;:13::i;:::-;26725:11:::1;::::0;::::1;;26724:12;26716:47;;;::::0;-1:-1:-1;;;26716:47:0;;5256:2:1;26716:47:0::1;::::0;::::1;5238:21:1::0;5295:2;5275:18;;;5268:30;5334:25;5314:18;;;5307:53;5377:18;;26716:47:0::1;;;;;;;;;26774:16;:81:::0;;-1:-1:-1;;;;;;26774:81:0::1;26812:42;26774:81:::0;;::::1;::::0;;;26866:60:::1;::::0;26883:4:::1;::::0;19821:13:::1;19767:2;19821;:13;:::i;:::-;19814:21;::::0;:3:::1;:21;:::i;:::-;26866:8;:60::i;:::-;26972:16;;;;;;;;;-1:-1:-1::0;;;;;26972:16:0::1;-1:-1:-1::0;;;;;26972:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26954:56:0::1;;27019:4;27026:16;;;;;;;;;-1:-1:-1::0;;;;;27026:16:0::1;-1:-1:-1::0;;;;;27026:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26954:96;::::0;-1:-1:-1;;;;;;26954:96:0::1;::::0;;;;;;-1:-1:-1;;;;;7580:15:1;;;26954:96:0::1;::::0;::::1;7562:34:1::0;7632:15;;7612:18;;;7605:43;7497:18;;26954:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26937:14;:113:::0;;-1:-1:-1;;;;;26937:113:0;;::::1;-1:-1:-1::0;;;;;;26937:113:0;;::::1;;::::0;;;27061:16;::::1;:32;27101:21;27132:4;27138:24;27132:4:::0;-1:-1:-1;;;;;21704:18:0;21677:7;21704:18;;;:9;:18;;;;;;;21611:119;27138:24:::1;27163:1;27165::::0;27167:7:::1;2122::::0;2149:6;-1:-1:-1;;;;;2149:6:0;;2076:87;27167:7:::1;27061:130;::::0;::::1;::::0;;;-1:-1:-1;;;;;;27061:130:0;;;-1:-1:-1;;;;;8018:15:1;;;27061:130:0::1;::::0;::::1;8000:34:1::0;8050:18;;;8043:34;;;;8093:18;;;8086:34;;;;8136:18;;;8129:34;8200:15;;;8179:19;;;8172:44;27175:15:0::1;8232:19:1::0;;;8225:35;7934:19;;27061:130:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;27202:11:0::1;:18:::0;;-1:-1:-1;;27231:22:0;;;;;-1:-1:-1;27279:24:0::1;27299:3;27279:15;-1:-1:-1::0;19821:13:0::1;19767:2;19821;:13;:::i;:::-;19814:21;::::0;:3:::1;:21;:::i;:::-;27279:12:::0;::::1;:15::i;:::-;:19:::0;::::1;:24::i;:::-;27264:12;:39:::0;27330:24:::1;27350:3;27330:15;27343:1;19821:13;19767:2;19821;:13;:::i;27330:24::-;27314:13;:40;;;;27383:24;27403:3;27383:15;27396:1;19767:2;19821;:13;;;;:::i;27383:24::-;27365:15;:42:::0;27440:26:::1;27460:5;27440:15;27453:1;19821:13;19767:2;19821;:13;:::i;27440:26::-;27418:19;:48:::0;27477:11:::1;:18:::0;;-1:-1:-1;;27477:18:0::1;27491:4;27477:18:::0;;::::1;::::0;;;27513:14:::1;::::0;27545:16;;27506:73:::1;::::0;-1:-1:-1;;;27506:73:0;;-1:-1:-1;;;;;27545:16:0;;::::1;27506:73;::::0;::::1;8756:51:1::0;-1:-1:-1;;8823:18:1;;;8816:34;27513:14:0;::::1;::::0;27506:30:::1;::::0;8729:18:1;;27506:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26670:917::o:0;22064:161::-;22139:4;22156:39;766:10;22179:7;22188:6;22156:8;:39::i;:::-;-1:-1:-1;22213:4:0;22064:161;;;;;:::o;29747:193::-;1962:13;:11;:13::i;:::-;29850:3:::1;29829:17;:24;;29821:66;;;::::0;-1:-1:-1;;;29821:66:0;;9313:2:1;29821:66:0::1;::::0;::::1;9295:21:1::0;9352:2;9332:18;;;9325:30;9391:31;9371:18;;;9364:59;9440:18;;29821:66:0::1;9111:353:1::0;29821:66:0::1;29898:14;:34:::0;29747:193::o;29145:185::-;1962:13;:11;:13::i;:::-;29245:6:::1;29240:82;29261:8;:15;29257:1;:19;29240:82;;;29318:4;29283:19;:32;29303:8;29312:1;29303:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29283:32:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29283:32:0;:39;;-1:-1:-1;;29283:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29278:3;::::1;::::0;::::1;:::i;:::-;;;;29240:82;;;;29145:185:::0;;:::o;30155:103::-;1962:13;:11;:13::i;:::-;30226:15:::1;:24:::0;30155:103::o;21507:96::-;21560:7;19821:13;19767:2;19821;:13;:::i;:::-;19814:21;;:3;:21;:::i;:::-;21580:15;;21507:96;:::o;22233:313::-;22331:4;22348:36;22358:6;22366:9;22377:6;22348:9;:36::i;:::-;22395:121;22404:6;766:10;22426:89;22464:6;22426:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22426:19:0;;;;;;:11;:19;;;;;;;;766:10;22426:33;;;;;;;;;;:37;:89::i;22395:121::-;-1:-1:-1;22534:4:0;22233:313;;;;;:::o;28061:233::-;1962:13;:11;:13::i;:::-;28156:30:::1;28181:4;28156:20;28174:1;28156:13;:11;:13::i;:30::-;28143:8;:44;;28135:114;;;::::0;-1:-1:-1;;;28135:114:0;;9943:2:1;28135:114:0::1;::::0;::::1;9925:21:1::0;9982:2;9962:18;;;9955:30;10021:34;10001:18;;;9994:62;10092:27;10072:18;;;10065:55;10137:19;;28135:114:0::1;9741:421:1::0;28135:114:0::1;28260:15;:26:::0;28061:233::o;22554:99::-;1962:13;:11;:13::i;:::-;22622:15:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22622:23:0;;::::1;::::0;;;::::1;::::0;;22554:99::o;32062:203::-;32120:14;;-1:-1:-1;;;;;32120:14:0;32106:10;:28;32098:54;;;;-1:-1:-1;;;32098:54:0;;;;;;;:::i;:::-;32207:4;32163:23;21704:18;;;:9;:18;;;;;;32224:33;21704:18;32224:16;:33::i;2724:103::-;1962:13;:11;:13::i;:::-;2789:30:::1;2816:1;2789:18;:30::i;:::-;2724:103::o:0;33101:189::-;1962:13;:11;:13::i;:::-;19821::::1;19767:2;19821;:13;:::i;:::-;19814:21;::::0;:3:::1;:21;:::i;:::-;33153:12;:23:::0;19821:13:::1;19767:2;19821;:13;:::i;:::-;19814:21;::::0;:3:::1;:21;:::i;:::-;33187:13;:24:::0;;;19821:13:::1;::::0;19767:2:::1;::::0;19821:13:::1;:::i;:::-;19814:21;::::0;:3:::1;:21;:::i;:::-;33222:15;:26:::0;33259:15:::1;:23:::0;;-1:-1:-1;;33259:23:0::1;::::0;;33101:189::o;29948:199::-;1962:13;:11;:13::i;:::-;30054:3:::1;30032:18;:25;;30024:68;;;::::0;-1:-1:-1;;;30024:68:0;;10711:2:1;30024:68:0::1;::::0;::::1;10693:21:1::0;10750:2;10730:18;;;10723:30;10789:32;10769:18;;;10762:60;10839:18;;30024:68:0::1;10509:354:1::0;30024:68:0::1;30103:15;:36:::0;29948:199::o;28680:457::-;1962:13;:11;:13::i;:::-;28793:4:::1;::::0;-1:-1:-1;;;;;28793:4:0;;::::1;28771:26:::0;;::::1;::::0;28763:73:::1;;;::::0;-1:-1:-1;;;28763:73:0;;11070:2:1;28763:73:0::1;::::0;::::1;11052:21:1::0;11109:2;11089:18;;;11082:30;11148:34;11128:18;;;11121:62;-1:-1:-1;;;11199:18:1;;;11192:32;11241:19;;28763:73:0::1;10868:398:1::0;28763:73:0::1;28867:14;::::0;;-1:-1:-1;;;;;28867:14:0;;::::1;28885:5;28847:35:::0;;;:19:::1;:35;::::0;;;;;;;:43;;-1:-1:-1;;28847:43:0;;::::1;::::0;;;28933:14;;;::::1;28901:47:::0;;:31:::1;:47:::0;;;;;;:55;;;::::1;::::0;;28967:44;;-1:-1:-1;;;;;;28967:44:0::1;::::0;;::::1;::::0;;::::1;::::0;;29022:35;;;;;;;;;:42;;;::::1;-1:-1:-1::0;29022:42:0;;::::1;::::0;;;29107:14;;;;::::1;29075:47:::0;;;;;;;:54;;;;::::1;;::::0;;28680:457::o;22760:91::-;1962:13;:11;:13::i;:::-;22824:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22824:19:0;;::::1;::::0;;;::::1;::::0;;22760:91::o;21738:167::-;21816:4;21833:42;766:10;21857:9;21868:6;21833:9;:42::i;28306:366::-;1962:13;:11;:13::i;:::-;28408:32:::1;28433:6;28408:20;28426:1;28408:13;:11;:13::i;:32::-;28393:10;:48;;28385:114;;;::::0;-1:-1:-1;;;28385:114:0;;11473:2:1;28385:114:0::1;::::0;::::1;11455:21:1::0;11512:2;11492:18;;;11485:30;11551:34;11531:18;;;11524:62;-1:-1:-1;;;11602:18:1;;;11595:51;11663:19;;28385:114:0::1;11271:417:1::0;28385:114:0::1;28533:30;28558:4;28533:20;28551:1;28533:13;:11;:13::i;:30::-;28518:10;:46;;28510:111;;;::::0;-1:-1:-1;;;28510:111:0;;11895:2:1;28510:111:0::1;::::0;::::1;11877:21:1::0;11934:2;11914:18;;;11907:30;11973:34;11953:18;;;11946:62;-1:-1:-1;;;12024:18:1;;;12017:50;12084:19;;28510:111:0::1;11693:416:1::0;28510:111:0::1;28632:19;:32:::0;28306:366::o;32277:210::-;32343:14;;-1:-1:-1;;;;;32343:14:0;32329:10;:28;32321:54;;;;-1:-1:-1;;;32321:54:0;;;;;;;:::i;:::-;32415:21;32447:32;32415:21;32447:12;:32::i;32716:377::-;32798:14;;-1:-1:-1;;;;;32798:14:0;32784:10;:28;32776:54;;;;-1:-1:-1;;;32776:54:0;;;;;;;:::i;:::-;32864:4;-1:-1:-1;;;;;32849:20:0;;;32841:59;;;;-1:-1:-1;;;32841:59:0;;12316:2:1;32841:59:0;;;12298:21:1;12355:2;12335:18;;;12328:30;12394:28;12374:18;;;12367:56;12440:18;;32841:59:0;12114:350:1;32841:59:0;32919:36;;-1:-1:-1;;;32919:36:0;;32949:4;32919:36;;;4599:51:1;32958:1:0;;-1:-1:-1;;;;;32919:21:0;;;;;4572:18:1;;32919:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;32911:62;;;;-1:-1:-1;;;32911:62:0;;12860:2:1;32911:62:0;;;12842:21:1;12899:1;12879:18;;;12872:29;-1:-1:-1;;;12917:18:1;;;12910:39;12966:18;;32911:62:0;12658:332:1;32911:62:0;32998:36;;-1:-1:-1;;;32998:36:0;;33028:4;32998:36;;;4599:51:1;32984:11:0;;-1:-1:-1;;;;;32998:21:0;;;;;4572:18:1;;32998:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33045:40;;-1:-1:-1;;;33045:40:0;;33066:10;33045:40;;;8756:51:1;8823:18;;;8816:34;;;32984:50:0;;-1:-1:-1;;;;;;33045:20:0;;;;;8729:18:1;;33045:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22661:91::-;1962:13;:11;:13::i;:::-;22725:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22725:19:0;;::::1;::::0;;;::::1;::::0;;22661:91::o;29560:179::-;1962:13;:11;:13::i;:::-;29657:6:::1;29652:79;29673:8;:15;29669:1;:19;29652:79;;;29725:6;29695:14;:27;29710:8;29719:1;29710:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29695:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29695:27:0;:36;;-1:-1:-1;;29695:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29690:3;::::1;::::0;::::1;:::i;:::-;;;;29652:79;;27823:226:::0;1962:13;:11;:13::i;:::-;27914:31:::1;27939:5;27914:20;27932:1;27914:13;:11;:13::i;:31::-;27902:7;:44;;27894:113;;;::::0;-1:-1:-1;;;27894:113:0;;13197:2:1;27894:113:0::1;::::0;::::1;13179:21:1::0;13236:2;13216:18;;;13209:30;13275:34;13255:18;;;13248:62;13346:26;13326:18;;;13319:54;13390:19;;27894:113:0::1;12995:420:1::0;27894:113:0::1;28018:13;:23:::0;27823:226::o;2982:201::-;1962:13;:11;:13::i;:::-;-1:-1:-1;;;;;3071:22:0;::::1;3063:73;;;::::0;-1:-1:-1;;;3063:73:0;;13622:2:1;3063:73:0::1;::::0;::::1;13604:21:1::0;13661:2;13641:18;;;13634:30;13700:34;13680:18;;;13673:62;-1:-1:-1;;;13751:18:1;;;13744:36;13797:19;;3063:73:0::1;13420:402:1::0;3063:73:0::1;3147:28;3166:8;3147:18;:28::i;27595:220::-:0;1962:13;:11;:13::i;:::-;27683:31:::1;27708:5;27683:20;27701:1;27683:13;:11;:13::i;:31::-;27672:6;:43;;27664:111;;;::::0;-1:-1:-1;;;27664:111:0;;14029:2:1;27664:111:0::1;::::0;::::1;14011:21:1::0;14068:2;14048:18;;;14041:30;14107:34;14087:18;;;14080:62;14178:25;14158:18;;;14151:53;14221:19;;27664:111:0::1;13827:419:1::0;27664:111:0::1;27786:12;:21:::0;27595:220::o;32495:213::-;32563:14;;-1:-1:-1;;;;;32563:14:0;32549:10;:28;32541:54;;;;-1:-1:-1;;;32541:54:0;;;;;;;:::i;:::-;32642:58;;32606:12;;32650:10;;32674:21;;32606:12;32642:58;32606:12;32642:58;32674:21;32650:10;32642:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;32495:213:0:o;29342:206::-;1962:13;:11;:13::i;:::-;29451:6:::1;29446:94;29467:8;:15;29463:1;:19;29446:94;;;29536:4;29489:31;:44;29521:8;29530:1;29521:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29489:44:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29489:44:0;:51;;-1:-1:-1;;29489:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29484:3;::::1;::::0;::::1;:::i;:::-;;;;29446:94;;2241:132:::0;2122:7;2149:6;-1:-1:-1;;;;;2149:6:0;766:10;2305:23;2297:68;;;;-1:-1:-1;;;2297:68:0;;14663:2:1;2297:68:0;;;14645:21:1;;;14682:18;;;14675:30;14741:34;14721:18;;;14714:62;14793:18;;2297:68:0;14461:356:1;22859:323:0;22961:4;;-1:-1:-1;;;;;22961:4:0;;;22952:13;;;;22944:62;;;;-1:-1:-1;;;22944:62:0;;15024:2:1;22944:62:0;;;15006:21:1;15063:2;15043:18;;;15036:30;15102:34;15082:18;;;15075:62;-1:-1:-1;;;15153:18:1;;;15146:34;15197:19;;22944:62:0;14822:400:1;22944:62:0;23036:4;;-1:-1:-1;;;;;23036:4:0;;;23025:15;;;;23017:62;;;;-1:-1:-1;;;23017:62:0;;15429:2:1;23017:62:0;;;15411:21:1;15468:2;15448:18;;;15441:30;15507:34;15487:18;;;15480:62;-1:-1:-1;;;15558:18:1;;;15551:32;15600:19;;23017:62:0;15227:398:1;23017:62:0;-1:-1:-1;;;;;23090:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23142:32;;3269:25:1;;;23142:32:0;;3242:18:1;23142:32:0;;;;;;;;22859:323;;;:::o;9911:98::-;9969:7;9996:5;10000:1;9996;:5;:::i;:::-;9989:12;9911:98;-1:-1:-1;;;9911:98:0:o;10310:::-;10368:7;10395:5;10399:1;10395;:5;:::i;23190:2255::-;23286:4;;-1:-1:-1;;;;;23286:4:0;;;23278:12;;;;23270:62;;;;-1:-1:-1;;;23270:62:0;;16054:2:1;23270:62:0;;;16036:21:1;16093:2;16073:18;;;16066:30;16132:34;16112:18;;;16105:62;-1:-1:-1;;;16183:18:1;;;16176:35;16228:19;;23270:62:0;15852:401:1;23270:62:0;23357:4;;-1:-1:-1;;;;;23357:4:0;;;23351:10;;;;23343:58;;;;-1:-1:-1;;;23343:58:0;;16460:2:1;23343:58:0;;;16442:21:1;16499:2;16479:18;;;16472:30;16538:34;16518:18;;;16511:62;-1:-1:-1;;;16589:18:1;;;16582:33;16632:19;;23343:58:0;16258:399:1;23343:58:0;23429:1;23420:6;:10;23412:64;;;;-1:-1:-1;;;23412:64:0;;16864:2:1;23412:64:0;;;16846:21:1;16903:2;16883:18;;;16876:30;16942:34;16922:18;;;16915:62;-1:-1:-1;;;16993:18:1;;;16986:39;17042:19;;23412:64:0;16662:405:1;23412:64:0;23502:4;23487:12;23563:7;2122;2149:6;-1:-1:-1;;;;;2149:6:0;;2076:87;23563:7;-1:-1:-1;;;;;23555:15:0;:4;-1:-1:-1;;;;;23555:15:0;;;:32;;;;-1:-1:-1;2122:7:0;2149:6;-1:-1:-1;;;;;23574:13:0;;;2149:6;;23574:13;;23555:32;:46;;;;-1:-1:-1;23597:4:0;;-1:-1:-1;;;;;23591:10:0;;;23597:4;;23591:10;;23555:46;:60;;;;-1:-1:-1;23611:4:0;;-1:-1:-1;;;;;23605:10:0;;;23611:4;;23605:10;;23555:60;:74;;;;-1:-1:-1;23620:9:0;;;;;;;23619:10;23555:74;23551:1356;;;-1:-1:-1;;;;;23655:20:0;;;;;;:14;:20;;;;;;;;23654:21;:44;;;;-1:-1:-1;;;;;;23680:18:0;;;;;;:14;:18;;;;;;;;23679:19;23654:44;23646:53;;;;;;23720:11;;;;23716:109;;-1:-1:-1;;;;;23741:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;23770:23:0;;;;;;:19;:23;;;;;;;;23741:52;23733:92;;;;-1:-1:-1;;;23733:92:0;;17274:2:1;23733:92:0;;;17256:21:1;17313:2;17293:18;;;17286:30;17352:29;17332:18;;;17325:57;17399:18;;23733:92:0;17072:351:1;23733:92:0;23846:15;;;;;;;23842:433;;;23900:16;;-1:-1:-1;;;;;23886:31:0;;;23900:16;;23886:31;;;;:64;;-1:-1:-1;23935:14:0;;-1:-1:-1;;;;;23921:29:0;;;23935:14;;23921:29;;23886:64;23882:378;;;24021:15;;24006:30;;:12;:30;:::i;:::-;23993:9;23983:20;;;;:9;:20;;;;;;:53;:103;;;;-1:-1:-1;24071:15:0;;24056:30;;:12;:30;:::i;:::-;-1:-1:-1;;;;;24040:13:0;;;;;;:9;:13;;;;;;:46;23983:103;23975:156;;;;-1:-1:-1;;;23975:156:0;;17763:2:1;23975:156:0;;;17745:21:1;17802:2;17782:18;;;17775:30;17841:34;17821:18;;;17814:62;-1:-1:-1;;;17892:18:1;;;17885:38;17940:19;;23975:156:0;17561:404:1;23975:156:0;24164:9;24154:20;;;;:9;:20;;;;;;24177:12;24154:35;;;;-1:-1:-1;;;;;24212:13:0;;;;;;:28;23882:378;24303:14;;-1:-1:-1;;;;;24295:22:0;;;24303:14;;24295:22;:57;;;;-1:-1:-1;24335:16:0;;-1:-1:-1;;;;;24321:31:0;;;24335:16;;24321:31;;24295:57;:97;;;;-1:-1:-1;;;;;;24357:35:0;;;;;;:31;:35;;;;;;;;24356:36;24295:97;24291:323;;;24431:12;;24421:6;:22;;24413:76;;;;-1:-1:-1;;;24413:76:0;;18172:2:1;24413:76:0;;;18154:21:1;18211:2;18191:18;;;18184:30;18250:34;18230:18;;;18223:62;-1:-1:-1;;;18301:18:1;;;18294:39;18350:19;;24413:76:0;17970:405:1;24413:76:0;24542:15;;24532:6;24516:13;24526:2;-1:-1:-1;;;;;21704:18:0;21677:7;21704:18;;;:9;:18;;;;;;;21611:119;24516:13;:22;;;;:::i;:::-;:41;;24508:90;;;;-1:-1:-1;;;24508:90:0;;18712:2:1;24508:90:0;;;18694:21:1;18751:2;18731:18;;;18724:30;18790:34;18770:18;;;18763:62;-1:-1:-1;;;18841:18:1;;;18834:34;18885:19;;24508:90:0;18510:400:1;24508:90:0;24652:14;;-1:-1:-1;;;;;24646:20:0;;;24652:14;;24646:20;:57;;;;-1:-1:-1;24686:16:0;;-1:-1:-1;;;;;24670:33:0;;;24686:16;;24670:33;;24646:57;:99;;;;-1:-1:-1;;;;;;24708:37:0;;;;;;:31;:37;;;;;;;;24707:38;24646:99;24642:254;;;24784:13;;24774:6;:23;;24766:78;;;;-1:-1:-1;;;24766:78:0;;19117:2:1;24766:78:0;;;19099:21:1;19156:2;19136:18;;;19129:30;19195:34;19175:18;;;19168:62;-1:-1:-1;;;19246:18:1;;;19239:40;19296:19;;24766:78:0;18915:406:1;24766:78:0;-1:-1:-1;24876:4:0;24642:254;-1:-1:-1;;;;;24922:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24951:23:0;;;;;;:19;:23;;;;;;;;24922:52;:68;;;-1:-1:-1;24979:11:0;;;;;;;24978:12;24922:68;24919:88;;;25002:5;24992:15;;24919:88;25069:4;25020:28;21704:18;;;:9;:18;;;;;;25020:55;;25086:12;25125:19;;25102:20;:42;25101:58;;;;;25149:10;25101:58;25086:73;;25176:7;:22;;;;-1:-1:-1;25187:11:0;;;;;;;25176:22;:36;;;;-1:-1:-1;25203:9:0;;;;;;;25202:10;25176:36;:66;;;;-1:-1:-1;;;;;;25217:25:0;;;;;;:19;:25;;;;;;;;25216:26;25176:66;:94;;;;-1:-1:-1;;;;;;25247:23:0;;;;;;:19;:23;;;;;;;;25246:24;25176:94;25172:200;;;25287:9;:16;;-1:-1:-1;;25287:16:0;;;;;25318:10;:8;:10::i;:::-;25343:9;:17;;-1:-1:-1;;25343:17:0;;;25172:200;25384:53;25399:4;25405:2;25409:6;25417:7;25426:10;25384:14;:53::i;:::-;23259:2186;;;;23190:2255;;;:::o;11452:240::-;11572:7;11633:12;11625:6;;;;11617:29;;;;-1:-1:-1;;;11617:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11668:5:0;;;11452:240::o;25948:474::-;26038:16;;;26052:1;26038:16;;;;;;;;26014:21;;26038:16;;;;;;;;;;-1:-1:-1;26038:16:0;26014:40;;26083:4;26065;26070:1;26065:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26065:23:0;;;:7;;;;;;;;;;:23;;;;26109:16;;:23;;;-1:-1:-1;;;26109:23:0;;;;:16;;;;;:21;;:23;;;;;26065:7;;26109:23;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26099:4;26104:1;26099:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26099:33:0;;;:7;;;;;;;;;:33;26175:16;;26143:63;;26160:4;;26175:16;26194:11;26143:8;:63::i;:::-;26217:16;;:197;;-1:-1:-1;;;26217:197:0;;-1:-1:-1;;;;;26217:16:0;;;;:67;;:197;;26299:11;;26217:16;;26341:4;;26368;;26388:15;;26217:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26003:419;25948:474;:::o;3343:191::-;3417:16;3436:6;;-1:-1:-1;;;;;3453:17:0;;;-1:-1:-1;;;;;;3453:17:0;;;;;;3486:40;;3436:6;;;;;;;3486:40;;3417:16;3486:40;3406:128;3343:191;:::o;26438:96::-;26495:14;;:31;;-1:-1:-1;;;;;26495:14:0;;;;:31;;;;;26519:6;;26495:14;:31;:14;:31;26519:6;26495:14;:31;;;;;;;;;;;;;;;;;;;;;26438:96;:::o;25453:487::-;25536:4;25492:23;21704:18;;;:9;:18;;;;;;;25590:20;;;:47;;-1:-1:-1;25614:18:0;;:23;25590:47;25586:60;;;25639:7;;25453:487::o;25586:60::-;25680:19;;:23;;25702:1;25680:23;:::i;:::-;25662:15;:41;25658:88;;;25723:19;;:23;;25745:1;25723:23;:::i;:::-;25705:41;;25658:88;25759:33;25776:15;25759:16;:33::i;:::-;25835:1;25814:18;:22;;;25878:14;;25870:62;;-1:-1:-1;;;;;25878:14:0;;;;25906:21;;25870:62;;25835:1;25870:62;25906:21;25878:14;25870:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25453:487:0:o;30720:322::-;30846:7;30841:86;;30855:14;:12;:14::i;:::-;30841:86;;;30894:33;30904:6;30912;30920;30894:9;:33::i;:::-;30885:42;;30841:86;30940:44;30958:6;30966:9;30977:6;30940:17;:44::i;:::-;31010:7;31005:29;;31019:15;30620:23;;30603:14;:40;30672:24;;30654:15;:42;30559:145;30266:281;30313:14;;:19;:43;;;;-1:-1:-1;30336:15:0;;:20;30313:43;30309:56;;;30266:281::o;30309:56::-;30403:14;;;30377:23;:40;30455:15;;;30428:24;:42;-1:-1:-1;30491:18:0;;;;30520:19;30266:281::o;31333:485::-;31414:7;31434:18;31455:21;31469:6;31455:13;:21::i;:::-;31434:42;-1:-1:-1;31497:12:0;31524:14;;31520:160;;31562:39;20061:4;31562:22;:6;31573:10;31562;:22::i;:39::-;31555:46;-1:-1:-1;31658:10:0;31638:17;31658:10;31555:46;31638:17;:::i;:::-;:30;;;;:::i;:::-;31616:18;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;31520:160:0;31708:8;;31704:60;;31718:46;31736:6;31752:4;31759;31718:17;:46::i;:::-;31796:14;31806:4;31796:14;;:::i;:::-;;31333:485;-1:-1:-1;;;;;;31333:485:0:o;31050:275::-;-1:-1:-1;;;;;31168:17:0;;;;;;:9;:17;;;;;;:30;;31190:7;31168:21;:30::i;:::-;-1:-1:-1;;;;;31148:17:0;;;;;;;:9;:17;;;;;;:50;;;;31232:20;;;;;;;:33;;31257:7;31232:24;:33::i;:::-;-1:-1:-1;;;;;31209:20:0;;;;;;;:9;:20;;;;;;;:56;;;;31281:36;;;;;;;;;;31309:7;3269:25:1;;3257:2;3242:18;;3123:177;31826:151:0;31883:7;31907:6;31903:34;;;-1:-1:-1;;31922:15:0;;;31826:151::o;31903:34::-;-1:-1:-1;;31955:14:0;;;31826:151::o;9554:98::-;9612:7;9639:5;9643:1;9639;:5;:::i;9173:98::-;9231:7;9258:5;9262:1;9258;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:180::-;1413:6;1466:2;1454:9;1445:7;1441:23;1437:32;1434:52;;;1482:1;1479;1472:12;1434:52;-1:-1:-1;1505:23:1;;1354:180;-1:-1:-1;1354:180:1:o;1539:127::-;1600:10;1595:3;1591:20;1588:1;1581:31;1631:4;1628:1;1621:15;1655:4;1652:1;1645:15;1671:118;1757:5;1750:13;1743:21;1736:5;1733:32;1723:60;;1779:1;1776;1769:12;1794:128;1859:20;;1888:28;1859:20;1888:28;:::i;1927:1191::-;2017:6;2025;2078:2;2066:9;2057:7;2053:23;2049:32;2046:52;;;2094:1;2091;2084:12;2046:52;2134:9;2121:23;2163:18;2204:2;2196:6;2193:14;2190:34;;;2220:1;2217;2210:12;2190:34;2258:6;2247:9;2243:22;2233:32;;2303:7;2296:4;2292:2;2288:13;2284:27;2274:55;;2325:1;2322;2315:12;2274:55;2361:2;2348:16;2383:4;2406:2;2402;2399:10;2396:36;;;2412:18;;:::i;:::-;2458:2;2455:1;2451:10;2490:2;2484:9;2553:2;2549:7;2544:2;2540;2536:11;2532:25;2524:6;2520:38;2608:6;2596:10;2593:22;2588:2;2576:10;2573:18;2570:46;2567:72;;;2619:18;;:::i;:::-;2655:2;2648:22;2705:18;;;2739:15;;;;-1:-1:-1;2781:11:1;;;2777:20;;;2809:19;;;2806:39;;;2841:1;2838;2831:12;2806:39;2865:11;;;;2885:148;2901:6;2896:3;2893:15;2885:148;;;2967:23;2986:3;2967:23;:::i;:::-;2955:36;;2918:12;;;;3011;;;;2885:148;;;3052:6;-1:-1:-1;3077:35:1;;-1:-1:-1;3093:18:1;;;3077:35;:::i;:::-;3067:45;;;;;;1927:1191;;;;;:::o;3305:456::-;3382:6;3390;3398;3451:2;3439:9;3430:7;3426:23;3422:32;3419:52;;;3467:1;3464;3457:12;3419:52;3506:9;3493:23;3525:31;3550:5;3525:31;:::i;:::-;3575:5;-1:-1:-1;3632:2:1;3617:18;;3604:32;3645:33;3604:32;3645:33;:::i;:::-;3305:456;;3697:7;;-1:-1:-1;;;3751:2:1;3736:18;;;;3723:32;;3305:456::o;3955:241::-;4011:6;4064:2;4052:9;4043:7;4039:23;4035:32;4032:52;;;4080:1;4077;4070:12;4032:52;4119:9;4106:23;4138:28;4160:5;4138:28;:::i;4201:247::-;4260:6;4313:2;4301:9;4292:7;4288:23;4284:32;4281:52;;;4329:1;4326;4319:12;4281:52;4368:9;4355:23;4387:31;4412:5;4387:31;:::i;4661:388::-;4729:6;4737;4790:2;4778:9;4769:7;4765:23;4761:32;4758:52;;;4806:1;4803;4796:12;4758:52;4845:9;4832:23;4864:31;4889:5;4864:31;:::i;:::-;4914:5;-1:-1:-1;4971:2:1;4956:18;;4943:32;4984:33;4943:32;4984:33;:::i;:::-;5036:7;5026:17;;;4661:388;;;;;:::o;5406:127::-;5467:10;5462:3;5458:20;5455:1;5448:31;5498:4;5495:1;5488:15;5522:4;5519:1;5512:15;5538:422;5627:1;5670:5;5627:1;5684:270;5705:7;5695:8;5692:21;5684:270;;;5764:4;5760:1;5756:6;5752:17;5746:4;5743:27;5740:53;;;5773:18;;:::i;:::-;5823:7;5813:8;5809:22;5806:55;;;5843:16;;;;5806:55;5922:22;;;;5882:15;;;;5684:270;;;5688:3;5538:422;;;;;:::o;5965:806::-;6014:5;6044:8;6034:80;;-1:-1:-1;6085:1:1;6099:5;;6034:80;6133:4;6123:76;;-1:-1:-1;6170:1:1;6184:5;;6123:76;6215:4;6233:1;6228:59;;;;6301:1;6296:130;;;;6208:218;;6228:59;6258:1;6249:10;;6272:5;;;6296:130;6333:3;6323:8;6320:17;6317:43;;;6340:18;;:::i;:::-;-1:-1:-1;;6396:1:1;6382:16;;6411:5;;6208:218;;6510:2;6500:8;6497:16;6491:3;6485:4;6482:13;6478:36;6472:2;6462:8;6459:16;6454:2;6448:4;6445:12;6441:35;6438:77;6435:159;;;-1:-1:-1;6547:19:1;;;6579:5;;6435:159;6626:34;6651:8;6645:4;6626:34;:::i;:::-;6696:6;6692:1;6688:6;6684:19;6675:7;6672:32;6669:58;;;6707:18;;:::i;:::-;6745:20;;5965:806;-1:-1:-1;;;5965:806:1:o;6776:140::-;6834:5;6863:47;6904:4;6894:8;6890:19;6884:4;6863:47;:::i;6921:168::-;6994:9;;;7025;;7042:15;;;7036:22;;7022:37;7012:71;;7063:18;;:::i;7094:251::-;7164:6;7217:2;7205:9;7196:7;7192:23;7188:32;7185:52;;;7233:1;7230;7223:12;7185:52;7265:9;7259:16;7284:31;7309:5;7284:31;:::i;8271:306::-;8359:6;8367;8375;8428:2;8416:9;8407:7;8403:23;8399:32;8396:52;;;8444:1;8441;8434:12;8396:52;8473:9;8467:16;8457:26;;8523:2;8512:9;8508:18;8502:25;8492:35;;8567:2;8556:9;8552:18;8546:25;8536:35;;8271:306;;;;;:::o;8861:245::-;8928:6;8981:2;8969:9;8960:7;8956:23;8952:32;8949:52;;;8997:1;8994;8987:12;8949:52;9029:9;9023:16;9048:28;9070:5;9048:28;:::i;9469:127::-;9530:10;9525:3;9521:20;9518:1;9511:31;9561:4;9558:1;9551:15;9585:4;9582:1;9575:15;9601:135;9640:3;9661:17;;;9658:43;;9681:18;;:::i;:::-;-1:-1:-1;9728:1:1;9717:13;;9601:135::o;10167:337::-;10369:2;10351:21;;;10408:2;10388:18;;;10381:30;-1:-1:-1;;;10442:2:1;10427:18;;10420:43;10495:2;10480:18;;10167:337::o;12469:184::-;12539:6;12592:2;12580:9;12571:7;12567:23;12563:32;12560:52;;;12608:1;12605;12598:12;12560:52;-1:-1:-1;12631:16:1;;12469:184;-1:-1:-1;12469:184:1:o;15630:217::-;15670:1;15696;15686:132;;15740:10;15735:3;15731:20;15728:1;15721:31;15775:4;15772:1;15765:15;15803:4;15800:1;15793:15;15686:132;-1:-1:-1;15832:9:1;;15630:217::o;17428:128::-;17495:9;;;17516:11;;;17513:37;;;17530:18;;:::i;18380:125::-;18445:9;;;18466:10;;;18463:36;;;18479:18;;:::i;19326:980::-;19588:4;19636:3;19625:9;19621:19;19667:6;19656:9;19649:25;19693:2;19731:6;19726:2;19715:9;19711:18;19704:34;19774:3;19769:2;19758:9;19754:18;19747:31;19798:6;19833;19827:13;19864:6;19856;19849:22;19902:3;19891:9;19887:19;19880:26;;19941:2;19933:6;19929:15;19915:29;;19962:1;19972:195;19986:6;19983:1;19980:13;19972:195;;;20051:13;;-1:-1:-1;;;;;20047:39:1;20035:52;;20142:15;;;;20107:12;;;;20083:1;20001:9;19972:195;;;-1:-1:-1;;;;;;;20223:32:1;;;;20218:2;20203:18;;20196:60;-1:-1:-1;;;20287:3:1;20272:19;20265:35;20184:3;19326:980;-1:-1:-1;;;19326:980:1:o
Swarm Source
ipfs://f8b70f8785a75c98a2de699818d42abe348b4f83a544839bf727c28510441a9c
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.