ETH Price: $3,410.43 (-1.52%)
Gas: 7 Gwei

Token

Woman Want Me Fish Fear Me (WWM-FFM)
 

Overview

Max Total Supply

10,000,000 WWM-FFM

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
619,015.507012 WWM-FFM

Value
$0.00
0x76d678f95c9528a162092cd32fb1980dd567c151
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
WWM

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-28
*/

// SPDX-License-Identifier: MIT


/*

https://t.me/WomanWantMeFishFearMe

https://x.com/WWMFFM_Coin

*/



pragma solidity ^0.8.24;

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

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, 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 sender, address recipient, 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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract WWM is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Woman Want Me Fish Fear Me';
    string private constant _symbol = 'WWM-FFM';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 10000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 1800;
    uint256 private sellFee = 2200;
    uint256 private transferFee = 7000;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0xFd65A47b1dFEF2292e06Bf817E4CA03e08390825; 
    address internal marketing_receiver = 0xFd65A47b1dFEF2292e06Bf817E4CA03e08390825;
    address internal liquidity_receiver = 0xFd65A47b1dFEF2292e06Bf817E4CA03e08390825;
    uint256 public _maxTxAmount = ( _totalSupply * 90 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 180 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 180 ) / 10000;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function opentrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function updateContractthreshold(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function RemoveFFMTax(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function RemoveFFMLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function updateAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function setbots(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"RemoveFFMLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"RemoveFFMTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"opentrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setbots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"updateContractthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a610012919061088b565b6298968061002091906108d5565b6001555f600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e860015461007191906108d5565b61007b9190610943565b600b55620186a0600a60015461009191906108d5565b61009b9190610943565b600c555f600d555f600e556103e8600f555f601055610708601155610898601255611b5860135561271060145573fd65a47b1dfef2292e06bf817e4ca03e0839082560155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fd65a47b1dfef2292e06bf817e4ca03e0839082560165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fd65a47b1dfef2292e06bf817e4ca03e0839082560175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612710605a6001546101d691906108d5565b6101e09190610943565b60185561271060b46001546101f591906108d5565b6101ff9190610943565b60195561271060b460015461021491906108d5565b61021e9190610943565b601a5534801561022c575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f491906109d1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610359573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037d91906109d1565b6040518363ffffffff1660e01b815260040161039a929190610a0b565b6020604051808303815f875af11580156103b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103da91906109d1565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405161070b9190610a41565b60405180910390a35050610a5a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561079c578086048111156107785761077761071a565b5b60018516156107875780820291505b808102905061079585610747565b945061075c565b94509492505050565b5f826107b4576001905061086f565b816107c1575f905061086f565b81600181146107d757600281146107e157610810565b600191505061086f565b60ff8411156107f3576107f261071a565b5b8360020a91508482111561080a5761080961071a565b5b5061086f565b5060208310610133831016604e8410600b84101617156108455782820a9050838111156108405761083f61071a565b5b61086f565b6108528484846001610753565b925090508184048111156108695761086861071a565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61089582610876565b91506108a08361087f565b92506108cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107a5565b905092915050565b5f6108df82610876565b91506108ea83610876565b92508282026108f881610876565b9150828204841483151761090f5761090e61071a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61094d82610876565b915061095883610876565b92508261096857610967610916565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109a082610977565b9050919050565b6109b081610996565b81146109ba575f80fd5b50565b5f815190506109cb816109a7565b92915050565b5f602082840312156109e6576109e5610973565b5b5f6109f3848285016109bd565b91505092915050565b610a0581610996565b82525050565b5f604082019050610a1e5f8301856109fc565b610a2b60208301846109fc565b9392505050565b610a3b81610876565b82525050565b5f602082019050610a545f830184610a32565b92915050565b61394280610a675f395ff3fe608060405260043610610184575f3560e01c80637cca52fe116100d0578063a8aa1b3111610089578063dd62ed3e11610063578063dd62ed3e14610577578063f2fde38b146105b3578063f367c62b146105db578063fa852a21146106035761018b565b8063a8aa1b31146104e9578063a9059cbb14610513578063da1473051461054f5761018b565b80637cca52fe146103f15780637d1db4a51461041b578063893d20e8146104455780638cd4426d1461046f57806395d89b4114610497578063a5d5b484146104c15761018b565b8063334c14391161013d57806351bc3c851161011757806351bc3c851461034d57806370a082311461036357806370a3dd8c1461039f57806378109e54146103c75761018b565b8063334c1439146102c15780633f4218e0146102e957806348ff2b8b146103255761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632f54bf6e1461025b578063313ce567146102975761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610619565b6040516101b0919061295c565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612a11565b610656565b6040516101ec9190612a69565b60405180910390f35b348015610200575f80fd5b5061020961066c565b6040516102169190612a91565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190612aaa565b6106ab565b6040516102529190612a69565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190612afa565b610771565b60405161028e9190612a69565b60405180910390f35b3480156102a2575f80fd5b506102ab6107c8565b6040516102b89190612b40565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612b59565b6107d0565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612afa565b6109dc565b60405161031c9190612a69565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612bd3565b6109f9565b005b348015610358575f80fd5b50610361610a99565b005b34801561036e575f80fd5b5061038960048036038101906103849190612afa565b610aee565b6040516103969190612a91565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612c11565b610b34565b005b3480156103d2575f80fd5b506103db610cab565b6040516103e89190612a91565b60405180910390f35b3480156103fc575f80fd5b50610405610cb1565b6040516104129190612a91565b60405180910390f35b348015610426575f80fd5b5061042f610cb7565b60405161043c9190612a91565b60405180910390f35b348015610450575f80fd5b50610459610cbd565b6040516104669190612c70565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612a11565b610ce4565b005b3480156104a2575f80fd5b506104ab610e6e565b6040516104b8919061295c565b60405180910390f35b3480156104cc575f80fd5b506104e760048036038101906104e29190612c89565b610eab565b005b3480156104f4575f80fd5b506104fd610fcd565b60405161050a9190612c70565b60405180910390f35b34801561051e575f80fd5b5061053960048036038101906105349190612a11565b610ff2565b6040516105469190612a69565b60405180910390f35b34801561055a575f80fd5b5061057560048036038101906105709190612c11565b611008565b005b348015610582575f80fd5b5061059d60048036038101906105989190612d26565b6110bc565b6040516105aa9190612a91565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190612d9f565b61113e565b005b3480156105e6575f80fd5b5061060160048036038101906105fc9190612e2b565b6111ff565b005b34801561060e575f80fd5b506106176112e2565b005b60606040518060400160405280601a81526020017f576f6d616e2057616e74204d6520466973682046656172204d65000000000000815250905090565b5f610662338484611347565b6001905092915050565b5f6106a66106795f610aee565b61069861068761dead610aee565b60015461150a90919063ffffffff16565b61150a90919063ffffffff16565b905090565b5f6106b784848461151f565b6107668433610761856040518060600160405280602881526020016138e56028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dbc9092919063ffffffff16565b611347565b600190509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b6107d933610771565b610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90612ed2565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b610a0233610771565b610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890612ed2565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610aa233610771565b610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890612ed2565b60405180910390fd5b610aec600b54611e10565b565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b3d33610771565b610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390612ed2565b60405180910390fd5b5f610ba6612710610b988660015461206690919063ffffffff16565b61207b90919063ffffffff16565b90505f610bd2612710610bc48660015461206690919063ffffffff16565b61207b90919063ffffffff16565b90505f610bfe612710610bf08660015461206690919063ffffffff16565b61207b90919063ffffffff16565b9050826018819055508160198190555080601a819055505f610c456103e8610c376005610c2961066c565b61206690919063ffffffff16565b61207b90919063ffffffff16565b9050808410158015610c575750808310155b8015610c635750808210155b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990612f60565b60405180910390fd5b50505050505050565b601a5481565b60195481565b60185481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ced33610771565b610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390612ed2565b60405180910390fd5b5f610dca6064610dbc848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d6f9190612c70565b602060405180830381865afa158015610d8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dae9190612f92565b61206690919063ffffffff16565b61207b90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e28929190612fbd565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190612ff8565b50505050565b60606040518060400160405280600781526020017f57574d2d46464d00000000000000000000000000000000000000000000000000815250905090565b610eb433610771565b610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea90612ed2565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610f3a600160145461207b90919063ffffffff16565b60115411158015610f625750610f5c600160145461207b90919063ffffffff16565b60125411155b8015610f855750610f7f600160145461207b90919063ffffffff16565b60135411155b610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb90613093565b60405180910390fd5b50505050505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610ffe33848461151f565b6001905092915050565b61101133610771565b611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790612ed2565b60405180910390fd5b82600a81905550611081620186a06110738460015461206690919063ffffffff16565b61207b90919063ffffffff16565b600b819055506110b1620186a06110a38360015461206690919063ffffffff16565b61207b90919063ffffffff16565b600c81905550505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61114733610771565b611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90612ed2565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516111f4919061310c565b60405180910390a150565b61120833610771565b611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e90612ed2565b60405180910390fd5b5f5b838390508110156112dc578160055f86868581811061126b5761126a613125565b5b90506020020160208101906112809190612afa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611249565b50505050565b6112eb33610771565b61132a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132190612ed2565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac906131c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90613250565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114fd9190612a91565b60405180910390a3505050565b5f8183611517919061329b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115849061333e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906133cc565b60405180910390fd5b61160483610aee565b811115611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d9061345a565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116e4575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561173957600760149054906101000a900460ff16611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f906134c2565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117d7575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611830575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561186a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561190457601a546118c28260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b1115611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061352a565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a4057601954811115806119af575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a00575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690613592565b60405180910390fd5b5b60185481111580611a97575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ae8575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e90613592565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bca575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611be957600160085f828254611be191906135b0565b925050819055505b611bf48383836120a5565b15611c0c57611c04600b54611e10565b5f6008819055505b611c5c8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461150a90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611ca884846121d8565b611cb25781611cbe565b611cbd84848461227f565b5b9050611d108160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dae9190612a91565b60405180910390a350505050565b5f838311158290611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa919061295c565b60405180910390fd5b5082840390509392505050565b600160095f6101000a81548160ff0219169083151502179055505f611e7c6002611e6e600f54611e60600e54611e526001600d5461209090919063ffffffff16565b61209090919063ffffffff16565b61209090919063ffffffff16565b61206690919063ffffffff16565b90505f611ea682611e98600d548661206690919063ffffffff16565b61207b90919063ffffffff16565b90505f611ebc828561150a90919063ffffffff16565b90505f479050611ecb82612436565b5f611edf824761150a90919063ffffffff16565b90505f611f09611efa600d548861150a90919063ffffffff16565b8361207b90919063ffffffff16565b90505f611f21600d548361206690919063ffffffff16565b90505f811115611f3657611f35868261266c565b5b5f611f5f600e54611f5160028661206690919063ffffffff16565b61206690919063ffffffff16565b90505f811115611fcf5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fcd573d5f803e3d5ffd5b505b5f4790505f8111156120415760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561203f573d5f803e3d5ffd5b505b5050505050505050505f60095f6101000a81548160ff02191690831515021790555050565b5f818361207391906135e3565b905092915050565b5f81836120889190613651565b905092915050565b5f818361209d91906135b0565b905092915050565b5f80600c5483101590505f600b546120bc30610aee565b1015905060095f9054906101000a900460ff161580156120e85750600760159054906101000a900460ff165b80156121005750600760149054906101000a900460ff165b80156121095750815b801561215c575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121b4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121c45750600a5460085410155b80156121cd5750805b925050509392505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612277575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f8061228b8585612766565b111561242b575f6122c261229f8686612766565b6122b46014548661207b90919063ffffffff16565b61206690919063ffffffff16565b90506123148160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123b29190612a91565b60405180910390a35f6010541180156123d557506010546123d38686612766565b115b156124105761240f3061dead61240a6010546123fc6014548961207b90919063ffffffff16565b61206690919063ffffffff16565b61151f565b5b612423818461150a90919063ffffffff16565b91505061242f565b8190505b9392505050565b5f600267ffffffffffffffff81111561245257612451613681565b5b6040519080825280602002602001820160405280156124805781602001602082028036833780820191505090505b50905030815f8151811061249757612496613125565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561253b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255f91906136c2565b8160018151811061257357612572613125565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125d93060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611347565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161263b9594939291906137dd565b5f604051808303815f87803b158015612652575f80fd5b505af1158015612664573d5f803e3d5ffd5b505050505050565b6126983060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611347565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161271e96959493929190613835565b60606040518083038185885af115801561273a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061275f9190613894565b5050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612802575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128245761281d606460145461150a90919063ffffffff16565b90506128e6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128825760125490506128e6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128e05760115490506128e6565b60135490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61292e826128ec565b61293881856128f6565b9350612948818560208601612906565b61295181612914565b840191505092915050565b5f6020820190508181035f8301526129748184612924565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ad82612984565b9050919050565b6129bd816129a3565b81146129c7575f80fd5b50565b5f813590506129d8816129b4565b92915050565b5f819050919050565b6129f0816129de565b81146129fa575f80fd5b50565b5f81359050612a0b816129e7565b92915050565b5f8060408385031215612a2757612a2661297c565b5b5f612a34858286016129ca565b9250506020612a45858286016129fd565b9150509250929050565b5f8115159050919050565b612a6381612a4f565b82525050565b5f602082019050612a7c5f830184612a5a565b92915050565b612a8b816129de565b82525050565b5f602082019050612aa45f830184612a82565b92915050565b5f805f60608486031215612ac157612ac061297c565b5b5f612ace868287016129ca565b9350506020612adf868287016129ca565b9250506040612af0868287016129fd565b9150509250925092565b5f60208284031215612b0f57612b0e61297c565b5b5f612b1c848285016129ca565b91505092915050565b5f60ff82169050919050565b612b3a81612b25565b82525050565b5f602082019050612b535f830184612b31565b92915050565b5f805f60608486031215612b7057612b6f61297c565b5b5f612b7d868287016129ca565b9350506020612b8e868287016129ca565b9250506040612b9f868287016129ca565b9150509250925092565b612bb281612a4f565b8114612bbc575f80fd5b50565b5f81359050612bcd81612ba9565b92915050565b5f8060408385031215612be957612be861297c565b5b5f612bf6858286016129ca565b9250506020612c0785828601612bbf565b9150509250929050565b5f805f60608486031215612c2857612c2761297c565b5b5f612c35868287016129fd565b9350506020612c46868287016129fd565b9250506040612c57868287016129fd565b9150509250925092565b612c6a816129a3565b82525050565b5f602082019050612c835f830184612c61565b92915050565b5f805f805f805f60e0888a031215612ca457612ca361297c565b5b5f612cb18a828b016129fd565b9750506020612cc28a828b016129fd565b9650506040612cd38a828b016129fd565b9550506060612ce48a828b016129fd565b9450506080612cf58a828b016129fd565b93505060a0612d068a828b016129fd565b92505060c0612d178a828b016129fd565b91505092959891949750929550565b5f8060408385031215612d3c57612d3b61297c565b5b5f612d49858286016129ca565b9250506020612d5a858286016129ca565b9150509250929050565b5f612d6e82612984565b9050919050565b612d7e81612d64565b8114612d88575f80fd5b50565b5f81359050612d9981612d75565b92915050565b5f60208284031215612db457612db361297c565b5b5f612dc184828501612d8b565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612deb57612dea612dca565b5b8235905067ffffffffffffffff811115612e0857612e07612dce565b5b602083019150836020820283011115612e2457612e23612dd2565b5b9250929050565b5f805f60408486031215612e4257612e4161297c565b5b5f84013567ffffffffffffffff811115612e5f57612e5e612980565b5b612e6b86828701612dd6565b93509350506020612e7e86828701612bbf565b9150509250925092565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612ebc6006836128f6565b9150612ec782612e88565b602082019050919050565b5f6020820190508181035f830152612ee981612eb0565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f612f4a602e836128f6565b9150612f5582612ef0565b604082019050919050565b5f6020820190508181035f830152612f7781612f3e565b9050919050565b5f81519050612f8c816129e7565b92915050565b5f60208284031215612fa757612fa661297c565b5b5f612fb484828501612f7e565b91505092915050565b5f604082019050612fd05f830185612c61565b612fdd6020830184612a82565b9392505050565b5f81519050612ff281612ba9565b92915050565b5f6020828403121561300d5761300c61297c565b5b5f61301a84828501612fe4565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f61307d602c836128f6565b915061308882613023565b604082019050919050565b5f6020820190508181035f8301526130aa81613071565b9050919050565b5f819050919050565b5f6130d46130cf6130ca84612984565b6130b1565b612984565b9050919050565b5f6130e5826130ba565b9050919050565b5f6130f6826130db565b9050919050565b613106816130ec565b82525050565b5f60208201905061311f5f8301846130fd565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131ac6024836128f6565b91506131b782613152565b604082019050919050565b5f6020820190508181035f8301526131d9816131a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61323a6022836128f6565b9150613245826131e0565b604082019050919050565b5f6020820190508181035f8301526132678161322e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132a5826129de565b91506132b0836129de565b92508282039050818111156132c8576132c761326e565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133286025836128f6565b9150613333826132ce565b604082019050919050565b5f6020820190508181035f8301526133558161331c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133b66023836128f6565b91506133c18261335c565b604082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6134446031836128f6565b915061344f826133ea565b604082019050919050565b5f6020820190508181035f83015261347181613438565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f6134ac600e836128f6565b91506134b782613478565b602082019050919050565b5f6020820190508181035f8301526134d9816134a0565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f613514601e836128f6565b915061351f826134e0565b602082019050919050565b5f6020820190508181035f83015261354181613508565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61357c6011836128f6565b915061358782613548565b602082019050919050565b5f6020820190508181035f8301526135a981613570565b9050919050565b5f6135ba826129de565b91506135c5836129de565b92508282019050808211156135dd576135dc61326e565b5b92915050565b5f6135ed826129de565b91506135f8836129de565b9250828202613606816129de565b9150828204841483151761361d5761361c61326e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61365b826129de565b9150613666836129de565b92508261367657613675613624565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506136bc816129b4565b92915050565b5f602082840312156136d7576136d661297c565b5b5f6136e4848285016136ae565b91505092915050565b5f819050919050565b5f61371061370b613706846136ed565b6130b1565b6129de565b9050919050565b613720816136f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613758816129a3565b82525050565b5f613769838361374f565b60208301905092915050565b5f602082019050919050565b5f61378b82613726565b6137958185613730565b93506137a083613740565b805f5b838110156137d05781516137b7888261375e565b97506137c283613775565b9250506001810190506137a3565b5085935050505092915050565b5f60a0820190506137f05f830188612a82565b6137fd6020830187613717565b818103604083015261380f8186613781565b905061381e6060830185612c61565b61382b6080830184612a82565b9695505050505050565b5f60c0820190506138485f830189612c61565b6138556020830188612a82565b6138626040830187613717565b61386f6060830186613717565b61387c6080830185612c61565b61388960a0830184612a82565b979650505050505050565b5f805f606084860312156138ab576138aa61297c565b5b5f6138b886828701612f7e565b93505060206138c986828701612f7e565b92505060406138da86828701612f7e565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f454d8bb619140f7c603c3032a57a2fa7e18537232876e8e1ac7467d5a274ab564736f6c63430008190033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80637cca52fe116100d0578063a8aa1b3111610089578063dd62ed3e11610063578063dd62ed3e14610577578063f2fde38b146105b3578063f367c62b146105db578063fa852a21146106035761018b565b8063a8aa1b31146104e9578063a9059cbb14610513578063da1473051461054f5761018b565b80637cca52fe146103f15780637d1db4a51461041b578063893d20e8146104455780638cd4426d1461046f57806395d89b4114610497578063a5d5b484146104c15761018b565b8063334c14391161013d57806351bc3c851161011757806351bc3c851461034d57806370a082311461036357806370a3dd8c1461039f57806378109e54146103c75761018b565b8063334c1439146102c15780633f4218e0146102e957806348ff2b8b146103255761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632f54bf6e1461025b578063313ce567146102975761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610619565b6040516101b0919061295c565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612a11565b610656565b6040516101ec9190612a69565b60405180910390f35b348015610200575f80fd5b5061020961066c565b6040516102169190612a91565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190612aaa565b6106ab565b6040516102529190612a69565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190612afa565b610771565b60405161028e9190612a69565b60405180910390f35b3480156102a2575f80fd5b506102ab6107c8565b6040516102b89190612b40565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612b59565b6107d0565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612afa565b6109dc565b60405161031c9190612a69565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612bd3565b6109f9565b005b348015610358575f80fd5b50610361610a99565b005b34801561036e575f80fd5b5061038960048036038101906103849190612afa565b610aee565b6040516103969190612a91565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612c11565b610b34565b005b3480156103d2575f80fd5b506103db610cab565b6040516103e89190612a91565b60405180910390f35b3480156103fc575f80fd5b50610405610cb1565b6040516104129190612a91565b60405180910390f35b348015610426575f80fd5b5061042f610cb7565b60405161043c9190612a91565b60405180910390f35b348015610450575f80fd5b50610459610cbd565b6040516104669190612c70565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612a11565b610ce4565b005b3480156104a2575f80fd5b506104ab610e6e565b6040516104b8919061295c565b60405180910390f35b3480156104cc575f80fd5b506104e760048036038101906104e29190612c89565b610eab565b005b3480156104f4575f80fd5b506104fd610fcd565b60405161050a9190612c70565b60405180910390f35b34801561051e575f80fd5b5061053960048036038101906105349190612a11565b610ff2565b6040516105469190612a69565b60405180910390f35b34801561055a575f80fd5b5061057560048036038101906105709190612c11565b611008565b005b348015610582575f80fd5b5061059d60048036038101906105989190612d26565b6110bc565b6040516105aa9190612a91565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190612d9f565b61113e565b005b3480156105e6575f80fd5b5061060160048036038101906105fc9190612e2b565b6111ff565b005b34801561060e575f80fd5b506106176112e2565b005b60606040518060400160405280601a81526020017f576f6d616e2057616e74204d6520466973682046656172204d65000000000000815250905090565b5f610662338484611347565b6001905092915050565b5f6106a66106795f610aee565b61069861068761dead610aee565b60015461150a90919063ffffffff16565b61150a90919063ffffffff16565b905090565b5f6106b784848461151f565b6107668433610761856040518060600160405280602881526020016138e56028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dbc9092919063ffffffff16565b611347565b600190509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b6107d933610771565b610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90612ed2565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b610a0233610771565b610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890612ed2565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610aa233610771565b610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890612ed2565b60405180910390fd5b610aec600b54611e10565b565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b3d33610771565b610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390612ed2565b60405180910390fd5b5f610ba6612710610b988660015461206690919063ffffffff16565b61207b90919063ffffffff16565b90505f610bd2612710610bc48660015461206690919063ffffffff16565b61207b90919063ffffffff16565b90505f610bfe612710610bf08660015461206690919063ffffffff16565b61207b90919063ffffffff16565b9050826018819055508160198190555080601a819055505f610c456103e8610c376005610c2961066c565b61206690919063ffffffff16565b61207b90919063ffffffff16565b9050808410158015610c575750808310155b8015610c635750808210155b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990612f60565b60405180910390fd5b50505050505050565b601a5481565b60195481565b60185481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ced33610771565b610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390612ed2565b60405180910390fd5b5f610dca6064610dbc848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d6f9190612c70565b602060405180830381865afa158015610d8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dae9190612f92565b61206690919063ffffffff16565b61207b90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e28929190612fbd565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190612ff8565b50505050565b60606040518060400160405280600781526020017f57574d2d46464d00000000000000000000000000000000000000000000000000815250905090565b610eb433610771565b610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea90612ed2565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610f3a600160145461207b90919063ffffffff16565b60115411158015610f625750610f5c600160145461207b90919063ffffffff16565b60125411155b8015610f855750610f7f600160145461207b90919063ffffffff16565b60135411155b610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb90613093565b60405180910390fd5b50505050505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610ffe33848461151f565b6001905092915050565b61101133610771565b611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790612ed2565b60405180910390fd5b82600a81905550611081620186a06110738460015461206690919063ffffffff16565b61207b90919063ffffffff16565b600b819055506110b1620186a06110a38360015461206690919063ffffffff16565b61207b90919063ffffffff16565b600c81905550505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61114733610771565b611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90612ed2565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516111f4919061310c565b60405180910390a150565b61120833610771565b611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e90612ed2565b60405180910390fd5b5f5b838390508110156112dc578160055f86868581811061126b5761126a613125565b5b90506020020160208101906112809190612afa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611249565b50505050565b6112eb33610771565b61132a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132190612ed2565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac906131c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90613250565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114fd9190612a91565b60405180910390a3505050565b5f8183611517919061329b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115849061333e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906133cc565b60405180910390fd5b61160483610aee565b811115611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d9061345a565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116e4575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561173957600760149054906101000a900460ff16611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f906134c2565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117d7575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611830575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561186a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561190457601a546118c28260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b1115611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061352a565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a4057601954811115806119af575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a00575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690613592565b60405180910390fd5b5b60185481111580611a97575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ae8575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e90613592565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bca575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611be957600160085f828254611be191906135b0565b925050819055505b611bf48383836120a5565b15611c0c57611c04600b54611e10565b5f6008819055505b611c5c8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461150a90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611ca884846121d8565b611cb25781611cbe565b611cbd84848461227f565b5b9050611d108160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dae9190612a91565b60405180910390a350505050565b5f838311158290611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa919061295c565b60405180910390fd5b5082840390509392505050565b600160095f6101000a81548160ff0219169083151502179055505f611e7c6002611e6e600f54611e60600e54611e526001600d5461209090919063ffffffff16565b61209090919063ffffffff16565b61209090919063ffffffff16565b61206690919063ffffffff16565b90505f611ea682611e98600d548661206690919063ffffffff16565b61207b90919063ffffffff16565b90505f611ebc828561150a90919063ffffffff16565b90505f479050611ecb82612436565b5f611edf824761150a90919063ffffffff16565b90505f611f09611efa600d548861150a90919063ffffffff16565b8361207b90919063ffffffff16565b90505f611f21600d548361206690919063ffffffff16565b90505f811115611f3657611f35868261266c565b5b5f611f5f600e54611f5160028661206690919063ffffffff16565b61206690919063ffffffff16565b90505f811115611fcf5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fcd573d5f803e3d5ffd5b505b5f4790505f8111156120415760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561203f573d5f803e3d5ffd5b505b5050505050505050505f60095f6101000a81548160ff02191690831515021790555050565b5f818361207391906135e3565b905092915050565b5f81836120889190613651565b905092915050565b5f818361209d91906135b0565b905092915050565b5f80600c5483101590505f600b546120bc30610aee565b1015905060095f9054906101000a900460ff161580156120e85750600760159054906101000a900460ff165b80156121005750600760149054906101000a900460ff165b80156121095750815b801561215c575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121b4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121c45750600a5460085410155b80156121cd5750805b925050509392505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612277575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f8061228b8585612766565b111561242b575f6122c261229f8686612766565b6122b46014548661207b90919063ffffffff16565b61206690919063ffffffff16565b90506123148160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123b29190612a91565b60405180910390a35f6010541180156123d557506010546123d38686612766565b115b156124105761240f3061dead61240a6010546123fc6014548961207b90919063ffffffff16565b61206690919063ffffffff16565b61151f565b5b612423818461150a90919063ffffffff16565b91505061242f565b8190505b9392505050565b5f600267ffffffffffffffff81111561245257612451613681565b5b6040519080825280602002602001820160405280156124805781602001602082028036833780820191505090505b50905030815f8151811061249757612496613125565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561253b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255f91906136c2565b8160018151811061257357612572613125565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125d93060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611347565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161263b9594939291906137dd565b5f604051808303815f87803b158015612652575f80fd5b505af1158015612664573d5f803e3d5ffd5b505050505050565b6126983060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611347565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161271e96959493929190613835565b60606040518083038185885af115801561273a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061275f9190613894565b5050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612802575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128245761281d606460145461150a90919063ffffffff16565b90506128e6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128825760125490506128e6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128e05760115490506128e6565b60135490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61292e826128ec565b61293881856128f6565b9350612948818560208601612906565b61295181612914565b840191505092915050565b5f6020820190508181035f8301526129748184612924565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ad82612984565b9050919050565b6129bd816129a3565b81146129c7575f80fd5b50565b5f813590506129d8816129b4565b92915050565b5f819050919050565b6129f0816129de565b81146129fa575f80fd5b50565b5f81359050612a0b816129e7565b92915050565b5f8060408385031215612a2757612a2661297c565b5b5f612a34858286016129ca565b9250506020612a45858286016129fd565b9150509250929050565b5f8115159050919050565b612a6381612a4f565b82525050565b5f602082019050612a7c5f830184612a5a565b92915050565b612a8b816129de565b82525050565b5f602082019050612aa45f830184612a82565b92915050565b5f805f60608486031215612ac157612ac061297c565b5b5f612ace868287016129ca565b9350506020612adf868287016129ca565b9250506040612af0868287016129fd565b9150509250925092565b5f60208284031215612b0f57612b0e61297c565b5b5f612b1c848285016129ca565b91505092915050565b5f60ff82169050919050565b612b3a81612b25565b82525050565b5f602082019050612b535f830184612b31565b92915050565b5f805f60608486031215612b7057612b6f61297c565b5b5f612b7d868287016129ca565b9350506020612b8e868287016129ca565b9250506040612b9f868287016129ca565b9150509250925092565b612bb281612a4f565b8114612bbc575f80fd5b50565b5f81359050612bcd81612ba9565b92915050565b5f8060408385031215612be957612be861297c565b5b5f612bf6858286016129ca565b9250506020612c0785828601612bbf565b9150509250929050565b5f805f60608486031215612c2857612c2761297c565b5b5f612c35868287016129fd565b9350506020612c46868287016129fd565b9250506040612c57868287016129fd565b9150509250925092565b612c6a816129a3565b82525050565b5f602082019050612c835f830184612c61565b92915050565b5f805f805f805f60e0888a031215612ca457612ca361297c565b5b5f612cb18a828b016129fd565b9750506020612cc28a828b016129fd565b9650506040612cd38a828b016129fd565b9550506060612ce48a828b016129fd565b9450506080612cf58a828b016129fd565b93505060a0612d068a828b016129fd565b92505060c0612d178a828b016129fd565b91505092959891949750929550565b5f8060408385031215612d3c57612d3b61297c565b5b5f612d49858286016129ca565b9250506020612d5a858286016129ca565b9150509250929050565b5f612d6e82612984565b9050919050565b612d7e81612d64565b8114612d88575f80fd5b50565b5f81359050612d9981612d75565b92915050565b5f60208284031215612db457612db361297c565b5b5f612dc184828501612d8b565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612deb57612dea612dca565b5b8235905067ffffffffffffffff811115612e0857612e07612dce565b5b602083019150836020820283011115612e2457612e23612dd2565b5b9250929050565b5f805f60408486031215612e4257612e4161297c565b5b5f84013567ffffffffffffffff811115612e5f57612e5e612980565b5b612e6b86828701612dd6565b93509350506020612e7e86828701612bbf565b9150509250925092565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612ebc6006836128f6565b9150612ec782612e88565b602082019050919050565b5f6020820190508181035f830152612ee981612eb0565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f612f4a602e836128f6565b9150612f5582612ef0565b604082019050919050565b5f6020820190508181035f830152612f7781612f3e565b9050919050565b5f81519050612f8c816129e7565b92915050565b5f60208284031215612fa757612fa661297c565b5b5f612fb484828501612f7e565b91505092915050565b5f604082019050612fd05f830185612c61565b612fdd6020830184612a82565b9392505050565b5f81519050612ff281612ba9565b92915050565b5f6020828403121561300d5761300c61297c565b5b5f61301a84828501612fe4565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f61307d602c836128f6565b915061308882613023565b604082019050919050565b5f6020820190508181035f8301526130aa81613071565b9050919050565b5f819050919050565b5f6130d46130cf6130ca84612984565b6130b1565b612984565b9050919050565b5f6130e5826130ba565b9050919050565b5f6130f6826130db565b9050919050565b613106816130ec565b82525050565b5f60208201905061311f5f8301846130fd565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131ac6024836128f6565b91506131b782613152565b604082019050919050565b5f6020820190508181035f8301526131d9816131a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61323a6022836128f6565b9150613245826131e0565b604082019050919050565b5f6020820190508181035f8301526132678161322e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132a5826129de565b91506132b0836129de565b92508282039050818111156132c8576132c761326e565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133286025836128f6565b9150613333826132ce565b604082019050919050565b5f6020820190508181035f8301526133558161331c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133b66023836128f6565b91506133c18261335c565b604082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6134446031836128f6565b915061344f826133ea565b604082019050919050565b5f6020820190508181035f83015261347181613438565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f6134ac600e836128f6565b91506134b782613478565b602082019050919050565b5f6020820190508181035f8301526134d9816134a0565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f613514601e836128f6565b915061351f826134e0565b602082019050919050565b5f6020820190508181035f83015261354181613508565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61357c6011836128f6565b915061358782613548565b602082019050919050565b5f6020820190508181035f8301526135a981613570565b9050919050565b5f6135ba826129de565b91506135c5836129de565b92508282019050808211156135dd576135dc61326e565b5b92915050565b5f6135ed826129de565b91506135f8836129de565b9250828202613606816129de565b9150828204841483151761361d5761361c61326e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61365b826129de565b9150613666836129de565b92508261367657613675613624565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506136bc816129b4565b92915050565b5f602082840312156136d7576136d661297c565b5b5f6136e4848285016136ae565b91505092915050565b5f819050919050565b5f61371061370b613706846136ed565b6130b1565b6129de565b9050919050565b613720816136f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613758816129a3565b82525050565b5f613769838361374f565b60208301905092915050565b5f602082019050919050565b5f61378b82613726565b6137958185613730565b93506137a083613740565b805f5b838110156137d05781516137b7888261375e565b97506137c283613775565b9250506001810190506137a3565b5085935050505092915050565b5f60a0820190506137f05f830188612a82565b6137fd6020830187613717565b818103604083015261380f8186613781565b905061381e6060830185612c61565b61382b6080830184612a82565b9695505050505050565b5f60c0820190506138485f830189612c61565b6138556020830188612a82565b6138626040830187613717565b61386f6060830186613717565b61387c6080830185612c61565b61388960a0830184612a82565b979650505050505050565b5f805f606084860312156138ab576138aa61297c565b5b5f6138b886828701612f7e565b93505060206138c986828701612f7e565b92505060406138da86828701612f7e565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f454d8bb619140f7c603c3032a57a2fa7e18537232876e8e1ac7467d5a274ab564736f6c63430008190033

Deployed Bytecode Sourcemap

4753:11345:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7204:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8084:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8223:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15441:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3657:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7354:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10178:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5172:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7970:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10960:89;;;;;;;;;;;;;:::i;:::-;;7583:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9619:551;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6487:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6418:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6352:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7499:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10519:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7277:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9101:510;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5290:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7692:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8774:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7837:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3750:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10769:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7427:66;;;;;;;;;;;;;:::i;:::-;;7204:67;7241:13;7264:5;;;;;;;;;;;;;;;;;7257:12;;7204:67;:::o;8084:133::-;8159:4;8166:37;8175:10;8187:7;8196:6;8166:8;:37::i;:::-;8211:4;8204:11;;8084:133;;;;:::o;8223:132::-;8276:7;8293:60;8331:21;8349:1;8331:9;:21::i;:::-;8293:33;8310:15;6039:42;8310:9;:15::i;:::-;8293:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8286:67;;8223:132;:::o;15441:309::-;15539:4;15556:36;15566:6;15574:9;15585:6;15556:9;:36::i;:::-;15603:117;15612:6;15620:10;15632:87;15668:6;15632:87;;;;;;;;;;;;;;;;;:11;:19;15644:6;15632:19;;;;;;;;;;;;;;;:31;15652:10;15632:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15603:8;:117::i;:::-;15738:4;15731:11;;15441:309;;;;;:::o;3657:87::-;3712:4;3737:5;;;;;;;;;;;3726:16;;:7;:16;;;3719:23;;3657:87;;;:::o;7354:67::-;7395:5;4977:1;7403:16;;7354:67;:::o;10178:333::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10316:10:::1;10295:18;;:31;;;;;;;;;;;;;;;;;;10349:10;10328:18;;:31;;;;;;;;;;;;;;;;;;10384:12;10361:20;;:35;;;;;;;;;;;;;;;;;;10433:4;10407:11;:23;10419:10;10407:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10465:4;10439:11;:23;10451:10;10439:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10499:4;10471:11;:25;10483:12;10471:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10178:333:::0;;;:::o;5172:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7970:108::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8068:8:::1;8044:11;:21;8056:8;8044:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7970:108:::0;;:::o;10960:89::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11012:29:::1;11027:13;;11012:14;:29::i;:::-;10960:89::o:0;7583:103::-;7649:7;7666:9;:18;7676:7;7666:18;;;;;;;;;;;;;;;;7659:25;;7583:103;;;:::o;9619:551::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9720:13:::1;9736:33;9763:5;9736:22;9753:4;9736:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9720:49;;9771:19;9793:34;9821:5;9793:23;9810:5;9793:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9771:56;;9829:17;9849:36;9879:5;9849:25;9866:7;9849:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9829:56;;9911:5;9896:12;:20;;;;9935:11;9918:14;:28;;;;9966:9;9948:15;:27;;;;9986:13;10002:30;10027:4;10002:20;10020:1;10002:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9986:46;;10060:5;10051;:14;;:38;;;;;10084:5;10069:11;:20;;10051:38;:60;;;;;10106:5;10093:9;:18;;10051:60;10043:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9709:461;;;;9619:551:::0;;;:::o;6487:63::-;;;;:::o;6418:62::-;;;;:::o;6352:59::-;;;;:::o;7499:78::-;7551:7;7569:5;;;;;;;;;;;7562:12;;7499:78;:::o;10519:242::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10605:15:::1;10623:63;10682:3;10623:54;10669:7;10630:8;10623:26;;;10658:4;10623:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10605:81;;10704:8;10697:25;;;10723:20;;;;;;;;;;;10745:7;10697:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10594:167;10519:242:::0;;:::o;7277:71::-;7316:13;7339:7;;;;;;;;;;;;;;;;;7332:14;;7277:71;:::o;9101:510::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9292:10:::1;9277:12;:25;;;;9319:10;9304:12;:25;;;;9341:5;9331:7;:15;;;;9365:12;9348:14;:29;;;;9390:6;9379:8;:17;;;;9408:5;9398:7;:15;;;;9429:6;9415:11;:20;;;;9466:18;9482:1;9466:11;;:15;;:18;;;;:::i;:::-;9454:8;;:30;;:63;;;;;9499:18;9515:1;9499:11;;:15;;:18;;;;:::i;:::-;9488:7;;:29;;9454:63;:100;;;;;9536:18;9552:1;9536:11;;:15;;:18;;;;:::i;:::-;9521:11;;:33;;9454:100;9446:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;9101:510:::0;;;;;;;:::o;5290:19::-;;;;;;;;;;;;;:::o;7692:139::-;7770:4;7777:40;7787:10;7799:9;7810:6;7777:9;:40::i;:::-;7825:4;7818:11;;7692:139;;;;:::o;8774:319::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8920:11:::1;8907:10;:24;;;;8949:53;8994:6;8949:32;8966:14;8949:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8933:13;:69;;;;9031:54;9077:6;9031:33;9048:15;9031:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;9014:14;:71;;;;8774:319:::0;;;:::o;7837:127::-;7918:7;7935:11;:18;7947:5;7935:18;;;;;;;;;;;;;;;:27;7954:7;7935:27;;;;;;;;;;;;;;;;7928:34;;7837:127;;;;:::o;3750:111::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3824:3:::1;3816:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3834:25;3855:3;3834:25;;;;;;:::i;:::-;;;;;;;;3750:111:::0;:::o;10769:183::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10865:6:::1;10861:84;10879:9;;:16;;10875:1;:20;10861:84;;;10934:8;10912:5;:19;10918:9;;10928:1;10918:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10912:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10897:3;;;;;;;10861:84;;;;10769:183:::0;;;:::o;7427:66::-;3616:19;3624:10;3616:7;:19::i;:::-;3608:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7487:4:::1;7470:14;;:21;;;;;;;;;;;;;;;;;;7427:66::o:0;15758:335::-;15868:1;15851:19;;:5;:19;;;15843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15949:1;15930:21;;:7;:21;;;15922:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16031:6;16001:11;:18;16013:5;16001:18;;;;;;;;;;;;;;;:27;16020:7;16001:27;;;;;;;;;;;;;;;:36;;;;16069:7;16053:32;;16062:5;16053:32;;;16078:6;16053:32;;;;;;:::i;:::-;;;;;;;;15758:335;;;:::o;1396:98::-;1454:7;1485:1;1481;:5;;;;:::i;:::-;1474:12;;1396:98;;;;:::o;14000:1433::-;14115:1;14097:20;;:6;:20;;;14089:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14199:1;14178:23;;:9;:23;;;14170:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14270:17;14280:6;14270:9;:17::i;:::-;14260:6;:27;;14252:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14355:11;:19;14367:6;14355:19;;;;;;;;;;;;;;;;;;;;;;;;;14354:20;:47;;;;;14379:11;:22;14391:9;14379:22;;;;;;;;;;;;;;;;;;;;;;;;;14378:23;14354:47;14351:95;;;14411:14;;;;;;;;;;;14403:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14351:95;14460:11;:19;14472:6;14460:19;;;;;;;;;;;;;;;;;;;;;;;;;14459:20;:47;;;;;14484:11;:22;14496:9;14484:22;;;;;;;;;;;;;;;;;;;;;;;;;14483:23;14459:47;:77;;;;;14531:4;;;;;;;;;;;14510:26;;:9;:26;;;;14459:77;:107;;;;;6039:42;14540:26;;:9;:26;;;;14459:107;14456:220;;;14624:15;;14587:32;14612:6;14587:9;:20;14597:9;14587:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14586:53;;14578:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14456:220;14699:4;;;;;;;;;;;14689:14;;:6;:14;;;14686:124;;14723:14;;14713:6;:24;;:47;;;;14741:11;:19;14753:6;14741:19;;;;;;;;;;;;;;;;;;;;;;;;;14713:47;:73;;;;14764:11;:22;14776:9;14764:22;;;;;;;;;;;;;;;;;;;;;;;;;14713:73;14705:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14686:124;14838:12;;14828:6;:22;;:45;;;;14854:11;:19;14866:6;14854:19;;;;;;;;;;;;;;;;;;;;;;;;;14828:45;:71;;;;14877:11;:22;14889:9;14877:22;;;;;;;;;;;;;;;;;;;;;;;;;14828:71;14820:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14949:4;;;;;;;;;;;14936:17;;:9;:17;;;:41;;;;;14958:11;:19;14970:6;14958:19;;;;;;;;;;;;;;;;;;;;;;;;;14957:20;14936:41;14933:71;;;15000:1;14979:9;;:23;;;;;;;:::i;:::-;;;;;;;;14933:71;15017:45;15036:6;15044:9;15055:6;15017:18;:45::i;:::-;15014:105;;;15064:29;15079:13;;15064:14;:29::i;:::-;15115:1;15095:9;:22;;;;15014:105;15149:29;15171:6;15149:9;:17;15159:6;15149:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;15129:9;:17;15139:6;15129:17;;;;;;;;;;;;;;;:49;;;;15189:22;15214:32;15228:6;15236:9;15214:13;:32::i;:::-;:78;;15286:6;15214:78;;;15249:34;15257:6;15265:9;15276:6;15249:7;:34::i;:::-;15214:78;15189:103;;15326:40;15351:14;15326:9;:20;15336:9;15326:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15303:9;:20;15313:9;15303:20;;;;;;;;;;;;;;;:63;;;;15399:9;15382:43;;15391:6;15382:43;;;15410:14;15382:43;;;;;;:::i;:::-;;;;;;;;14078:1355;14000:1433;;;:::o;1820:240::-;1940:7;1998:1;1993;:6;;2001:12;1985:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2040:1;2036;:5;2029:12;;1820:240;;;;;:::o;11057:1063::-;5659:4;5648:8;;:15;;;;;;;;;;;;;;;;;;11128:20:::1;11151:66;11215:1;11152:57;11194:14;;11152:37;11176:12;;11152:19;11169:1;11152:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11151:63;;:66;;;;:::i;:::-;11128:89;;11228:32;11263:42;11292:12;11263:24;11274:12;;11263:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;11228:77;;11316:14;11333:36;11344:24;11333:6;:10;;:36;;;;:::i;:::-;11316:53;;11380:22;11405:21;11380:46;;11437:24;11454:6;11437:16;:24::i;:::-;11472:20;11495:41;11521:14;11495:21;:25;;:41;;;;:::i;:::-;11472:64;;11547:19;11568:48;11585:30;11602:12;;11585;:16;;:30;;;;:::i;:::-;11568:12;:16;;:48;;;;:::i;:::-;11547:69;;11627:29;11659;11675:12;;11659:11;:15;;:29;;;;:::i;:::-;11627:61;;11734:1;11702:21;:34;11699:103;;;11738:61;11751:24;11777:21;11738:12;:61::i;:::-;11699:103;11812:20;11835:36;11858:12;;11835:18;11851:1;11835:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11812:59;;11900:1;11885:12;:16;11882:73;;;11911:18;;;;;;;;;;;11903:36;;:50;11940:12;11903:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11882:73;11965:23;11991:21;11965:47;;12052:1;12026:15;:28;12023:90;;;12064:20;;;;;;;;;;;12056:38;;:55;12095:15;12056:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12023:90;11117:1003;;;;;;;;;5679:5:::0;5668:8;;:16;;;;;;;;;;;;;;;;;;11057:1063;:::o;1502:98::-;1560:7;1591:1;1587;:5;;;;:::i;:::-;1580:12;;1502:98;;;;:::o;1608:::-;1666:7;1697:1;1693;:5;;;;:::i;:::-;1686:12;;1608:98;;;;:::o;1290:::-;1348:7;1379:1;1375;:5;;;;:::i;:::-;1368:12;;1290:98;;;;:::o;8363:403::-;8465:4;8482:13;8508:14;;8498:6;:24;;8482:40;;8533:19;8583:13;;8555:24;8573:4;8555:9;:24::i;:::-;:41;;8533:63;;8615:8;;;;;;;;;;;8614:9;:24;;;;;8627:11;;;;;;;;;;;8614:24;:42;;;;;8642:14;;;;;;;;;;;8614:42;:54;;;;;8660:8;8614:54;:78;;;;;8673:11;:19;8685:6;8673:19;;;;;;;;;;;;;;;;;;;;;;;;;8672:20;8614:78;:99;;;;;8709:4;;;;;;;;;;;8696:17;;:9;:17;;;8614:99;:126;;;;;8730:10;;8717:9;;:23;;8614:126;:144;;;;;8744:14;8614:144;8607:151;;;;8363:403;;;;;:::o;12921:160::-;13002:4;13027:11;:19;13039:6;13027:19;;;;;;;;;;;;;;;;;;;;;;;;;13026:20;:47;;;;;13051:11;:22;13063:9;13051:22;;;;;;;;;;;;;;;;;;;;;;;;;13050:23;13026:47;13019:54;;12921:160;;;;:::o;13402:590::-;13488:7;13544:1;13511:30;13523:6;13531:9;13511:11;:30::i;:::-;:34;13508:462;;;13557:17;13577:59;13605:30;13617:6;13625:9;13605:11;:30::i;:::-;13577:23;13588:11;;13577:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13557:79;;13674:39;13703:9;13674;:24;13692:4;13674:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13647:9;:24;13665:4;13647:24;;;;;;;;;;;;;;;:66;;;;13754:4;13729:42;;13738:6;13729:42;;;13761:9;13729:42;;;;;;:::i;:::-;;;;;;;;13803:1;13785:7;;:20;:64;;;;;13842:7;;13809:30;13821:6;13829:9;13809:11;:30::i;:::-;:40;13785:64;13782:148;;;13851:77;13869:4;6039:42;13891:36;13919:7;;13891:23;13902:11;;13891:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13851:9;:77::i;:::-;13782:148;13947:21;13958:9;13947:6;:10;;:21;;;;:::i;:::-;13940:28;;;;;13508:462;13978:6;13971:13;;13402:590;;;;;;:::o;12479:434::-;12545:21;12583:1;12569:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12545:40;;12614:4;12596;12601:1;12596:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12640:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12630:4;12635:1;12630:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12664:53;12681:4;12696:6;;;;;;;;;;;12705:11;12664:8;:53::i;:::-;12728:6;;;;;;;;;;;:57;;;12800:11;12826:1;12842:4;12869;12889:15;12728:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12534:379;12479:434;:::o;12128:343::-;12209:53;12226:4;12241:6;;;;;;;;;;;12250:11;12209:8;:53::i;:::-;12273:6;;;;;;;;;;;:22;;;12303:9;12336:4;12356:11;12382:1;12398;12414:18;;;;;;;;;;;12447:15;12273:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12128:343;;:::o;13089:305::-;13168:7;13191:5;:13;13197:6;13191:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;13208:5;:16;13214:9;13208:16;;;;;;;;;;;;;;;;;;;;;;;;;13191:33;13188:76;;;13233:29;13257:3;13233:11;;:15;;:29;;;;:::i;:::-;13226:36;;;;13188:76;13290:4;;;;;;;;;;;13277:17;;:9;:17;;;13274:38;;13303:7;;13296:14;;;;13274:38;13335:4;;;;;;;;;;;13325:14;;:6;:14;;;13322:36;;13348:8;;13341:15;;;;13322:36;13375:11;;13368:18;;13089:305;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:619::-;5158:6;5166;5174;5223:2;5211:9;5202:7;5198:23;5194:32;5191:119;;;5229:79;;:::i;:::-;5191:119;5349:1;5374:53;5419:7;5410:6;5399:9;5395:22;5374:53;:::i;:::-;5364:63;;5320:117;5476:2;5502:53;5547:7;5538:6;5527:9;5523:22;5502:53;:::i;:::-;5492:63;;5447:118;5604:2;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5575:118;5081:619;;;;;:::o;5706:116::-;5776:21;5791:5;5776:21;:::i;:::-;5769:5;5766:32;5756:60;;5812:1;5809;5802:12;5756:60;5706:116;:::o;5828:133::-;5871:5;5909:6;5896:20;5887:29;;5925:30;5949:5;5925:30;:::i;:::-;5828:133;;;;:::o;5967:468::-;6032:6;6040;6089:2;6077:9;6068:7;6064:23;6060:32;6057:119;;;6095:79;;:::i;:::-;6057:119;6215:1;6240:53;6285:7;6276:6;6265:9;6261:22;6240:53;:::i;:::-;6230:63;;6186:117;6342:2;6368:50;6410:7;6401:6;6390:9;6386:22;6368:50;:::i;:::-;6358:60;;6313:115;5967:468;;;;;:::o;6441:619::-;6518:6;6526;6534;6583:2;6571:9;6562:7;6558:23;6554:32;6551:119;;;6589:79;;:::i;:::-;6551:119;6709:1;6734:53;6779:7;6770:6;6759:9;6755:22;6734:53;:::i;:::-;6724:63;;6680:117;6836:2;6862:53;6907:7;6898:6;6887:9;6883:22;6862:53;:::i;:::-;6852:63;;6807:118;6964:2;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6935:118;6441:619;;;;;:::o;7066:118::-;7153:24;7171:5;7153:24;:::i;:::-;7148:3;7141:37;7066:118;;:::o;7190:222::-;7283:4;7321:2;7310:9;7306:18;7298:26;;7334:71;7402:1;7391:9;7387:17;7378:6;7334:71;:::i;:::-;7190:222;;;;:::o;7418:1203::-;7531:6;7539;7547;7555;7563;7571;7579;7628:3;7616:9;7607:7;7603:23;7599:33;7596:120;;;7635:79;;:::i;:::-;7596:120;7755:1;7780:53;7825:7;7816:6;7805:9;7801:22;7780:53;:::i;:::-;7770:63;;7726:117;7882:2;7908:53;7953:7;7944:6;7933:9;7929:22;7908:53;:::i;:::-;7898:63;;7853:118;8010:2;8036:53;8081:7;8072:6;8061:9;8057:22;8036:53;:::i;:::-;8026:63;;7981:118;8138:2;8164:53;8209:7;8200:6;8189:9;8185:22;8164:53;:::i;:::-;8154:63;;8109:118;8266:3;8293:53;8338:7;8329:6;8318:9;8314:22;8293:53;:::i;:::-;8283:63;;8237:119;8395:3;8422:53;8467:7;8458:6;8447:9;8443:22;8422:53;:::i;:::-;8412:63;;8366:119;8524:3;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8495:119;7418:1203;;;;;;;;;;:::o;8627:474::-;8695:6;8703;8752:2;8740:9;8731:7;8727:23;8723:32;8720:119;;;8758:79;;:::i;:::-;8720:119;8878:1;8903:53;8948:7;8939:6;8928:9;8924:22;8903:53;:::i;:::-;8893:63;;8849:117;9005:2;9031:53;9076:7;9067:6;9056:9;9052:22;9031:53;:::i;:::-;9021:63;;8976:118;8627:474;;;;;:::o;9107:104::-;9152:7;9181:24;9199:5;9181:24;:::i;:::-;9170:35;;9107:104;;;:::o;9217:138::-;9298:32;9324:5;9298:32;:::i;:::-;9291:5;9288:43;9278:71;;9345:1;9342;9335:12;9278:71;9217:138;:::o;9361:155::-;9415:5;9453:6;9440:20;9431:29;;9469:41;9504:5;9469:41;:::i;:::-;9361:155;;;;:::o;9522:345::-;9589:6;9638:2;9626:9;9617:7;9613:23;9609:32;9606:119;;;9644:79;;:::i;:::-;9606:119;9764:1;9789:61;9842:7;9833:6;9822:9;9818:22;9789:61;:::i;:::-;9779:71;;9735:125;9522:345;;;;:::o;9873:117::-;9982:1;9979;9972:12;9996:117;10105:1;10102;10095:12;10119:117;10228:1;10225;10218:12;10259:568;10332:8;10342:6;10392:3;10385:4;10377:6;10373:17;10369:27;10359:122;;10400:79;;:::i;:::-;10359:122;10513:6;10500:20;10490:30;;10543:18;10535:6;10532:30;10529:117;;;10565:79;;:::i;:::-;10529:117;10679:4;10671:6;10667:17;10655:29;;10733:3;10725:4;10717:6;10713:17;10703:8;10699:32;10696:41;10693:128;;;10740:79;;:::i;:::-;10693:128;10259:568;;;;;:::o;10833:698::-;10925:6;10933;10941;10990:2;10978:9;10969:7;10965:23;10961:32;10958:119;;;10996:79;;:::i;:::-;10958:119;11144:1;11133:9;11129:17;11116:31;11174:18;11166:6;11163:30;11160:117;;;11196:79;;:::i;:::-;11160:117;11309:80;11381:7;11372:6;11361:9;11357:22;11309:80;:::i;:::-;11291:98;;;;11087:312;11438:2;11464:50;11506:7;11497:6;11486:9;11482:22;11464:50;:::i;:::-;11454:60;;11409:115;10833:698;;;;;:::o;11537:156::-;11677:8;11673:1;11665:6;11661:14;11654:32;11537:156;:::o;11699:365::-;11841:3;11862:66;11926:1;11921:3;11862:66;:::i;:::-;11855:73;;11937:93;12026:3;11937:93;:::i;:::-;12055:2;12050:3;12046:12;12039:19;;11699:365;;;:::o;12070:419::-;12236:4;12274:2;12263:9;12259:18;12251:26;;12323:9;12317:4;12313:20;12309:1;12298:9;12294:17;12287:47;12351:131;12477:4;12351:131;:::i;:::-;12343:139;;12070:419;;;:::o;12495:233::-;12635:34;12631:1;12623:6;12619:14;12612:58;12704:16;12699:2;12691:6;12687:15;12680:41;12495:233;:::o;12734:366::-;12876:3;12897:67;12961:2;12956:3;12897:67;:::i;:::-;12890:74;;12973:93;13062:3;12973:93;:::i;:::-;13091:2;13086:3;13082:12;13075:19;;12734:366;;;:::o;13106:419::-;13272:4;13310:2;13299:9;13295:18;13287:26;;13359:9;13353:4;13349:20;13345:1;13334:9;13330:17;13323:47;13387:131;13513:4;13387:131;:::i;:::-;13379:139;;13106:419;;;:::o;13531:143::-;13588:5;13619:6;13613:13;13604:22;;13635:33;13662:5;13635:33;:::i;:::-;13531:143;;;;:::o;13680:351::-;13750:6;13799:2;13787:9;13778:7;13774:23;13770:32;13767:119;;;13805:79;;:::i;:::-;13767:119;13925:1;13950:64;14006:7;13997:6;13986:9;13982:22;13950:64;:::i;:::-;13940:74;;13896:128;13680:351;;;;:::o;14037:332::-;14158:4;14196:2;14185:9;14181:18;14173:26;;14209:71;14277:1;14266:9;14262:17;14253:6;14209:71;:::i;:::-;14290:72;14358:2;14347:9;14343:18;14334:6;14290:72;:::i;:::-;14037:332;;;;;:::o;14375:137::-;14429:5;14460:6;14454:13;14445:22;;14476:30;14500:5;14476:30;:::i;:::-;14375:137;;;;:::o;14518:345::-;14585:6;14634:2;14622:9;14613:7;14609:23;14605:32;14602:119;;;14640:79;;:::i;:::-;14602:119;14760:1;14785:61;14838:7;14829:6;14818:9;14814:22;14785:61;:::i;:::-;14775:71;;14731:125;14518:345;;;;:::o;14869:231::-;15009:34;15005:1;14997:6;14993:14;14986:58;15078:14;15073:2;15065:6;15061:15;15054:39;14869:231;:::o;15106:366::-;15248:3;15269:67;15333:2;15328:3;15269:67;:::i;:::-;15262:74;;15345:93;15434:3;15345:93;:::i;:::-;15463:2;15458:3;15454:12;15447:19;;15106:366;;;:::o;15478:419::-;15644:4;15682:2;15671:9;15667:18;15659:26;;15731:9;15725:4;15721:20;15717:1;15706:9;15702:17;15695:47;15759:131;15885:4;15759:131;:::i;:::-;15751:139;;15478:419;;;:::o;15903:60::-;15931:3;15952:5;15945:12;;15903:60;;;:::o;15969:142::-;16019:9;16052:53;16070:34;16079:24;16097:5;16079:24;:::i;:::-;16070:34;:::i;:::-;16052:53;:::i;:::-;16039:66;;15969:142;;;:::o;16117:126::-;16167:9;16200:37;16231:5;16200:37;:::i;:::-;16187:50;;16117:126;;;:::o;16249:134::-;16307:9;16340:37;16371:5;16340:37;:::i;:::-;16327:50;;16249:134;;;:::o;16389:147::-;16484:45;16523:5;16484:45;:::i;:::-;16479:3;16472:58;16389:147;;:::o;16542:238::-;16643:4;16681:2;16670:9;16666:18;16658:26;;16694:79;16770:1;16759:9;16755:17;16746:6;16694:79;:::i;:::-;16542:238;;;;:::o;16786:180::-;16834:77;16831:1;16824:88;16931:4;16928:1;16921:15;16955:4;16952:1;16945:15;16972:223;17112:34;17108:1;17100:6;17096:14;17089:58;17181:6;17176:2;17168:6;17164:15;17157:31;16972:223;:::o;17201:366::-;17343:3;17364:67;17428:2;17423:3;17364:67;:::i;:::-;17357:74;;17440:93;17529:3;17440:93;:::i;:::-;17558:2;17553:3;17549:12;17542:19;;17201:366;;;:::o;17573:419::-;17739:4;17777:2;17766:9;17762:18;17754:26;;17826:9;17820:4;17816:20;17812:1;17801:9;17797:17;17790:47;17854:131;17980:4;17854:131;:::i;:::-;17846:139;;17573:419;;;:::o;17998:221::-;18138:34;18134:1;18126:6;18122:14;18115:58;18207:4;18202:2;18194:6;18190:15;18183:29;17998:221;:::o;18225:366::-;18367:3;18388:67;18452:2;18447:3;18388:67;:::i;:::-;18381:74;;18464:93;18553:3;18464:93;:::i;:::-;18582:2;18577:3;18573:12;18566:19;;18225:366;;;:::o;18597:419::-;18763:4;18801:2;18790:9;18786:18;18778:26;;18850:9;18844:4;18840:20;18836:1;18825:9;18821:17;18814:47;18878:131;19004:4;18878:131;:::i;:::-;18870:139;;18597:419;;;:::o;19022:180::-;19070:77;19067:1;19060:88;19167:4;19164:1;19157:15;19191:4;19188:1;19181:15;19208:194;19248:4;19268:20;19286:1;19268:20;:::i;:::-;19263:25;;19302:20;19320:1;19302:20;:::i;:::-;19297:25;;19346:1;19343;19339:9;19331:17;;19370:1;19364:4;19361:11;19358:37;;;19375:18;;:::i;:::-;19358:37;19208:194;;;;:::o;19408:224::-;19548:34;19544:1;19536:6;19532:14;19525:58;19617:7;19612:2;19604:6;19600:15;19593:32;19408:224;:::o;19638:366::-;19780:3;19801:67;19865:2;19860:3;19801:67;:::i;:::-;19794:74;;19877:93;19966:3;19877:93;:::i;:::-;19995:2;19990:3;19986:12;19979:19;;19638:366;;;:::o;20010:419::-;20176:4;20214:2;20203:9;20199:18;20191:26;;20263:9;20257:4;20253:20;20249:1;20238:9;20234:17;20227:47;20291:131;20417:4;20291:131;:::i;:::-;20283:139;;20010:419;;;:::o;20435:222::-;20575:34;20571:1;20563:6;20559:14;20552:58;20644:5;20639:2;20631:6;20627:15;20620:30;20435:222;:::o;20663:366::-;20805:3;20826:67;20890:2;20885:3;20826:67;:::i;:::-;20819:74;;20902:93;20991:3;20902:93;:::i;:::-;21020:2;21015:3;21011:12;21004:19;;20663:366;;;:::o;21035:419::-;21201:4;21239:2;21228:9;21224:18;21216:26;;21288:9;21282:4;21278:20;21274:1;21263:9;21259:17;21252:47;21316:131;21442:4;21316:131;:::i;:::-;21308:139;;21035:419;;;:::o;21460:236::-;21600:34;21596:1;21588:6;21584:14;21577:58;21669:19;21664:2;21656:6;21652:15;21645:44;21460:236;:::o;21702:366::-;21844:3;21865:67;21929:2;21924:3;21865:67;:::i;:::-;21858:74;;21941:93;22030:3;21941:93;:::i;:::-;22059:2;22054:3;22050:12;22043:19;;21702:366;;;:::o;22074:419::-;22240:4;22278:2;22267:9;22263:18;22255:26;;22327:9;22321:4;22317:20;22313:1;22302:9;22298:17;22291:47;22355:131;22481:4;22355:131;:::i;:::-;22347:139;;22074:419;;;:::o;22499:164::-;22639:16;22635:1;22627:6;22623:14;22616:40;22499:164;:::o;22669:366::-;22811:3;22832:67;22896:2;22891:3;22832:67;:::i;:::-;22825:74;;22908:93;22997:3;22908:93;:::i;:::-;23026:2;23021:3;23017:12;23010:19;;22669:366;;;:::o;23041:419::-;23207:4;23245:2;23234:9;23230:18;23222:26;;23294:9;23288:4;23284:20;23280:1;23269:9;23265:17;23258:47;23322:131;23448:4;23322:131;:::i;:::-;23314:139;;23041:419;;;:::o;23466:180::-;23606:32;23602:1;23594:6;23590:14;23583:56;23466:180;:::o;23652:366::-;23794:3;23815:67;23879:2;23874:3;23815:67;:::i;:::-;23808:74;;23891:93;23980:3;23891:93;:::i;:::-;24009:2;24004:3;24000:12;23993:19;;23652:366;;;:::o;24024:419::-;24190:4;24228:2;24217:9;24213:18;24205:26;;24277:9;24271:4;24267:20;24263:1;24252:9;24248:17;24241:47;24305:131;24431:4;24305:131;:::i;:::-;24297:139;;24024:419;;;:::o;24449:167::-;24589:19;24585:1;24577:6;24573:14;24566:43;24449:167;:::o;24622:366::-;24764:3;24785:67;24849:2;24844:3;24785:67;:::i;:::-;24778:74;;24861:93;24950:3;24861:93;:::i;:::-;24979:2;24974:3;24970:12;24963:19;;24622:366;;;:::o;24994:419::-;25160:4;25198:2;25187:9;25183:18;25175:26;;25247:9;25241:4;25237:20;25233:1;25222:9;25218:17;25211:47;25275:131;25401:4;25275:131;:::i;:::-;25267:139;;24994:419;;;:::o;25419:191::-;25459:3;25478:20;25496:1;25478:20;:::i;:::-;25473:25;;25512:20;25530:1;25512:20;:::i;:::-;25507:25;;25555:1;25552;25548:9;25541:16;;25576:3;25573:1;25570:10;25567:36;;;25583:18;;:::i;:::-;25567:36;25419:191;;;;:::o;25616:410::-;25656:7;25679:20;25697:1;25679:20;:::i;:::-;25674:25;;25713:20;25731:1;25713:20;:::i;:::-;25708:25;;25768:1;25765;25761:9;25790:30;25808:11;25790:30;:::i;:::-;25779:41;;25969:1;25960:7;25956:15;25953:1;25950:22;25930:1;25923:9;25903:83;25880:139;;25999:18;;:::i;:::-;25880:139;25664:362;25616:410;;;;:::o;26032:180::-;26080:77;26077:1;26070:88;26177:4;26174:1;26167:15;26201:4;26198:1;26191:15;26218:185;26258:1;26275:20;26293:1;26275:20;:::i;:::-;26270:25;;26309:20;26327:1;26309:20;:::i;:::-;26304:25;;26348:1;26338:35;;26353:18;;:::i;:::-;26338:35;26395:1;26392;26388:9;26383:14;;26218:185;;;;:::o;26409:180::-;26457:77;26454:1;26447:88;26554:4;26551:1;26544:15;26578:4;26575:1;26568:15;26595:143;26652:5;26683:6;26677:13;26668:22;;26699:33;26726:5;26699:33;:::i;:::-;26595:143;;;;:::o;26744:351::-;26814:6;26863:2;26851:9;26842:7;26838:23;26834:32;26831:119;;;26869:79;;:::i;:::-;26831:119;26989:1;27014:64;27070:7;27061:6;27050:9;27046:22;27014:64;:::i;:::-;27004:74;;26960:128;26744:351;;;;:::o;27101:85::-;27146:7;27175:5;27164:16;;27101:85;;;:::o;27192:158::-;27250:9;27283:61;27301:42;27310:32;27336:5;27310:32;:::i;:::-;27301:42;:::i;:::-;27283:61;:::i;:::-;27270:74;;27192:158;;;:::o;27356:147::-;27451:45;27490:5;27451:45;:::i;:::-;27446:3;27439:58;27356:147;;:::o;27509:114::-;27576:6;27610:5;27604:12;27594:22;;27509:114;;;:::o;27629:184::-;27728:11;27762:6;27757:3;27750:19;27802:4;27797:3;27793:14;27778:29;;27629:184;;;;:::o;27819:132::-;27886:4;27909:3;27901:11;;27939:4;27934:3;27930:14;27922:22;;27819:132;;;:::o;27957:108::-;28034:24;28052:5;28034:24;:::i;:::-;28029:3;28022:37;27957:108;;:::o;28071:179::-;28140:10;28161:46;28203:3;28195:6;28161:46;:::i;:::-;28239:4;28234:3;28230:14;28216:28;;28071:179;;;;:::o;28256:113::-;28326:4;28358;28353:3;28349:14;28341:22;;28256:113;;;:::o;28405:732::-;28524:3;28553:54;28601:5;28553:54;:::i;:::-;28623:86;28702:6;28697:3;28623:86;:::i;:::-;28616:93;;28733:56;28783:5;28733:56;:::i;:::-;28812:7;28843:1;28828:284;28853:6;28850:1;28847:13;28828:284;;;28929:6;28923:13;28956:63;29015:3;29000:13;28956:63;:::i;:::-;28949:70;;29042:60;29095:6;29042:60;:::i;:::-;29032:70;;28888:224;28875:1;28872;28868:9;28863:14;;28828:284;;;28832:14;29128:3;29121:10;;28529:608;;;28405:732;;;;:::o;29143:831::-;29406:4;29444:3;29433:9;29429:19;29421:27;;29458:71;29526:1;29515:9;29511:17;29502:6;29458:71;:::i;:::-;29539:80;29615:2;29604:9;29600:18;29591:6;29539:80;:::i;:::-;29666:9;29660:4;29656:20;29651:2;29640:9;29636:18;29629:48;29694:108;29797:4;29788:6;29694:108;:::i;:::-;29686:116;;29812:72;29880:2;29869:9;29865:18;29856:6;29812:72;:::i;:::-;29894:73;29962:3;29951:9;29947:19;29938:6;29894:73;:::i;:::-;29143:831;;;;;;;;:::o;29980:807::-;30229:4;30267:3;30256:9;30252:19;30244:27;;30281:71;30349:1;30338:9;30334:17;30325:6;30281:71;:::i;:::-;30362:72;30430:2;30419:9;30415:18;30406:6;30362:72;:::i;:::-;30444:80;30520:2;30509:9;30505:18;30496:6;30444:80;:::i;:::-;30534;30610:2;30599:9;30595:18;30586:6;30534:80;:::i;:::-;30624:73;30692:3;30681:9;30677:19;30668:6;30624:73;:::i;:::-;30707;30775:3;30764:9;30760:19;30751:6;30707:73;:::i;:::-;29980:807;;;;;;;;;:::o;30793:663::-;30881:6;30889;30897;30946:2;30934:9;30925:7;30921:23;30917:32;30914:119;;;30952:79;;:::i;:::-;30914:119;31072:1;31097:64;31153:7;31144:6;31133:9;31129:22;31097:64;:::i;:::-;31087:74;;31043:128;31210:2;31236:64;31292:7;31283:6;31272:9;31268:22;31236:64;:::i;:::-;31226:74;;31181:129;31349:2;31375:64;31431:7;31422:6;31411:9;31407:22;31375:64;:::i;:::-;31365:74;;31320:129;30793:663;;;;;:::o

Swarm Source

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