ETH Price: $2,445.13 (-8.79%)

Token

Amplified Shiba Inu (ASB)
 

Overview

Max Total Supply

10,000,000,000 ASB

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,951,562.5 ASB

Value
$0.00
0x08abf976fe94867f56f722f51a1573ed60d85031
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ASB

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-12
*/

//Amplified Shiba Inu
//https://amplifiedshibainu.dog
//https://t.me/amplifiedshibainu
//https://twitter.com/AmpShibaInu

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.9;


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
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;
}
 
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);
 
    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
 
    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
 
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);
 
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
 
    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;
 
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
 
    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }
 
    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
 
    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
 
    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
 
    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
 
    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
 
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
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);
}
 
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 ASB is ERC20, Ownable { 
    using SafeMath for uint256;
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    address private devWallet;
    address private marketingWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    uint256 public swapTokensAtAmount;
 
    bool private limitsInEffect = true;
    bool private swapEnabled = false;
    bool private tradingActive = false;
    bool private swapping;
 
    uint256 private buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;
    uint256 private buyDevFee;
 
    uint256 private sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;
    uint256 private sellDevFee;
 
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private tokensForDev;
 
    uint256 launchedAt;
  
    mapping (address => bool) private _blacklist;
    mapping (address => bool) public _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) private automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiquidity);
 
    constructor(
        string memory name, 
        string memory ticker,
        uint256 _buyMarketingFee,
        uint256 _buyLiquidityFee,
        uint256 _buyDevFee,
        uint256 _sellDevFee,
        uint256 _sellMarketingFee,
        uint256 _sellLiquidityFee,
        uint256 _totalSupply
        ) ERC20(name, ticker) {
        uint256 totalSupply = _totalSupply * 1e18; 
 
        maxTransactionAmount = totalSupply * 2 / 1000;
        maxWallet = totalSupply * 20 / 1000; 
        swapTokensAtAmount = totalSupply * 5 / 10000; 

        address _dexRouter;

        if(block.chainid == 1){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2
        } else if(block.chainid == 56){
            _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BNB Chain: PCS V2
        } else if(block.chainid == 97){
            _dexRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BNB Chain Testnet: PCS V2
        } else if(block.chainid == 42161){
            _dexRouter = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506; // Arbitrum: SushiSwap
        } else {
            revert("Chain not configured");
        }
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_dexRouter);
 
        excludeFromLimits(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromLimits(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
 
        marketingWallet = address(0xd42AdF6ece5df748582A3aaD4FE63d9d6C95355C);
        devWallet = address(owner());
 
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
 
        excludeFromLimits(owner(), true);
        excludeFromLimits(address(this), true);
        excludeFromLimits(address(0xdead), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(address(owner()), totalSupply);
    }
 
    function enableTrade() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
    }
 
    receive() external payable {}
  
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
        
        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        bool logic = true;

        // if any account belongs to _isExcludedFromFee account then remove logic
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            logic = false;
        }

        if(logic) {
 
            // anti bot logic
            if (block.number <= (launchedAt + 1) && 
                    to != uniswapV2Pair && 
                    to != address(uniswapV2Router)
                ) { 
                _blacklist[to] = true;
            }
    
            uint256 contractTokenBalance = balanceOf(address(this));
    
            bool canSwap = contractTokenBalance >= swapTokensAtAmount;
    
            if( 
                canSwap &&
                swapEnabled &&
                !swapping &&
                !automatedMarketMakerPairs[from] &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                swapping = true;
    
                swapBack();
    
                swapping = false;
            }

        }
 
        bool takeFee = !swapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;

            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
        	amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 devFees = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
 
 
        uint256 ethForLiquidity = ethBalance - ethForMarketing - devFees;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: devFees}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    } 

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }
 
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }
 
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function excludeFromLimits(address wallet, bool excluded) public onlyOwner {
        _isExcludedMaxTransactionAmount[wallet] = excluded;
    }
 
    function excludeFromFees(address wallet, bool excluded) public onlyOwner {
        _isExcludedFromFees[wallet] = excluded;
        emit ExcludeFromFees(wallet, excluded);
    }

    function excludeFromList(address wallet, bool excluded) public onlyOwner {
        _blacklist[wallet] = excluded;
    }

    function updateSettings(
        uint256 _maxTransactionAmount,
        uint256 _maxWallet,
        uint256 _swapTokensAtAmount) external onlyOwner {
            maxTransactionAmount = _maxTransactionAmount;
            maxWallet = _maxWallet;
            swapTokensAtAmount = _swapTokensAtAmount;
    }
 
    function restore(address token) external onlyOwner {
        if (token == 0x0000000000000000000000000000000000000000) {
            payable(msg.sender).call{value: address(this).balance}("");
        } else {
            IERC20 Token = IERC20(token);
            Token.transfer(msg.sender, Token.balanceOf(address(this)));
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"ticker","type":"string"},{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"restore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_swapTokensAtAmount","type":"uint256"}],"name":"updateSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055503480156200006257600080fd5b5060405162005d4238038062005d42833981810160405281019062000088919062000f0c565b88888160039080519060200190620000a292919062000c84565b508060049080519060200190620000bb92919062000c84565b5050506000620000d06200075060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000670de0b6b3a76400008262000187919062001058565b90506103e86002826200019b919062001058565b620001a79190620010e8565b600a819055506103e8601482620001bf919062001058565b620001cb9190620010e8565b600b81905550612710600582620001e3919062001058565b620001ef9190620010e8565b600c81905550600060014614156200021e57737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002d4565b603846141562000245577310ed43c718714eb63d5aa57b78b54704e256024e9050620002d3565b60614614156200026c5773d99d1c33f9fc3444f8101754abc46c52416550d19050620002d2565b61a4b14614156200029457731b02da8cb0d097eb8d57a175b88c7d8b479975069050620002d1565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c89062001181565b60405180910390fd5b5b5b5b6000819050620002ec8160016200075860201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037457600080fd5b505afa15801562000389573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003af919062001208565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041257600080fd5b505afa15801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d919062001208565b6040518363ffffffff1660e01b81526004016200046c9291906200124b565b602060405180830381600087803b1580156200048757600080fd5b505af11580156200049c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c2919062001208565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000537600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200075860201b60201c565b6200056c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200085560201b60201c565b89600f819055508860108190555087601181905550601154601054600f5462000596919062001278565b620005a2919062001278565b600e81905550856013819055508460148190555086601581905550601554601454601354620005d2919062001278565b620005de919062001278565b60128190555073d42adf6ece5df748582a3aad4fe63d9d6c95355c600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000649620008f660201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006ab6200069d620008f660201b60201c565b60016200092060201b60201c565b620006be3060016200092060201b60201c565b620006d361dead60016200092060201b60201c565b620006f5620006e7620008f660201b60201c565b60016200075860201b60201c565b620007083060016200075860201b60201c565b6200071d61dead60016200075860201b60201c565b6200073e62000731620008f660201b60201c565b8462000a6d60201b60201c565b505050505050505050505050620014f8565b600033905090565b620007686200075060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f19062001325565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009306200075060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b99062001325565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a61919062001364565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad790620013d1565b60405180910390fd5b62000af46000838362000c1c60201b60201c565b62000b108160025462000c2160201b62001b4c1790919060201c565b60028190555062000b6e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c2160201b62001b4c1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c10919062001404565b60405180910390a35050565b505050565b600080828462000c32919062001278565b90508381101562000c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c719062001471565b60405180910390fd5b8091505092915050565b82805462000c9290620014c2565b90600052602060002090601f01602090048101928262000cb6576000855562000d02565b82601f1062000cd157805160ff191683800117855562000d02565b8280016001018555821562000d02579182015b8281111562000d0157825182559160200191906001019062000ce4565b5b50905062000d11919062000d15565b5090565b5b8082111562000d3057600081600090555060010162000d16565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000d9d8262000d52565b810181811067ffffffffffffffff8211171562000dbf5762000dbe62000d63565b5b80604052505050565b600062000dd462000d34565b905062000de2828262000d92565b919050565b600067ffffffffffffffff82111562000e055762000e0462000d63565b5b62000e108262000d52565b9050602081019050919050565b60005b8381101562000e3d57808201518184015260208101905062000e20565b8381111562000e4d576000848401525b50505050565b600062000e6a62000e648462000de7565b62000dc8565b90508281526020810184848401111562000e895762000e8862000d4d565b5b62000e9684828562000e1d565b509392505050565b600082601f83011262000eb65762000eb562000d48565b5b815162000ec884826020860162000e53565b91505092915050565b6000819050919050565b62000ee68162000ed1565b811462000ef257600080fd5b50565b60008151905062000f068162000edb565b92915050565b60008060008060008060008060006101208a8c03121562000f325762000f3162000d3e565b5b60008a015167ffffffffffffffff81111562000f535762000f5262000d43565b5b62000f618c828d0162000e9e565b99505060208a015167ffffffffffffffff81111562000f855762000f8462000d43565b5b62000f938c828d0162000e9e565b985050604062000fa68c828d0162000ef5565b975050606062000fb98c828d0162000ef5565b965050608062000fcc8c828d0162000ef5565b95505060a062000fdf8c828d0162000ef5565b94505060c062000ff28c828d0162000ef5565b93505060e0620010058c828d0162000ef5565b925050610100620010198c828d0162000ef5565b9150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010658262000ed1565b9150620010728362000ed1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010ae57620010ad62001029565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010f58262000ed1565b9150620011028362000ed1565b925082620011155762001114620010b9565b5b828204905092915050565b600082825260208201905092915050565b7f436861696e206e6f7420636f6e66696775726564000000000000000000000000600082015250565b60006200116960148362001120565b9150620011768262001131565b602082019050919050565b600060208201905081810360008301526200119c816200115a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011d082620011a3565b9050919050565b620011e281620011c3565b8114620011ee57600080fd5b50565b6000815190506200120281620011d7565b92915050565b60006020828403121562001221576200122062000d3e565b5b60006200123184828501620011f1565b91505092915050565b6200124581620011c3565b82525050565b60006040820190506200126260008301856200123a565b6200127160208301846200123a565b9392505050565b6000620012858262000ed1565b9150620012928362000ed1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012ca57620012c962001029565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200130d60208362001120565b91506200131a82620012d5565b602082019050919050565b600060208201905081810360008301526200134081620012fe565b9050919050565b60008115159050919050565b6200135e8162001347565b82525050565b60006020820190506200137b600083018462001353565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620013b9601f8362001120565b9150620013c68262001381565b602082019050919050565b60006020820190508181036000830152620013ec81620013aa565b9050919050565b620013fe8162000ed1565b82525050565b60006020820190506200141b6000830184620013f3565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001459601b8362001120565b9150620014668262001421565b602082019050919050565b600060208201905081810360008301526200148c816200144a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620014db57607f821691505b60208210811415620014f257620014f162001493565b5b50919050565b61483a80620015086000396000f3fe6080604052600436106101e65760003560e01c8063751039fc11610102578063c0a904a211610095578063e0bf7fd111610064578063e0bf7fd114610710578063e2f456051461074d578063f2fde38b14610778578063f8b45b05146107a1576101ed565b8063c0a904a214610656578063c17b5b8c1461067f578063c8c8ebe4146106a8578063dd62ed3e146106d3576101ed565b806395d89b41116100d157806395d89b4114610588578063a457c2d7146105b3578063a9059cbb146105f0578063c02466681461062d576101ed565b8063751039fc146104e05780638095d5641461050b5780638da5cb5b14610534578063924de9b71461055f576101ed565b806323b872dd1161017a5780634fbee193116101495780634fbee19314610426578063651652271461046357806370a082311461048c578063715018a6146104c9576101ed565b806323b872dd14610356578063313ce5671461039357806339509351146103be57806349bd5a5e146103fb576101ed565b8063095ea7b3116101b6578063095ea7b31461028657806310d5de53146102c35780631694505e1461030057806318160ddd1461032b576101ed565b806299d386146101f25780630465c5631461020957806306fdde0314610232578063080d2c751461025d576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b506102076107cc565b005b34801561021557600080fd5b50610230600480360381019061022b9190613602565b6108a2565b005b34801561023e57600080fd5b50610247610953565b60405161025491906136ee565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061376e565b6109e5565b005b34801561029257600080fd5b506102ad60048036038101906102a8919061379b565b610c3f565b6040516102ba91906137f6565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061376e565b610c5d565b6040516102f791906137f6565b60405180910390f35b34801561030c57600080fd5b50610315610c7d565b6040516103229190613870565b60405180910390f35b34801561033757600080fd5b50610340610ca3565b60405161034d919061389a565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906138b5565b610cad565b60405161038a91906137f6565b60405180910390f35b34801561039f57600080fd5b506103a8610d86565b6040516103b59190613924565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e0919061379b565b610d8f565b6040516103f291906137f6565b60405180910390f35b34801561040757600080fd5b50610410610e42565b60405161041d919061394e565b60405180910390f35b34801561043257600080fd5b5061044d6004803603810190610448919061376e565b610e68565b60405161045a91906137f6565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190613995565b610ebe565b005b34801561049857600080fd5b506104b360048036038101906104ae919061376e565b610fb0565b6040516104c0919061389a565b60405180910390f35b3480156104d557600080fd5b506104de610ff8565b005b3480156104ec57600080fd5b506104f5611150565b60405161050291906137f6565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190613602565b61120b565b005b34801561054057600080fd5b50610549611325565b604051610556919061394e565b60405180910390f35b34801561056b57600080fd5b50610586600480360381019061058191906139d5565b61134f565b005b34801561059457600080fd5b5061059d611403565b6040516105aa91906136ee565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061379b565b611495565b6040516105e791906137f6565b60405180910390f35b3480156105fc57600080fd5b506106176004803603810190610612919061379b565b611562565b60405161062491906137f6565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190613995565b611580565b005b34801561066257600080fd5b5061067d60048036038101906106789190613995565b6116c0565b005b34801561068b57600080fd5b506106a660048036038101906106a19190613602565b6117b2565b005b3480156106b457600080fd5b506106bd6118cc565b6040516106ca919061389a565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613a02565b6118d2565b604051610707919061389a565b60405180910390f35b34801561071c57600080fd5b506107376004803603810190610732919061376e565b611959565b60405161074491906137f6565b60405180910390f35b34801561075957600080fd5b50610762611979565b60405161076f919061389a565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a919061376e565b61197f565b005b3480156107ad57600080fd5b506107b6611b46565b6040516107c3919061389a565b60405180910390f35b6107d4611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613a8e565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff02191690831515021790555043601981905550565b6108aa611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090613a8e565b60405180910390fd5b82600a8190555081600b8190555080600c81905550505050565b60606003805461096290613add565b80601f016020809104026020016040519081016040528092919081815260200182805461098e90613add565b80156109db5780601f106109b0576101008083540402835291602001916109db565b820191906000526020600020905b8154815290600101906020018083116109be57829003601f168201915b5050505050905090565b6109ed611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390613a8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b1f573373ffffffffffffffffffffffffffffffffffffffff1647604051610ad590613b40565b60006040518083038185875af1925050503d8060008114610b12576040519150601f19603f3d011682016040523d82523d6000602084013e610b17565b606091505b505050610c3c565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b7a919061394e565b60206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190613b6a565b6040518363ffffffff1660e01b8152600401610be7929190613b97565b602060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613bd5565b50505b50565b6000610c53610c4c611baa565b8484611bb2565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610cba848484611d7d565b610d7b84610cc6611baa565b610d76856040518060600160405280602881526020016147b860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d2c611baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0f9092919063ffffffff16565b611bb2565b600190509392505050565b60006012905090565b6000610e38610d9c611baa565b84610e338560016000610dad611baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4c90919063ffffffff16565b611bb2565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ec6611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613a8e565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611000611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690613a8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061115a611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613a8e565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611213611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990613a8e565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f546112ca9190613c31565b6112d49190613c31565b600e81905550600a600e541115611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790613cd3565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611357611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90613a8e565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b60606004805461141290613add565b80601f016020809104026020016040519081016040528092919081815260200182805461143e90613add565b801561148b5780601f106114605761010080835404028352916020019161148b565b820191906000526020600020905b81548152906001019060200180831161146e57829003601f168201915b5050505050905090565b60006115586114a2611baa565b84611553856040518060600160405280602581526020016147e060259139600160006114cc611baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0f9092919063ffffffff16565b611bb2565b6001905092915050565b600061157661156f611baa565b8484611d7d565b6001905092915050565b611588611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613a8e565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116b491906137f6565b60405180910390a25050565b6116c8611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90613a8e565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117ba611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184090613a8e565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546118719190613c31565b61187b9190613c31565b601281905550601460125411156118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90613d3f565b60405180910390fd5b505050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b600c5481565b611987611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613a8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7d90613dd1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b6000808284611b5b9190613c31565b905083811015611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613e3d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990613ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8990613f61565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d70919061389a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de490613ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5490614085565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f015750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3790614117565b60405180910390fd5b6000811415611f5a57611f5583836000612b73565b612b0a565b600d60009054906101000a900460ff161561245557611f77611325565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fe55750611fb5611325565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561201e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612058575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120715750600d60039054906101000a900460ff16155b1561245457600d60029054906101000a900460ff1661216b57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061212b5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190614183565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220e5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122b557600a54811115612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90614215565b60405180910390fd5b600b5461226483610fb0565b8261226f9190613c31565b11156122b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a790614281565b60405180910390fd5b612453565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123585750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123a757600a548111156123a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239990614313565b60405180910390fd5b612452565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661245157600b5461240483610fb0565b8261240f9190613c31565b1115612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790614281565b60405180910390fd5b5b5b5b5b5b600060019050601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124fc5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561250657600090505b80156127c257600160195461251b9190613c31565b43111580156125785750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156125d25750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612630576001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061263b30610fb0565b90506000600c5482101590508080156126605750600d60019054906101000a900460ff165b80156126795750600d60039054906101000a900460ff16155b80156126cf5750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127255750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561277b5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127bf576001600d60036101000a81548160ff0219169083151502179055506127a3612e08565b6000600d60036101000a81548160ff0219169083151502179055505b50505b6000600d60039054906101000a900460ff16159050601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128785750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561288257600090505b60008115612afb57601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e557506000601254115b156129b2576129126064612904601254876130ef90919063ffffffff16565b61316a90919063ffffffff16565b9050601254601454826129259190614333565b61292f91906143bc565b601760008282546129409190613c31565b92505081905550601254601554826129589190614333565b61296291906143bc565b601860008282546129739190613c31565b925050819055506012546013548261298b9190614333565b61299591906143bc565b601660008282546129a69190613c31565b92505081905550612ad7565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a0d57506000600e54115b15612ad657612a3a6064612a2c600e54876130ef90919063ffffffff16565b61316a90919063ffffffff16565b9050600e5460105482612a4d9190614333565b612a5791906143bc565b60176000828254612a689190613c31565b92505081905550600e5460115482612a809190614333565b612a8a91906143bc565b60186000828254612a9b9190613c31565b92505081905550600e54600f5482612ab39190614333565b612abd91906143bc565b60166000828254612ace9190613c31565b925050819055505b5b6000811115612aec57612aeb863083612b73565b5b8084612af891906143ed565b93505b612b06868686612b73565b5050505b505050565b6000838311158290612b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4e91906136ee565b60405180910390fd5b5060008385612b6691906143ed565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bda90613ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90614085565b60405180910390fd5b612c5e8383836131b4565b612cc981604051806060016040528060268152602001614792602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d5c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dfb919061389a565b60405180910390a3505050565b6000612e1330610fb0565b90506000601854601654601754612e2a9190613c31565b612e349190613c31565b9050600080831480612e465750600082145b15612e53575050506130ed565b6014600c54612e629190614333565b831115612e7b576014600c54612e789190614333565b92505b600060028360175486612e8e9190614333565b612e9891906143bc565b612ea291906143bc565b90506000612eb982866131b990919063ffffffff16565b90506000479050612ec982613203565b6000612ede82476131b990919063ffffffff16565b90506000612f0987612efb601654856130ef90919063ffffffff16565b61316a90919063ffffffff16565b90506000612f3488612f26601854866130ef90919063ffffffff16565b61316a90919063ffffffff16565b90506000818385612f4591906143ed565b612f4f91906143ed565b9050600060178190555060006016819055506000601881905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612faf90613b40565b60006040518083038185875af1925050503d8060008114612fec576040519150601f19603f3d011682016040523d82523d6000602084013e612ff1565b606091505b5050809850506000871180156130075750600081115b15613054576130168782613455565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260175460405161304b93929190614421565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161309a90613b40565b60006040518083038185875af1925050503d80600081146130d7576040519150601f19603f3d011682016040523d82523d6000602084013e6130dc565b606091505b505080985050505050505050505050505b565b6000808314156131025760009050613164565b600082846131109190614333565b905082848261311f91906143bc565b1461315f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613156906144ca565b60405180910390fd5b809150505b92915050565b60006131ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613564565b905092915050565b505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b0f565b905092915050565b6000600267ffffffffffffffff8111156132205761321f6144ea565b5b60405190808252806020026020018201604052801561324e5781602001602082028036833780820191505090505b509050308160008151811061326657613265614519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561330857600080fd5b505afa15801561331c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613340919061455d565b8160018151811061335457613353614519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133bb30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bb2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161341f959493929190614683565b600060405180830381600087803b15801561343957600080fd5b505af115801561344d573d6000803e3d6000fd5b505050505050565b61348230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bb2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161350b969594939291906146dd565b6060604051808303818588803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061355d919061473e565b5050505050565b600080831182906135ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a291906136ee565b60405180910390fd5b50600083856135ba91906143bc565b9050809150509392505050565b600080fd5b6000819050919050565b6135df816135cc565b81146135ea57600080fd5b50565b6000813590506135fc816135d6565b92915050565b60008060006060848603121561361b5761361a6135c7565b5b6000613629868287016135ed565b935050602061363a868287016135ed565b925050604061364b868287016135ed565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b8381101561368f578082015181840152602081019050613674565b8381111561369e576000848401525b50505050565b6000601f19601f8301169050919050565b60006136c082613655565b6136ca8185613660565b93506136da818560208601613671565b6136e3816136a4565b840191505092915050565b6000602082019050818103600083015261370881846136b5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061373b82613710565b9050919050565b61374b81613730565b811461375657600080fd5b50565b60008135905061376881613742565b92915050565b600060208284031215613784576137836135c7565b5b600061379284828501613759565b91505092915050565b600080604083850312156137b2576137b16135c7565b5b60006137c085828601613759565b92505060206137d1858286016135ed565b9150509250929050565b60008115159050919050565b6137f0816137db565b82525050565b600060208201905061380b60008301846137e7565b92915050565b6000819050919050565b600061383661383161382c84613710565b613811565b613710565b9050919050565b60006138488261381b565b9050919050565b600061385a8261383d565b9050919050565b61386a8161384f565b82525050565b60006020820190506138856000830184613861565b92915050565b613894816135cc565b82525050565b60006020820190506138af600083018461388b565b92915050565b6000806000606084860312156138ce576138cd6135c7565b5b60006138dc86828701613759565b93505060206138ed86828701613759565b92505060406138fe868287016135ed565b9150509250925092565b600060ff82169050919050565b61391e81613908565b82525050565b60006020820190506139396000830184613915565b92915050565b61394881613730565b82525050565b6000602082019050613963600083018461393f565b92915050565b613972816137db565b811461397d57600080fd5b50565b60008135905061398f81613969565b92915050565b600080604083850312156139ac576139ab6135c7565b5b60006139ba85828601613759565b92505060206139cb85828601613980565b9150509250929050565b6000602082840312156139eb576139ea6135c7565b5b60006139f984828501613980565b91505092915050565b60008060408385031215613a1957613a186135c7565b5b6000613a2785828601613759565b9250506020613a3885828601613759565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a78602083613660565b9150613a8382613a42565b602082019050919050565b60006020820190508181036000830152613aa781613a6b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613af557607f821691505b60208210811415613b0957613b08613aae565b5b50919050565b600081905092915050565b50565b6000613b2a600083613b0f565b9150613b3582613b1a565b600082019050919050565b6000613b4b82613b1d565b9150819050919050565b600081519050613b64816135d6565b92915050565b600060208284031215613b8057613b7f6135c7565b5b6000613b8e84828501613b55565b91505092915050565b6000604082019050613bac600083018561393f565b613bb9602083018461388b565b9392505050565b600081519050613bcf81613969565b92915050565b600060208284031215613beb57613bea6135c7565b5b6000613bf984828501613bc0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c3c826135cc565b9150613c47836135cc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c7c57613c7b613c02565b5b828201905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613cbd601d83613660565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000613d29601d83613660565b9150613d3482613cf3565b602082019050919050565b60006020820190508181036000830152613d5881613d1c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dbb602683613660565b9150613dc682613d5f565b604082019050919050565b60006020820190508181036000830152613dea81613dae565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e27601b83613660565b9150613e3282613df1565b602082019050919050565b60006020820190508181036000830152613e5681613e1a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613eb9602483613660565b9150613ec482613e5d565b604082019050919050565b60006020820190508181036000830152613ee881613eac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f4b602283613660565b9150613f5682613eef565b604082019050919050565b60006020820190508181036000830152613f7a81613f3e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613fdd602583613660565b9150613fe882613f81565b604082019050919050565b6000602082019050818103600083015261400c81613fd0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061406f602383613660565b915061407a82614013565b604082019050919050565b6000602082019050818103600083015261409e81614062565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614101603183613660565b915061410c826140a5565b604082019050919050565b60006020820190508181036000830152614130816140f4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061416d601683613660565b915061417882614137565b602082019050919050565b6000602082019050818103600083015261419c81614160565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006141ff603583613660565b915061420a826141a3565b604082019050919050565b6000602082019050818103600083015261422e816141f2565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061426b601383613660565b915061427682614235565b602082019050919050565b6000602082019050818103600083015261429a8161425e565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006142fd603683613660565b9150614308826142a1565b604082019050919050565b6000602082019050818103600083015261432c816142f0565b9050919050565b600061433e826135cc565b9150614349836135cc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561438257614381613c02565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143c7826135cc565b91506143d2836135cc565b9250826143e2576143e161438d565b5b828204905092915050565b60006143f8826135cc565b9150614403836135cc565b92508282101561441657614415613c02565b5b828203905092915050565b6000606082019050614436600083018661388b565b614443602083018561388b565b614450604083018461388b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006144b4602183613660565b91506144bf82614458565b604082019050919050565b600060208201905081810360008301526144e3816144a7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061455781613742565b92915050565b600060208284031215614573576145726135c7565b5b600061458184828501614548565b91505092915050565b6000819050919050565b60006145af6145aa6145a58461458a565b613811565b6135cc565b9050919050565b6145bf81614594565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145fa81613730565b82525050565b600061460c83836145f1565b60208301905092915050565b6000602082019050919050565b6000614630826145c5565b61463a81856145d0565b9350614645836145e1565b8060005b8381101561467657815161465d8882614600565b975061466883614618565b925050600181019050614649565b5085935050505092915050565b600060a082019050614698600083018861388b565b6146a560208301876145b6565b81810360408301526146b78186614625565b90506146c6606083018561393f565b6146d3608083018461388b565b9695505050505050565b600060c0820190506146f2600083018961393f565b6146ff602083018861388b565b61470c60408301876145b6565b61471960608301866145b6565b614726608083018561393f565b61473360a083018461388b565b979650505050505050565b600080600060608486031215614757576147566135c7565b5b600061476586828701613b55565b935050602061477686828701613b55565b925050604061478786828701613b55565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220550d16522c20d359cab3680690bf27d485422c164b7fe8d9fe34e6acb6e092ac64736f6c6343000809003300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002540be4000000000000000000000000000000000000000000000000000000000000000013416d706c696669656420536869626120496e750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034153420000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101e65760003560e01c8063751039fc11610102578063c0a904a211610095578063e0bf7fd111610064578063e0bf7fd114610710578063e2f456051461074d578063f2fde38b14610778578063f8b45b05146107a1576101ed565b8063c0a904a214610656578063c17b5b8c1461067f578063c8c8ebe4146106a8578063dd62ed3e146106d3576101ed565b806395d89b41116100d157806395d89b4114610588578063a457c2d7146105b3578063a9059cbb146105f0578063c02466681461062d576101ed565b8063751039fc146104e05780638095d5641461050b5780638da5cb5b14610534578063924de9b71461055f576101ed565b806323b872dd1161017a5780634fbee193116101495780634fbee19314610426578063651652271461046357806370a082311461048c578063715018a6146104c9576101ed565b806323b872dd14610356578063313ce5671461039357806339509351146103be57806349bd5a5e146103fb576101ed565b8063095ea7b3116101b6578063095ea7b31461028657806310d5de53146102c35780631694505e1461030057806318160ddd1461032b576101ed565b806299d386146101f25780630465c5631461020957806306fdde0314610232578063080d2c751461025d576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b506102076107cc565b005b34801561021557600080fd5b50610230600480360381019061022b9190613602565b6108a2565b005b34801561023e57600080fd5b50610247610953565b60405161025491906136ee565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061376e565b6109e5565b005b34801561029257600080fd5b506102ad60048036038101906102a8919061379b565b610c3f565b6040516102ba91906137f6565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061376e565b610c5d565b6040516102f791906137f6565b60405180910390f35b34801561030c57600080fd5b50610315610c7d565b6040516103229190613870565b60405180910390f35b34801561033757600080fd5b50610340610ca3565b60405161034d919061389a565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906138b5565b610cad565b60405161038a91906137f6565b60405180910390f35b34801561039f57600080fd5b506103a8610d86565b6040516103b59190613924565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e0919061379b565b610d8f565b6040516103f291906137f6565b60405180910390f35b34801561040757600080fd5b50610410610e42565b60405161041d919061394e565b60405180910390f35b34801561043257600080fd5b5061044d6004803603810190610448919061376e565b610e68565b60405161045a91906137f6565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190613995565b610ebe565b005b34801561049857600080fd5b506104b360048036038101906104ae919061376e565b610fb0565b6040516104c0919061389a565b60405180910390f35b3480156104d557600080fd5b506104de610ff8565b005b3480156104ec57600080fd5b506104f5611150565b60405161050291906137f6565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190613602565b61120b565b005b34801561054057600080fd5b50610549611325565b604051610556919061394e565b60405180910390f35b34801561056b57600080fd5b50610586600480360381019061058191906139d5565b61134f565b005b34801561059457600080fd5b5061059d611403565b6040516105aa91906136ee565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061379b565b611495565b6040516105e791906137f6565b60405180910390f35b3480156105fc57600080fd5b506106176004803603810190610612919061379b565b611562565b60405161062491906137f6565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190613995565b611580565b005b34801561066257600080fd5b5061067d60048036038101906106789190613995565b6116c0565b005b34801561068b57600080fd5b506106a660048036038101906106a19190613602565b6117b2565b005b3480156106b457600080fd5b506106bd6118cc565b6040516106ca919061389a565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613a02565b6118d2565b604051610707919061389a565b60405180910390f35b34801561071c57600080fd5b506107376004803603810190610732919061376e565b611959565b60405161074491906137f6565b60405180910390f35b34801561075957600080fd5b50610762611979565b60405161076f919061389a565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a919061376e565b61197f565b005b3480156107ad57600080fd5b506107b6611b46565b6040516107c3919061389a565b60405180910390f35b6107d4611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90613a8e565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff02191690831515021790555043601981905550565b6108aa611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090613a8e565b60405180910390fd5b82600a8190555081600b8190555080600c81905550505050565b60606003805461096290613add565b80601f016020809104026020016040519081016040528092919081815260200182805461098e90613add565b80156109db5780601f106109b0576101008083540402835291602001916109db565b820191906000526020600020905b8154815290600101906020018083116109be57829003601f168201915b5050505050905090565b6109ed611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390613a8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b1f573373ffffffffffffffffffffffffffffffffffffffff1647604051610ad590613b40565b60006040518083038185875af1925050503d8060008114610b12576040519150601f19603f3d011682016040523d82523d6000602084013e610b17565b606091505b505050610c3c565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b7a919061394e565b60206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190613b6a565b6040518363ffffffff1660e01b8152600401610be7929190613b97565b602060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613bd5565b50505b50565b6000610c53610c4c611baa565b8484611bb2565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610cba848484611d7d565b610d7b84610cc6611baa565b610d76856040518060600160405280602881526020016147b860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d2c611baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0f9092919063ffffffff16565b611bb2565b600190509392505050565b60006012905090565b6000610e38610d9c611baa565b84610e338560016000610dad611baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4c90919063ffffffff16565b611bb2565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ec6611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613a8e565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611000611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690613a8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061115a611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613a8e565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611213611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990613a8e565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f546112ca9190613c31565b6112d49190613c31565b600e81905550600a600e541115611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790613cd3565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611357611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90613a8e565b60405180910390fd5b80600d60016101000a81548160ff02191690831515021790555050565b60606004805461141290613add565b80601f016020809104026020016040519081016040528092919081815260200182805461143e90613add565b801561148b5780601f106114605761010080835404028352916020019161148b565b820191906000526020600020905b81548152906001019060200180831161146e57829003601f168201915b5050505050905090565b60006115586114a2611baa565b84611553856040518060600160405280602581526020016147e060259139600160006114cc611baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0f9092919063ffffffff16565b611bb2565b6001905092915050565b600061157661156f611baa565b8484611d7d565b6001905092915050565b611588611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613a8e565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116b491906137f6565b60405180910390a25050565b6116c8611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90613a8e565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117ba611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184090613a8e565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546118719190613c31565b61187b9190613c31565b601281905550601460125411156118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90613d3f565b60405180910390fd5b505050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b600c5481565b611987611baa565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613a8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7d90613dd1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b6000808284611b5b9190613c31565b905083811015611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613e3d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990613ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8990613f61565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d70919061389a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de490613ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5490614085565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f015750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3790614117565b60405180910390fd5b6000811415611f5a57611f5583836000612b73565b612b0a565b600d60009054906101000a900460ff161561245557611f77611325565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fe55750611fb5611325565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561201e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612058575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120715750600d60039054906101000a900460ff16155b1561245457600d60029054906101000a900460ff1661216b57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061212b5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190614183565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561220e5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122b557600a54811115612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90614215565b60405180910390fd5b600b5461226483610fb0565b8261226f9190613c31565b11156122b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a790614281565b60405180910390fd5b612453565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123585750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123a757600a548111156123a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239990614313565b60405180910390fd5b612452565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661245157600b5461240483610fb0565b8261240f9190613c31565b1115612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790614281565b60405180910390fd5b5b5b5b5b5b600060019050601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124fc5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561250657600090505b80156127c257600160195461251b9190613c31565b43111580156125785750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156125d25750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612630576001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061263b30610fb0565b90506000600c5482101590508080156126605750600d60019054906101000a900460ff165b80156126795750600d60039054906101000a900460ff16155b80156126cf5750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127255750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561277b5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127bf576001600d60036101000a81548160ff0219169083151502179055506127a3612e08565b6000600d60036101000a81548160ff0219169083151502179055505b50505b6000600d60039054906101000a900460ff16159050601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128785750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561288257600090505b60008115612afb57601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e557506000601254115b156129b2576129126064612904601254876130ef90919063ffffffff16565b61316a90919063ffffffff16565b9050601254601454826129259190614333565b61292f91906143bc565b601760008282546129409190613c31565b92505081905550601254601554826129589190614333565b61296291906143bc565b601860008282546129739190613c31565b925050819055506012546013548261298b9190614333565b61299591906143bc565b601660008282546129a69190613c31565b92505081905550612ad7565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a0d57506000600e54115b15612ad657612a3a6064612a2c600e54876130ef90919063ffffffff16565b61316a90919063ffffffff16565b9050600e5460105482612a4d9190614333565b612a5791906143bc565b60176000828254612a689190613c31565b92505081905550600e5460115482612a809190614333565b612a8a91906143bc565b60186000828254612a9b9190613c31565b92505081905550600e54600f5482612ab39190614333565b612abd91906143bc565b60166000828254612ace9190613c31565b925050819055505b5b6000811115612aec57612aeb863083612b73565b5b8084612af891906143ed565b93505b612b06868686612b73565b5050505b505050565b6000838311158290612b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4e91906136ee565b60405180910390fd5b5060008385612b6691906143ed565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bda90613ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90614085565b60405180910390fd5b612c5e8383836131b4565b612cc981604051806060016040528060268152602001614792602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d5c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dfb919061389a565b60405180910390a3505050565b6000612e1330610fb0565b90506000601854601654601754612e2a9190613c31565b612e349190613c31565b9050600080831480612e465750600082145b15612e53575050506130ed565b6014600c54612e629190614333565b831115612e7b576014600c54612e789190614333565b92505b600060028360175486612e8e9190614333565b612e9891906143bc565b612ea291906143bc565b90506000612eb982866131b990919063ffffffff16565b90506000479050612ec982613203565b6000612ede82476131b990919063ffffffff16565b90506000612f0987612efb601654856130ef90919063ffffffff16565b61316a90919063ffffffff16565b90506000612f3488612f26601854866130ef90919063ffffffff16565b61316a90919063ffffffff16565b90506000818385612f4591906143ed565b612f4f91906143ed565b9050600060178190555060006016819055506000601881905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612faf90613b40565b60006040518083038185875af1925050503d8060008114612fec576040519150601f19603f3d011682016040523d82523d6000602084013e612ff1565b606091505b5050809850506000871180156130075750600081115b15613054576130168782613455565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260175460405161304b93929190614421565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161309a90613b40565b60006040518083038185875af1925050503d80600081146130d7576040519150601f19603f3d011682016040523d82523d6000602084013e6130dc565b606091505b505080985050505050505050505050505b565b6000808314156131025760009050613164565b600082846131109190614333565b905082848261311f91906143bc565b1461315f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613156906144ca565b60405180910390fd5b809150505b92915050565b60006131ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613564565b905092915050565b505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b0f565b905092915050565b6000600267ffffffffffffffff8111156132205761321f6144ea565b5b60405190808252806020026020018201604052801561324e5781602001602082028036833780820191505090505b509050308160008151811061326657613265614519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561330857600080fd5b505afa15801561331c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613340919061455d565b8160018151811061335457613353614519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133bb30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bb2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161341f959493929190614683565b600060405180830381600087803b15801561343957600080fd5b505af115801561344d573d6000803e3d6000fd5b505050505050565b61348230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bb2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161350b969594939291906146dd565b6060604051808303818588803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061355d919061473e565b5050505050565b600080831182906135ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a291906136ee565b60405180910390fd5b50600083856135ba91906143bc565b9050809150509392505050565b600080fd5b6000819050919050565b6135df816135cc565b81146135ea57600080fd5b50565b6000813590506135fc816135d6565b92915050565b60008060006060848603121561361b5761361a6135c7565b5b6000613629868287016135ed565b935050602061363a868287016135ed565b925050604061364b868287016135ed565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b8381101561368f578082015181840152602081019050613674565b8381111561369e576000848401525b50505050565b6000601f19601f8301169050919050565b60006136c082613655565b6136ca8185613660565b93506136da818560208601613671565b6136e3816136a4565b840191505092915050565b6000602082019050818103600083015261370881846136b5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061373b82613710565b9050919050565b61374b81613730565b811461375657600080fd5b50565b60008135905061376881613742565b92915050565b600060208284031215613784576137836135c7565b5b600061379284828501613759565b91505092915050565b600080604083850312156137b2576137b16135c7565b5b60006137c085828601613759565b92505060206137d1858286016135ed565b9150509250929050565b60008115159050919050565b6137f0816137db565b82525050565b600060208201905061380b60008301846137e7565b92915050565b6000819050919050565b600061383661383161382c84613710565b613811565b613710565b9050919050565b60006138488261381b565b9050919050565b600061385a8261383d565b9050919050565b61386a8161384f565b82525050565b60006020820190506138856000830184613861565b92915050565b613894816135cc565b82525050565b60006020820190506138af600083018461388b565b92915050565b6000806000606084860312156138ce576138cd6135c7565b5b60006138dc86828701613759565b93505060206138ed86828701613759565b92505060406138fe868287016135ed565b9150509250925092565b600060ff82169050919050565b61391e81613908565b82525050565b60006020820190506139396000830184613915565b92915050565b61394881613730565b82525050565b6000602082019050613963600083018461393f565b92915050565b613972816137db565b811461397d57600080fd5b50565b60008135905061398f81613969565b92915050565b600080604083850312156139ac576139ab6135c7565b5b60006139ba85828601613759565b92505060206139cb85828601613980565b9150509250929050565b6000602082840312156139eb576139ea6135c7565b5b60006139f984828501613980565b91505092915050565b60008060408385031215613a1957613a186135c7565b5b6000613a2785828601613759565b9250506020613a3885828601613759565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a78602083613660565b9150613a8382613a42565b602082019050919050565b60006020820190508181036000830152613aa781613a6b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613af557607f821691505b60208210811415613b0957613b08613aae565b5b50919050565b600081905092915050565b50565b6000613b2a600083613b0f565b9150613b3582613b1a565b600082019050919050565b6000613b4b82613b1d565b9150819050919050565b600081519050613b64816135d6565b92915050565b600060208284031215613b8057613b7f6135c7565b5b6000613b8e84828501613b55565b91505092915050565b6000604082019050613bac600083018561393f565b613bb9602083018461388b565b9392505050565b600081519050613bcf81613969565b92915050565b600060208284031215613beb57613bea6135c7565b5b6000613bf984828501613bc0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c3c826135cc565b9150613c47836135cc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c7c57613c7b613c02565b5b828201905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613cbd601d83613660565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000613d29601d83613660565b9150613d3482613cf3565b602082019050919050565b60006020820190508181036000830152613d5881613d1c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dbb602683613660565b9150613dc682613d5f565b604082019050919050565b60006020820190508181036000830152613dea81613dae565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e27601b83613660565b9150613e3282613df1565b602082019050919050565b60006020820190508181036000830152613e5681613e1a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613eb9602483613660565b9150613ec482613e5d565b604082019050919050565b60006020820190508181036000830152613ee881613eac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f4b602283613660565b9150613f5682613eef565b604082019050919050565b60006020820190508181036000830152613f7a81613f3e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613fdd602583613660565b9150613fe882613f81565b604082019050919050565b6000602082019050818103600083015261400c81613fd0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061406f602383613660565b915061407a82614013565b604082019050919050565b6000602082019050818103600083015261409e81614062565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614101603183613660565b915061410c826140a5565b604082019050919050565b60006020820190508181036000830152614130816140f4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061416d601683613660565b915061417882614137565b602082019050919050565b6000602082019050818103600083015261419c81614160565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006141ff603583613660565b915061420a826141a3565b604082019050919050565b6000602082019050818103600083015261422e816141f2565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061426b601383613660565b915061427682614235565b602082019050919050565b6000602082019050818103600083015261429a8161425e565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006142fd603683613660565b9150614308826142a1565b604082019050919050565b6000602082019050818103600083015261432c816142f0565b9050919050565b600061433e826135cc565b9150614349836135cc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561438257614381613c02565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143c7826135cc565b91506143d2836135cc565b9250826143e2576143e161438d565b5b828204905092915050565b60006143f8826135cc565b9150614403836135cc565b92508282101561441657614415613c02565b5b828203905092915050565b6000606082019050614436600083018661388b565b614443602083018561388b565b614450604083018461388b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006144b4602183613660565b91506144bf82614458565b604082019050919050565b600060208201905081810360008301526144e3816144a7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061455781613742565b92915050565b600060208284031215614573576145726135c7565b5b600061458184828501614548565b91505092915050565b6000819050919050565b60006145af6145aa6145a58461458a565b613811565b6135cc565b9050919050565b6145bf81614594565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145fa81613730565b82525050565b600061460c83836145f1565b60208301905092915050565b6000602082019050919050565b6000614630826145c5565b61463a81856145d0565b9350614645836145e1565b8060005b8381101561467657815161465d8882614600565b975061466883614618565b925050600181019050614649565b5085935050505092915050565b600060a082019050614698600083018861388b565b6146a560208301876145b6565b81810360408301526146b78186614625565b90506146c6606083018561393f565b6146d3608083018461388b565b9695505050505050565b600060c0820190506146f2600083018961393f565b6146ff602083018861388b565b61470c60408301876145b6565b61471960608301866145b6565b614726608083018561393f565b61473360a083018461388b565b979650505050505050565b600080600060608486031215614757576147566135c7565b5b600061476586828701613b55565b935050602061477686828701613b55565b925050604061478786828701613b55565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220550d16522c20d359cab3680690bf27d485422c164b7fe8d9fe34e6acb6e092ac64736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002540be4000000000000000000000000000000000000000000000000000000000000000013416d706c696669656420536869626120496e750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034153420000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Amplified Shiba Inu
Arg [1] : ticker (string): ASB
Arg [2] : _buyMarketingFee (uint256): 10
Arg [3] : _buyLiquidityFee (uint256): 0
Arg [4] : _buyDevFee (uint256): 10
Arg [5] : _sellDevFee (uint256): 10
Arg [6] : _sellMarketingFee (uint256): 10
Arg [7] : _sellLiquidityFee (uint256): 0
Arg [8] : _totalSupply (uint256): 10000000000

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 00000000000000000000000000000000000000000000000000000002540be400
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [10] : 416d706c696669656420536869626120496e7500000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [12] : 4153420000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

29516:13749:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33728:146;;;;;;;;;;;;;:::i;:::-;;42596:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7623:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42915:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9797:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30575:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29591:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8746:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10449:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8587:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11214:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29639:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40992:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42467:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8918:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22125:148;;;;;;;;;;;;;:::i;:::-;;41125:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41363:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21481:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41254:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7843:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11936:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9259:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42280:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42127:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41741:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29752:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9498:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30516:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29825:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22429:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29794:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33728:146;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33797:4:::1;33781:13;;:20;;;;;;;;;;;;;;;;;;33826:4;33812:11;;:18;;;;;;;;;;;;;;;;;;33854:12;33841:10;:25;;;;33728:146::o:0;42596:310::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42785:21:::1;42762:20;:44;;;;42833:10;42821:9;:22;;;;42879:19;42858:18;:40;;;;42596:310:::0;;;:::o;7623:100::-;7677:13;7710:5;7703:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7623:100;:::o;42915:345::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42990:42:::1;42981:51;;:5;:51;;;42977:276;;;43057:10;43049:24;;43081:21;43049:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42977:276;;;43140:12;43162:5;43140:28;;43183:5;:14;;;43198:10;43210:5;:15;;;43234:4;43210:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43183:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43125:128;42977:276;42915:345:::0;:::o;9797:169::-;9880:4;9897:39;9906:12;:10;:12::i;:::-;9920:7;9929:6;9897:8;:39::i;:::-;9954:4;9947:11;;9797:169;;;;:::o;30575:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29591:41::-;;;;;;;;;;;;;:::o;8746:108::-;8807:7;8834:12;;8827:19;;8746:108;:::o;10449:355::-;10589:4;10606:36;10616:6;10624:9;10635:6;10606:9;:36::i;:::-;10653:121;10662:6;10670:12;:10;:12::i;:::-;10684:89;10722:6;10684:89;;;;;;;;;;;;;;;;;:11;:19;10696:6;10684:19;;;;;;;;;;;;;;;:33;10704:12;:10;:12::i;:::-;10684:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10653:8;:121::i;:::-;10792:4;10785:11;;10449:355;;;;;:::o;8587:93::-;8645:5;8670:2;8663:9;;8587:93;:::o;11214:218::-;11302:4;11319:83;11328:12;:10;:12::i;:::-;11342:7;11351:50;11390:10;11351:11;:25;11363:12;:10;:12::i;:::-;11351:25;;;;;;;;;;;;;;;:34;11377:7;11351:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11319:8;:83::i;:::-;11420:4;11413:11;;11214:218;;;;:::o;29639:28::-;;;;;;;;;;;;;:::o;40992:125::-;41057:4;41081:19;:28;41101:7;41081:28;;;;;;;;;;;;;;;;;;;;;;;;;41074:35;;40992:125;;;:::o;42467:121::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42572:8:::1;42551:10;:18;42562:6;42551:18;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;42467:121:::0;;:::o;8918:127::-;8992:7;9019:9;:18;9029:7;9019:18;;;;;;;;;;;;;;;;9012:25;;8918:127;;;:::o;22125:148::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22232:1:::1;22195:40;;22216:6;;;;;;;;;;;22195:40;;;;;;;;;;;;22263:1;22246:6;;:19;;;;;;;;;;;;;;;;;;22125:148::o:0;41125:120::-;41177:4;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41210:5:::1;41193:14;;:22;;;;;;;;;;;;;;;;;;41233:4;41226:11;;41125:120:::0;:::o;41363:369::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41497:13:::1;41479:15;:31;;;;41539:13;41521:15;:31;;;;41575:7;41563:9;:19;;;;41644:9;;41626:15;;41608;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;41593:12;:60;;;;41688:2;41672:12;;:18;;41664:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;41363:369:::0;;;:::o;21481:79::-;21519:7;21546:6;;;;;;;;;;;21539:13;;21481:79;:::o;41254:100::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41339:7:::1;41325:11;;:21;;;;;;;;;;;;;;;;;;41254:100:::0;:::o;7843:104::-;7899:13;7932:7;7925:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7843:104;:::o;11936:269::-;12029:4;12046:129;12055:12;:10;:12::i;:::-;12069:7;12078:96;12117:15;12078:96;;;;;;;;;;;;;;;;;:11;:25;12090:12;:10;:12::i;:::-;12078:25;;;;;;;;;;;;;;;:34;12104:7;12078:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12046:8;:129::i;:::-;12193:4;12186:11;;11936:269;;;;:::o;9259:175::-;9345:4;9362:42;9372:12;:10;:12::i;:::-;9386:9;9397:6;9362:9;:42::i;:::-;9422:4;9415:11;;9259:175;;;;:::o;42280:179::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42394:8:::1;42364:19;:27;42384:6;42364:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;42434:6;42418:33;;;42442:8;42418:33;;;;;;:::i;:::-;;;;;;;;42280:179:::0;;:::o;42127:144::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42255:8:::1;42213:31;:39;42245:6;42213:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;42127:144:::0;;:::o;41741:378::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41877:13:::1;41858:16;:32;;;;41920:13;41901:16;:32;;;;41957:7;41944:10;:20;;;;42029:10;;42010:16;;41991;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41975:13;:64;;;;42075:2;42058:13;;:19;;42050:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;41741:378:::0;;;:::o;29752:35::-;;;;:::o;9498:151::-;9587:7;9614:11;:18;9626:5;9614:18;;;;;;;;;;;;;;;:27;9633:7;9614:27;;;;;;;;;;;;;;;;9607:34;;9498:151;;;;:::o;30516:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;29825:33::-;;;;:::o;22429:244::-;21704:12;:10;:12::i;:::-;21694:22;;:6;;;;;;;;;;;:22;;;21686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22538:1:::1;22518:22;;:8;:22;;;;22510:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22628:8;22599:38;;22620:6;;;;;;;;;;;22599:38;;;;;;;;;;;;22657:8;22648:6;;:17;;;;;;;;;;;;;;;;;;22429:244:::0;:::o;29794:24::-;;;;:::o;16513:182::-;16571:7;16591:9;16607:1;16603;:5;;;;:::i;:::-;16591:17;;16632:1;16627;:6;;16619:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16686:1;16679:8;;;16513:182;;;;:::o;228:98::-;281:7;308:10;301:17;;228:98;:::o;15132:381::-;15285:1;15268:19;;:5;:19;;;;15260:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15366:1;15347:21;;:7;:21;;;;15339:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15451:6;15421:11;:18;15433:5;15421:18;;;;;;;;;;;;;;;:27;15440:7;15421:27;;;;;;;;;;;;;;;:36;;;;15489:7;15473:32;;15482:5;15473:32;;;15498:6;15473:32;;;;;;:::i;:::-;;;;;;;;15132:381;;;:::o;33922:4160::-;34070:1;34054:18;;:4;:18;;;;34046:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34147:1;34133:16;;:2;:16;;;;34125:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;34209:10;:14;34220:2;34209:14;;;;;;;;;;;;;;;;;;;;;;;;;34208:15;:36;;;;;34228:10;:16;34239:4;34228:16;;;;;;;;;;;;;;;;;;;;;;;;;34227:17;34208:36;34200:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;34332:1;34322:6;:11;34319:92;;;34350:28;34366:4;34372:2;34376:1;34350:15;:28::i;:::-;34393:7;;34319:92;34427:14;;;;;;;;;;;34424:1233;;;34487:7;:5;:7::i;:::-;34479:15;;:4;:15;;;;:49;;;;;34521:7;:5;:7::i;:::-;34515:13;;:2;:13;;;;34479:49;:86;;;;;34563:1;34549:16;;:2;:16;;;;34479:86;:128;;;;;34600:6;34586:21;;:2;:21;;;;34479:128;:158;;;;;34629:8;;;;;;;;;;;34628:9;34479:158;34457:1189;;;34675:13;;;;;;;;;;;34671:148;;34720:19;:25;34740:4;34720:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;34749:19;:23;34769:2;34749:23;;;;;;;;;;;;;;;;;;;;;;;;;34720:52;34712:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;34671:148;34872:25;:31;34898:4;34872:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;34908:31;:35;34940:2;34908:35;;;;;;;;;;;;;;;;;;;;;;;;;34907:36;34872:71;34868:763;;;34990:20;;34980:6;:30;;34972:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;35129:9;;35112:13;35122:2;35112:9;:13::i;:::-;35103:6;:22;;;;:::i;:::-;:35;;35095:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34868:763;;;35241:25;:29;35267:2;35241:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;35275:31;:37;35307:4;35275:37;;;;;;;;;;;;;;;;;;;;;;;;;35274:38;35241:71;35237:394;;;35359:20;;35349:6;:30;;35341:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;35237:394;;;35485:31;:35;35517:2;35485:35;;;;;;;;;;;;;;;;;;;;;;;;;35481:150;;35578:9;;35561:13;35571:2;35561:9;:13::i;:::-;35552:6;:22;;;;:::i;:::-;:35;;35544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35481:150;35237:394;34868:763;34457:1189;34424:1233;35669:10;35682:4;35669:17;;35785:19;:25;35805:4;35785:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;35814:19;:23;35834:2;35814:23;;;;;;;;;;;;;;;;;;;;;;;;;35785:52;35782:97;;;35862:5;35854:13;;35782:97;35894:5;35891:838;;;35984:1;35971:10;;:14;;;;:::i;:::-;35954:12;:32;;:77;;;;;36018:13;;;;;;;;;;;36012:19;;:2;:19;;;;35954:77;:133;;;;;36071:15;;;;;;;;;;;36057:30;;:2;:30;;;;35954:133;35950:214;;;36144:4;36127:10;:14;36138:2;36127:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;35950:214;36184:28;36215:24;36233:4;36215:9;:24::i;:::-;36184:55;;36260:12;36299:18;;36275:20;:42;;36260:57;;36360:7;:39;;;;;36388:11;;;;;;;;;;;36360:39;:69;;;;;36421:8;;;;;;;;;;;36420:9;36360:69;:122;;;;;36451:25;:31;36477:4;36451:31;;;;;;;;;;;;;;;;;;;;;;;;;36450:32;36360:122;:169;;;;;36504:19;:25;36524:4;36504:25;;;;;;;;;;;;;;;;;;;;;;;;;36503:26;36360:169;:214;;;;;36551:19;:23;36571:2;36551:23;;;;;;;;;;;;;;;;;;;;;;;;;36550:24;36360:214;36338:378;;;36620:4;36609:8;;:15;;;;;;;;;;;;;;;;;;36649:10;:8;:10::i;:::-;36695:5;36684:8;;:16;;;;;;;;;;;;;;;;;;36338:378;35901:828;;35891:838;36742:12;36758:8;;;;;;;;;;;36757:9;36742:24;;36868:19;:25;36888:4;36868:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;36897:19;:23;36917:2;36897:23;;;;;;;;;;;;;;;;;;;;;;;;;36868:52;36865:99;;;36947:5;36937:15;;36865:99;36977:12;37081:7;37078:950;;;37132:25;:29;37158:2;37132:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;37181:1;37165:13;;:17;37132:50;37128:750;;;37209:34;37239:3;37209:25;37220:13;;37209:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;37202:41;;37310:13;;37291:16;;37284:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;37262:18;;:61;;;;;;;:::i;:::-;;;;;;;;37378:13;;37365:10;;37358:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;37342:12;;:49;;;;;;;:::i;:::-;;;;;;;;37458:13;;37439:16;;37432:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;37410:18;;:61;;;;;;;:::i;:::-;;;;;;;;37128:750;;;37532:25;:31;37558:4;37532:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;37582:1;37567:12;;:16;37532:51;37529:349;;;37608:33;37637:3;37608:24;37619:12;;37608:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;37601:40;;37704:12;;37686:15;;37679:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;37657:18;;:59;;;;;;;:::i;:::-;;;;;;;;37770:12;;37758:9;;37751:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;37735:12;;:47;;;;;;;:::i;:::-;;;;;;;;37848:12;;37830:15;;37823:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;37801:18;;:59;;;;;;;:::i;:::-;;;;;;;;37529:349;37128:750;37905:1;37898:4;:8;37895:93;;;37930:42;37946:4;37960;37967;37930:15;:42::i;:::-;37895:93;38012:4;38002:14;;;;;:::i;:::-;;;37078:950;38041:33;38057:4;38063:2;38067:6;38041:15;:33::i;:::-;34035:4047;;;33922:4160;;;;:::o;17419:193::-;17505:7;17538:1;17533;:6;;17541:12;17525:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17565:9;17581:1;17577;:5;;;;:::i;:::-;17565:17;;17603:1;17596:8;;;17419:193;;;;;:::o;12696:575::-;12854:1;12836:20;;:6;:20;;;;12828:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12938:1;12917:23;;:9;:23;;;;12909:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12994:47;13015:6;13023:9;13034:6;12994:20;:47::i;:::-;13075:71;13097:6;13075:71;;;;;;;;;;;;;;;;;:9;:17;13085:6;13075:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13055:9;:17;13065:6;13055:17;;;;;;;;;;;;;;;:91;;;;13180:32;13205:6;13180:9;:20;13190:9;13180:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13157:9;:20;13167:9;13157:20;;;;;;;;;;;;;;;:55;;;;13245:9;13228:35;;13237:6;13228:35;;;13256:6;13228:35;;;;;;:::i;:::-;;;;;;;;12696:575;;;:::o;39222:1568::-;39261:23;39287:24;39305:4;39287:9;:24::i;:::-;39261:50;;39322:25;39392:12;;39371:18;;39350;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;39322:82;;39415:12;39463:1;39444:15;:20;:46;;;;39489:1;39468:17;:22;39444:46;39441:60;;;39493:7;;;;;39441:60;39556:2;39535:18;;:23;;;;:::i;:::-;39517:15;:41;39514:111;;;39611:2;39590:18;;:23;;;;:::i;:::-;39572:41;;39514:111;39687:23;39772:1;39752:17;39731:18;;39713:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;39687:86;;39784:26;39813:36;39833:15;39813;:19;;:36;;;;:::i;:::-;39784:65;;39863:25;39891:21;39863:49;;39926:36;39943:18;39926:16;:36::i;:::-;39977:18;39998:44;40024:17;39998:21;:25;;:44;;;;:::i;:::-;39977:65;;40056:23;40082:57;40121:17;40082:34;40097:18;;40082:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;40056:83;;40150:15;40168:51;40201:17;40168:28;40183:12;;40168:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;40150:69;;40236:23;40293:7;40275:15;40262:10;:28;;;;:::i;:::-;:38;;;;:::i;:::-;40236:64;;40338:1;40317:18;:22;;;;40371:1;40350:18;:22;;;;40398:1;40383:12;:16;;;;40434:9;;;;;;;;;;;40426:23;;40457:7;40426:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40413:56;;;;;40504:1;40486:15;:19;:42;;;;;40527:1;40509:15;:19;40486:42;40483:210;;;40544:46;40557:15;40574;40544:12;:46::i;:::-;40610:71;40625:18;40645:15;40662:18;;40610:71;;;;;;;;:::i;:::-;;;;;;;;40483:210;40727:15;;;;;;;;;;;40719:29;;40756:21;40719:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40706:76;;;;;39250:1540;;;;;;;;;;39222:1568;:::o;17872:473::-;17930:7;18180:1;18175;:6;18171:47;;;18205:1;18198:8;;;;18171:47;18231:9;18247:1;18243;:5;;;;:::i;:::-;18231:17;;18276:1;18271;18267;:5;;;;:::i;:::-;:10;18259:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18336:1;18329:8;;;17872:473;;;;;:::o;18822:132::-;18880:7;18907:39;18911:1;18914;18907:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18900:46;;18822:132;;;;:::o;16117:125::-;;;;:::o;16979:136::-;17037:7;17064:43;17068:1;17071;17064:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17057:50;;16979:136;;;;:::o;38091:597::-;38220:21;38258:1;38244:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38220:40;;38289:4;38271;38276:1;38271:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;38315:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38305:4;38310:1;38305:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;38351:62;38368:4;38383:15;;;;;;;;;;;38401:11;38351:8;:62::i;:::-;38453:15;;;;;;;;;;;:66;;;38534:11;38560:1;38604:4;38631;38651:15;38453:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:542;38091:597;:::o;38697:516::-;38845:62;38862:4;38877:15;;;;;;;;;;;38895:11;38845:8;:62::i;:::-;38951:15;;;;;;;;;;;:31;;;38990:9;39023:4;39043:11;39069:1;39112;39155:9;;;;;;;;;;;39179:15;38951:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38697:516;;:::o;19451:279::-;19537:7;19569:1;19565;:5;19572:12;19557:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19596:9;19612:1;19608;:5;;;;:::i;:::-;19596:17;;19721:1;19714:8;;;19451:279;;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:619::-;767:6;775;783;832:2;820:9;811:7;807:23;803:32;800:119;;;838:79;;:::i;:::-;800:119;958:1;983:53;1028:7;1019:6;1008:9;1004:22;983:53;:::i;:::-;973:63;;929:117;1085:2;1111:53;1156:7;1147:6;1136:9;1132:22;1111:53;:::i;:::-;1101:63;;1056:118;1213:2;1239:53;1284:7;1275:6;1264:9;1260:22;1239:53;:::i;:::-;1229:63;;1184:118;690:619;;;;;:::o;1315:99::-;1367:6;1401:5;1395:12;1385:22;;1315:99;;;:::o;1420:169::-;1504:11;1538:6;1533:3;1526:19;1578:4;1573:3;1569:14;1554:29;;1420:169;;;;:::o;1595:307::-;1663:1;1673:113;1687:6;1684:1;1681:13;1673:113;;;1772:1;1767:3;1763:11;1757:18;1753:1;1748:3;1744:11;1737:39;1709:2;1706:1;1702:10;1697:15;;1673:113;;;1804:6;1801:1;1798:13;1795:101;;;1884:1;1875:6;1870:3;1866:16;1859:27;1795:101;1644:258;1595:307;;;:::o;1908:102::-;1949:6;2000:2;1996:7;1991:2;1984:5;1980:14;1976:28;1966:38;;1908:102;;;:::o;2016:364::-;2104:3;2132:39;2165:5;2132:39;:::i;:::-;2187:71;2251:6;2246:3;2187:71;:::i;:::-;2180:78;;2267:52;2312:6;2307:3;2300:4;2293:5;2289:16;2267:52;:::i;:::-;2344:29;2366:6;2344:29;:::i;:::-;2339:3;2335:39;2328:46;;2108:272;2016:364;;;;:::o;2386:313::-;2499:4;2537:2;2526:9;2522:18;2514:26;;2586:9;2580:4;2576:20;2572:1;2561:9;2557:17;2550:47;2614:78;2687:4;2678:6;2614:78;:::i;:::-;2606:86;;2386:313;;;;:::o;2705:126::-;2742:7;2782:42;2775:5;2771:54;2760:65;;2705:126;;;:::o;2837:96::-;2874:7;2903:24;2921:5;2903:24;:::i;:::-;2892:35;;2837:96;;;:::o;2939:122::-;3012:24;3030:5;3012:24;:::i;:::-;3005:5;3002:35;2992:63;;3051:1;3048;3041:12;2992:63;2939:122;:::o;3067:139::-;3113:5;3151:6;3138:20;3129:29;;3167:33;3194:5;3167:33;:::i;:::-;3067:139;;;;:::o;3212:329::-;3271:6;3320:2;3308:9;3299:7;3295:23;3291:32;3288:119;;;3326:79;;:::i;:::-;3288:119;3446:1;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3417:117;3212:329;;;;:::o;3547:474::-;3615:6;3623;3672:2;3660:9;3651:7;3647:23;3643:32;3640:119;;;3678:79;;:::i;:::-;3640:119;3798:1;3823:53;3868:7;3859:6;3848:9;3844:22;3823:53;:::i;:::-;3813:63;;3769:117;3925:2;3951:53;3996:7;3987:6;3976:9;3972:22;3951:53;:::i;:::-;3941:63;;3896:118;3547:474;;;;;:::o;4027:90::-;4061:7;4104:5;4097:13;4090:21;4079:32;;4027:90;;;:::o;4123:109::-;4204:21;4219:5;4204:21;:::i;:::-;4199:3;4192:34;4123:109;;:::o;4238:210::-;4325:4;4363:2;4352:9;4348:18;4340:26;;4376:65;4438:1;4427:9;4423:17;4414:6;4376:65;:::i;:::-;4238:210;;;;:::o;4454:60::-;4482:3;4503:5;4496:12;;4454:60;;;:::o;4520:142::-;4570:9;4603:53;4621:34;4630:24;4648:5;4630:24;:::i;:::-;4621:34;:::i;:::-;4603:53;:::i;:::-;4590:66;;4520:142;;;:::o;4668:126::-;4718:9;4751:37;4782:5;4751:37;:::i;:::-;4738:50;;4668:126;;;:::o;4800:153::-;4877:9;4910:37;4941:5;4910:37;:::i;:::-;4897:50;;4800:153;;;:::o;4959:185::-;5073:64;5131:5;5073:64;:::i;:::-;5068:3;5061:77;4959:185;;:::o;5150:276::-;5270:4;5308:2;5297:9;5293:18;5285:26;;5321:98;5416:1;5405:9;5401:17;5392:6;5321:98;:::i;:::-;5150:276;;;;:::o;5432:118::-;5519:24;5537:5;5519:24;:::i;:::-;5514:3;5507:37;5432:118;;:::o;5556:222::-;5649:4;5687:2;5676:9;5672:18;5664:26;;5700:71;5768:1;5757:9;5753:17;5744:6;5700:71;:::i;:::-;5556:222;;;;:::o;5784:619::-;5861:6;5869;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:53;6250:7;6241:6;6230:9;6226:22;6205:53;:::i;:::-;6195:63;;6150:118;6307:2;6333:53;6378:7;6369:6;6358:9;6354:22;6333:53;:::i;:::-;6323:63;;6278:118;5784:619;;;;;:::o;6409:86::-;6444:7;6484:4;6477:5;6473:16;6462:27;;6409:86;;;:::o;6501:112::-;6584:22;6600:5;6584:22;:::i;:::-;6579:3;6572:35;6501:112;;:::o;6619:214::-;6708:4;6746:2;6735:9;6731:18;6723:26;;6759:67;6823:1;6812:9;6808:17;6799:6;6759:67;:::i;:::-;6619:214;;;;:::o;6839:118::-;6926:24;6944:5;6926:24;:::i;:::-;6921:3;6914:37;6839:118;;:::o;6963:222::-;7056:4;7094:2;7083:9;7079:18;7071:26;;7107:71;7175:1;7164:9;7160:17;7151:6;7107:71;:::i;:::-;6963:222;;;;:::o;7191:116::-;7261:21;7276:5;7261:21;:::i;:::-;7254:5;7251:32;7241:60;;7297:1;7294;7287:12;7241:60;7191:116;:::o;7313:133::-;7356:5;7394:6;7381:20;7372:29;;7410:30;7434:5;7410:30;:::i;:::-;7313:133;;;;:::o;7452:468::-;7517:6;7525;7574:2;7562:9;7553:7;7549:23;7545:32;7542:119;;;7580:79;;:::i;:::-;7542:119;7700:1;7725:53;7770:7;7761:6;7750:9;7746:22;7725:53;:::i;:::-;7715:63;;7671:117;7827:2;7853:50;7895:7;7886:6;7875:9;7871:22;7853:50;:::i;:::-;7843:60;;7798:115;7452:468;;;;;:::o;7926:323::-;7982:6;8031:2;8019:9;8010:7;8006:23;8002:32;7999:119;;;8037:79;;:::i;:::-;7999:119;8157:1;8182:50;8224:7;8215:6;8204:9;8200:22;8182:50;:::i;:::-;8172:60;;8128:114;7926:323;;;;:::o;8255:474::-;8323:6;8331;8380:2;8368:9;8359:7;8355:23;8351:32;8348:119;;;8386:79;;:::i;:::-;8348:119;8506:1;8531:53;8576:7;8567:6;8556:9;8552:22;8531:53;:::i;:::-;8521:63;;8477:117;8633:2;8659:53;8704:7;8695:6;8684:9;8680:22;8659:53;:::i;:::-;8649:63;;8604:118;8255:474;;;;;:::o;8735:182::-;8875:34;8871:1;8863:6;8859:14;8852:58;8735:182;:::o;8923:366::-;9065:3;9086:67;9150:2;9145:3;9086:67;:::i;:::-;9079:74;;9162:93;9251:3;9162:93;:::i;:::-;9280:2;9275:3;9271:12;9264:19;;8923:366;;;:::o;9295:419::-;9461:4;9499:2;9488:9;9484:18;9476:26;;9548:9;9542:4;9538:20;9534:1;9523:9;9519:17;9512:47;9576:131;9702:4;9576:131;:::i;:::-;9568:139;;9295:419;;;:::o;9720:180::-;9768:77;9765:1;9758:88;9865:4;9862:1;9855:15;9889:4;9886:1;9879:15;9906:320;9950:6;9987:1;9981:4;9977:12;9967:22;;10034:1;10028:4;10024:12;10055:18;10045:81;;10111:4;10103:6;10099:17;10089:27;;10045:81;10173:2;10165:6;10162:14;10142:18;10139:38;10136:84;;;10192:18;;:::i;:::-;10136:84;9957:269;9906:320;;;:::o;10232:147::-;10333:11;10370:3;10355:18;;10232:147;;;;:::o;10385:114::-;;:::o;10505:398::-;10664:3;10685:83;10766:1;10761:3;10685:83;:::i;:::-;10678:90;;10777:93;10866:3;10777:93;:::i;:::-;10895:1;10890:3;10886:11;10879:18;;10505:398;;;:::o;10909:379::-;11093:3;11115:147;11258:3;11115:147;:::i;:::-;11108:154;;11279:3;11272:10;;10909:379;;;:::o;11294:143::-;11351:5;11382:6;11376:13;11367:22;;11398:33;11425:5;11398:33;:::i;:::-;11294:143;;;;:::o;11443:351::-;11513:6;11562:2;11550:9;11541:7;11537:23;11533:32;11530:119;;;11568:79;;:::i;:::-;11530:119;11688:1;11713:64;11769:7;11760:6;11749:9;11745:22;11713:64;:::i;:::-;11703:74;;11659:128;11443:351;;;;:::o;11800:332::-;11921:4;11959:2;11948:9;11944:18;11936:26;;11972:71;12040:1;12029:9;12025:17;12016:6;11972:71;:::i;:::-;12053:72;12121:2;12110:9;12106:18;12097:6;12053:72;:::i;:::-;11800:332;;;;;:::o;12138:137::-;12192:5;12223:6;12217:13;12208:22;;12239:30;12263:5;12239:30;:::i;:::-;12138:137;;;;:::o;12281:345::-;12348:6;12397:2;12385:9;12376:7;12372:23;12368:32;12365:119;;;12403:79;;:::i;:::-;12365:119;12523:1;12548:61;12601:7;12592:6;12581:9;12577:22;12548:61;:::i;:::-;12538:71;;12494:125;12281:345;;;;:::o;12632:180::-;12680:77;12677:1;12670:88;12777:4;12774:1;12767:15;12801:4;12798:1;12791:15;12818:305;12858:3;12877:20;12895:1;12877:20;:::i;:::-;12872:25;;12911:20;12929:1;12911:20;:::i;:::-;12906:25;;13065:1;12997:66;12993:74;12990:1;12987:81;12984:107;;;13071:18;;:::i;:::-;12984:107;13115:1;13112;13108:9;13101:16;;12818:305;;;;:::o;13129:179::-;13269:31;13265:1;13257:6;13253:14;13246:55;13129:179;:::o;13314:366::-;13456:3;13477:67;13541:2;13536:3;13477:67;:::i;:::-;13470:74;;13553:93;13642:3;13553:93;:::i;:::-;13671:2;13666:3;13662:12;13655:19;;13314:366;;;:::o;13686:419::-;13852:4;13890:2;13879:9;13875:18;13867:26;;13939:9;13933:4;13929:20;13925:1;13914:9;13910:17;13903:47;13967:131;14093:4;13967:131;:::i;:::-;13959:139;;13686:419;;;:::o;14111:179::-;14251:31;14247:1;14239:6;14235:14;14228:55;14111:179;:::o;14296:366::-;14438:3;14459:67;14523:2;14518:3;14459:67;:::i;:::-;14452:74;;14535:93;14624:3;14535:93;:::i;:::-;14653:2;14648:3;14644:12;14637:19;;14296:366;;;:::o;14668:419::-;14834:4;14872:2;14861:9;14857:18;14849:26;;14921:9;14915:4;14911:20;14907:1;14896:9;14892:17;14885:47;14949:131;15075:4;14949:131;:::i;:::-;14941:139;;14668:419;;;:::o;15093:225::-;15233:34;15229:1;15221:6;15217:14;15210:58;15302:8;15297:2;15289:6;15285:15;15278:33;15093:225;:::o;15324:366::-;15466:3;15487:67;15551:2;15546:3;15487:67;:::i;:::-;15480:74;;15563:93;15652:3;15563:93;:::i;:::-;15681:2;15676:3;15672:12;15665:19;;15324:366;;;:::o;15696:419::-;15862:4;15900:2;15889:9;15885:18;15877:26;;15949:9;15943:4;15939:20;15935:1;15924:9;15920:17;15913:47;15977:131;16103:4;15977:131;:::i;:::-;15969:139;;15696:419;;;:::o;16121:177::-;16261:29;16257:1;16249:6;16245:14;16238:53;16121:177;:::o;16304:366::-;16446:3;16467:67;16531:2;16526:3;16467:67;:::i;:::-;16460:74;;16543:93;16632:3;16543:93;:::i;:::-;16661:2;16656:3;16652:12;16645:19;;16304:366;;;:::o;16676:419::-;16842:4;16880:2;16869:9;16865:18;16857:26;;16929:9;16923:4;16919:20;16915:1;16904:9;16900:17;16893:47;16957:131;17083:4;16957:131;:::i;:::-;16949:139;;16676:419;;;:::o;17101:223::-;17241:34;17237:1;17229:6;17225:14;17218:58;17310:6;17305:2;17297:6;17293:15;17286:31;17101:223;:::o;17330:366::-;17472:3;17493:67;17557:2;17552:3;17493:67;:::i;:::-;17486:74;;17569:93;17658:3;17569:93;:::i;:::-;17687:2;17682:3;17678:12;17671:19;;17330:366;;;:::o;17702:419::-;17868:4;17906:2;17895:9;17891:18;17883:26;;17955:9;17949:4;17945:20;17941:1;17930:9;17926:17;17919:47;17983:131;18109:4;17983:131;:::i;:::-;17975:139;;17702:419;;;:::o;18127:221::-;18267:34;18263:1;18255:6;18251:14;18244:58;18336:4;18331:2;18323:6;18319:15;18312:29;18127:221;:::o;18354:366::-;18496:3;18517:67;18581:2;18576:3;18517:67;:::i;:::-;18510:74;;18593:93;18682:3;18593:93;:::i;:::-;18711:2;18706:3;18702:12;18695:19;;18354:366;;;:::o;18726:419::-;18892:4;18930:2;18919:9;18915:18;18907:26;;18979:9;18973:4;18969:20;18965:1;18954:9;18950:17;18943:47;19007:131;19133:4;19007:131;:::i;:::-;18999:139;;18726:419;;;:::o;19151:224::-;19291:34;19287:1;19279:6;19275:14;19268:58;19360:7;19355:2;19347:6;19343:15;19336:32;19151:224;:::o;19381:366::-;19523:3;19544:67;19608:2;19603:3;19544:67;:::i;:::-;19537:74;;19620:93;19709:3;19620:93;:::i;:::-;19738:2;19733:3;19729:12;19722:19;;19381:366;;;:::o;19753:419::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:222::-;20318:34;20314:1;20306:6;20302:14;20295:58;20387:5;20382:2;20374:6;20370:15;20363:30;20178:222;:::o;20406:366::-;20548:3;20569:67;20633:2;20628:3;20569:67;:::i;:::-;20562:74;;20645:93;20734:3;20645:93;:::i;:::-;20763:2;20758:3;20754:12;20747:19;;20406:366;;;:::o;20778:419::-;20944:4;20982:2;20971:9;20967:18;20959:26;;21031:9;21025:4;21021:20;21017:1;21006:9;21002:17;20995:47;21059:131;21185:4;21059:131;:::i;:::-;21051:139;;20778:419;;;:::o;21203:236::-;21343:34;21339:1;21331:6;21327:14;21320:58;21412:19;21407:2;21399:6;21395:15;21388:44;21203:236;:::o;21445:366::-;21587:3;21608:67;21672:2;21667:3;21608:67;:::i;:::-;21601:74;;21684:93;21773:3;21684:93;:::i;:::-;21802:2;21797:3;21793:12;21786:19;;21445:366;;;:::o;21817:419::-;21983:4;22021:2;22010:9;22006:18;21998:26;;22070:9;22064:4;22060:20;22056:1;22045:9;22041:17;22034:47;22098:131;22224:4;22098:131;:::i;:::-;22090:139;;21817:419;;;:::o;22242:172::-;22382:24;22378:1;22370:6;22366:14;22359:48;22242:172;:::o;22420:366::-;22562:3;22583:67;22647:2;22642:3;22583:67;:::i;:::-;22576:74;;22659:93;22748:3;22659:93;:::i;:::-;22777:2;22772:3;22768:12;22761:19;;22420:366;;;:::o;22792:419::-;22958:4;22996:2;22985:9;22981:18;22973:26;;23045:9;23039:4;23035:20;23031:1;23020:9;23016:17;23009:47;23073:131;23199:4;23073:131;:::i;:::-;23065:139;;22792:419;;;:::o;23217:240::-;23357:34;23353:1;23345:6;23341:14;23334:58;23426:23;23421:2;23413:6;23409:15;23402:48;23217:240;:::o;23463:366::-;23605:3;23626:67;23690:2;23685:3;23626:67;:::i;:::-;23619:74;;23702:93;23791:3;23702:93;:::i;:::-;23820:2;23815:3;23811:12;23804:19;;23463:366;;;:::o;23835:419::-;24001:4;24039:2;24028:9;24024:18;24016:26;;24088:9;24082:4;24078:20;24074:1;24063:9;24059:17;24052:47;24116:131;24242:4;24116:131;:::i;:::-;24108:139;;23835:419;;;:::o;24260:169::-;24400:21;24396:1;24388:6;24384:14;24377:45;24260:169;:::o;24435:366::-;24577:3;24598:67;24662:2;24657:3;24598:67;:::i;:::-;24591:74;;24674:93;24763:3;24674:93;:::i;:::-;24792:2;24787:3;24783:12;24776:19;;24435:366;;;:::o;24807:419::-;24973:4;25011:2;25000:9;24996:18;24988:26;;25060:9;25054:4;25050:20;25046:1;25035:9;25031:17;25024:47;25088:131;25214:4;25088:131;:::i;:::-;25080:139;;24807:419;;;:::o;25232:241::-;25372:34;25368:1;25360:6;25356:14;25349:58;25441:24;25436:2;25428:6;25424:15;25417:49;25232:241;:::o;25479:366::-;25621:3;25642:67;25706:2;25701:3;25642:67;:::i;:::-;25635:74;;25718:93;25807:3;25718:93;:::i;:::-;25836:2;25831:3;25827:12;25820:19;;25479:366;;;:::o;25851:419::-;26017:4;26055:2;26044:9;26040:18;26032:26;;26104:9;26098:4;26094:20;26090:1;26079:9;26075:17;26068:47;26132:131;26258:4;26132:131;:::i;:::-;26124:139;;25851:419;;;:::o;26276:348::-;26316:7;26339:20;26357:1;26339:20;:::i;:::-;26334:25;;26373:20;26391:1;26373:20;:::i;:::-;26368:25;;26561:1;26493:66;26489:74;26486:1;26483:81;26478:1;26471:9;26464:17;26460:105;26457:131;;;26568:18;;:::i;:::-;26457:131;26616:1;26613;26609:9;26598:20;;26276:348;;;;:::o;26630:180::-;26678:77;26675:1;26668:88;26775:4;26772:1;26765:15;26799:4;26796:1;26789:15;26816:185;26856:1;26873:20;26891:1;26873:20;:::i;:::-;26868:25;;26907:20;26925:1;26907:20;:::i;:::-;26902:25;;26946:1;26936:35;;26951:18;;:::i;:::-;26936:35;26993:1;26990;26986:9;26981:14;;26816:185;;;;:::o;27007:191::-;27047:4;27067:20;27085:1;27067:20;:::i;:::-;27062:25;;27101:20;27119:1;27101:20;:::i;:::-;27096:25;;27140:1;27137;27134:8;27131:34;;;27145:18;;:::i;:::-;27131:34;27190:1;27187;27183:9;27175:17;;27007:191;;;;:::o;27204:442::-;27353:4;27391:2;27380:9;27376:18;27368:26;;27404:71;27472:1;27461:9;27457:17;27448:6;27404:71;:::i;:::-;27485:72;27553:2;27542:9;27538:18;27529:6;27485:72;:::i;:::-;27567;27635:2;27624:9;27620:18;27611:6;27567:72;:::i;:::-;27204:442;;;;;;:::o;27652:220::-;27792:34;27788:1;27780:6;27776:14;27769:58;27861:3;27856:2;27848:6;27844:15;27837:28;27652:220;:::o;27878:366::-;28020:3;28041:67;28105:2;28100:3;28041:67;:::i;:::-;28034:74;;28117:93;28206:3;28117:93;:::i;:::-;28235:2;28230:3;28226:12;28219:19;;27878:366;;;:::o;28250:419::-;28416:4;28454:2;28443:9;28439:18;28431:26;;28503:9;28497:4;28493:20;28489:1;28478:9;28474:17;28467:47;28531:131;28657:4;28531:131;:::i;:::-;28523:139;;28250:419;;;:::o;28675:180::-;28723:77;28720:1;28713:88;28820:4;28817:1;28810:15;28844:4;28841:1;28834:15;28861:180;28909:77;28906:1;28899:88;29006:4;29003:1;28996:15;29030:4;29027:1;29020:15;29047:143;29104:5;29135:6;29129:13;29120:22;;29151:33;29178:5;29151:33;:::i;:::-;29047:143;;;;:::o;29196:351::-;29266:6;29315:2;29303:9;29294:7;29290:23;29286:32;29283:119;;;29321:79;;:::i;:::-;29283:119;29441:1;29466:64;29522:7;29513:6;29502:9;29498:22;29466:64;:::i;:::-;29456:74;;29412:128;29196:351;;;;:::o;29553:85::-;29598:7;29627:5;29616:16;;29553:85;;;:::o;29644:158::-;29702:9;29735:61;29753:42;29762:32;29788:5;29762:32;:::i;:::-;29753:42;:::i;:::-;29735:61;:::i;:::-;29722:74;;29644:158;;;:::o;29808:147::-;29903:45;29942:5;29903:45;:::i;:::-;29898:3;29891:58;29808:147;;:::o;29961:114::-;30028:6;30062:5;30056:12;30046:22;;29961:114;;;:::o;30081:184::-;30180:11;30214:6;30209:3;30202:19;30254:4;30249:3;30245:14;30230:29;;30081:184;;;;:::o;30271:132::-;30338:4;30361:3;30353:11;;30391:4;30386:3;30382:14;30374:22;;30271:132;;;:::o;30409:108::-;30486:24;30504:5;30486:24;:::i;:::-;30481:3;30474:37;30409:108;;:::o;30523:179::-;30592:10;30613:46;30655:3;30647:6;30613:46;:::i;:::-;30691:4;30686:3;30682:14;30668:28;;30523:179;;;;:::o;30708:113::-;30778:4;30810;30805:3;30801:14;30793:22;;30708:113;;;:::o;30857:732::-;30976:3;31005:54;31053:5;31005:54;:::i;:::-;31075:86;31154:6;31149:3;31075:86;:::i;:::-;31068:93;;31185:56;31235:5;31185:56;:::i;:::-;31264:7;31295:1;31280:284;31305:6;31302:1;31299:13;31280:284;;;31381:6;31375:13;31408:63;31467:3;31452:13;31408:63;:::i;:::-;31401:70;;31494:60;31547:6;31494:60;:::i;:::-;31484:70;;31340:224;31327:1;31324;31320:9;31315:14;;31280:284;;;31284:14;31580:3;31573:10;;30981:608;;;30857:732;;;;:::o;31595:831::-;31858:4;31896:3;31885:9;31881:19;31873:27;;31910:71;31978:1;31967:9;31963:17;31954:6;31910:71;:::i;:::-;31991:80;32067:2;32056:9;32052:18;32043:6;31991:80;:::i;:::-;32118:9;32112:4;32108:20;32103:2;32092:9;32088:18;32081:48;32146:108;32249:4;32240:6;32146:108;:::i;:::-;32138:116;;32264:72;32332:2;32321:9;32317:18;32308:6;32264:72;:::i;:::-;32346:73;32414:3;32403:9;32399:19;32390:6;32346:73;:::i;:::-;31595:831;;;;;;;;:::o;32432:807::-;32681:4;32719:3;32708:9;32704:19;32696:27;;32733:71;32801:1;32790:9;32786:17;32777:6;32733:71;:::i;:::-;32814:72;32882:2;32871:9;32867:18;32858:6;32814:72;:::i;:::-;32896:80;32972:2;32961:9;32957:18;32948:6;32896:80;:::i;:::-;32986;33062:2;33051:9;33047:18;33038:6;32986:80;:::i;:::-;33076:73;33144:3;33133:9;33129:19;33120:6;33076:73;:::i;:::-;33159;33227:3;33216:9;33212:19;33203:6;33159:73;:::i;:::-;32432:807;;;;;;;;;:::o;33245:663::-;33333:6;33341;33349;33398:2;33386:9;33377:7;33373:23;33369:32;33366:119;;;33404:79;;:::i;:::-;33366:119;33524:1;33549:64;33605:7;33596:6;33585:9;33581:22;33549:64;:::i;:::-;33539:74;;33495:128;33662:2;33688:64;33744:7;33735:6;33724:9;33720:22;33688:64;:::i;:::-;33678:74;;33633:129;33801:2;33827:64;33883:7;33874:6;33863:9;33859:22;33827:64;:::i;:::-;33817:74;;33772:129;33245:663;;;;;:::o

Swarm Source

ipfs://550d16522c20d359cab3680690bf27d485422c164b7fe8d9fe34e6acb6e092ac
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.