ETH Price: $2,389.93 (-0.55%)

Token

Social Bull (SOCIAL)
 

Overview

Max Total Supply

1,000,000,000,000 SOCIAL

Holders

120

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,786,792,110.734743958626639001 SOCIAL

Value
$0.00
0x30bae2c28178e596c53d1b9822722da19c955b45
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
SOCIAL

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-20
*/

/**
 *Submitted for verification at Etherscan.io on 2022-07-20
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, uint256 amount) external returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    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);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

library Counters {
    struct Counter {
        uint256 _value;
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

contract Ownable {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Factory {
    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);
 }

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 IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function removeLiquidityETH(
      address token,
      uint liquidity,
      uint amountTokenMin,
      uint amountETHMin,
      address to,
      uint deadline
    ) external returns (uint amountToken, uint amountETH); 
}

library SignedSafeMath {
    function mul(int256 a, int256 b) internal pure returns (int256) {
        return a * b;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        return a - b;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        return a + b;
    }
}

library UniswapV2PriceImpactCalculator {
    function calculateSellPriceImpact(address tokenAddress, address pairAddress, uint256 value) public view returns (uint256) {
        value = value * 998 / 1000;

        IUniswapV2Pair pair = IUniswapV2Pair(pairAddress);

        (uint256 r0, uint256 r1,) = pair.getReserves();

        IERC20Metadata token0 = IERC20Metadata(pair.token0());
        IERC20Metadata token1 = IERC20Metadata(pair.token1());

        if(address(token1) == tokenAddress) {
            IERC20Metadata tokenTemp = token0;
            token0 = token1;
            token1 = tokenTemp;

            uint256 rTemp = r0;
            r0 = r1;
            r1 = rTemp;
        }

        uint256 product = r0 * r1;

        uint256 r0After = r0 + value;
        uint256 r1After = product / r0After;

        return (10000 - (r1After * 10000 / r1)) * 998 / 1000;
    }
}

library SafeCast {
    function toUint224(uint256 value) internal pure returns (uint224) {
        require(
            value <= type(uint224).max,
            "SafeCast: value doesn't fit in 224 bits"
        );
        return uint224(value);
    }

    function toUint128(uint256 value) internal pure returns (uint128) {
        require(
            value <= type(uint128).max,
            "SafeCast: value doesn't fit in 128 bits"
        );
        return uint128(value);
    }

    function toUint96(uint256 value) internal pure returns (uint96) {
        require(
            value <= type(uint96).max,
            "SafeCast: value doesn't fit in 96 bits"
        );
        return uint96(value);
    }

    function toUint64(uint256 value) internal pure returns (uint64) {
        require(
            value <= type(uint64).max,
            "SafeCast: value doesn't fit in 64 bits"
        );
        return uint64(value);
    }

    function toUint32(uint256 value) internal pure returns (uint32) {
        require(
            value <= type(uint32).max,
            "SafeCast: value doesn't fit in 32 bits"
        );
        return uint32(value);
    }

    function toUint16(uint256 value) internal pure returns (uint16) {
        require(
            value <= type(uint16).max,
            "SafeCast: value doesn't fit in 16 bits"
        );
        return uint16(value);
    }

    function toUint8(uint256 value) internal pure returns (uint8) {
        require(
            value <= type(uint8).max,
            "SafeCast: value doesn't fit in 8 bits"
        );
        return uint8(value);
    }

    function toUint256(int256 value) internal pure returns (uint256) {
        require(value >= 0, "SafeCast: value must be positive");
        return uint256(value);
    }

    function toInt128(int256 value) internal pure returns (int128) {
        require(
            value >= type(int128).min && value <= type(int128).max,
            "SafeCast: value doesn't fit in 128 bits"
        );
        return int128(value);
    }

    function toInt64(int256 value) internal pure returns (int64) {
        require(
            value >= type(int64).min && value <= type(int64).max,
            "SafeCast: value doesn't fit in 64 bits"
        );
        return int64(value);
    }

    function toInt32(int256 value) internal pure returns (int32) {
        require(
            value >= type(int32).min && value <= type(int32).max,
            "SafeCast: value doesn't fit in 32 bits"
        );
        return int32(value);
    }

    function toInt16(int256 value) internal pure returns (int16) {
        require(
            value >= type(int16).min && value <= type(int16).max,
            "SafeCast: value doesn't fit in 16 bits"
        );
        return int16(value);
    }

    function toInt8(int256 value) internal pure returns (int8) {
        require(
            value >= type(int8).min && value <= type(int8).max,
            "SafeCast: value doesn't fit in 8 bits"
        );
        return int8(value);
    }

    function toInt256(uint256 value) internal pure returns (int256) {
        require(
            value <= uint256(type(int256).max),
            "SafeCast: value doesn't fit in an int256"
        );
        return int256(value);
    }
}


contract SOCIAL is ERC20, Ownable {
    using SafeMath for uint256;
    using Counters for Counters.Counter;

    string private constant _name = "Social Bull";
    string private constant _symbol = "SOCIAL";
    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1e12 * 10**18;

    IUniswapV2Router02 private uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    bool private tradingOpen = false;
    uint256 private launchBlock = 0;
    address private uniswapV2Pair;

    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) public isExcludeFromFee;
    mapping(address => bool) public isBlacklist;
    mapping(address => bool) public isBot;
    mapping(address => bool) public isExcludeFromMaxWalletAmount;
    mapping(address => bool) public isExcludeFromMaxTxAmount;

    uint256 public maxWalletAmount;
    uint256 public maxTxAmount;

    uint256 public baseBuyTax = 7;
    uint256 public baseSellTax = 7;

    uint256 private autoLP = 15;
    uint256 private devFee = 30;
    uint256 private utilityFee = 55;

    uint256 public minContractTokensToSwap = 2e9 * 10**18;

    struct PriceImpactRangeTax {
        uint256 from;
        uint256 to;
        uint256 tax;
    }

    mapping(address => uint256) public initialBuyTimestamp;
    mapping(uint256 => PriceImpactRangeTax) public priceImpactRangeTaxes;
    uint8 public maxIndexImpactRange;

    address private devWalletAddress;
    address private utilityWalletAddress;

    mapping(address => uint256) public lastTransfer;

    uint256 public pendingTokensForReward;
    uint256 public minRewardTokensToSwap = 10000 * 10**18;

    uint256 public pendingEthReward;


    Counters.Counter private claimedHistoryIds;

    event BuyFees(address from, address to, uint256 amountTokens);
    event SellFees(address from, address to, uint256 amountTokens);
    event AddLiquidity(uint256 amountTokens, uint256 amountEth);
    event SwapTokensForEth(uint256 sentTokens, uint256 receivedEth);
    event SwapEthForTokens(uint256 sentEth, uint256 receivedTokens);
    event DistributeFees(uint256 devEth, uint256 remarketingEth);

    event SendUtilityDividends(uint256 amount);

    constructor(
        address _devWalletAddress,
        address _utilityWalletAddress
    ) ERC20(_name, _symbol) {
        devWalletAddress = _devWalletAddress;
        utilityWalletAddress = _utilityWalletAddress;

        maxTxAmount = (_tTotal * 5) / 10000; // 0.05% maxTransactionAmount (initial limit)
        maxWalletAmount = (_tTotal * 5) / 10000; // 0.05% maxWalletAmount (initial limit)

        isExcludeFromFee[owner()] = true;
        isExcludeFromFee[address(this)] = true;
        isExcludeFromFee[devWalletAddress] = true;
        isExcludeFromFee[utilityWalletAddress] = true;
        isExcludeFromMaxWalletAmount[owner()] = true;
        isExcludeFromMaxWalletAmount[address(this)] = true;
        isExcludeFromMaxWalletAmount[address(uniswapV2Router)] = true;
        isExcludeFromMaxWalletAmount[devWalletAddress] = true;
        isExcludeFromMaxWalletAmount[utilityWalletAddress] = true;
        isExcludeFromMaxTxAmount[owner()] = true;
        isExcludeFromMaxTxAmount[address(this)] = true;
        isExcludeFromMaxTxAmount[address(uniswapV2Router)] = true;
        isExcludeFromMaxTxAmount[devWalletAddress] = true;
        isExcludeFromMaxTxAmount[utilityWalletAddress] = true;
        priceImpactRangeTaxes[1].from = 0;
        priceImpactRangeTaxes[1].to = 199;
        priceImpactRangeTaxes[1].tax = 0;
        priceImpactRangeTaxes[2].from = 200;
        priceImpactRangeTaxes[2].to = 5000;
        priceImpactRangeTaxes[2].tax = 13;

        maxIndexImpactRange = 2;

        _mint(owner(), _tTotal);

    }

    /**
     * @dev Function to recover any ETH sent to Contract by Mistake.
    */
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{ value: address(this).balance }(
            ""
        );
    }

    /**
     * @dev Function to recover any ERC20 Tokens sent to Contract by Mistake.
    */
    function recoverAnyERC20TokensFromContract(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "SOCIAL: Trading is already open");
        uint256 _launchTime;
        
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        isExcludeFromMaxWalletAmount[address(uniswapV2Pair)] = true;
        isExcludeFromMaxTxAmount[address(uniswapV2Pair)] = true;

        automatedMarketMakerPairs[uniswapV2Pair] = true;

        addLiquidity(balanceOf(address(this)), address(this).balance);
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        tradingOpen = true;
        _launchTime = block.timestamp;
        launchBlock = block.number;
    }

    function manualSwap() external onlyOwner {
        uint256 totalTokens = balanceOf(address(this)).sub(
            pendingTokensForReward
        );

        swapTokensForEth(totalTokens);
    }

    function manualSend() external onlyOwner {
        uint256 totalEth = address(this).balance.sub(pendingEthReward);

        uint256 devFeesToSend = totalEth.mul(devFee).div(
            uint256(100).sub(autoLP)
        );
        uint256 utilityFeesToSend = totalEth.mul(utilityFee).div(
            uint256(100).sub(autoLP)
        );
        uint256 remainingEthForFees = totalEth.sub(devFeesToSend).sub(
            utilityFeesToSend);
        devFeesToSend = devFeesToSend.add(remainingEthForFees);

        sendEthToWallets(devFeesToSend, utilityFeesToSend);
    }

    function getPriceImpactTax(address _ad, uint256 _amount) public view returns (uint256) {
        uint256 tax = baseSellTax;

        uint256 priceImpact = UniswapV2PriceImpactCalculator.calculateSellPriceImpact(address(_ad), uniswapV2Pair, _amount);

        for (uint8 x =1; x <= maxIndexImpactRange; x++) {
            if (
                (priceImpact >= priceImpactRangeTaxes[x].from &&
                    priceImpact <= priceImpactRangeTaxes[x].to)
            ) {
                tax = priceImpactRangeTaxes[x].tax;
                return tax;
            }
        }
        return tax;
    }

    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

    function _transfer(
        address _from,
        address _to,
        uint256 _amount
    ) internal virtual override {
        require(!isBot[_from] && !isBot[_to]);
        require(!isBlacklist[_from] && !isBlacklist[_to]);

        uint256 transferAmount = _amount;
        if (
            tradingOpen &&
            (automatedMarketMakerPairs[_from] ||
                automatedMarketMakerPairs[_to]) &&
            !isExcludeFromFee[_from] &&
            !isExcludeFromFee[_to]
        ) {
            if(!isExcludeFromMaxTxAmount[_from] && !isExcludeFromMaxTxAmount[_to]) {
                require(_amount <= maxTxAmount, "Transfer amount exceeds the max transaction amount");
            }
             
            transferAmount = takeFees(_from, _to, _amount);
        }

        if (initialBuyTimestamp[_to] == 0) {
            initialBuyTimestamp[_to] = block.timestamp;
        }

        if (!automatedMarketMakerPairs[_to] && !isExcludeFromMaxWalletAmount[_to]) {
            require(balanceOf(_to) + transferAmount <= maxWalletAmount,
                "SOCIAL: Wallet balance limit reached"
            );
        }

        super._transfer(_from, _to, transferAmount);

    }

    function _setAutomatedMarketMakerPair(address _pair, bool _value) private {
        require(
            automatedMarketMakerPairs[_pair] != _value,
            "SOCIAL: Automated market maker pair is already set to that value"
        );
        automatedMarketMakerPairs[_pair] = _value;
    }

    function setBlacklist(address _address, bool _isBlaklist)
        external onlyOwner {
        isBlacklist[_address] = _isBlaklist;
    }


    function setExcludeFromFee(address _address, bool _isExludeFromFee)
        external onlyOwner {
        isExcludeFromFee[_address] = _isExludeFromFee;
    }

    function setExcludeFromMaxWalletAmount(address _address, bool _isExludeFromMaxWalletAmount)
        external onlyOwner {
        isExcludeFromMaxWalletAmount[_address] = _isExludeFromMaxWalletAmount;
    }

    function setExcludeFromMaxTxAmount(address _address, bool _isExludeFromMaxTxAmount)
        external onlyOwner {
        isExcludeFromMaxTxAmount[_address] = _isExludeFromMaxTxAmount;
    }

    function setMaxWallet(uint256 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxWallet lower than 0.1%");
        maxWalletAmount = newMaxWallet * (10**18);
    }
    
    function setMaxTxAmount(uint256 newMaxTxAmount) external onlyOwner {
        require(newMaxTxAmount >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxWallet lower than 0.1%");
        maxTxAmount = newMaxTxAmount * (10**18);
    }

    function setTaxes(
        uint256 _baseBuyTax,
        uint256 _baseSellTax,
        uint256 _autoLP,
        uint256 _devFee,
        uint256 _utilityFee
    ) external onlyOwner {
        require(_baseBuyTax <= 10 && _baseSellTax <= 10 && _devFee >= 15);

        baseBuyTax = _baseBuyTax;
        baseSellTax = _baseSellTax;
        autoLP = _autoLP;
        devFee = _devFee;
        utilityFee = _utilityFee;
    }

    function setMinContractTokensToSwap(uint256 _numToken) public onlyOwner {
        minContractTokensToSwap = _numToken;
    }

    function setMinRewardTokensToSwap(uint256 _numToken) public onlyOwner {
        minRewardTokensToSwap = _numToken;
    }

    function setPriceImpactRangeTax(
        uint8 _index,
        uint256 _from,
        uint256 _to,
        uint256 _tax
    ) external onlyOwner {
        priceImpactRangeTaxes[_index].from = _from;
        priceImpactRangeTaxes[_index].to = _to;
        priceImpactRangeTaxes[_index].tax = _tax;
    }

    function setMaxIndexImpactRange(uint8 _maxIndex) external onlyOwner {
        maxIndexImpactRange = _maxIndex;
    }

    function setBots(address[] calldata _bots) public onlyOwner {
        for (uint256 i = 0; i < _bots.length; i++) {
            if (
                _bots[i] != uniswapV2Pair &&
                _bots[i] != address(uniswapV2Router)
            ) {
                isBot[_bots[i]] = true;
            }
        }
    }

    function setWalletAddress(address _utilityWalletAddress) external onlyOwner {
        utilityWalletAddress = _utilityWalletAddress;
    }

    function takeFees(
        address _from,
        address _to,
        uint256 _amount
    ) private returns (uint256) {
        uint256 fees;
        uint256 remainingAmount;
        require(
            automatedMarketMakerPairs[_from] || automatedMarketMakerPairs[_to],
            "SOCIAL: No market makers found"
        );

        if (automatedMarketMakerPairs[_from]) {
            uint256 totalBuyTax;
            if (block.number == launchBlock) {
                totalBuyTax = 90;
            } else if (block.number == launchBlock + 1) {
                totalBuyTax = 70;
            } else if (block.number == launchBlock + 2) {
                totalBuyTax = 40;
            } else if (block.number == launchBlock + 3) {
                totalBuyTax = 35;
            } else {
                totalBuyTax = baseBuyTax;
            }

            fees = _amount.mul(totalBuyTax).div(100);

            remainingAmount = _amount.sub(fees);

            super._transfer(_from, address(this), fees);

            emit BuyFees(_from, address(this), fees);
        } else {
            uint256 totalSellTax;
            if (block.number == launchBlock) {
                totalSellTax = 90;
            } else if (block.number == launchBlock + 1) {
                totalSellTax = 35;
            } else if (block.number == launchBlock + 2) {
                totalSellTax = 35;
            } else if (block.number == launchBlock + 3) {
                totalSellTax = 30;
            } else {
                uint256 increaseSellFee = getPriceImpactTax(address(this), _amount);

                totalSellTax = baseSellTax + increaseSellFee;

                if(totalSellTax > 30) {
                    totalSellTax = 30;
                }
            }

            fees = _amount.mul(totalSellTax).div(100);
            uint256 rewardTokens = _amount
                .mul(totalSellTax.sub(baseSellTax))
                .div(100);
            pendingTokensForReward = pendingTokensForReward.add(rewardTokens);

            remainingAmount = _amount.sub(fees);

            super._transfer(_from, address(this), fees);
            uint256 tokensToSwap = balanceOf(address(this)).sub(
                pendingTokensForReward);

            if (tokensToSwap > minContractTokensToSwap) {
                distributeTokensEth(tokensToSwap);
            }
            if (pendingTokensForReward > minRewardTokensToSwap) {
                swapAndSendUtilityDividends(pendingTokensForReward);
            }

            emit SellFees(_from, address(this), fees);
        }

        return remainingAmount;
    }

    function distributeTokensEth(uint256 _tokenAmount) private {
        uint256 tokensForLiquidity = _tokenAmount.mul(autoLP).div(100);

        uint256 halfLiquidity = tokensForLiquidity.div(2);
        uint256 tokensForSwap = _tokenAmount.sub(halfLiquidity);

        uint256 totalEth = swapTokensForEth(tokensForSwap);

        uint256 ethForAddLP = totalEth.mul(autoLP).div(100);
        uint256 devFeesToSend = totalEth.mul(devFee).div(100);
        uint256 utilityFeesToSend = totalEth.mul(utilityFee).div(100);
        uint256 remainingEthForFees = totalEth
            .sub(ethForAddLP)
            .sub(devFeesToSend)
            .sub(utilityFeesToSend);
        devFeesToSend = devFeesToSend.add(remainingEthForFees);

        sendEthToWallets(devFeesToSend, utilityFeesToSend);

        if (halfLiquidity > 0 && ethForAddLP > 0) {
            addLiquidity(halfLiquidity, ethForAddLP);
        }
    }

    function sendEthToWallets(uint256 _devFees, uint256 _utilityFees)
        private
    {
        if (_devFees > 0) {
            payable(devWalletAddress).transfer(_devFees);
        }
        if (_utilityFees > 0) {
            payable(utilityWalletAddress).transfer(_utilityFees);
        }
        emit DistributeFees(_devFees, _utilityFees);
    }

    function swapTokensForEth(uint256 _tokenAmount) private returns (uint256) {
        uint256 initialEthBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), _tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 receivedEth = address(this).balance.sub(initialEthBalance);

        emit SwapTokensForEth(_tokenAmount, receivedEth);
        return receivedEth;
    }

    function swapEthForTokens(uint256 _ethAmount, address _to)
        private
        returns (uint256)
    {
        uint256 initialTokenBalance = balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: _ethAmount
        }(0, path, _to, block.timestamp);

        uint256 receivedTokens = balanceOf(address(this)).sub(
            initialTokenBalance
        );

        emit SwapEthForTokens(_ethAmount, receivedTokens);
        return receivedTokens;
    }

    function addLiquidity(uint256 _tokenAmount, uint256 _ethAmount) private {
        _approve(address(this), address(uniswapV2Router), _tokenAmount);
        uniswapV2Router.addLiquidityETH{value: _ethAmount}(
            address(this),
            _tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        emit AddLiquidity(_tokenAmount, _ethAmount);
    }

    function swapAndSendUtilityDividends(uint256 _tokenAmount) private {
        uint256 dividends = swapTokensForEth(_tokenAmount);

        pendingTokensForReward = pendingTokensForReward.sub(_tokenAmount);
        uint256 totalEthToSend = dividends.add(pendingEthReward);

        (bool success, ) = address(utilityWalletAddress).call{value: totalEthToSend}(
            ""
        );

        if (success) {
            emit SendUtilityDividends(dividends);
        } else {
            pendingEthReward = pendingEthReward.add(dividends);
        }
    }

    function availableContractTokenBalance() public view returns (uint256) {
        return balanceOf(address(this)).sub(pendingTokensForReward);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_devWalletAddress","type":"address"},{"internalType":"address","name":"_utilityWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountEth","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"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":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"BuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"devEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remarketingEth","type":"uint256"}],"name":"DistributeFees","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":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"SellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendUtilityDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"SwapEthForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedEth","type":"uint256"}],"name":"SwapTokensForEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[],"name":"availableContractTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseSellTax","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":[{"internalType":"address","name":"_ad","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getPriceImpactTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"initialBuyTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxIndexImpactRange","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minContractTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minRewardTokensToSwap","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingEthReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTokensForReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"priceImpactRangeTaxes","outputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"},{"internalType":"uint256","name":"tax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverAnyERC20TokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlaklist","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromFee","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromMaxTxAmount","type":"bool"}],"name":"setExcludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromMaxWalletAmount","type":"bool"}],"name":"setExcludeFromMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_maxIndex","type":"uint8"}],"name":"setMaxIndexImpactRange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numToken","type":"uint256"}],"name":"setMinRewardTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_index","type":"uint8"},{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"},{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setPriceImpactRangeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseBuyTax","type":"uint256"},{"internalType":"uint256","name":"_baseSellTax","type":"uint256"},{"internalType":"uint256","name":"_autoLP","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_utilityWalletAddress","type":"address"}],"name":"setWalletAddress","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760146101000a81548160ff021916908315150217905550600060085560076012556007601355600f601455601e60155560376016556b06765c793fa10079d000000060175569021e19e0c9bab2400000601e55348015620000bd57600080fd5b50604051620066b2380380620066b28339818101604052810190620000e3919062000cfa565b6040518060400160405280600b81526020017f536f6369616c2042756c6c0000000000000000000000000000000000000000008152506040518060400160405280600681526020017f534f4349414c000000000000000000000000000000000000000000000000000081525081600390805190602001906200016792919062000be0565b5080600490805190602001906200018092919062000be0565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381601a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060056c0c9f2c9cd04674edea40000000620002e2919062000d7a565b620002ee919062000e0a565b60118190555061271060056c0c9f2c9cd04674edea4000000062000313919062000d7a565b6200031f919062000e0a565b6010819055506001600b60006200033b62000a3360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000620004ee62000a3360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60006200071b62000a3360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060196000600181526020019081526020016000206000018190555060c7601960006001815260200190815260200160002060010181905550600060196000600181526020019081526020016000206002018190555060c8601960006002815260200190815260200160002060000181905550611388601960006002815260200190815260200160002060010181905550600d6019600060028152602001908152602001600020600201819055506002601a60006101000a81548160ff021916908360ff16021790555062000a2b62000a1162000a3360201b60201c565b6c0c9f2c9cd04674edea4000000062000a5d60201b60201c565b505062000fb5565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac79062000ea3565b60405180910390fd5b62000ae46000838362000bd660201b60201c565b806002600082825462000af8919062000ec5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b4f919062000ec5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bb6919062000f33565b60405180910390a362000bd26000838362000bdb60201b60201c565b5050565b505050565b505050565b82805462000bee9062000f7f565b90600052602060002090601f01602090048101928262000c12576000855562000c5e565b82601f1062000c2d57805160ff191683800117855562000c5e565b8280016001018555821562000c5e579182015b8281111562000c5d57825182559160200191906001019062000c40565b5b50905062000c6d919062000c71565b5090565b5b8082111562000c8c57600081600090555060010162000c72565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cc28262000c95565b9050919050565b62000cd48162000cb5565b811462000ce057600080fd5b50565b60008151905062000cf48162000cc9565b92915050565b6000806040838503121562000d145762000d1362000c90565b5b600062000d248582860162000ce3565b925050602062000d378582860162000ce3565b9150509250929050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d878262000d41565b915062000d948362000d41565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dd05762000dcf62000d4b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e178262000d41565b915062000e248362000d41565b92508262000e375762000e3662000ddb565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e8b601f8362000e42565b915062000e988262000e53565b602082019050919050565b6000602082019050818103600083015262000ebe8162000e7c565b9050919050565b600062000ed28262000d41565b915062000edf8362000d41565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f175762000f1662000d4b565b5b828201905092915050565b62000f2d8162000d41565b82525050565b600060208201905062000f4a600083018462000f22565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f9857607f821691505b6020821081141562000faf5762000fae62000f50565b5b50919050565b6156ed8062000fc56000396000f3fe6080604052600436106102e85760003560e01c80638c0b5e2211610190578063ba762ddd116100dc578063e3402c6711610095578063ec28438a1161006f578063ec28438a14610ba5578063f2fde38b14610bce578063f429389014610bf7578063f5648a4f14610c0e576102ef565b8063e3402c6714610b28578063ea084eef14610b53578063eb50d71f14610b7c576102ef565b8063ba762ddd14610a16578063c2b1b19914610a41578063c9567bf914610a6c578063c9e8714c14610a83578063d297105914610ac0578063dd62ed3e14610aeb576102ef565b8063a457c2d711610149578063ac1a386a11610123578063ac1a386a1461095c578063af9549e014610985578063b515566a146109ae578063b80425c2146109d7576102ef565b8063a457c2d7146108b7578063a9059cbb146108f4578063aa4bde2814610931576102ef565b80638c0b5e22146107935780638c8f8c04146107be5780638da5cb5b146107e75780638e5916b214610812578063906778331461084f57806395d89b411461088c576102ef565b80633bbac5791161024f5780635d0dc8e41161020857806370a08231116101e257806370a08231146106e9578063715018a6146107265780637c4b492e1461073d57806389a5c69114610768576102ef565b80635d0dc8e41461066c5780635fcefa421461069557806368bfe623146106be576102ef565b80633bbac5791461054a5780633dc1edb71461058757806351bc3c85146105c45780635b6612ad146105db5780635b683e66146106185780635d0044ca14610643576102ef565b806323b872dd116102a157806323b872dd146104025780632731087b1461043f5780632c7401b314610468578063313ce567146104a5578063333e99db146104d0578063395093511461050d576102ef565b806306fdde03146102f4578063095ea7b31461031f57806312dfbd331461035c578063153b0d1e1461038557806318160ddd146103ae5780631c08bc5d146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c25565b604051610316919061434c565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061440c565b610cb7565b6040516103539190614467565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190614482565b610cda565b005b34801561039157600080fd5b506103ac60048036038101906103a791906144db565b610d74565b005b3480156103ba57600080fd5b506103c3610e5f565b6040516103d0919061452a565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb9190614482565b610e69565b005b34801561040e57600080fd5b5061042960048036038101906104249190614545565b610f03565b6040516104369190614467565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906144db565b610f32565b005b34801561047457600080fd5b5061048f600480360381019061048a919061440c565b61101d565b60405161049c919061452a565b60405180910390f35b3480156104b157600080fd5b506104ba611178565b6040516104c791906145b4565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f291906145cf565b611181565b6040516105049190614467565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f919061440c565b6111a1565b6040516105419190614467565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906145cf565b61124b565b60405161057e9190614467565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a991906145cf565b61126b565b6040516105bb9190614467565b60405180910390f35b3480156105d057600080fd5b506105d961128b565b005b3480156105e757600080fd5b5061060260048036038101906105fd91906145cf565b611349565b60405161060f919061452a565b60405180910390f35b34801561062457600080fd5b5061062d611361565b60405161063a919061452a565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190614482565b611367565b005b34801561067857600080fd5b50610693600480360381019061068e9190614628565b61148a565b005b3480156106a157600080fd5b506106bc60048036038101906106b79190614655565b611538565b005b3480156106ca57600080fd5b506106d361161a565b6040516106e091906145b4565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b91906145cf565b61162d565b60405161071d919061452a565b60405180910390f35b34801561073257600080fd5b5061073b611675565b005b34801561074957600080fd5b506107526117c6565b60405161075f919061452a565b60405180910390f35b34801561077457600080fd5b5061077d6117cc565b60405161078a919061452a565b60405180910390f35b34801561079f57600080fd5b506107a86117d2565b6040516107b5919061452a565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190614545565b6117d8565b005b3480156107f357600080fd5b506107fc6118ec565b60405161080991906146df565b60405180910390f35b34801561081e57600080fd5b50610839600480360381019061083491906145cf565b611916565b6040516108469190614467565b60405180910390f35b34801561085b57600080fd5b50610876600480360381019061087191906145cf565b611936565b604051610883919061452a565b60405180910390f35b34801561089857600080fd5b506108a161194e565b6040516108ae919061434c565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d9919061440c565b6119e0565b6040516108eb9190614467565b60405180910390f35b34801561090057600080fd5b5061091b6004803603810190610916919061440c565b611aca565b6040516109289190614467565b60405180910390f35b34801561093d57600080fd5b50610946611aed565b604051610953919061452a565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906145cf565b611af3565b005b34801561099157600080fd5b506109ac60048036038101906109a791906144db565b611bc7565b005b3480156109ba57600080fd5b506109d560048036038101906109d0919061475f565b611cb2565b005b3480156109e357600080fd5b506109fe60048036038101906109f99190614482565b611ee7565b604051610a0d939291906147ac565b60405180910390f35b348015610a2257600080fd5b50610a2b611f11565b604051610a38919061452a565b60405180910390f35b348015610a4d57600080fd5b50610a56611f35565b604051610a63919061452a565b60405180910390f35b348015610a7857600080fd5b50610a81611f3b565b005b348015610a8f57600080fd5b50610aaa6004803603810190610aa591906145cf565b612486565b604051610ab79190614467565b60405180910390f35b348015610acc57600080fd5b50610ad56124a6565b604051610ae2919061452a565b60405180910390f35b348015610af757600080fd5b50610b126004803603810190610b0d91906147e3565b6124ac565b604051610b1f919061452a565b60405180910390f35b348015610b3457600080fd5b50610b3d612533565b604051610b4a919061452a565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b7591906144db565b612539565b005b348015610b8857600080fd5b50610ba36004803603810190610b9e9190614823565b612624565b005b348015610bb157600080fd5b50610bcc6004803603810190610bc79190614482565b612714565b005b348015610bda57600080fd5b50610bf56004803603810190610bf091906145cf565b612837565b005b348015610c0357600080fd5b50610c0c6129f7565b005b348015610c1a57600080fd5b50610c23612b6e565b005b606060038054610c34906148b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c60906148b9565b8015610cad5780601f10610c8257610100808354040283529160200191610cad565b820191906000526020600020905b815481529060010190602001808311610c9057829003601f168201915b5050505050905090565b600080610cc2612c6f565b9050610ccf818585612c77565b600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190614937565b60405180910390fd5b8060178190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90614937565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090614937565b60405180910390fd5b80601e8190555050565b600080610f0e612c6f565b9050610f1b858285612e42565b610f26858585612ece565b60019150509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990614937565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000806013549050600073723004300852b7047093a5e4e7a43ec854418cdd632f99934f86600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b815260040161108493929190614975565b602060405180830381865af41580156110a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c591906149c1565b90506000600190505b601a60009054906101000a900460ff1660ff168160ff161161116b57601960008260ff16815260200190815260200160002060000154821015801561112c5750601960008260ff168152602001908152602001600020600101548211155b1561115857601960008260ff168152602001908152602001600020600201549250829350505050611172565b808061116390614a1d565b9150506110ce565b5081925050505b92915050565b60006012905090565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000806111ac612c6f565b9050611240818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461123b9190614a47565b612c77565b600191505092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290614937565b60405180910390fd5b600061133a601d5461132c3061162d565b61343490919063ffffffff16565b90506113458161344a565b5050565b601c6020528060005260406000206000915090505481565b60135481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90614937565b60405180910390fd5b670de0b6b3a76400006103e8600161140d610e5f565b6114179190614a9d565b6114219190614b26565b61142b9190614b26565b81101561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490614bc9565b60405180910390fd5b670de0b6b3a7640000816114819190614a9d565b60108190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190614937565b60405180910390fd5b80601a60006101000a81548160ff021916908360ff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90614937565b60405180910390fd5b600a85111580156115da5750600a8411155b80156115e75750600f8210155b6115f057600080fd5b84601281905550836013819055508260148190555081601581905550806016819055505050505050565b601a60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90614937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601d5481565b60175481565b60115481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90614937565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016118a3929190614be9565b6020604051808303816000875af11580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e69190614c27565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60186020528060005260406000206000915090505481565b60606004805461195d906148b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611989906148b9565b80156119d65780601f106119ab576101008083540402835291602001916119d6565b820191906000526020600020905b8154815290600101906020018083116119b957829003601f168201915b5050505050905090565b6000806119eb612c6f565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890614cc6565b60405180910390fd5b611abe8286868403612c77565b60019250505092915050565b600080611ad5612c6f565b9050611ae2818585612ece565b600191505092915050565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90614937565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e90614937565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614937565b60405180910390fd5b60005b82829050811015611ee257600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110611d9c57611d9b614ce6565b5b9050602002016020810190611db191906145cf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611e4a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110611e1c57611e1b614ce6565b5b9050602002016020810190611e3191906145cf565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611ecf576001600d6000858585818110611e6857611e67614ce6565b5b9050602002016020810190611e7d91906145cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611eda90614d15565b915050611d45565b505050565b60196020528060005260406000206000915090508060000154908060010154908060020154905083565b6000611f30601d54611f223061162d565b61343490919063ffffffff16565b905090565b60125481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290614937565b60405180910390fd5b600760149054906101000a900460ff161561201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290614daa565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561208a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ae9190614ddf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215b9190614ddf565b6040518363ffffffff1660e01b8152600401612178929190614e0c565b6020604051808303816000875af1158015612197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bb9190614ddf565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061237b6123753061162d565b476136ea565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161241a929190614be9565b6020604051808303816000875af1158015612439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245d9190614c27565b506001600760146101000a81548160ff0219169083151502179055504290504360088190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601e5481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614937565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ab90614937565b60405180910390fd5b82601960008660ff1681526020019081526020016000206000018190555081601960008660ff1681526020019081526020016000206001018190555080601960008660ff1681526020019081526020016000206002018190555050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b90614937565b60405180910390fd5b670de0b6b3a76400006103e860016127ba610e5f565b6127c49190614a9d565b6127ce9190614b26565b6127d89190614b26565b81101561281a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281190614bc9565b60405180910390fd5b670de0b6b3a76400008161282e9190614a9d565b60118190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be90614937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e90614ea7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7e90614937565b60405180910390fd5b6000612a9e601f544761343490919063ffffffff16565b90506000612ade612abb601454606461343490919063ffffffff16565b612ad06015548561380890919063ffffffff16565b61381e90919063ffffffff16565b90506000612b1e612afb601454606461343490919063ffffffff16565b612b106016548661380890919063ffffffff16565b61381e90919063ffffffff16565b90506000612b4782612b39858761343490919063ffffffff16565b61343490919063ffffffff16565b9050612b5c818461383490919063ffffffff16565b9250612b68838361384a565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf590614937565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612c2490614ef8565b60006040518083038185875af1925050503d8060008114612c61576040519150601f19603f3d011682016040523d82523d6000602084013e612c66565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cde90614f7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4e90615011565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e35919061452a565b60405180910390a3505050565b6000612e4e84846124ac565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612ec85781811015612eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb19061507d565b60405180910390fd5b612ec78484848403612c77565b5b50505050565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f725750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f7b57600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561301f5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61302857600080fd5b6000819050600760149054906101000a900460ff1680156130e65750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130e55750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b801561313c5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131925750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561329457600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561323b5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561328657601154821115613285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327c9061510f565b60405180910390fd5b5b61329184848461396d565b90505b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156133215742601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133c55750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342357601054816133d78561162d565b6133e19190614a47565b1115613422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613419906151a1565b60405180910390fd5b5b61342e848483613d84565b50505050565b6000818361344291906151c1565b905092915050565b6000804790506000600267ffffffffffffffff81111561346d5761346c6151f5565b5b60405190808252806020026020018201604052801561349b5781602001602082028036833780820191505090505b50905030816000815181106134b3576134b2614ce6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561355a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357e9190614ddf565b8160018151811061359257613591614ce6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f930600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686612c77565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161365d959493929190615327565b600060405180830381600087803b15801561367757600080fd5b505af115801561368b573d6000803e3d6000fd5b5050505060006136a4834761343490919063ffffffff16565b90507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd7686523449627385826040516136d7929190615381565b60405180910390a1809350505050919050565b61371730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c77565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806137636118ec565b426040518863ffffffff1660e01b8152600401613785969594939291906153aa565b60606040518083038185885af11580156137a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137c8919061540b565b5050507fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb482826040516137fc929190615381565b60405180910390a15050565b600081836138169190614a9d565b905092915050565b6000818361382c9190614b26565b905092915050565b600081836138429190614a47565b905092915050565b60008211156138bd57601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156138bb573d6000803e3d6000fd5b505b600081111561393057601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561392e573d6000803e3d6000fd5b505b7f916ad8171ef8c567c7790377a142f0200f9565940680c06e30dd105cfd9249688282604051613961929190615381565b60405180910390a15050565b6000806000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a135750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a49906154aa565b60405180910390fd5b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ba8576000600854431415613ab957605a9050613b1f565b6001600854613ac89190614a47565b431415613ad85760469050613b1e565b6002600854613ae79190614a47565b431415613af75760289050613b1d565b6003600854613b069190614a47565b431415613b165760239050613b1c565b60125490505b5b5b5b613b456064613b37838861380890919063ffffffff16565b61381e90919063ffffffff16565b9250613b5a838661343490919063ffffffff16565b9150613b67873085613d84565b7f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d873085604051613b9a939291906154ca565b60405180910390a150613d78565b6000600854431415613bbd57605a9050613c4b565b6001600854613bcc9190614a47565b431415613bdc5760239050613c4a565b6002600854613beb9190614a47565b431415613bfb5760239050613c49565b6003600854613c0a9190614a47565b431415613c1a57601e9050613c48565b6000613c26308761101d565b905080601354613c369190614a47565b9150601e821115613c4657601e91505b505b5b5b5b613c716064613c63838861380890919063ffffffff16565b61381e90919063ffffffff16565b92506000613caf6064613ca1613c926013548661343490919063ffffffff16565b8961380890919063ffffffff16565b61381e90919063ffffffff16565b9050613cc681601d5461383490919063ffffffff16565b601d81905550613cdf848761343490919063ffffffff16565b9250613cec883086613d84565b6000613d0b601d54613cfd3061162d565b61343490919063ffffffff16565b9050601754811115613d2157613d2081614005565b5b601e54601d541115613d3957613d38601d54614176565b5b7f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a893087604051613d6c939291906154ca565b60405180910390a15050505b80925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613deb90615573565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5b90615605565b60405180910390fd5b613e6f8383836142a9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eec90615697565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f889190614a47565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fec919061452a565b60405180910390a3613fff8484846142ae565b50505050565b600061402f60646140216014548561380890919063ffffffff16565b61381e90919063ffffffff16565b9050600061404760028361381e90919063ffffffff16565b9050600061405e828561343490919063ffffffff16565b9050600061406b8261344a565b9050600061409760646140896014548561380890919063ffffffff16565b61381e90919063ffffffff16565b905060006140c360646140b56015548661380890919063ffffffff16565b61381e90919063ffffffff16565b905060006140ef60646140e16016548761380890919063ffffffff16565b61381e90919063ffffffff16565b9050600061412a8261411c8561410e888a61343490919063ffffffff16565b61343490919063ffffffff16565b61343490919063ffffffff16565b905061413f818461383490919063ffffffff16565b925061414b838361384a565b60008711801561415b5750600084115b1561416b5761416a87856136ea565b5b505050505050505050565b60006141818261344a565b905061419882601d5461343490919063ffffffff16565b601d8190555060006141b5601f548361383490919063ffffffff16565b90506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516141ff90614ef8565b60006040518083038185875af1925050503d806000811461423c576040519150601f19603f3d011682016040523d82523d6000602084013e614241565b606091505b505090508015614287577ff425a3b64c5006c1353057b67f3f7bab6e695f3ae4903683617d0764163a12788360405161427a919061452a565b60405180910390a16142a3565b61429c83601f5461383490919063ffffffff16565b601f819055505b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ed5780820151818401526020810190506142d2565b838111156142fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061431e826142b3565b61432881856142be565b93506143388185602086016142cf565b61434181614302565b840191505092915050565b600060208201905081810360008301526143668184614313565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143a382614378565b9050919050565b6143b381614398565b81146143be57600080fd5b50565b6000813590506143d0816143aa565b92915050565b6000819050919050565b6143e9816143d6565b81146143f457600080fd5b50565b600081359050614406816143e0565b92915050565b600080604083850312156144235761442261436e565b5b6000614431858286016143c1565b9250506020614442858286016143f7565b9150509250929050565b60008115159050919050565b6144618161444c565b82525050565b600060208201905061447c6000830184614458565b92915050565b6000602082840312156144985761449761436e565b5b60006144a6848285016143f7565b91505092915050565b6144b88161444c565b81146144c357600080fd5b50565b6000813590506144d5816144af565b92915050565b600080604083850312156144f2576144f161436e565b5b6000614500858286016143c1565b9250506020614511858286016144c6565b9150509250929050565b614524816143d6565b82525050565b600060208201905061453f600083018461451b565b92915050565b60008060006060848603121561455e5761455d61436e565b5b600061456c868287016143c1565b935050602061457d868287016143c1565b925050604061458e868287016143f7565b9150509250925092565b600060ff82169050919050565b6145ae81614598565b82525050565b60006020820190506145c960008301846145a5565b92915050565b6000602082840312156145e5576145e461436e565b5b60006145f3848285016143c1565b91505092915050565b61460581614598565b811461461057600080fd5b50565b600081359050614622816145fc565b92915050565b60006020828403121561463e5761463d61436e565b5b600061464c84828501614613565b91505092915050565b600080600080600060a086880312156146715761467061436e565b5b600061467f888289016143f7565b9550506020614690888289016143f7565b94505060406146a1888289016143f7565b93505060606146b2888289016143f7565b92505060806146c3888289016143f7565b9150509295509295909350565b6146d981614398565b82525050565b60006020820190506146f460008301846146d0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261471f5761471e6146fa565b5b8235905067ffffffffffffffff81111561473c5761473b6146ff565b5b60208301915083602082028301111561475857614757614704565b5b9250929050565b600080602083850312156147765761477561436e565b5b600083013567ffffffffffffffff81111561479457614793614373565b5b6147a085828601614709565b92509250509250929050565b60006060820190506147c1600083018661451b565b6147ce602083018561451b565b6147db604083018461451b565b949350505050565b600080604083850312156147fa576147f961436e565b5b6000614808858286016143c1565b9250506020614819858286016143c1565b9150509250929050565b6000806000806080858703121561483d5761483c61436e565b5b600061484b87828801614613565b945050602061485c878288016143f7565b935050604061486d878288016143f7565b925050606061487e878288016143f7565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148d157607f821691505b602082108114156148e5576148e461488a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149216020836142be565b915061492c826148eb565b602082019050919050565b6000602082019050818103600083015261495081614914565b9050919050565b61496081614398565b82525050565b61496f816143d6565b82525050565b600060608201905061498a6000830186614957565b6149976020830185614957565b6149a46040830184614966565b949350505050565b6000815190506149bb816143e0565b92915050565b6000602082840312156149d7576149d661436e565b5b60006149e5848285016149ac565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a2882614598565b915060ff821415614a3c57614a3b6149ee565b5b600182019050919050565b6000614a52826143d6565b9150614a5d836143d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916149ee565b5b828201905092915050565b6000614aa8826143d6565b9150614ab3836143d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614aec57614aeb6149ee565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b31826143d6565b9150614b3c836143d6565b925082614b4c57614b4b614af7565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b6000614bb36024836142be565b9150614bbe82614b57565b604082019050919050565b60006020820190508181036000830152614be281614ba6565b9050919050565b6000604082019050614bfe60008301856146d0565b614c0b602083018461451b565b9392505050565b600081519050614c21816144af565b92915050565b600060208284031215614c3d57614c3c61436e565b5b6000614c4b84828501614c12565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614cb06025836142be565b9150614cbb82614c54565b604082019050919050565b60006020820190508181036000830152614cdf81614ca3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614d20826143d6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d5357614d526149ee565b5b600182019050919050565b7f534f4349414c3a2054726164696e6720697320616c7265616479206f70656e00600082015250565b6000614d94601f836142be565b9150614d9f82614d5e565b602082019050919050565b60006020820190508181036000830152614dc381614d87565b9050919050565b600081519050614dd9816143aa565b92915050565b600060208284031215614df557614df461436e565b5b6000614e0384828501614dca565b91505092915050565b6000604082019050614e2160008301856146d0565b614e2e60208301846146d0565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e916026836142be565b9150614e9c82614e35565b604082019050919050565b60006020820190508181036000830152614ec081614e84565b9050919050565b600081905092915050565b50565b6000614ee2600083614ec7565b9150614eed82614ed2565b600082019050919050565b6000614f0382614ed5565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f696024836142be565b9150614f7482614f0d565b604082019050919050565b60006020820190508181036000830152614f9881614f5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ffb6022836142be565b915061500682614f9f565b604082019050919050565b6000602082019050818103600083015261502a81614fee565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000615067601d836142be565b915061507282615031565b602082019050919050565b600060208201905081810360008301526150968161505a565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61782060008201527f7472616e73616374696f6e20616d6f756e740000000000000000000000000000602082015250565b60006150f96032836142be565b91506151048261509d565b604082019050919050565b60006020820190508181036000830152615128816150ec565b9050919050565b7f534f4349414c3a2057616c6c65742062616c616e6365206c696d69742072656160008201527f6368656400000000000000000000000000000000000000000000000000000000602082015250565b600061518b6024836142be565b91506151968261512f565b604082019050919050565b600060208201905081810360008301526151ba8161517e565b9050919050565b60006151cc826143d6565b91506151d7836143d6565b9250828210156151ea576151e96149ee565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b600061525361524e61524984615224565b61522e565b6143d6565b9050919050565b61526381615238565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61529e81614398565b82525050565b60006152b08383615295565b60208301905092915050565b6000602082019050919050565b60006152d482615269565b6152de8185615274565b93506152e983615285565b8060005b8381101561531a57815161530188826152a4565b975061530c836152bc565b9250506001810190506152ed565b5085935050505092915050565b600060a08201905061533c600083018861451b565b615349602083018761525a565b818103604083015261535b81866152c9565b905061536a60608301856146d0565b615377608083018461451b565b9695505050505050565b6000604082019050615396600083018561451b565b6153a3602083018461451b565b9392505050565b600060c0820190506153bf60008301896146d0565b6153cc602083018861451b565b6153d9604083018761525a565b6153e6606083018661525a565b6153f360808301856146d0565b61540060a083018461451b565b979650505050505050565b6000806000606084860312156154245761542361436e565b5b6000615432868287016149ac565b9350506020615443868287016149ac565b9250506040615454868287016149ac565b9150509250925092565b7f534f4349414c3a204e6f206d61726b6574206d616b65727320666f756e640000600082015250565b6000615494601e836142be565b915061549f8261545e565b602082019050919050565b600060208201905081810360008301526154c381615487565b9050919050565b60006060820190506154df60008301866146d0565b6154ec60208301856146d0565b6154f9604083018461451b565b949350505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061555d6025836142be565b915061556882615501565b604082019050919050565b6000602082019050818103600083015261558c81615550565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155ef6023836142be565b91506155fa82615593565b604082019050919050565b6000602082019050818103600083015261561e816155e2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006156816026836142be565b915061568c82615625565b604082019050919050565b600060208201905081810360008301526156b081615674565b905091905056fea2646970667358221220e080e8218ef86770f43121d226e72b969e557f21524ce1f2f7241057b139838f64736f6c634300080b003300000000000000000000000018e474ee31ed4ece9466eada38282e1c75b88dc2000000000000000000000000196ea38f190b21f113dd2528decd593e4b67d1de

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80638c0b5e2211610190578063ba762ddd116100dc578063e3402c6711610095578063ec28438a1161006f578063ec28438a14610ba5578063f2fde38b14610bce578063f429389014610bf7578063f5648a4f14610c0e576102ef565b8063e3402c6714610b28578063ea084eef14610b53578063eb50d71f14610b7c576102ef565b8063ba762ddd14610a16578063c2b1b19914610a41578063c9567bf914610a6c578063c9e8714c14610a83578063d297105914610ac0578063dd62ed3e14610aeb576102ef565b8063a457c2d711610149578063ac1a386a11610123578063ac1a386a1461095c578063af9549e014610985578063b515566a146109ae578063b80425c2146109d7576102ef565b8063a457c2d7146108b7578063a9059cbb146108f4578063aa4bde2814610931576102ef565b80638c0b5e22146107935780638c8f8c04146107be5780638da5cb5b146107e75780638e5916b214610812578063906778331461084f57806395d89b411461088c576102ef565b80633bbac5791161024f5780635d0dc8e41161020857806370a08231116101e257806370a08231146106e9578063715018a6146107265780637c4b492e1461073d57806389a5c69114610768576102ef565b80635d0dc8e41461066c5780635fcefa421461069557806368bfe623146106be576102ef565b80633bbac5791461054a5780633dc1edb71461058757806351bc3c85146105c45780635b6612ad146105db5780635b683e66146106185780635d0044ca14610643576102ef565b806323b872dd116102a157806323b872dd146104025780632731087b1461043f5780632c7401b314610468578063313ce567146104a5578063333e99db146104d0578063395093511461050d576102ef565b806306fdde03146102f4578063095ea7b31461031f57806312dfbd331461035c578063153b0d1e1461038557806318160ddd146103ae5780631c08bc5d146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c25565b604051610316919061434c565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061440c565b610cb7565b6040516103539190614467565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190614482565b610cda565b005b34801561039157600080fd5b506103ac60048036038101906103a791906144db565b610d74565b005b3480156103ba57600080fd5b506103c3610e5f565b6040516103d0919061452a565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb9190614482565b610e69565b005b34801561040e57600080fd5b5061042960048036038101906104249190614545565b610f03565b6040516104369190614467565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906144db565b610f32565b005b34801561047457600080fd5b5061048f600480360381019061048a919061440c565b61101d565b60405161049c919061452a565b60405180910390f35b3480156104b157600080fd5b506104ba611178565b6040516104c791906145b4565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f291906145cf565b611181565b6040516105049190614467565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f919061440c565b6111a1565b6040516105419190614467565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906145cf565b61124b565b60405161057e9190614467565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a991906145cf565b61126b565b6040516105bb9190614467565b60405180910390f35b3480156105d057600080fd5b506105d961128b565b005b3480156105e757600080fd5b5061060260048036038101906105fd91906145cf565b611349565b60405161060f919061452a565b60405180910390f35b34801561062457600080fd5b5061062d611361565b60405161063a919061452a565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190614482565b611367565b005b34801561067857600080fd5b50610693600480360381019061068e9190614628565b61148a565b005b3480156106a157600080fd5b506106bc60048036038101906106b79190614655565b611538565b005b3480156106ca57600080fd5b506106d361161a565b6040516106e091906145b4565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b91906145cf565b61162d565b60405161071d919061452a565b60405180910390f35b34801561073257600080fd5b5061073b611675565b005b34801561074957600080fd5b506107526117c6565b60405161075f919061452a565b60405180910390f35b34801561077457600080fd5b5061077d6117cc565b60405161078a919061452a565b60405180910390f35b34801561079f57600080fd5b506107a86117d2565b6040516107b5919061452a565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190614545565b6117d8565b005b3480156107f357600080fd5b506107fc6118ec565b60405161080991906146df565b60405180910390f35b34801561081e57600080fd5b50610839600480360381019061083491906145cf565b611916565b6040516108469190614467565b60405180910390f35b34801561085b57600080fd5b50610876600480360381019061087191906145cf565b611936565b604051610883919061452a565b60405180910390f35b34801561089857600080fd5b506108a161194e565b6040516108ae919061434c565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d9919061440c565b6119e0565b6040516108eb9190614467565b60405180910390f35b34801561090057600080fd5b5061091b6004803603810190610916919061440c565b611aca565b6040516109289190614467565b60405180910390f35b34801561093d57600080fd5b50610946611aed565b604051610953919061452a565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906145cf565b611af3565b005b34801561099157600080fd5b506109ac60048036038101906109a791906144db565b611bc7565b005b3480156109ba57600080fd5b506109d560048036038101906109d0919061475f565b611cb2565b005b3480156109e357600080fd5b506109fe60048036038101906109f99190614482565b611ee7565b604051610a0d939291906147ac565b60405180910390f35b348015610a2257600080fd5b50610a2b611f11565b604051610a38919061452a565b60405180910390f35b348015610a4d57600080fd5b50610a56611f35565b604051610a63919061452a565b60405180910390f35b348015610a7857600080fd5b50610a81611f3b565b005b348015610a8f57600080fd5b50610aaa6004803603810190610aa591906145cf565b612486565b604051610ab79190614467565b60405180910390f35b348015610acc57600080fd5b50610ad56124a6565b604051610ae2919061452a565b60405180910390f35b348015610af757600080fd5b50610b126004803603810190610b0d91906147e3565b6124ac565b604051610b1f919061452a565b60405180910390f35b348015610b3457600080fd5b50610b3d612533565b604051610b4a919061452a565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b7591906144db565b612539565b005b348015610b8857600080fd5b50610ba36004803603810190610b9e9190614823565b612624565b005b348015610bb157600080fd5b50610bcc6004803603810190610bc79190614482565b612714565b005b348015610bda57600080fd5b50610bf56004803603810190610bf091906145cf565b612837565b005b348015610c0357600080fd5b50610c0c6129f7565b005b348015610c1a57600080fd5b50610c23612b6e565b005b606060038054610c34906148b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c60906148b9565b8015610cad5780601f10610c8257610100808354040283529160200191610cad565b820191906000526020600020905b815481529060010190602001808311610c9057829003601f168201915b5050505050905090565b600080610cc2612c6f565b9050610ccf818585612c77565b600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190614937565b60405180910390fd5b8060178190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90614937565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090614937565b60405180910390fd5b80601e8190555050565b600080610f0e612c6f565b9050610f1b858285612e42565b610f26858585612ece565b60019150509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990614937565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000806013549050600073723004300852b7047093a5e4e7a43ec854418cdd632f99934f86600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b815260040161108493929190614975565b602060405180830381865af41580156110a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c591906149c1565b90506000600190505b601a60009054906101000a900460ff1660ff168160ff161161116b57601960008260ff16815260200190815260200160002060000154821015801561112c5750601960008260ff168152602001908152602001600020600101548211155b1561115857601960008260ff168152602001908152602001600020600201549250829350505050611172565b808061116390614a1d565b9150506110ce565b5081925050505b92915050565b60006012905090565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000806111ac612c6f565b9050611240818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461123b9190614a47565b612c77565b600191505092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290614937565b60405180910390fd5b600061133a601d5461132c3061162d565b61343490919063ffffffff16565b90506113458161344a565b5050565b601c6020528060005260406000206000915090505481565b60135481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90614937565b60405180910390fd5b670de0b6b3a76400006103e8600161140d610e5f565b6114179190614a9d565b6114219190614b26565b61142b9190614b26565b81101561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490614bc9565b60405180910390fd5b670de0b6b3a7640000816114819190614a9d565b60108190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190614937565b60405180910390fd5b80601a60006101000a81548160ff021916908360ff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90614937565b60405180910390fd5b600a85111580156115da5750600a8411155b80156115e75750600f8210155b6115f057600080fd5b84601281905550836013819055508260148190555081601581905550806016819055505050505050565b601a60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90614937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601d5481565b60175481565b60115481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90614937565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016118a3929190614be9565b6020604051808303816000875af11580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e69190614c27565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60186020528060005260406000206000915090505481565b60606004805461195d906148b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611989906148b9565b80156119d65780601f106119ab576101008083540402835291602001916119d6565b820191906000526020600020905b8154815290600101906020018083116119b957829003601f168201915b5050505050905090565b6000806119eb612c6f565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890614cc6565b60405180910390fd5b611abe8286868403612c77565b60019250505092915050565b600080611ad5612c6f565b9050611ae2818585612ece565b600191505092915050565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90614937565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e90614937565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614937565b60405180910390fd5b60005b82829050811015611ee257600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110611d9c57611d9b614ce6565b5b9050602002016020810190611db191906145cf565b73ffffffffffffffffffffffffffffffffffffffff1614158015611e4a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110611e1c57611e1b614ce6565b5b9050602002016020810190611e3191906145cf565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611ecf576001600d6000858585818110611e6857611e67614ce6565b5b9050602002016020810190611e7d91906145cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611eda90614d15565b915050611d45565b505050565b60196020528060005260406000206000915090508060000154908060010154908060020154905083565b6000611f30601d54611f223061162d565b61343490919063ffffffff16565b905090565b60125481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc290614937565b60405180910390fd5b600760149054906101000a900460ff161561201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290614daa565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561208a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ae9190614ddf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215b9190614ddf565b6040518363ffffffff1660e01b8152600401612178929190614e0c565b6020604051808303816000875af1158015612197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bb9190614ddf565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061237b6123753061162d565b476136ea565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161241a929190614be9565b6020604051808303816000875af1158015612439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245d9190614c27565b506001600760146101000a81548160ff0219169083151502179055504290504360088190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601e5481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c090614937565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ab90614937565b60405180910390fd5b82601960008660ff1681526020019081526020016000206000018190555081601960008660ff1681526020019081526020016000206001018190555080601960008660ff1681526020019081526020016000206002018190555050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b90614937565b60405180910390fd5b670de0b6b3a76400006103e860016127ba610e5f565b6127c49190614a9d565b6127ce9190614b26565b6127d89190614b26565b81101561281a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281190614bc9565b60405180910390fd5b670de0b6b3a76400008161282e9190614a9d565b60118190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be90614937565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e90614ea7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7e90614937565b60405180910390fd5b6000612a9e601f544761343490919063ffffffff16565b90506000612ade612abb601454606461343490919063ffffffff16565b612ad06015548561380890919063ffffffff16565b61381e90919063ffffffff16565b90506000612b1e612afb601454606461343490919063ffffffff16565b612b106016548661380890919063ffffffff16565b61381e90919063ffffffff16565b90506000612b4782612b39858761343490919063ffffffff16565b61343490919063ffffffff16565b9050612b5c818461383490919063ffffffff16565b9250612b68838361384a565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf590614937565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612c2490614ef8565b60006040518083038185875af1925050503d8060008114612c61576040519150601f19603f3d011682016040523d82523d6000602084013e612c66565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cde90614f7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4e90615011565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e35919061452a565b60405180910390a3505050565b6000612e4e84846124ac565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612ec85781811015612eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb19061507d565b60405180910390fd5b612ec78484848403612c77565b5b50505050565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f725750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f7b57600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561301f5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61302857600080fd5b6000819050600760149054906101000a900460ff1680156130e65750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130e55750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b801561313c5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131925750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561329457600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561323b5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561328657601154821115613285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327c9061510f565b60405180910390fd5b5b61329184848461396d565b90505b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156133215742601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133c55750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342357601054816133d78561162d565b6133e19190614a47565b1115613422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613419906151a1565b60405180910390fd5b5b61342e848483613d84565b50505050565b6000818361344291906151c1565b905092915050565b6000804790506000600267ffffffffffffffff81111561346d5761346c6151f5565b5b60405190808252806020026020018201604052801561349b5781602001602082028036833780820191505090505b50905030816000815181106134b3576134b2614ce6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561355a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357e9190614ddf565b8160018151811061359257613591614ce6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f930600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686612c77565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161365d959493929190615327565b600060405180830381600087803b15801561367757600080fd5b505af115801561368b573d6000803e3d6000fd5b5050505060006136a4834761343490919063ffffffff16565b90507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd7686523449627385826040516136d7929190615381565b60405180910390a1809350505050919050565b61371730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c77565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806137636118ec565b426040518863ffffffff1660e01b8152600401613785969594939291906153aa565b60606040518083038185885af11580156137a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137c8919061540b565b5050507fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb482826040516137fc929190615381565b60405180910390a15050565b600081836138169190614a9d565b905092915050565b6000818361382c9190614b26565b905092915050565b600081836138429190614a47565b905092915050565b60008211156138bd57601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156138bb573d6000803e3d6000fd5b505b600081111561393057601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561392e573d6000803e3d6000fd5b505b7f916ad8171ef8c567c7790377a142f0200f9565940680c06e30dd105cfd9249688282604051613961929190615381565b60405180910390a15050565b6000806000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a135750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a49906154aa565b60405180910390fd5b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ba8576000600854431415613ab957605a9050613b1f565b6001600854613ac89190614a47565b431415613ad85760469050613b1e565b6002600854613ae79190614a47565b431415613af75760289050613b1d565b6003600854613b069190614a47565b431415613b165760239050613b1c565b60125490505b5b5b5b613b456064613b37838861380890919063ffffffff16565b61381e90919063ffffffff16565b9250613b5a838661343490919063ffffffff16565b9150613b67873085613d84565b7f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d873085604051613b9a939291906154ca565b60405180910390a150613d78565b6000600854431415613bbd57605a9050613c4b565b6001600854613bcc9190614a47565b431415613bdc5760239050613c4a565b6002600854613beb9190614a47565b431415613bfb5760239050613c49565b6003600854613c0a9190614a47565b431415613c1a57601e9050613c48565b6000613c26308761101d565b905080601354613c369190614a47565b9150601e821115613c4657601e91505b505b5b5b5b613c716064613c63838861380890919063ffffffff16565b61381e90919063ffffffff16565b92506000613caf6064613ca1613c926013548661343490919063ffffffff16565b8961380890919063ffffffff16565b61381e90919063ffffffff16565b9050613cc681601d5461383490919063ffffffff16565b601d81905550613cdf848761343490919063ffffffff16565b9250613cec883086613d84565b6000613d0b601d54613cfd3061162d565b61343490919063ffffffff16565b9050601754811115613d2157613d2081614005565b5b601e54601d541115613d3957613d38601d54614176565b5b7f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a893087604051613d6c939291906154ca565b60405180910390a15050505b80925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613deb90615573565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5b90615605565b60405180910390fd5b613e6f8383836142a9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eec90615697565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f889190614a47565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fec919061452a565b60405180910390a3613fff8484846142ae565b50505050565b600061402f60646140216014548561380890919063ffffffff16565b61381e90919063ffffffff16565b9050600061404760028361381e90919063ffffffff16565b9050600061405e828561343490919063ffffffff16565b9050600061406b8261344a565b9050600061409760646140896014548561380890919063ffffffff16565b61381e90919063ffffffff16565b905060006140c360646140b56015548661380890919063ffffffff16565b61381e90919063ffffffff16565b905060006140ef60646140e16016548761380890919063ffffffff16565b61381e90919063ffffffff16565b9050600061412a8261411c8561410e888a61343490919063ffffffff16565b61343490919063ffffffff16565b61343490919063ffffffff16565b905061413f818461383490919063ffffffff16565b925061414b838361384a565b60008711801561415b5750600084115b1561416b5761416a87856136ea565b5b505050505050505050565b60006141818261344a565b905061419882601d5461343490919063ffffffff16565b601d8190555060006141b5601f548361383490919063ffffffff16565b90506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516141ff90614ef8565b60006040518083038185875af1925050503d806000811461423c576040519150601f19603f3d011682016040523d82523d6000602084013e614241565b606091505b505090508015614287577ff425a3b64c5006c1353057b67f3f7bab6e695f3ae4903683617d0764163a12788360405161427a919061452a565b60405180910390a16142a3565b61429c83601f5461383490919063ffffffff16565b601f819055505b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ed5780820151818401526020810190506142d2565b838111156142fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061431e826142b3565b61432881856142be565b93506143388185602086016142cf565b61434181614302565b840191505092915050565b600060208201905081810360008301526143668184614313565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143a382614378565b9050919050565b6143b381614398565b81146143be57600080fd5b50565b6000813590506143d0816143aa565b92915050565b6000819050919050565b6143e9816143d6565b81146143f457600080fd5b50565b600081359050614406816143e0565b92915050565b600080604083850312156144235761442261436e565b5b6000614431858286016143c1565b9250506020614442858286016143f7565b9150509250929050565b60008115159050919050565b6144618161444c565b82525050565b600060208201905061447c6000830184614458565b92915050565b6000602082840312156144985761449761436e565b5b60006144a6848285016143f7565b91505092915050565b6144b88161444c565b81146144c357600080fd5b50565b6000813590506144d5816144af565b92915050565b600080604083850312156144f2576144f161436e565b5b6000614500858286016143c1565b9250506020614511858286016144c6565b9150509250929050565b614524816143d6565b82525050565b600060208201905061453f600083018461451b565b92915050565b60008060006060848603121561455e5761455d61436e565b5b600061456c868287016143c1565b935050602061457d868287016143c1565b925050604061458e868287016143f7565b9150509250925092565b600060ff82169050919050565b6145ae81614598565b82525050565b60006020820190506145c960008301846145a5565b92915050565b6000602082840312156145e5576145e461436e565b5b60006145f3848285016143c1565b91505092915050565b61460581614598565b811461461057600080fd5b50565b600081359050614622816145fc565b92915050565b60006020828403121561463e5761463d61436e565b5b600061464c84828501614613565b91505092915050565b600080600080600060a086880312156146715761467061436e565b5b600061467f888289016143f7565b9550506020614690888289016143f7565b94505060406146a1888289016143f7565b93505060606146b2888289016143f7565b92505060806146c3888289016143f7565b9150509295509295909350565b6146d981614398565b82525050565b60006020820190506146f460008301846146d0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261471f5761471e6146fa565b5b8235905067ffffffffffffffff81111561473c5761473b6146ff565b5b60208301915083602082028301111561475857614757614704565b5b9250929050565b600080602083850312156147765761477561436e565b5b600083013567ffffffffffffffff81111561479457614793614373565b5b6147a085828601614709565b92509250509250929050565b60006060820190506147c1600083018661451b565b6147ce602083018561451b565b6147db604083018461451b565b949350505050565b600080604083850312156147fa576147f961436e565b5b6000614808858286016143c1565b9250506020614819858286016143c1565b9150509250929050565b6000806000806080858703121561483d5761483c61436e565b5b600061484b87828801614613565b945050602061485c878288016143f7565b935050604061486d878288016143f7565b925050606061487e878288016143f7565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148d157607f821691505b602082108114156148e5576148e461488a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149216020836142be565b915061492c826148eb565b602082019050919050565b6000602082019050818103600083015261495081614914565b9050919050565b61496081614398565b82525050565b61496f816143d6565b82525050565b600060608201905061498a6000830186614957565b6149976020830185614957565b6149a46040830184614966565b949350505050565b6000815190506149bb816143e0565b92915050565b6000602082840312156149d7576149d661436e565b5b60006149e5848285016149ac565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a2882614598565b915060ff821415614a3c57614a3b6149ee565b5b600182019050919050565b6000614a52826143d6565b9150614a5d836143d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916149ee565b5b828201905092915050565b6000614aa8826143d6565b9150614ab3836143d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614aec57614aeb6149ee565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b31826143d6565b9150614b3c836143d6565b925082614b4c57614b4b614af7565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b6000614bb36024836142be565b9150614bbe82614b57565b604082019050919050565b60006020820190508181036000830152614be281614ba6565b9050919050565b6000604082019050614bfe60008301856146d0565b614c0b602083018461451b565b9392505050565b600081519050614c21816144af565b92915050565b600060208284031215614c3d57614c3c61436e565b5b6000614c4b84828501614c12565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614cb06025836142be565b9150614cbb82614c54565b604082019050919050565b60006020820190508181036000830152614cdf81614ca3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614d20826143d6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d5357614d526149ee565b5b600182019050919050565b7f534f4349414c3a2054726164696e6720697320616c7265616479206f70656e00600082015250565b6000614d94601f836142be565b9150614d9f82614d5e565b602082019050919050565b60006020820190508181036000830152614dc381614d87565b9050919050565b600081519050614dd9816143aa565b92915050565b600060208284031215614df557614df461436e565b5b6000614e0384828501614dca565b91505092915050565b6000604082019050614e2160008301856146d0565b614e2e60208301846146d0565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e916026836142be565b9150614e9c82614e35565b604082019050919050565b60006020820190508181036000830152614ec081614e84565b9050919050565b600081905092915050565b50565b6000614ee2600083614ec7565b9150614eed82614ed2565b600082019050919050565b6000614f0382614ed5565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f696024836142be565b9150614f7482614f0d565b604082019050919050565b60006020820190508181036000830152614f9881614f5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ffb6022836142be565b915061500682614f9f565b604082019050919050565b6000602082019050818103600083015261502a81614fee565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000615067601d836142be565b915061507282615031565b602082019050919050565b600060208201905081810360008301526150968161505a565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61782060008201527f7472616e73616374696f6e20616d6f756e740000000000000000000000000000602082015250565b60006150f96032836142be565b91506151048261509d565b604082019050919050565b60006020820190508181036000830152615128816150ec565b9050919050565b7f534f4349414c3a2057616c6c65742062616c616e6365206c696d69742072656160008201527f6368656400000000000000000000000000000000000000000000000000000000602082015250565b600061518b6024836142be565b91506151968261512f565b604082019050919050565b600060208201905081810360008301526151ba8161517e565b9050919050565b60006151cc826143d6565b91506151d7836143d6565b9250828210156151ea576151e96149ee565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b600061525361524e61524984615224565b61522e565b6143d6565b9050919050565b61526381615238565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61529e81614398565b82525050565b60006152b08383615295565b60208301905092915050565b6000602082019050919050565b60006152d482615269565b6152de8185615274565b93506152e983615285565b8060005b8381101561531a57815161530188826152a4565b975061530c836152bc565b9250506001810190506152ed565b5085935050505092915050565b600060a08201905061533c600083018861451b565b615349602083018761525a565b818103604083015261535b81866152c9565b905061536a60608301856146d0565b615377608083018461451b565b9695505050505050565b6000604082019050615396600083018561451b565b6153a3602083018461451b565b9392505050565b600060c0820190506153bf60008301896146d0565b6153cc602083018861451b565b6153d9604083018761525a565b6153e6606083018661525a565b6153f360808301856146d0565b61540060a083018461451b565b979650505050505050565b6000806000606084860312156154245761542361436e565b5b6000615432868287016149ac565b9350506020615443868287016149ac565b9250506040615454868287016149ac565b9150509250925092565b7f534f4349414c3a204e6f206d61726b6574206d616b65727320666f756e640000600082015250565b6000615494601e836142be565b915061549f8261545e565b602082019050919050565b600060208201905081810360008301526154c381615487565b9050919050565b60006060820190506154df60008301866146d0565b6154ec60208301856146d0565b6154f9604083018461451b565b949350505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061555d6025836142be565b915061556882615501565b604082019050919050565b6000602082019050818103600083015261558c81615550565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155ef6023836142be565b91506155fa82615593565b604082019050919050565b6000602082019050818103600083015261561e816155e2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006156816026836142be565b915061568c82615625565b604082019050919050565b600060208201905081810360008301526156b081615674565b905091905056fea2646970667358221220e080e8218ef86770f43121d226e72b969e557f21524ce1f2f7241057b139838f64736f6c634300080b0033

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

00000000000000000000000018e474ee31ed4ece9466eada38282e1c75b88dc2000000000000000000000000196ea38f190b21f113dd2528decd593e4b67d1de

-----Decoded View---------------
Arg [0] : _devWalletAddress (address): 0x18E474eE31Ed4Ece9466eada38282e1c75B88dC2
Arg [1] : _utilityWalletAddress (address): 0x196ea38f190b21F113DD2528DEcD593e4B67d1de

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000018e474ee31ed4ece9466eada38282e1c75b88dc2
Arg [1] : 000000000000000000000000196ea38f190b21f113dd2528decd593e4b67d1de


Libraries Used

UniswapV2PriceImpactCalculator : 0x723004300852b7047093a5e4e7a43ec854418cddUnverified

Deployed Bytecode Sourcemap

19904:17794:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2851:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29919:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28259:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2099:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30053:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3101:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28793:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25982:615;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26605:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20582:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3404:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20632:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20743:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25183:200;;;;;;;;;;;;;:::i;:::-;;21495:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20916:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28993:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30502:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29477:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21370:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2215:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10837:148;;;;;;;;;;;;;:::i;:::-;;21551:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21063:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20845:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24173:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10625:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20527:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21234:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1886:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3684:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2400:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20808:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30960:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28409:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30628:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21295:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;37509:149;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20880:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24348:827;;;;;;;;;;;;;:::i;:::-;;20676:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21657:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2642:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21595:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28577:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30183:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29235:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10993:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25391:583;;;;;;;;;;;;;:::i;:::-;;23882:187;;;;;;;;;;;;;:::i;:::-;;1778:100;1832:13;1865:5;1858:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:100;:::o;2851:242::-;2970:4;2992:13;3008:12;:10;:12::i;:::-;2992:28;;3031:32;3040:5;3047:7;3056:6;3031:8;:32::i;:::-;3081:4;3074:11;;;2851:242;;;;:::o;29919:126::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30028:9:::1;30002:23;:35;;;;29919:126:::0;:::o;28259:140::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;28380:11:::1;28356;:21;28368:8;28356:21;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;28259:140:::0;;:::o;2099:108::-;2160:7;2187:12;;2180:19;;2099:108;:::o;30053:122::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30158:9:::1;30134:21;:33;;;;30053:122:::0;:::o;3101:295::-;3232:4;3249:15;3267:12;:10;:12::i;:::-;3249:30;;3290:38;3306:4;3312:7;3321:6;3290:15;:38::i;:::-;3339:27;3349:4;3355:2;3359:6;3339:9;:27::i;:::-;3384:4;3377:11;;;3101:295;;;;;:::o;28793:192::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;28953:24:::1;28916;:34;28941:8;28916:34;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;28793:192:::0;;:::o;25982:615::-;26060:7;26080:11;26094;;26080:25;;26118:19;26140:30;:55;26204:3;26210:13;;;;;;;;;;;26225:7;26140:93;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26118:115;;26251:7;26260:1;26251:10;;26246:323;26268:19;;;;;;;;;;;26263:24;;:1;:24;;;26246:323;;26347:21;:24;26369:1;26347:24;;;;;;;;;;;;;:29;;;26332:11;:44;;:111;;;;;26416:21;:24;26438:1;26416:24;;;;;;;;;;;;;:27;;;26401:11;:42;;26332:111;26309:249;;;26485:21;:24;26507:1;26485:24;;;;;;;;;;;;;:28;;;26479:34;;26539:3;26532:10;;;;;;;26309:249;26289:3;;;;;:::i;:::-;;;;26246:323;;;;26586:3;26579:10;;;;25982:615;;;;;:::o;26605:100::-;26663:5;20158:2;26681:16;;26605:100;:::o;20582:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;3404:272::-;3519:4;3541:13;3557:12;:10;:12::i;:::-;3541:28;;3580:66;3589:5;3596:7;3635:10;3605:11;:18;3617:5;3605:18;;;;;;;;;;;;;;;:27;3624:7;3605:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3580:8;:66::i;:::-;3664:4;3657:11;;;3404:272;;;;:::o;20632:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;20743:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;25183:200::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;25235:19:::1;25257:76;25300:22;;25257:24;25275:4;25257:9;:24::i;:::-;:28;;:76;;;;:::i;:::-;25235:98;;25346:29;25363:11;25346:16;:29::i;:::-;;25224:159;25183:200::o:0;21495:47::-;;;;;;;;;;;;;;;;;:::o;20916:30::-;;;;:::o;28993:230::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29118:4:::1;29112;29108:1;29092:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;29091:31;;;;:::i;:::-;29075:12;:47;;29067:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;29208:6;29192:12;:23;;;;:::i;:::-;29174:15;:41;;;;28993:230:::0;:::o;30502:118::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30603:9:::1;30581:19;;:31;;;;;;;;;;;;;;;;;;30502:118:::0;:::o;29477:434::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29698:2:::1;29683:11;:17;;:39;;;;;29720:2;29704:12;:18;;29683:39;:56;;;;;29737:2;29726:7;:13;;29683:56;29675:65;;;::::0;::::1;;29766:11;29753:10;:24;;;;29802:12;29788:11;:26;;;;29834:7;29825:6;:16;;;;29861:7;29852:6;:16;;;;29892:11;29879:10;:24;;;;29477:434:::0;;;;;:::o;21370:32::-;;;;;;;;;;;;;:::o;2215:177::-;2334:7;2366:9;:18;2376:7;2366:18;;;;;;;;;;;;;;;;2359:25;;2215:177;;;:::o;10837:148::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10944:1:::1;10907:40;;10928:6;;;;;;;;;;;10907:40;;;;;;;;;;;;10975:1;10958:6;;:19;;;;;;;;;;;;;;;;;;10837:148::o:0;21551:37::-;;;;:::o;21063:53::-;;;;:::o;20845:26::-;;;;:::o;24173:167::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24298:10:::1;24291:27;;;24319:3;24324:7;24291:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24173:167:::0;;;:::o;10625:79::-;10663:7;10690:6;;;;;;;;;;;10683:13;;10625:79;:::o;20527:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;21234:54::-;;;;;;;;;;;;;;;;;:::o;1886:104::-;1942:13;1975:7;1968:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:104;:::o;3684:507::-;3804:4;3826:13;3842:12;:10;:12::i;:::-;3826:28;;3865:24;3892:11;:18;3904:5;3892:18;;;;;;;;;;;;;;;:27;3911:7;3892:27;;;;;;;;;;;;;;;;3865:54;;3972:15;3952:16;:35;;3930:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4088:60;4097:5;4104:7;4132:15;4113:16;:34;4088:8;:60::i;:::-;4179:4;4172:11;;;;3684:507;;;;:::o;2400:234::-;2515:4;2537:13;2553:12;:10;:12::i;:::-;2537:28;;2576;2586:5;2593:2;2597:6;2576:9;:28::i;:::-;2622:4;2615:11;;;2400:234;;;;:::o;20808:30::-;;;;:::o;30960:139::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;31070:21:::1;31047:20;;:44;;;;;;;;;;;;;;;;;;30960:139:::0;:::o;28409:160::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;28545:16:::1;28516;:26;28533:8;28516:26;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;28409:160:::0;;:::o;30628:324::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30704:9:::1;30699:246;30723:5;;:12;;30719:1;:16;30699:246;;;30791:13;;;;;;;;;;;30779:25;;:5;;30785:1;30779:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:25;;;;:82;;;;;30845:15;;;;;;;;;;;30825:36;;:5;;30831:1;30825:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:36;;;;30779:82;30757:177;;;30914:4;30896:5;:15;30902:5;;30908:1;30902:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30896:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;30757:177;30737:3;;;;;:::i;:::-;;;;30699:246;;;;30628:324:::0;;:::o;21295:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;37509:149::-;37571:7;37598:52;37627:22;;37598:24;37616:4;37598:9;:24::i;:::-;:28;;:52;;;;:::i;:::-;37591:59;;37509:149;:::o;20880:29::-;;;;:::o;24348:827::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24410:11:::1;;;;;;;;;;;24409:12;24401:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;24468:19;24542:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24524:55;;;24606:4;24630:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24524:143;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24508:13;;:159;;;;;;;;;;;;;;;;;;24733:4;24678:28;:52;24715:13;;;;;;;;;;;24678:52;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;24799:4;24748:24;:48;24781:13;;;;;;;;;;;24748:48;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;24859:4;24816:25;:40;24842:13;;;;;;;;;;;24816:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;24876:61;24889:24;24907:4;24889:9;:24::i;:::-;24915:21;24876:12;:61::i;:::-;24955:13;;;;;;;;;;;24948:29;;;25000:15;;;;;;;;;;;25031:17;24948:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25086:4;25072:11;;:18;;;;;;;;;;;;;;;;;;25115:15;25101:29;;25155:12;25141:11;:26;;;;24390:785;24348:827::o:0;20676:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;21657:31::-;;;;:::o;2642:201::-;2776:7;2808:11;:18;2820:5;2808:18;;;;;;;;;;;;;;;:27;2827:7;2808:27;;;;;;;;;;;;;;;;2801:34;;2642:201;;;;:::o;21595:53::-;;;;:::o;28577:208::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;28749:28:::1;28708;:38;28737:8;28708:38;;;;;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;28577:208:::0;;:::o;30183:311::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30381:5:::1;30344:21;:29;30366:6;30344:29;;;;;;;;;;;;;:34;;:42;;;;30432:3;30397:21;:29;30419:6;30397:29;;;;;;;;;;;;;:32;;:38;;;;30482:4;30446:21;:29;30468:6;30446:29;;;;;;;;;;;;;:33;;:40;;;;30183:311:::0;;;;:::o;29235:234::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29366:4:::1;29360;29356:1;29340:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;29339:31;;;;:::i;:::-;29321:14;:49;;29313:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;29454:6;29436:14;:25;;;;:::i;:::-;29422:11;:39;;;;29235:234:::0;:::o;10993:244::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11102:1:::1;11082:22;;:8;:22;;;;11074:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11192:8;11163:38;;11184:6;;;;;;;;;;;11163:38;;;;;;;;;;;;11221:8;11212:6;;:17;;;;;;;;;;;;;;;;;;10993:244:::0;:::o;25391:583::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;25443:16:::1;25462:43;25488:16;;25462:21;:25;;:43;;;;:::i;:::-;25443:62;;25518:21;25542:74;25581:24;25598:6;;25589:3;25581:16;;:24;;;;:::i;:::-;25542:20;25555:6;;25542:8;:12;;:20;;;;:::i;:::-;:24;;:74;;;;:::i;:::-;25518:98;;25627:25;25655:78;25698:24;25715:6;;25706:3;25698:16;;:24;;;;:::i;:::-;25655;25668:10;;25655:8;:12;;:24;;;;:::i;:::-;:28;;:78;;;;:::i;:::-;25627:106;;25744:27;25774:64;25820:17;25774:27;25787:13;25774:8;:12;;:27;;;;:::i;:::-;:31;;:64;;;;:::i;:::-;25744:94;;25865:38;25883:19;25865:13;:17;;:38;;;;:::i;:::-;25849:54;;25916:50;25933:13;25948:17;25916:16;:50::i;:::-;25432:542;;;;25391:583::o:0;23882:187::-;10762:10;10752:20;;:6;;;;;;;;;;;:20;;;10744:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23940:12:::1;23985:10;23977:24;;24010:21;23977:84;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23963:98;;;;;23929:140;23882:187::o:0;1158:98::-;1211:7;1238:10;1231:17;;1158:98;:::o;5921:380::-;6074:1;6057:19;;:5;:19;;;;6049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6155:1;6136:21;;:7;:21;;;;6128:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6239:6;6209:11;:18;6221:5;6209:18;;;;;;;;;;;;;;;:27;6228:7;6209:27;;;;;;;;;;;;;;;:36;;;;6277:7;6261:32;;6270:5;6261:32;;;6286:6;6261:32;;;;;;:::i;:::-;;;;;;;;5921:380;;;:::o;6309:502::-;6444:24;6471:25;6481:5;6488:7;6471:9;:25::i;:::-;6444:52;;6531:17;6511:16;:37;6507:297;;6611:6;6591:16;:26;;6565:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;6726:51;6735:5;6742:7;6770:6;6751:16;:25;6726:8;:51::i;:::-;6507:297;6433:378;6309:502;;;:::o;26713:1229::-;26857:5;:12;26863:5;26857:12;;;;;;;;;;;;;;;;;;;;;;;;;26856:13;:28;;;;;26874:5;:10;26880:3;26874:10;;;;;;;;;;;;;;;;;;;;;;;;;26873:11;26856:28;26848:37;;;;;;26905:11;:18;26917:5;26905:18;;;;;;;;;;;;;;;;;;;;;;;;;26904:19;:40;;;;;26928:11;:16;26940:3;26928:16;;;;;;;;;;;;;;;;;;;;;;;;;26927:17;26904:40;26896:49;;;;;;26958:22;26983:7;26958:32;;27019:11;;;;;;;;;;;:113;;;;;27048:25;:32;27074:5;27048:32;;;;;;;;;;;;;;;;;;;;;;;;;:83;;;;27101:25;:30;27127:3;27101:30;;;;;;;;;;;;;;;;;;;;;;;;;27048:83;27019:113;:154;;;;;27150:16;:23;27167:5;27150:23;;;;;;;;;;;;;;;;;;;;;;;;;27149:24;27019:154;:193;;;;;27191:16;:21;27208:3;27191:21;;;;;;;;;;;;;;;;;;;;;;;;;27190:22;27019:193;27001:516;;;27243:24;:31;27268:5;27243:31;;;;;;;;;;;;;;;;;;;;;;;;;27242:32;:66;;;;;27279:24;:29;27304:3;27279:29;;;;;;;;;;;;;;;;;;;;;;;;;27278:30;27242:66;27239:191;;;27348:11;;27337:7;:22;;27329:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;27239:191;27476:29;27485:5;27492:3;27497:7;27476:8;:29::i;:::-;27459:46;;27001:516;27561:1;27533:19;:24;27553:3;27533:24;;;;;;;;;;;;;;;;:29;27529:104;;;27606:15;27579:19;:24;27599:3;27579:24;;;;;;;;;;;;;;;:42;;;;27529:104;27650:25;:30;27676:3;27650:30;;;;;;;;;;;;;;;;;;;;;;;;;27649:31;:69;;;;;27685:28;:33;27714:3;27685:33;;;;;;;;;;;;;;;;;;;;;;;;;27684:34;27649:69;27645:232;;;27778:15;;27760:14;27743;27753:3;27743:9;:14::i;:::-;:31;;;;:::i;:::-;:50;;27735:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;27645:232;27889:43;27905:5;27912:3;27917:14;27889:15;:43::i;:::-;26837:1105;26713:1229;;;:::o;8489:98::-;8547:7;8578:1;8574;:5;;;;:::i;:::-;8567:12;;8489:98;;;;:::o;35101:721::-;35166:7;35186:25;35214:21;35186:49;;35246:21;35284:1;35270:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35246:40;;35315:4;35297;35302:1;35297:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;35341:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35331:4;35336:1;35331:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;35374:63;35391:4;35406:15;;;;;;;;;;;35424:12;35374:8;:63::i;:::-;35448:15;;;;;;;;;;;:66;;;35529:12;35556:1;35572:4;35599;35619:15;35448:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35658:19;35680:44;35706:17;35680:21;:25;;:44;;;;:::i;:::-;35658:66;;35742:43;35759:12;35773:11;35742:43;;;;;;;:::i;:::-;;;;;;;;35803:11;35796:18;;;;;35101:721;;;:::o;36505:419::-;36588:63;36605:4;36620:15;;;;;;;;;;;36638:12;36588:8;:63::i;:::-;36662:15;;;;;;;;;;;:31;;;36701:10;36735:4;36755:12;36782:1;36798;36814:7;:5;:7::i;:::-;36836:15;36662:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36878:38;36891:12;36905:10;36878:38;;;;;;;:::i;:::-;;;;;;;;36505:419;;:::o;8595:98::-;8653:7;8684:1;8680;:5;;;;:::i;:::-;8673:12;;8595:98;;;;:::o;8701:::-;8759:7;8790:1;8786;:5;;;;:::i;:::-;8779:12;;8701:98;;;;:::o;8383:::-;8441:7;8472:1;8468;:5;;;;:::i;:::-;8461:12;;8383:98;;;;:::o;34733:360::-;34847:1;34836:8;:12;34832:89;;;34873:16;;;;;;;;;;;34865:34;;:44;34900:8;34865:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34832:89;34950:1;34935:12;:16;34931:101;;;34976:20;;;;;;;;;;;34968:38;;:52;35007:12;34968:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34931:101;35047:38;35062:8;35072:12;35047:38;;;;;;;:::i;:::-;;;;;;;;34733:360;;:::o;31107:2680::-;31221:7;31241:12;31264:23;31320:25;:32;31346:5;31320:32;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;31356:25;:30;31382:3;31356:30;;;;;;;;;;;;;;;;;;;;;;;;;31320:66;31298:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;31461:25;:32;31487:5;31461:32;;;;;;;;;;;;;;;;;;;;;;;;;31457:2288;;;31510:19;31564:11;;31548:12;:27;31544:431;;;31610:2;31596:16;;31544:431;;;31668:1;31654:11;;:15;;;;:::i;:::-;31638:12;:31;31634:341;;;31704:2;31690:16;;31634:341;;;31762:1;31748:11;;:15;;;;:::i;:::-;31732:12;:31;31728:247;;;31798:2;31784:16;;31728:247;;;31856:1;31842:11;;:15;;;;:::i;:::-;31826:12;:31;31822:153;;;31892:2;31878:16;;31822:153;;;31949:10;;31935:24;;31822:153;31728:247;31634:341;31544:431;31998:33;32027:3;31998:24;32010:11;31998:7;:11;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;31991:40;;32066:17;32078:4;32066:7;:11;;:17;;;;:::i;:::-;32048:35;;32100:43;32116:5;32131:4;32138;32100:15;:43::i;:::-;32165:35;32173:5;32188:4;32195;32165:35;;;;;;;;:::i;:::-;;;;;;;;31495:717;31457:2288;;;32233:20;32288:11;;32272:12;:27;32268:645;;;32335:2;32320:17;;32268:645;;;32393:1;32379:11;;:15;;;;:::i;:::-;32363:12;:31;32359:554;;;32430:2;32415:17;;32359:554;;;32488:1;32474:11;;:15;;;;:::i;:::-;32458:12;:31;32454:459;;;32525:2;32510:17;;32454:459;;;32583:1;32569:11;;:15;;;;:::i;:::-;32553:12;:31;32549:364;;;32620:2;32605:17;;32549:364;;;32663:23;32689:41;32715:4;32722:7;32689:17;:41::i;:::-;32663:67;;32780:15;32766:11;;:29;;;;:::i;:::-;32751:44;;32834:2;32819:12;:17;32816:82;;;32876:2;32861:17;;32816:82;32644:269;32549:364;32454:459;32359:554;32268:645;32936:34;32966:3;32936:25;32948:12;32936:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;32929:41;;32985:20;33008:87;33091:3;33008:60;33038:29;33055:11;;33038:12;:16;;:29;;;;:::i;:::-;33008:7;:29;;:60;;;;:::i;:::-;:82;;:87;;;;:::i;:::-;32985:110;;33135:40;33162:12;33135:22;;:26;;:40;;;;:::i;:::-;33110:22;:65;;;;33210:17;33222:4;33210:7;:11;;:17;;;;:::i;:::-;33192:35;;33244:43;33260:5;33275:4;33282;33244:15;:43::i;:::-;33302:20;33325:70;33372:22;;33325:24;33343:4;33325:9;:24::i;:::-;:28;;:70;;;;:::i;:::-;33302:93;;33431:23;;33416:12;:38;33412:112;;;33475:33;33495:12;33475:19;:33::i;:::-;33412:112;33567:21;;33542:22;;:46;33538:138;;;33609:51;33637:22;;33609:27;:51::i;:::-;33538:138;33697:36;33706:5;33721:4;33728;33697:36;;;;;;;;:::i;:::-;;;;;;;;32218:1527;;;31457:2288;33764:15;33757:22;;;;31107:2680;;;;;:::o;4199:708::-;4346:1;4330:18;;:4;:18;;;;4322:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4423:1;4409:16;;:2;:16;;;;4401:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4478:38;4499:4;4505:2;4509:6;4478:20;:38::i;:::-;4529:19;4551:9;:15;4561:4;4551:15;;;;;;;;;;;;;;;;4529:37;;4614:6;4599:11;:21;;4577:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4754:6;4740:11;:20;4722:9;:15;4732:4;4722:15;;;;;;;;;;;;;;;:38;;;;4799:6;4782:9;:13;4792:2;4782:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4838:2;4823:26;;4832:4;4823:26;;;4842:6;4823:26;;;;;;:::i;:::-;;;;;;;;4862:37;4882:4;4888:2;4892:6;4862:19;:37::i;:::-;4311:596;4199:708;;;:::o;33795:930::-;33865:26;33894:33;33923:3;33894:24;33911:6;;33894:12;:16;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;33865:62;;33940:21;33964:25;33987:1;33964:18;:22;;:25;;;;:::i;:::-;33940:49;;34000:21;34024:31;34041:13;34024:12;:16;;:31;;;;:::i;:::-;34000:55;;34068:16;34087:31;34104:13;34087:16;:31::i;:::-;34068:50;;34131:19;34153:29;34178:3;34153:20;34166:6;;34153:8;:12;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;34131:51;;34193:21;34217:29;34242:3;34217:20;34230:6;;34217:8;:12;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;34193:53;;34257:25;34285:33;34314:3;34285:24;34298:10;;34285:8;:12;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;34257:61;;34329:27;34359:109;34450:17;34359:72;34417:13;34359:39;34386:11;34359:8;:26;;:39;;;;:::i;:::-;:57;;:72;;;;:::i;:::-;:90;;:109;;;;:::i;:::-;34329:139;;34495:38;34513:19;34495:13;:17;;:38;;;;:::i;:::-;34479:54;;34546:50;34563:13;34578:17;34546:16;:50::i;:::-;34629:1;34613:13;:17;:36;;;;;34648:1;34634:11;:15;34613:36;34609:109;;;34666:40;34679:13;34694:11;34666:12;:40::i;:::-;34609:109;33854:871;;;;;;;;33795:930;:::o;36932:569::-;37010:17;37030:30;37047:12;37030:16;:30::i;:::-;37010:50;;37098:40;37125:12;37098:22;;:26;;:40;;;;:::i;:::-;37073:22;:65;;;;37149:22;37174:31;37188:16;;37174:9;:13;;:31;;;;:::i;:::-;37149:56;;37219:12;37245:20;;;;;;;;;;;37237:34;;37279:14;37237:85;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37218:104;;;37339:7;37335:159;;;37368:31;37389:9;37368:31;;;;;;:::i;:::-;;;;;;;;37335:159;;;37451:31;37472:9;37451:16;;:20;;:31;;;;:::i;:::-;37432:16;:50;;;;37335:159;36999:502;;;36932:569;:::o;6819:125::-;;;;:::o;6952:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:116::-;3899:21;3914:5;3899:21;:::i;:::-;3892:5;3889:32;3879:60;;3935:1;3932;3925:12;3879:60;3829:116;:::o;3951:133::-;3994:5;4032:6;4019:20;4010:29;;4048:30;4072:5;4048:30;:::i;:::-;3951:133;;;;:::o;4090:468::-;4155:6;4163;4212:2;4200:9;4191:7;4187:23;4183:32;4180:119;;;4218:79;;:::i;:::-;4180:119;4338:1;4363:53;4408:7;4399:6;4388:9;4384:22;4363:53;:::i;:::-;4353:63;;4309:117;4465:2;4491:50;4533:7;4524:6;4513:9;4509:22;4491:50;:::i;:::-;4481:60;;4436:115;4090:468;;;;;:::o;4564:118::-;4651:24;4669:5;4651:24;:::i;:::-;4646:3;4639:37;4564:118;;:::o;4688:222::-;4781:4;4819:2;4808:9;4804:18;4796:26;;4832:71;4900:1;4889:9;4885:17;4876:6;4832:71;:::i;:::-;4688:222;;;;:::o;4916:619::-;4993:6;5001;5009;5058:2;5046:9;5037:7;5033:23;5029:32;5026:119;;;5064:79;;:::i;:::-;5026:119;5184:1;5209:53;5254:7;5245:6;5234:9;5230:22;5209:53;:::i;:::-;5199:63;;5155:117;5311:2;5337:53;5382:7;5373:6;5362:9;5358:22;5337:53;:::i;:::-;5327:63;;5282:118;5439:2;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5410:118;4916:619;;;;;:::o;5541:86::-;5576:7;5616:4;5609:5;5605:16;5594:27;;5541:86;;;:::o;5633:112::-;5716:22;5732:5;5716:22;:::i;:::-;5711:3;5704:35;5633:112;;:::o;5751:214::-;5840:4;5878:2;5867:9;5863:18;5855:26;;5891:67;5955:1;5944:9;5940:17;5931:6;5891:67;:::i;:::-;5751:214;;;;:::o;5971:329::-;6030:6;6079:2;6067:9;6058:7;6054:23;6050:32;6047:119;;;6085:79;;:::i;:::-;6047:119;6205:1;6230:53;6275:7;6266:6;6255:9;6251:22;6230:53;:::i;:::-;6220:63;;6176:117;5971:329;;;;:::o;6306:118::-;6377:22;6393:5;6377:22;:::i;:::-;6370:5;6367:33;6357:61;;6414:1;6411;6404:12;6357:61;6306:118;:::o;6430:135::-;6474:5;6512:6;6499:20;6490:29;;6528:31;6553:5;6528:31;:::i;:::-;6430:135;;;;:::o;6571:325::-;6628:6;6677:2;6665:9;6656:7;6652:23;6648:32;6645:119;;;6683:79;;:::i;:::-;6645:119;6803:1;6828:51;6871:7;6862:6;6851:9;6847:22;6828:51;:::i;:::-;6818:61;;6774:115;6571:325;;;;:::o;6902:911::-;6997:6;7005;7013;7021;7029;7078:3;7066:9;7057:7;7053:23;7049:33;7046:120;;;7085:79;;:::i;:::-;7046:120;7205:1;7230:53;7275:7;7266:6;7255:9;7251:22;7230:53;:::i;:::-;7220:63;;7176:117;7332:2;7358:53;7403:7;7394:6;7383:9;7379:22;7358:53;:::i;:::-;7348:63;;7303:118;7460:2;7486:53;7531:7;7522:6;7511:9;7507:22;7486:53;:::i;:::-;7476:63;;7431:118;7588:2;7614:53;7659:7;7650:6;7639:9;7635:22;7614:53;:::i;:::-;7604:63;;7559:118;7716:3;7743:53;7788:7;7779:6;7768:9;7764:22;7743:53;:::i;:::-;7733:63;;7687:119;6902:911;;;;;;;;:::o;7819:118::-;7906:24;7924:5;7906:24;:::i;:::-;7901:3;7894:37;7819:118;;:::o;7943:222::-;8036:4;8074:2;8063:9;8059:18;8051:26;;8087:71;8155:1;8144:9;8140:17;8131:6;8087:71;:::i;:::-;7943:222;;;;:::o;8171:117::-;8280:1;8277;8270:12;8294:117;8403:1;8400;8393:12;8417:117;8526:1;8523;8516:12;8557:568;8630:8;8640:6;8690:3;8683:4;8675:6;8671:17;8667:27;8657:122;;8698:79;;:::i;:::-;8657:122;8811:6;8798:20;8788:30;;8841:18;8833:6;8830:30;8827:117;;;8863:79;;:::i;:::-;8827:117;8977:4;8969:6;8965:17;8953:29;;9031:3;9023:4;9015:6;9011:17;9001:8;8997:32;8994:41;8991:128;;;9038:79;;:::i;:::-;8991:128;8557:568;;;;;:::o;9131:559::-;9217:6;9225;9274:2;9262:9;9253:7;9249:23;9245:32;9242:119;;;9280:79;;:::i;:::-;9242:119;9428:1;9417:9;9413:17;9400:31;9458:18;9450:6;9447:30;9444:117;;;9480:79;;:::i;:::-;9444:117;9593:80;9665:7;9656:6;9645:9;9641:22;9593:80;:::i;:::-;9575:98;;;;9371:312;9131:559;;;;;:::o;9696:442::-;9845:4;9883:2;9872:9;9868:18;9860:26;;9896:71;9964:1;9953:9;9949:17;9940:6;9896:71;:::i;:::-;9977:72;10045:2;10034:9;10030:18;10021:6;9977:72;:::i;:::-;10059;10127:2;10116:9;10112:18;10103:6;10059:72;:::i;:::-;9696:442;;;;;;:::o;10144:474::-;10212:6;10220;10269:2;10257:9;10248:7;10244:23;10240:32;10237:119;;;10275:79;;:::i;:::-;10237:119;10395:1;10420:53;10465:7;10456:6;10445:9;10441:22;10420:53;:::i;:::-;10410:63;;10366:117;10522:2;10548:53;10593:7;10584:6;10573:9;10569:22;10548:53;:::i;:::-;10538:63;;10493:118;10144:474;;;;;:::o;10624:761::-;10708:6;10716;10724;10732;10781:3;10769:9;10760:7;10756:23;10752:33;10749:120;;;10788:79;;:::i;:::-;10749:120;10908:1;10933:51;10976:7;10967:6;10956:9;10952:22;10933:51;:::i;:::-;10923:61;;10879:115;11033:2;11059:53;11104:7;11095:6;11084:9;11080:22;11059:53;:::i;:::-;11049:63;;11004:118;11161:2;11187:53;11232:7;11223:6;11212:9;11208:22;11187:53;:::i;:::-;11177:63;;11132:118;11289:2;11315:53;11360:7;11351:6;11340:9;11336:22;11315:53;:::i;:::-;11305:63;;11260:118;10624:761;;;;;;;:::o;11391:180::-;11439:77;11436:1;11429:88;11536:4;11533:1;11526:15;11560:4;11557:1;11550:15;11577:320;11621:6;11658:1;11652:4;11648:12;11638:22;;11705:1;11699:4;11695:12;11726:18;11716:81;;11782:4;11774:6;11770:17;11760:27;;11716:81;11844:2;11836:6;11833:14;11813:18;11810:38;11807:84;;;11863:18;;:::i;:::-;11807:84;11628:269;11577:320;;;:::o;11903:182::-;12043:34;12039:1;12031:6;12027:14;12020:58;11903:182;:::o;12091:366::-;12233:3;12254:67;12318:2;12313:3;12254:67;:::i;:::-;12247:74;;12330:93;12419:3;12330:93;:::i;:::-;12448:2;12443:3;12439:12;12432:19;;12091:366;;;:::o;12463:419::-;12629:4;12667:2;12656:9;12652:18;12644:26;;12716:9;12710:4;12706:20;12702:1;12691:9;12687:17;12680:47;12744:131;12870:4;12744:131;:::i;:::-;12736:139;;12463:419;;;:::o;12888:126::-;12983:24;13001:5;12983:24;:::i;:::-;12978:3;12971:37;12888:126;;:::o;13020:::-;13115:24;13133:5;13115:24;:::i;:::-;13110:3;13103:37;13020:126;;:::o;13152:474::-;13309:4;13347:2;13336:9;13332:18;13324:26;;13360:79;13436:1;13425:9;13421:17;13412:6;13360:79;:::i;:::-;13449:80;13525:2;13514:9;13510:18;13501:6;13449:80;:::i;:::-;13539;13615:2;13604:9;13600:18;13591:6;13539:80;:::i;:::-;13152:474;;;;;;:::o;13632:143::-;13689:5;13720:6;13714:13;13705:22;;13736:33;13763:5;13736:33;:::i;:::-;13632:143;;;;:::o;13781:351::-;13851:6;13900:2;13888:9;13879:7;13875:23;13871:32;13868:119;;;13906:79;;:::i;:::-;13868:119;14026:1;14051:64;14107:7;14098:6;14087:9;14083:22;14051:64;:::i;:::-;14041:74;;13997:128;13781:351;;;;:::o;14138:180::-;14186:77;14183:1;14176:88;14283:4;14280:1;14273:15;14307:4;14304:1;14297:15;14324:167;14361:3;14384:22;14400:5;14384:22;:::i;:::-;14375:31;;14428:4;14421:5;14418:15;14415:41;;;14436:18;;:::i;:::-;14415:41;14483:1;14476:5;14472:13;14465:20;;14324:167;;;:::o;14497:305::-;14537:3;14556:20;14574:1;14556:20;:::i;:::-;14551:25;;14590:20;14608:1;14590:20;:::i;:::-;14585:25;;14744:1;14676:66;14672:74;14669:1;14666:81;14663:107;;;14750:18;;:::i;:::-;14663:107;14794:1;14791;14787:9;14780:16;;14497:305;;;;:::o;14808:348::-;14848:7;14871:20;14889:1;14871:20;:::i;:::-;14866:25;;14905:20;14923:1;14905:20;:::i;:::-;14900:25;;15093:1;15025:66;15021:74;15018:1;15015:81;15010:1;15003:9;14996:17;14992:105;14989:131;;;15100:18;;:::i;:::-;14989:131;15148:1;15145;15141:9;15130:20;;14808:348;;;;:::o;15162:180::-;15210:77;15207:1;15200:88;15307:4;15304:1;15297:15;15331:4;15328:1;15321:15;15348:185;15388:1;15405:20;15423:1;15405:20;:::i;:::-;15400:25;;15439:20;15457:1;15439:20;:::i;:::-;15434:25;;15478:1;15468:35;;15483:18;;:::i;:::-;15468:35;15525:1;15522;15518:9;15513:14;;15348:185;;;;:::o;15539:223::-;15679:34;15675:1;15667:6;15663:14;15656:58;15748:6;15743:2;15735:6;15731:15;15724:31;15539:223;:::o;15768:366::-;15910:3;15931:67;15995:2;15990:3;15931:67;:::i;:::-;15924:74;;16007:93;16096:3;16007:93;:::i;:::-;16125:2;16120:3;16116:12;16109:19;;15768:366;;;:::o;16140:419::-;16306:4;16344:2;16333:9;16329:18;16321:26;;16393:9;16387:4;16383:20;16379:1;16368:9;16364:17;16357:47;16421:131;16547:4;16421:131;:::i;:::-;16413:139;;16140:419;;;:::o;16565:332::-;16686:4;16724:2;16713:9;16709:18;16701:26;;16737:71;16805:1;16794:9;16790:17;16781:6;16737:71;:::i;:::-;16818:72;16886:2;16875:9;16871:18;16862:6;16818:72;:::i;:::-;16565:332;;;;;:::o;16903:137::-;16957:5;16988:6;16982:13;16973:22;;17004:30;17028:5;17004:30;:::i;:::-;16903:137;;;;:::o;17046:345::-;17113:6;17162:2;17150:9;17141:7;17137:23;17133:32;17130:119;;;17168:79;;:::i;:::-;17130:119;17288:1;17313:61;17366:7;17357:6;17346:9;17342:22;17313:61;:::i;:::-;17303:71;;17259:125;17046:345;;;;:::o;17397:224::-;17537:34;17533:1;17525:6;17521:14;17514:58;17606:7;17601:2;17593:6;17589:15;17582:32;17397:224;:::o;17627:366::-;17769:3;17790:67;17854:2;17849:3;17790:67;:::i;:::-;17783:74;;17866:93;17955:3;17866:93;:::i;:::-;17984:2;17979:3;17975:12;17968:19;;17627:366;;;:::o;17999:419::-;18165:4;18203:2;18192:9;18188:18;18180:26;;18252:9;18246:4;18242:20;18238:1;18227:9;18223:17;18216:47;18280:131;18406:4;18280:131;:::i;:::-;18272:139;;17999:419;;;:::o;18424:180::-;18472:77;18469:1;18462:88;18569:4;18566:1;18559:15;18593:4;18590:1;18583:15;18610:233;18649:3;18672:24;18690:5;18672:24;:::i;:::-;18663:33;;18718:66;18711:5;18708:77;18705:103;;;18788:18;;:::i;:::-;18705:103;18835:1;18828:5;18824:13;18817:20;;18610:233;;;:::o;18849:181::-;18989:33;18985:1;18977:6;18973:14;18966:57;18849:181;:::o;19036:366::-;19178:3;19199:67;19263:2;19258:3;19199:67;:::i;:::-;19192:74;;19275:93;19364:3;19275:93;:::i;:::-;19393:2;19388:3;19384:12;19377:19;;19036:366;;;:::o;19408:419::-;19574:4;19612:2;19601:9;19597:18;19589:26;;19661:9;19655:4;19651:20;19647:1;19636:9;19632:17;19625:47;19689:131;19815:4;19689:131;:::i;:::-;19681:139;;19408:419;;;:::o;19833:143::-;19890:5;19921:6;19915:13;19906:22;;19937:33;19964:5;19937:33;:::i;:::-;19833:143;;;;:::o;19982:351::-;20052:6;20101:2;20089:9;20080:7;20076:23;20072:32;20069:119;;;20107:79;;:::i;:::-;20069:119;20227:1;20252:64;20308:7;20299:6;20288:9;20284:22;20252:64;:::i;:::-;20242:74;;20198:128;19982:351;;;;:::o;20339:332::-;20460:4;20498:2;20487:9;20483:18;20475:26;;20511:71;20579:1;20568:9;20564:17;20555:6;20511:71;:::i;:::-;20592:72;20660:2;20649:9;20645:18;20636:6;20592:72;:::i;:::-;20339:332;;;;;:::o;20677:225::-;20817:34;20813:1;20805:6;20801:14;20794:58;20886:8;20881:2;20873:6;20869:15;20862:33;20677:225;:::o;20908:366::-;21050:3;21071:67;21135:2;21130:3;21071:67;:::i;:::-;21064:74;;21147:93;21236:3;21147:93;:::i;:::-;21265:2;21260:3;21256:12;21249:19;;20908:366;;;:::o;21280:419::-;21446:4;21484:2;21473:9;21469:18;21461:26;;21533:9;21527:4;21523:20;21519:1;21508:9;21504:17;21497:47;21561:131;21687:4;21561:131;:::i;:::-;21553:139;;21280:419;;;:::o;21705:147::-;21806:11;21843:3;21828:18;;21705:147;;;;:::o;21858:114::-;;:::o;21978:398::-;22137:3;22158:83;22239:1;22234:3;22158:83;:::i;:::-;22151:90;;22250:93;22339:3;22250:93;:::i;:::-;22368:1;22363:3;22359:11;22352:18;;21978:398;;;:::o;22382:379::-;22566:3;22588:147;22731:3;22588:147;:::i;:::-;22581:154;;22752:3;22745:10;;22382:379;;;:::o;22767:223::-;22907:34;22903:1;22895:6;22891:14;22884:58;22976:6;22971:2;22963:6;22959:15;22952:31;22767:223;:::o;22996:366::-;23138:3;23159:67;23223:2;23218:3;23159:67;:::i;:::-;23152:74;;23235:93;23324:3;23235:93;:::i;:::-;23353:2;23348:3;23344:12;23337:19;;22996:366;;;:::o;23368:419::-;23534:4;23572:2;23561:9;23557:18;23549:26;;23621:9;23615:4;23611:20;23607:1;23596:9;23592:17;23585:47;23649:131;23775:4;23649:131;:::i;:::-;23641:139;;23368:419;;;:::o;23793:221::-;23933:34;23929:1;23921:6;23917:14;23910:58;24002:4;23997:2;23989:6;23985:15;23978:29;23793:221;:::o;24020:366::-;24162:3;24183:67;24247:2;24242:3;24183:67;:::i;:::-;24176:74;;24259:93;24348:3;24259:93;:::i;:::-;24377:2;24372:3;24368:12;24361:19;;24020:366;;;:::o;24392:419::-;24558:4;24596:2;24585:9;24581:18;24573:26;;24645:9;24639:4;24635:20;24631:1;24620:9;24616:17;24609:47;24673:131;24799:4;24673:131;:::i;:::-;24665:139;;24392:419;;;:::o;24817:179::-;24957:31;24953:1;24945:6;24941:14;24934:55;24817:179;:::o;25002:366::-;25144:3;25165:67;25229:2;25224:3;25165:67;:::i;:::-;25158:74;;25241:93;25330:3;25241:93;:::i;:::-;25359:2;25354:3;25350:12;25343:19;;25002:366;;;:::o;25374:419::-;25540:4;25578:2;25567:9;25563:18;25555:26;;25627:9;25621:4;25617:20;25613:1;25602:9;25598:17;25591:47;25655:131;25781:4;25655:131;:::i;:::-;25647:139;;25374:419;;;:::o;25799:237::-;25939:34;25935:1;25927:6;25923:14;25916:58;26008:20;26003:2;25995:6;25991:15;25984:45;25799:237;:::o;26042:366::-;26184:3;26205:67;26269:2;26264:3;26205:67;:::i;:::-;26198:74;;26281:93;26370:3;26281:93;:::i;:::-;26399:2;26394:3;26390:12;26383:19;;26042:366;;;:::o;26414:419::-;26580:4;26618:2;26607:9;26603:18;26595:26;;26667:9;26661:4;26657:20;26653:1;26642:9;26638:17;26631:47;26695:131;26821:4;26695:131;:::i;:::-;26687:139;;26414:419;;;:::o;26839:223::-;26979:34;26975:1;26967:6;26963:14;26956:58;27048:6;27043:2;27035:6;27031:15;27024:31;26839:223;:::o;27068:366::-;27210:3;27231:67;27295:2;27290:3;27231:67;:::i;:::-;27224:74;;27307:93;27396:3;27307:93;:::i;:::-;27425:2;27420:3;27416:12;27409:19;;27068:366;;;:::o;27440:419::-;27606:4;27644:2;27633:9;27629:18;27621:26;;27693:9;27687:4;27683:20;27679:1;27668:9;27664:17;27657:47;27721:131;27847:4;27721:131;:::i;:::-;27713:139;;27440:419;;;:::o;27865:191::-;27905:4;27925:20;27943:1;27925:20;:::i;:::-;27920:25;;27959:20;27977:1;27959:20;:::i;:::-;27954:25;;27998:1;27995;27992:8;27989:34;;;28003:18;;:::i;:::-;27989:34;28048:1;28045;28041:9;28033:17;;27865:191;;;;:::o;28062:180::-;28110:77;28107:1;28100:88;28207:4;28204:1;28197:15;28231:4;28228:1;28221:15;28248:85;28293:7;28322:5;28311:16;;28248:85;;;:::o;28339:60::-;28367:3;28388:5;28381:12;;28339:60;;;:::o;28405:158::-;28463:9;28496:61;28514:42;28523:32;28549:5;28523:32;:::i;:::-;28514:42;:::i;:::-;28496:61;:::i;:::-;28483:74;;28405:158;;;:::o;28569:147::-;28664:45;28703:5;28664:45;:::i;:::-;28659:3;28652:58;28569:147;;:::o;28722:114::-;28789:6;28823:5;28817:12;28807:22;;28722:114;;;:::o;28842:184::-;28941:11;28975:6;28970:3;28963:19;29015:4;29010:3;29006:14;28991:29;;28842:184;;;;:::o;29032:132::-;29099:4;29122:3;29114:11;;29152:4;29147:3;29143:14;29135:22;;29032:132;;;:::o;29170:108::-;29247:24;29265:5;29247:24;:::i;:::-;29242:3;29235:37;29170:108;;:::o;29284:179::-;29353:10;29374:46;29416:3;29408:6;29374:46;:::i;:::-;29452:4;29447:3;29443:14;29429:28;;29284:179;;;;:::o;29469:113::-;29539:4;29571;29566:3;29562:14;29554:22;;29469:113;;;:::o;29618:732::-;29737:3;29766:54;29814:5;29766:54;:::i;:::-;29836:86;29915:6;29910:3;29836:86;:::i;:::-;29829:93;;29946:56;29996:5;29946:56;:::i;:::-;30025:7;30056:1;30041:284;30066:6;30063:1;30060:13;30041:284;;;30142:6;30136:13;30169:63;30228:3;30213:13;30169:63;:::i;:::-;30162:70;;30255:60;30308:6;30255:60;:::i;:::-;30245:70;;30101:224;30088:1;30085;30081:9;30076:14;;30041:284;;;30045:14;30341:3;30334:10;;29742:608;;;29618:732;;;;:::o;30356:831::-;30619:4;30657:3;30646:9;30642:19;30634:27;;30671:71;30739:1;30728:9;30724:17;30715:6;30671:71;:::i;:::-;30752:80;30828:2;30817:9;30813:18;30804:6;30752:80;:::i;:::-;30879:9;30873:4;30869:20;30864:2;30853:9;30849:18;30842:48;30907:108;31010:4;31001:6;30907:108;:::i;:::-;30899:116;;31025:72;31093:2;31082:9;31078:18;31069:6;31025:72;:::i;:::-;31107:73;31175:3;31164:9;31160:19;31151:6;31107:73;:::i;:::-;30356:831;;;;;;;;:::o;31193:332::-;31314:4;31352:2;31341:9;31337:18;31329:26;;31365:71;31433:1;31422:9;31418:17;31409:6;31365:71;:::i;:::-;31446:72;31514:2;31503:9;31499:18;31490:6;31446:72;:::i;:::-;31193:332;;;;;:::o;31531:807::-;31780:4;31818:3;31807:9;31803:19;31795:27;;31832:71;31900:1;31889:9;31885:17;31876:6;31832:71;:::i;:::-;31913:72;31981:2;31970:9;31966:18;31957:6;31913:72;:::i;:::-;31995:80;32071:2;32060:9;32056:18;32047:6;31995:80;:::i;:::-;32085;32161:2;32150:9;32146:18;32137:6;32085:80;:::i;:::-;32175:73;32243:3;32232:9;32228:19;32219:6;32175:73;:::i;:::-;32258;32326:3;32315:9;32311:19;32302:6;32258:73;:::i;:::-;31531:807;;;;;;;;;:::o;32344:663::-;32432:6;32440;32448;32497:2;32485:9;32476:7;32472:23;32468:32;32465:119;;;32503:79;;:::i;:::-;32465:119;32623:1;32648:64;32704:7;32695:6;32684:9;32680:22;32648:64;:::i;:::-;32638:74;;32594:128;32761:2;32787:64;32843:7;32834:6;32823:9;32819:22;32787:64;:::i;:::-;32777:74;;32732:129;32900:2;32926:64;32982:7;32973:6;32962:9;32958:22;32926:64;:::i;:::-;32916:74;;32871:129;32344:663;;;;;:::o;33013:180::-;33153:32;33149:1;33141:6;33137:14;33130:56;33013:180;:::o;33199:366::-;33341:3;33362:67;33426:2;33421:3;33362:67;:::i;:::-;33355:74;;33438:93;33527:3;33438:93;:::i;:::-;33556:2;33551:3;33547:12;33540:19;;33199:366;;;:::o;33571:419::-;33737:4;33775:2;33764:9;33760:18;33752:26;;33824:9;33818:4;33814:20;33810:1;33799:9;33795:17;33788:47;33852:131;33978:4;33852:131;:::i;:::-;33844:139;;33571:419;;;:::o;33996:442::-;34145:4;34183:2;34172:9;34168:18;34160:26;;34196:71;34264:1;34253:9;34249:17;34240:6;34196:71;:::i;:::-;34277:72;34345:2;34334:9;34330:18;34321:6;34277:72;:::i;:::-;34359;34427:2;34416:9;34412:18;34403:6;34359:72;:::i;:::-;33996:442;;;;;;:::o;34444:224::-;34584:34;34580:1;34572:6;34568:14;34561:58;34653:7;34648:2;34640:6;34636:15;34629:32;34444:224;:::o;34674:366::-;34816:3;34837:67;34901:2;34896:3;34837:67;:::i;:::-;34830:74;;34913:93;35002:3;34913:93;:::i;:::-;35031:2;35026:3;35022:12;35015:19;;34674:366;;;:::o;35046:419::-;35212:4;35250:2;35239:9;35235:18;35227:26;;35299:9;35293:4;35289:20;35285:1;35274:9;35270:17;35263:47;35327:131;35453:4;35327:131;:::i;:::-;35319:139;;35046:419;;;:::o;35471:222::-;35611:34;35607:1;35599:6;35595:14;35588:58;35680:5;35675:2;35667:6;35663:15;35656:30;35471:222;:::o;35699:366::-;35841:3;35862:67;35926:2;35921:3;35862:67;:::i;:::-;35855:74;;35938:93;36027:3;35938:93;:::i;:::-;36056:2;36051:3;36047:12;36040:19;;35699:366;;;:::o;36071:419::-;36237:4;36275:2;36264:9;36260:18;36252:26;;36324:9;36318:4;36314:20;36310:1;36299:9;36295:17;36288:47;36352:131;36478:4;36352:131;:::i;:::-;36344:139;;36071:419;;;:::o;36496:225::-;36636:34;36632:1;36624:6;36620:14;36613:58;36705:8;36700:2;36692:6;36688:15;36681:33;36496:225;:::o;36727:366::-;36869:3;36890:67;36954:2;36949:3;36890:67;:::i;:::-;36883:74;;36966:93;37055:3;36966:93;:::i;:::-;37084:2;37079:3;37075:12;37068:19;;36727:366;;;:::o;37099:419::-;37265:4;37303:2;37292:9;37288:18;37280:26;;37352:9;37346:4;37342:20;37338:1;37327:9;37323:17;37316:47;37380:131;37506:4;37380:131;:::i;:::-;37372:139;;37099:419;;;:::o

Swarm Source

ipfs://e080e8218ef86770f43121d226e72b969e557f21524ce1f2f7241057b139838f
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.