ETH Price: $2,527.64 (+0.65%)

Token

REKTUM (BOOF)
 

Overview

Max Total Supply

69,420,694,206,942 BOOF

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
401,891,714,109.72970496 BOOF

Value
$0.00
0x6bfcbe96571ff6ea7b148db2ee99d89ce30a86db
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:
BOOF

Compiler Version
v0.8.16+commit.07a7930e

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-06
*/

/*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXNNNXXNNXNX0OOOkkOO0XXXXXXNXXXXXXXXNNNNNXXXXXNXNNXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXNXNXXXN0:',,,;;,cO00KXXXXXXXXXXNXXNNXXXXXXNXXNNXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXNNNXXO;'''lOx;,;;,:ONXXXXXXXXXXX0OOOOO000KXNNXXXX
XXXXXXXXXXXXXXXXXXXXXXXNNXNNNXXXXXXXXXXXNXXXXNXXXXXXNN0l;,'lkxl:ox:'';ONXNXXXXNNXKOc,,,,,;;,c0NXXXXX
XXXXXXXXXXXXXXXXXXXXXXXNNNNXXNNXNXXXXXXXXXNNXNNXNNNNXNO;'''oXOllOKkd:';lONXNXNXN0l,,'':kkOd,cKNXNXXX
XXXXXXXXXXXXXXXXXXXXXXXNNXNNNNNNNNNNNNNNNNNNNNXNXXNNXNO:'''oKOocodOKl..,ONXNNXN0l,''''lKXXx,cKNNNXXX
XXXXXXXXXXXXXXXXXXXXXXXXXNNKOkkkkkkxxxxxxxxxxOXNNNNNXN0:'''lKk;.,;xKxl;'colllll:''cdddOXXXd,lXNNXXXX
XXXXXXXXXXXXXXXNXXNXNNXXXX0o,'''''''''''''''',oOKNXNKko,'''lKk;':oOKKKl..........'dKKXXXXXo'oXNNNXXX
XXXXXXXXXXXXXXXNXXNNXXXX0o,''''',;;;:::::;,'''',lk0Kk,.,;;;dKk:,;ckKKKdcccccccllllkKKKKKXKl'dXXXNXXX
XXXXXXXXXXXXXXXNXXNXXNXd;'''',',o00000000k:,,,,''',ll''oOO0000OOO0KK0KK0KKKKKKKXXXXXXXXKK0c'xNXXNXXX
XXXXXXXXXXXXXXXXNNNNXNO:''':xkkk0KKKKKKKKK0OO0d,.''''.'lOO00000KK0000000KKKKKKKKKKXKXX0dkOc'dXXXNXXX
XXXXXXXXXXXXXXXXNNXXXOc,''.c0XKKKKKKKKKKKKKXKKk;.'.''';xOOOO000000KXXXK000KKKKKK0OO0KKk:cl;.lKNXNXXX
XXXXXXXXXXXXXXXXNNXNXo''''.;OXKXKXXXXXXXXXKKKK0xo:..'.;xOkOOOOO0KXXNNNXXXXXK0KK0d,,dXNXKx:,'lXNXNXXX
XXXXXXXXXXXXXXXNNXNXKd,'',:lOKKKKXXXXXXXKKKXXKKK0xloc';dkkkOOOOOKXkllllllOX000K0o''oKXXNX0l'oXNXXXXX
XXXXXXXXXXXXXXXXNXKd:;''':OKKKKKKXXOooooc:dXXKKKKK0Kx,':dkkkkOOO0Ko'.''''oK00000l'';:::kNKc'xNNNXXXX
XXXXXXXXNNNNXXXXKx:,''''';kXKKKXKxoodddo;.lKXXXKK000x,..,cdkkkkk0Ko''''''oK00XX0c''''''dX0c'cxKNXXXN
XXXXXXXXNNXXNXXkc,''''''',xXKKKXKl';lodo;.cKNXNXK000x,.'..,cdkkOO0d;,;;;:xKKKNNXk:'''''o0O:..;ONXXXX
XXXXXXXXXNNXNOc,'''':cccld0XKKKXXOxo,'cl;.cKWNWNXK0Kk,'ol,'.,::cdkkkxkOO0XXOxxdxd:',ldoxOkc,';ONXNXX
XXXXXXXXNNXN0c''',:oOKKXXKKXKKKXXXX0xo:''.:0WNNNXXKXO;'oxxl;;;..lOOO000XXN0:''''',',xX0xkO00l:0XXXXX
NNNXXXXXXNN0c''',ckKKXXXXK0kkO0KXXXXKKdc;.;0WNNNNKko:,,okxxdxdc;cdOXOdOXXN0:',:ccc,,xXd;oKXXocOKKKKK
XXXXXXKKKXKo'',;lOKKKXXXXX0dlc;o000Ol;;,'.,ONNNXOdl,'ldxkkkkkkkd;.oKo.cOKNKl'',,,;,:ll;'dXXKlc0KKKKK
KKKKKKKKKKo''';xKKKKKXXXXNNNXd';ddddolllolo0NNNO;,clokOkkkkxkkkxl;cddd:'ckkd:,''',;;,'lk0XX0clKKKKKK
KKKKKKKKKx;''',dKKKKKXXNNNNNNOldXNNNNNNNNNXkcdOOddkO00OOOOOkkOOkkko:cdxxddc';ccc;'cxxkKXNKo;,oKKKKKK
KKKKKKKKk;''',;d0KKXXXXNWWWWWWNNXXNWWWWWNkoolxKKKKKKK0KKKKKOOOOkkkOx;.oXNNd'cxxd:'xXXXXXXO;'ckKKKKKK
KKKKKKK0l''',oO0KKXXNNNNNNWWWWWWNXXNXXXXKdckKKKKKKKKKKKXXKKOkOOkOOOx;.oXNN0dl:::ok0XXXKOl,,oKKKKKKKK
KKKKKKKKd,'',o0KKKXNWNNNWWWWWWWWWW0dd0KdlkXXKXKKKKKKKKXXXKK00OkkOOOkdccoONNN0xkk0XKKKOc,;:lk00000000
KKKKKKKXk;'''l0KKKXNNNWWWWWWWWWWWWk,,ll;,dXXXXKKXKKXKKXXXKKK0OkkOOOOOk;.:dKNNNNXxc:;;,,cxOOOkkkkkkkk
KKKKKKKXO:''':kKKKKXNWWWWWWWWWWWWW0l;,',:dKXXXXXXXXXXXXXXXKK0OkkOOOOOx;'cook0XKKk;..,ldxxxdddddddddd
KKKKKKKK0l''';xKKKXNNNWWWWWWWWWWNW0:'lkc'c0XKXXXXXXXXXXNNXKK0OkkOOOOOk;'o000KX0d:,,clddooooooooooooo
KKKKKKKKKd,'',dKXXNNNNWWWWWWWWWWWWXOkKNKk0XXXXXXXNXNNXNNNXKK0OkkOOOOOx;'dK0xlc:,,clooooooooooooooooo
XXKKXKKKXk;'''l0XXNNNNWWWWWWWWWWWWWNNNNNNNNXXNXXNNNNNXNNNXKK0OkkOOOOOx;'oxc,'',:looooooooooooooooooo
XXKXXKKKX0c'''cOXXNNNNWWWWWWWWWWWNNNNNNNNNNXXNNNNNNNNNNNNXKK0OOkOOOO0k;':;':lllooooooooooooooooooooo
XXKKKKKXXKo''';kXXXNNWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNXNNNXK0OOOOOOOkdc,'cllooooooooooooooooooooooooo
XXXKKKXXXK0xxc,lkKXXNNWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNXNNNXK0OOOOO00x;.,;looooooooooooooooooooooooooo
XXKKKKXXXKKXXx;';dO0XXNNWWWWWWWWWNNNNNNNNNNNNNNNNNNNNNNNNX0OOOOOxlcc:;cooooooooooooooooooooooooddddd
XXKKXXXXXXXXXKOx;',:lx0XNNWWWWWWWNNNNNNNNNNNNNNNNNNNNNNX0OOOOOO0o';cooooooooooooooooooooooodddddxxkk
XKKKXKKXXKKXKKX0c'',xKKKKXNWWWWWWNNNNNNNNNNNNNNNNNNNNX00OOOOO000o,cdoooooooooooooooooooodddxxxkkkOOO
KKKXXKXXXXXXXXXKo'',xXKKKKXXKKXXNNNNNNNXXXXXXXK0KKKK00OOOO00000Ko,cdooooooooooooooodddddxxxkkOOOOO00
KKXXXXXXXXXXXXXXx,''dXXXXKKKKK0000KKOxkKKKKKK0o;dOOOOO000000000Ko,cdoooooooooooooddddxxxkkkOOO00000K

                                                                                                                                         
                                                                                                                                         
RRRRRRRRRRRRRRRRR   EEEEEEEEEEEEEEEEEEEEEEKKKKKKKKK    KKKKKKKTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUU     UUUUUUUUMMMMMMMM               MMMMMMMM
R::::::::::::::::R  E::::::::::::::::::::EK:::::::K    K:::::KT:::::::::::::::::::::TU::::::U     U::::::UM:::::::M             M:::::::M
R::::::RRRRRR:::::R E::::::::::::::::::::EK:::::::K    K:::::KT:::::::::::::::::::::TU::::::U     U::::::UM::::::::M           M::::::::M
RR:::::R     R:::::REE::::::EEEEEEEEE::::EK:::::::K   K::::::KT:::::TT:::::::TT:::::TUU:::::U     U:::::UUM:::::::::M         M:::::::::M
  R::::R     R:::::R  E:::::E       EEEEEEKK::::::K  K:::::KKKTTTTTT  T:::::T  TTTTTT U:::::U     U:::::U M::::::::::M       M::::::::::M
  R::::R     R:::::R  E:::::E               K:::::K K:::::K           T:::::T         U:::::D     D:::::U M:::::::::::M     M:::::::::::M
  R::::RRRRRR:::::R   E::::::EEEEEEEEEE     K::::::K:::::K            T:::::T         U:::::D     D:::::U M:::::::M::::M   M::::M:::::::M
  R:::::::::::::RR    E:::::::::::::::E     K:::::::::::K             T:::::T         U:::::D     D:::::U M::::::M M::::M M::::M M::::::M
  R::::RRRRRR:::::R   E:::::::::::::::E     K:::::::::::K             T:::::T         U:::::D     D:::::U M::::::M  M::::M::::M  M::::::M
  R::::R     R:::::R  E::::::EEEEEEEEEE     K::::::K:::::K            T:::::T         U:::::D     D:::::U M::::::M   M:::::::M   M::::::M
  R::::R     R:::::R  E:::::E               K:::::K K:::::K           T:::::T         U:::::D     D:::::U M::::::M    M:::::M    M::::::M
  R::::R     R:::::R  E:::::E       EEEEEEKK::::::K  K:::::KKK        T:::::T         U::::::U   U::::::U M::::::M     MMMMM     M::::::M
RR:::::R     R:::::REE::::::EEEEEEEE:::::EK:::::::K   K::::::K      TT:::::::TT       U:::::::UUU:::::::U M::::::M               M::::::M
R::::::R     R:::::RE::::::::::::::::::::EK:::::::K    K:::::K      T:::::::::T        UU:::::::::::::UU  M::::::M               M::::::M
R::::::R     R:::::RE::::::::::::::::::::EK:::::::K    K:::::K      T:::::::::T          UU:::::::::UU    M::::::M               M::::::M
RRRRRRRR     RRRRRRREEEEEEEEEEEEEEEEEEEEEEKKKKKKKKK    KKKKKKK      TTTTTTTTTTT            UUUUUUUUU      MMMMMMMM               MMMMMMMM
                                                                                                                                         
                                                                                                                                         
                                                                                                                                         
                                                                                                                                                                                                                                                     


https://www.rektum.wtf/
https://t.me/EnterTheRektum
https://twitter.com/rektumboof

*/

// SPDX-License-Identifier:MIT

pragma solidity ^0.8.16;

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

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract BOOF is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "REKTUM";
    string private _symbol = "BOOF";
    uint8 private _decimals = 8; 

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint _buyTax = 420;      //4.2
    uint _sellTax = 690;     //6.9

    address public developmentWallet = address(0x2200d1531007c9120b3608ec7fADfD96e8c05BAC);
    address public stakingWallet = address(0x2200d1531007c9120b3608ec7fADfD96e8c05BAC);
    
    uint public _developmentShare = 1000;   //100%
    uint public _stakingShare = 0;

    uint256 feedenominator = 1000;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 private _totalSupply = 69_420_694_206_942 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);     // 1%
    uint256 public _walletMax = _totalSupply.mul(1).div(100);        // 1%

    uint256 public swapThreshold = _totalSupply.mul(5).div(10000); 

    bool public swapEnabled = true;
    bool public swapbylimit = false;
    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = IDexSwapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;
        
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(dexRouter)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;
        
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[zeroAddress] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(dexRouter)] = true;

        isMarketPair[address(dexPair)] = true;
        isWalletLimitExempt[address(dexPair)] = true;

        _allowances[address(this)][address(dexPair)] = ~uint256(0);
        _allowances[address(this)][address(dexRouter)] = ~uint256(0);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

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

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

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

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

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0));
        require(recipient != address(0));
        require(amount > 0);
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !isExcludedFromFee[sender] &&
                !isExcludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Exceeds maxTxAmount");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Exceeds Wallet");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(_buyTax).div(feedenominator);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(_sellTax).div(feedenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint devShare = amountReceived.mul(_developmentShare).div(feedenominator);
        uint stakingShare = amountReceived.sub(devShare);

        if(devShare > 0) {
            (bool success,) = payable(developmentWallet).call{value: devShare}("");
            if(success){}
        }
        if(stakingShare > 0) {
            (bool osuccess,) = payable(stakingWallet).call{value: stakingShare}("");
            if(osuccess){}
        }

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,address recipient,uint _amount) external onlyOwner {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[_pair] = _status;
        }
    }

    function setDevelopmentWallet(address _addr) external onlyOwner {
        developmentWallet = _addr;
    }

    function setStakingWallet(address _addr) external onlyOwner {
        stakingWallet = _addr;
    }

    function setFee(uint _buy, uint _sell) external onlyOwner {
        _buyTax = _buy;
        _sellTax = _sell;
    }
    
    function setSharePercentage(uint _development, uint _staking) external onlyOwner {
        _developmentShare = _development;
        _stakingShare = _staking;
        require(_developmentShare + _stakingShare <= feedenominator,"Mismatch");
    }

    function setSwapBackSettings(uint _threshold, bool _enabled, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
        swapThreshold = _threshold;
    }

    function setManualRouter(address _router) external onlyOwner {
        dexRouter = IDexSwapRouter(_router);
    }

    function setManualPair(address _pair) external onlyOwner {
        dexPair = _pair;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_staking","type":"uint256"}],"name":"setSharePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setStakingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600681526020017f52454b54554d0000000000000000000000000000000000000000000000000000815250600190816200004a9190620011b8565b506040518060400160405280600481526020017f424f4f460000000000000000000000000000000000000000000000000000000081525060029081620000919190620011b8565b506008600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506101a46004556102b2600555732200d1531007c9120b3608ec7fadfd96e8c05bac600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732200d1531007c9120b3608ec7fadfd96e8c05bac600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e860085560006009556103e8600a55600360009054906101000a900460ff16600a620001fc91906200142f565b653f2343d179de6200020f919062001480565b60115562000249606462000235600160115462000d3560201b620022c71790919060201c565b62000db860201b620023411790919060201c565b6012556200028360646200026f600160115462000d3560201b620022c71790919060201c565b62000db860201b620023411790919060201c565b601355620002be612710620002aa600560115462000d3560201b620022c71790919060201c565b62000db860201b620023411790919060201c565b6014556001601560006101000a81548160ff0219169083151502179055506000601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055506001601560036101000a81548160ff0219169083151502179055503480156200033a57600080fd5b506200035b6200034f62000e0a60201b60201c565b62000e1260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e691906200154b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047491906200154b565b6040518363ffffffff1660e01b8152600401620004939291906200158e565b6020604051808303816000875af1158015620004b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d991906200154b565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601154600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60115460405162000d269190620015cc565b60405180910390a3506200179b565b600080830362000d49576000905062000db2565b6000828462000d59919062001480565b905082848262000d6a919062001618565b1462000dad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da490620016d7565b60405180910390fd5b809150505b92915050565b600062000e0283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000ed660201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808311829062000f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f17919062001777565b60405180910390fd5b506000838562000f31919062001618565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fc057607f821691505b60208210810362000fd65762000fd562000f78565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001001565b6200104c868362001001565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001099620010936200108d8462001064565b6200106e565b62001064565b9050919050565b6000819050919050565b620010b58362001078565b620010cd620010c482620010a0565b8484546200100e565b825550505050565b600090565b620010e4620010d5565b620010f1818484620010aa565b505050565b5b8181101562001119576200110d600082620010da565b600181019050620010f7565b5050565b601f8211156200116857620011328162000fdc565b6200113d8462000ff1565b810160208510156200114d578190505b620011656200115c8562000ff1565b830182620010f6565b50505b505050565b600082821c905092915050565b60006200118d600019846008026200116d565b1980831691505092915050565b6000620011a883836200117a565b9150826002028217905092915050565b620011c38262000f3e565b67ffffffffffffffff811115620011df57620011de62000f49565b5b620011eb825462000fa7565b620011f88282856200111d565b600060209050601f8311600181146200123057600084156200121b578287015190505b6200122785826200119a565b86555062001297565b601f198416620012408662000fdc565b60005b828110156200126a5784890151825560018201915060208501945060208101905062001243565b868310156200128a578489015162001286601f8916826200117a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200132d578086048111156200130557620013046200129f565b5b6001851615620013155780820291505b80810290506200132585620012ce565b9450620012e5565b94509492505050565b6000826200134857600190506200141b565b816200135857600090506200141b565b81600181146200137157600281146200137c57620013b2565b60019150506200141b565b60ff8411156200139157620013906200129f565b5b8360020a915084821115620013ab57620013aa6200129f565b5b506200141b565b5060208310610133831016604e8410600b8410161715620013ec5782820a905083811115620013e657620013e56200129f565b5b6200141b565b620013fb8484846001620012db565b925090508184048111156200141557620014146200129f565b5b81810290505b9392505050565b600060ff82169050919050565b60006200143c8262001064565b9150620014498362001422565b9250620014787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001336565b905092915050565b60006200148d8262001064565b91506200149a8362001064565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014d657620014d56200129f565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200151382620014e6565b9050919050565b620015258162001506565b81146200153157600080fd5b50565b60008151905062001545816200151a565b92915050565b600060208284031215620015645762001563620014e1565b5b6000620015748482850162001534565b91505092915050565b620015888162001506565b82525050565b6000604082019050620015a560008301856200157d565b620015b460208301846200157d565b9392505050565b620015c68162001064565b82525050565b6000602082019050620015e36000830184620015bb565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620016258262001064565b9150620016328362001064565b925082620016455762001644620015e9565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016bf60218362001650565b9150620016cc8262001661565b604082019050919050565b60006020820190508181036000830152620016f281620016b0565b9050919050565b60005b8381101562001719578082015181840152602081019050620016fc565b60008484015250505050565b6000601f19601f8301169050919050565b6000620017438262000f3e565b6200174f818562001650565b935062001761818560208601620016f9565b6200176c8162001725565b840191505092915050565b6000602082019050818103600083015262001793818462001736565b905092915050565b60805160a051614639620017cf60003960008181610ce70152610ff8015260008181610fcc015261102401526146396000f3fe6080604052600436106102e85760003560e01c8063715018a611610190578063c04a5414116100dc578063e6b2603b11610095578063f242ab411161006f578063f242ab4114610b59578063f2fde38b14610b84578063f71b9bbf14610bad578063f872858a14610bd6576102ef565b8063e6b2603b14610aee578063e9fd339414610b05578063ee828db314610b30576102ef565b8063c04a5414146109ce578063c16dd4a4146109f9578063c867d60b14610a22578063cea9d26f14610a5f578063dd62ed3e14610a88578063df8408fe14610ac5576102ef565b80638da5cb5b11610149578063a457c2d711610123578063a457c2d714610902578063a9059cbb1461093f578063ae85ade61461097c578063b94b0aef146109a5576102ef565b80638da5cb5b1461088157806395d89b41146108ac578063a0dd8040146108d7576102ef565b8063715018a614610785578063728d41c91461079c57806372ac2486146107c55780637d1db4a5146107ee578063807c2d9c146108195780638b42507f14610844576102ef565b8063313ce5671161024f5780635342acb4116102085780635e42358c116101e25780635e42358c146106c9578063651a8987146106f45780636ddd17131461071d57806370a0823114610748576102ef565b80635342acb41461063a57806359fac517146106775780635c85974f146106a0576102ef565b8063313ce5671461051857806339509351146105435780633ecad27114610580578063476ece8f146105bd5780634974d88f146105e857806352f7c98814610611576102ef565b80631372953a116102a15780631372953a1461040857806318160ddd146104315780631a860c3e1461045c57806323b872dd1461048557806327c8f835146104c25780632b112e49146104ed576102ef565b80630445b667146102f457806306ee6ad81461031f57806306fdde031461034a5780630758d924146103755780630930907b146103a0578063095ea7b3146103cb576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c01565b6040516103169190613746565b60405180910390f35b34801561032b57600080fd5b50610334610c07565b60405161034191906137a2565b60405180910390f35b34801561035657600080fd5b5061035f610c2d565b60405161036c919061384d565b60405180910390f35b34801561038157600080fd5b5061038a610cbf565b60405161039791906138ce565b60405180910390f35b3480156103ac57600080fd5b506103b5610ce5565b6040516103c291906137a2565b60405180910390f35b3480156103d757600080fd5b506103f260048036038101906103ed9190613946565b610d09565b6040516103ff91906139a1565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906139bc565b610d27565b005b34801561043d57600080fd5b50610446610e09565b6040516104539190613746565b60405180910390f35b34801561046857600080fd5b50610483600480360381019061047e91906139fc565b610e13565b005b34801561049157600080fd5b506104ac60048036038101906104a79190613a29565b610ed3565b6040516104b991906139a1565b60405180910390f35b3480156104ce57600080fd5b506104d7610fca565b6040516104e491906137a2565b60405180910390f35b3480156104f957600080fd5b50610502610fee565b60405161050f9190613746565b60405180910390f35b34801561052457600080fd5b5061052d61106c565b60405161053a9190613a98565b60405180910390f35b34801561054f57600080fd5b5061056a60048036038101906105659190613946565b611083565b60405161057791906139a1565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906139fc565b611136565b6040516105b491906139a1565b60405180910390f35b3480156105c957600080fd5b506105d2611156565b6040516105df9190613746565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190613adf565b61115c565b005b34801561061d57600080fd5b50610638600480360381019061063391906139bc565b6111f5565b005b34801561064657600080fd5b50610661600480360381019061065c91906139fc565b611283565b60405161066e91906139a1565b60405180910390f35b34801561068357600080fd5b5061069e600480360381019061069991906139fc565b6112a3565b005b3480156106ac57600080fd5b506106c760048036038101906106c29190613b0c565b611363565b005b3480156106d557600080fd5b506106de6113e9565b6040516106eb91906139a1565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613b39565b6113fc565b005b34801561072957600080fd5b506107326114d3565b60405161073f91906139a1565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a91906139fc565b6114e6565b60405161077c9190613746565b60405180910390f35b34801561079157600080fd5b5061079a61152f565b005b3480156107a857600080fd5b506107c360048036038101906107be9190613b0c565b6115b7565b005b3480156107d157600080fd5b506107ec60048036038101906107e791906139fc565b61163d565b005b3480156107fa57600080fd5b506108036116fd565b6040516108109190613746565b60405180910390f35b34801561082557600080fd5b5061082e611703565b60405161083b9190613746565b60405180910390f35b34801561085057600080fd5b5061086b600480360381019061086691906139fc565b611709565b60405161087891906139a1565b60405180910390f35b34801561088d57600080fd5b50610896611729565b6040516108a391906137a2565b60405180910390f35b3480156108b857600080fd5b506108c1611752565b6040516108ce919061384d565b60405180910390f35b3480156108e357600080fd5b506108ec6117e4565b6040516108f99190613746565b60405180910390f35b34801561090e57600080fd5b5061092960048036038101906109249190613946565b6117ea565b60405161093691906139a1565b60405180910390f35b34801561094b57600080fd5b5061096660048036038101906109619190613946565b6118b7565b60405161097391906139a1565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613b39565b6118d6565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613b79565b6119ad565b005b3480156109da57600080fd5b506109e3611a69565b6040516109f091906137a2565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190613b39565b611a8f565b005b348015610a2e57600080fd5b50610a496004803603810190610a4491906139fc565b611bc4565b604051610a5691906139a1565b60405180910390f35b348015610a6b57600080fd5b50610a866004803603810190610a819190613a29565b611be4565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190613bcc565b611da2565b604051610abc9190613746565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190613b39565b611e29565b005b348015610afa57600080fd5b50610b03611f00565b005b348015610b1157600080fd5b50610b1a61202b565b604051610b2791906139a1565b60405180910390f35b348015610b3c57600080fd5b50610b576004803603810190610b529190613adf565b61203e565b005b348015610b6557600080fd5b50610b6e6120d7565b604051610b7b91906137a2565b60405180910390f35b348015610b9057600080fd5b50610bab6004803603810190610ba691906139fc565b6120fd565b005b348015610bb957600080fd5b50610bd46004803603810190610bcf91906139fc565b6121f4565b005b348015610be257600080fd5b50610beb6122b4565b604051610bf891906139a1565b60405180910390f35b60145481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054610c3c90613c3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6890613c3b565b8015610cb55780601f10610c8a57610100808354040283529160200191610cb5565b820191906000526020600020905b815481529060010190602001808311610c9857829003601f168201915b5050505050905090565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610d1d610d1661238b565b8484612393565b6001905092915050565b610d2f61238b565b73ffffffffffffffffffffffffffffffffffffffff16610d4d611729565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90613cb8565b60405180910390fd5b8160088190555080600981905550600a54600954600854610dc49190613d07565b1115610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90613d87565b60405180910390fd5b5050565b6000601154905090565b610e1b61238b565b73ffffffffffffffffffffffffffffffffffffffff16610e39611729565b73ffffffffffffffffffffffffffffffffffffffff1614610e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8690613cb8565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610ee084848461255c565b50610fbf84610eed61238b565b610fba856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f7061238b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b612393565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061106761101c7f00000000000000000000000000000000000000000000000000000000000000006114e6565b6110596110487f00000000000000000000000000000000000000000000000000000000000000006114e6565b601154612b8c90919063ffffffff16565b612b8c90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061112c61109061238b565b8461112785600c60006110a161238b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b612393565b6001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60095481565b61116461238b565b73ffffffffffffffffffffffffffffffffffffffff16611182611729565b73ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90613cb8565b60405180910390fd5b80601560036101000a81548160ff02191690831515021790555050565b6111fd61238b565b73ffffffffffffffffffffffffffffffffffffffff1661121b611729565b73ffffffffffffffffffffffffffffffffffffffff1614611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890613cb8565b60405180910390fd5b81600481905550806005819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6112ab61238b565b73ffffffffffffffffffffffffffffffffffffffff166112c9611729565b73ffffffffffffffffffffffffffffffffffffffff161461131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690613cb8565b60405180910390fd5b80601560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61136b61238b565b73ffffffffffffffffffffffffffffffffffffffff16611389611729565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690613cb8565b60405180910390fd5b8060128190555050565b601560029054906101000a900460ff1681565b61140461238b565b73ffffffffffffffffffffffffffffffffffffffff16611422611729565b73ffffffffffffffffffffffffffffffffffffffff1614611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613cb8565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153761238b565b73ffffffffffffffffffffffffffffffffffffffff16611555611729565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613cb8565b60405180910390fd5b6115b56000612c34565b565b6115bf61238b565b73ffffffffffffffffffffffffffffffffffffffff166115dd611729565b73ffffffffffffffffffffffffffffffffffffffff1614611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90613cb8565b60405180910390fd5b8060138190555050565b61164561238b565b73ffffffffffffffffffffffffffffffffffffffff16611663611729565b73ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090613cb8565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60135481565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461176190613c3b565b80601f016020809104026020016040519081016040528092919081815260200182805461178d90613c3b565b80156117da5780601f106117af576101008083540402835291602001916117da565b820191906000526020600020905b8154815290600101906020018083116117bd57829003601f168201915b5050505050905090565b60085481565b60006118ad6117f761238b565b846118a8856040518060600160405280602581526020016145df60259139600c600061182161238b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b612393565b6001905092915050565b60006118cb6118c461238b565b848461255c565b506001905092915050565b6118de61238b565b73ffffffffffffffffffffffffffffffffffffffff166118fc611729565b73ffffffffffffffffffffffffffffffffffffffff1614611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990613cb8565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6119b561238b565b73ffffffffffffffffffffffffffffffffffffffff166119d3611729565b73ffffffffffffffffffffffffffffffffffffffff1614611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2090613cb8565b60405180910390fd5b81601560006101000a81548160ff02191690831515021790555080601560016101000a81548160ff02191690831515021790555082601481905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a9761238b565b73ffffffffffffffffffffffffffffffffffffffff16611ab5611729565b73ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290613cb8565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611bc05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611bec61238b565b73ffffffffffffffffffffffffffffffffffffffff16611c0a611729565b73ffffffffffffffffffffffffffffffffffffffff1614611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5790613cb8565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168383604051602401611c8c929190613da7565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d169190613e17565b6000604051808303816000865af19150503d8060008114611d53576040519150601f19603f3d011682016040523d82523d6000602084013e611d58565b606091505b5050905080611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e7a565b60405180910390fd5b50505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e3161238b565b73ffffffffffffffffffffffffffffffffffffffff16611e4f611729565b73ffffffffffffffffffffffffffffffffffffffff1614611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c90613cb8565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f0861238b565b73ffffffffffffffffffffffffffffffffffffffff16611f26611729565b73ffffffffffffffffffffffffffffffffffffffff1614611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390613cb8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611fa290613ec0565b60006040518083038185875af1925050503d8060008114611fdf576040519150601f19603f3d011682016040523d82523d6000602084013e611fe4565b606091505b5050905080612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f90613f21565b60405180910390fd5b50565b601560019054906101000a900460ff1681565b61204661238b565b73ffffffffffffffffffffffffffffffffffffffff16612064611729565b73ffffffffffffffffffffffffffffffffffffffff16146120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190613cb8565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61210561238b565b73ffffffffffffffffffffffffffffffffffffffff16612123611729565b73ffffffffffffffffffffffffffffffffffffffff1614612179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217090613cb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121df90613fb3565b60405180910390fd5b6121f181612c34565b50565b6121fc61238b565b73ffffffffffffffffffffffffffffffffffffffff1661221a611729565b73ffffffffffffffffffffffffffffffffffffffff1614612270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226790613cb8565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560039054906101000a900460ff1681565b60008083036122d9576000905061233b565b600082846122e79190613fd3565b90508284826122f6919061405c565b14612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d906140ff565b60405180910390fd5b809150505b92915050565b600061238383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cf8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990614191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246890614223565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161254f9190613746565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361259657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125cf57600080fd5b600082116125dc57600080fd5b601660149054906101000a900460ff1615612603576125fc848484612d5b565b9050612b21565b600061260e306114e6565b9050600060145482101590508080156126345750601660149054906101000a900460ff16155b801561268a5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126a25750601560009054906101000a900460ff165b80156126f85750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561274e5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561275d5761275c82612f2e565b5b601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128015750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128195750601560029054906101000a900460ff165b1561286457601254841115612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a9061428f565b60405180910390fd5b5b6128ed846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061293c8787613121565b6129505761294b87878761328c565b612952565b845b9050601560039054906101000a900460ff1680156129ba5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1f576013546129dd826129cf896114e6565b612bd690919063ffffffff16565b1115612a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a15906142fb565b60405180910390fd5b5b612a7181600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b119190613746565b60405180910390a3600193505050505b9392505050565b6000838311158290612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b67919061384d565b60405180910390fd5b5060008385612b7f919061431b565b9050809150509392505050565b6000612bce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b28565b905092915050565b6000808284612be59190613d07565b905083811015612c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c219061439b565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083118290612d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d36919061384d565b60405180910390fd5b5060008385612d4e919061405c565b9050809150509392505050565b6000612de6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e7b82600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f1b9190613746565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff021916908315150217905550601560019054906101000a900460ff1615612f645760145490505b6000479050612f72826134b1565b6000612f878247612b8c90919063ffffffff16565b90506000612fb4600a54612fa6600854856122c790919063ffffffff16565b61234190919063ffffffff16565b90506000612fcb8284612b8c90919063ffffffff16565b90506000821115613066576000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161301e90613ec0565b60006040518083038185875af1925050503d806000811461305b576040519150601f19603f3d011682016040523d82523d6000602084013e613060565b606091505b50509050505b60008111156130ff576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130b790613ec0565b60006040518083038185875af1925050503d80600081146130f4576040519150601f19603f3d011682016040523d82523d6000602084013e6130f9565b606091505b50509050505b505050506000601660146101000a81548160ff02191690831515021790555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c45750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131d25760019050613286565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132735750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132815760009050613286565b600090505b92915050565b600080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133115761330a600a546132fc600454866122c790919063ffffffff16565b61234190919063ffffffff16565b9050613390565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338f5761338c600a5461337e600554866122c790919063ffffffff16565b61234190919063ffffffff16565b90505b5b6000811115613494576133eb81600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161348b9190613746565b60405180910390a35b6134a78184612b8c90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156134ce576134cd6143bb565b5b6040519080825280602002602001820160405280156134fc5781602001602082028036833780820191505090505b5090503081600081518110613514576135136143ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135df919061442e565b816001815181106135f3576135f26143ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061365a30601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612393565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016136be959493929190614554565b600060405180830381600087803b1580156136d857600080fd5b505af11580156136ec573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516137219291906145ae565b60405180910390a15050565b6000819050919050565b6137408161372d565b82525050565b600060208201905061375b6000830184613737565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061378c82613761565b9050919050565b61379c81613781565b82525050565b60006020820190506137b76000830184613793565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137f75780820151818401526020810190506137dc565b60008484015250505050565b6000601f19601f8301169050919050565b600061381f826137bd565b61382981856137c8565b93506138398185602086016137d9565b61384281613803565b840191505092915050565b600060208201905081810360008301526138678184613814565b905092915050565b6000819050919050565b600061389461388f61388a84613761565b61386f565b613761565b9050919050565b60006138a682613879565b9050919050565b60006138b88261389b565b9050919050565b6138c8816138ad565b82525050565b60006020820190506138e360008301846138bf565b92915050565b600080fd5b6138f781613781565b811461390257600080fd5b50565b600081359050613914816138ee565b92915050565b6139238161372d565b811461392e57600080fd5b50565b6000813590506139408161391a565b92915050565b6000806040838503121561395d5761395c6138e9565b5b600061396b85828601613905565b925050602061397c85828601613931565b9150509250929050565b60008115159050919050565b61399b81613986565b82525050565b60006020820190506139b66000830184613992565b92915050565b600080604083850312156139d3576139d26138e9565b5b60006139e185828601613931565b92505060206139f285828601613931565b9150509250929050565b600060208284031215613a1257613a116138e9565b5b6000613a2084828501613905565b91505092915050565b600080600060608486031215613a4257613a416138e9565b5b6000613a5086828701613905565b9350506020613a6186828701613905565b9250506040613a7286828701613931565b9150509250925092565b600060ff82169050919050565b613a9281613a7c565b82525050565b6000602082019050613aad6000830184613a89565b92915050565b613abc81613986565b8114613ac757600080fd5b50565b600081359050613ad981613ab3565b92915050565b600060208284031215613af557613af46138e9565b5b6000613b0384828501613aca565b91505092915050565b600060208284031215613b2257613b216138e9565b5b6000613b3084828501613931565b91505092915050565b60008060408385031215613b5057613b4f6138e9565b5b6000613b5e85828601613905565b9250506020613b6f85828601613aca565b9150509250929050565b600080600060608486031215613b9257613b916138e9565b5b6000613ba086828701613931565b9350506020613bb186828701613aca565b9250506040613bc286828701613aca565b9150509250925092565b60008060408385031215613be357613be26138e9565b5b6000613bf185828601613905565b9250506020613c0285828601613905565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c5357607f821691505b602082108103613c6657613c65613c0c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ca26020836137c8565b9150613cad82613c6c565b602082019050919050565b60006020820190508181036000830152613cd181613c95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d128261372d565b9150613d1d8361372d565b9250828201905080821115613d3557613d34613cd8565b5b92915050565b7f4d69736d61746368000000000000000000000000000000000000000000000000600082015250565b6000613d716008836137c8565b9150613d7c82613d3b565b602082019050919050565b60006020820190508181036000830152613da081613d64565b9050919050565b6000604082019050613dbc6000830185613793565b613dc96020830184613737565b9392505050565b600081519050919050565b600081905092915050565b6000613df182613dd0565b613dfb8185613ddb565b9350613e0b8185602086016137d9565b80840191505092915050565b6000613e238284613de6565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613e646014836137c8565b9150613e6f82613e2e565b602082019050919050565b60006020820190508181036000830152613e9381613e57565b9050919050565b50565b6000613eaa600083613ddb565b9150613eb582613e9a565b600082019050919050565b6000613ecb82613e9d565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000613f0b6014836137c8565b9150613f1682613ed5565b602082019050919050565b60006020820190508181036000830152613f3a81613efe565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f9d6026836137c8565b9150613fa882613f41565b604082019050919050565b60006020820190508181036000830152613fcc81613f90565b9050919050565b6000613fde8261372d565b9150613fe98361372d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561402257614021613cd8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140678261372d565b91506140728361372d565b9250826140825761408161402d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140e96021836137c8565b91506140f48261408d565b604082019050919050565b60006020820190508181036000830152614118816140dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061417b6024836137c8565b91506141868261411f565b604082019050919050565b600060208201905081810360008301526141aa8161416e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061420d6022836137c8565b9150614218826141b1565b604082019050919050565b6000602082019050818103600083015261423c81614200565b9050919050565b7f45786365656473206d61785478416d6f756e7400000000000000000000000000600082015250565b60006142796013836137c8565b915061428482614243565b602082019050919050565b600060208201905081810360008301526142a88161426c565b9050919050565b7f457863656564732057616c6c6574000000000000000000000000000000000000600082015250565b60006142e5600e836137c8565b91506142f0826142af565b602082019050919050565b60006020820190508181036000830152614314816142d8565b9050919050565b60006143268261372d565b91506143318361372d565b925082820390508181111561434957614348613cd8565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614385601b836137c8565b91506143908261434f565b602082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614428816138ee565b92915050565b600060208284031215614444576144436138e9565b5b600061445284828501614419565b91505092915050565b6000819050919050565b600061448061447b6144768461445b565b61386f565b61372d565b9050919050565b61449081614465565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144cb81613781565b82525050565b60006144dd83836144c2565b60208301905092915050565b6000602082019050919050565b600061450182614496565b61450b81856144a1565b9350614516836144b2565b8060005b8381101561454757815161452e88826144d1565b9750614539836144e9565b92505060018101905061451a565b5085935050505092915050565b600060a0820190506145696000830188613737565b6145766020830187614487565b818103604083015261458881866144f6565b90506145976060830185613793565b6145a46080830184613737565b9695505050505050565b60006040820190506145c36000830185613737565b81810360208301526145d581846144f6565b9050939250505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201de1ee05f5a595fa54c2f63c3af602d5bf2a0048459344fa2708579c16c56ced64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063715018a611610190578063c04a5414116100dc578063e6b2603b11610095578063f242ab411161006f578063f242ab4114610b59578063f2fde38b14610b84578063f71b9bbf14610bad578063f872858a14610bd6576102ef565b8063e6b2603b14610aee578063e9fd339414610b05578063ee828db314610b30576102ef565b8063c04a5414146109ce578063c16dd4a4146109f9578063c867d60b14610a22578063cea9d26f14610a5f578063dd62ed3e14610a88578063df8408fe14610ac5576102ef565b80638da5cb5b11610149578063a457c2d711610123578063a457c2d714610902578063a9059cbb1461093f578063ae85ade61461097c578063b94b0aef146109a5576102ef565b80638da5cb5b1461088157806395d89b41146108ac578063a0dd8040146108d7576102ef565b8063715018a614610785578063728d41c91461079c57806372ac2486146107c55780637d1db4a5146107ee578063807c2d9c146108195780638b42507f14610844576102ef565b8063313ce5671161024f5780635342acb4116102085780635e42358c116101e25780635e42358c146106c9578063651a8987146106f45780636ddd17131461071d57806370a0823114610748576102ef565b80635342acb41461063a57806359fac517146106775780635c85974f146106a0576102ef565b8063313ce5671461051857806339509351146105435780633ecad27114610580578063476ece8f146105bd5780634974d88f146105e857806352f7c98814610611576102ef565b80631372953a116102a15780631372953a1461040857806318160ddd146104315780631a860c3e1461045c57806323b872dd1461048557806327c8f835146104c25780632b112e49146104ed576102ef565b80630445b667146102f457806306ee6ad81461031f57806306fdde031461034a5780630758d924146103755780630930907b146103a0578063095ea7b3146103cb576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c01565b6040516103169190613746565b60405180910390f35b34801561032b57600080fd5b50610334610c07565b60405161034191906137a2565b60405180910390f35b34801561035657600080fd5b5061035f610c2d565b60405161036c919061384d565b60405180910390f35b34801561038157600080fd5b5061038a610cbf565b60405161039791906138ce565b60405180910390f35b3480156103ac57600080fd5b506103b5610ce5565b6040516103c291906137a2565b60405180910390f35b3480156103d757600080fd5b506103f260048036038101906103ed9190613946565b610d09565b6040516103ff91906139a1565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906139bc565b610d27565b005b34801561043d57600080fd5b50610446610e09565b6040516104539190613746565b60405180910390f35b34801561046857600080fd5b50610483600480360381019061047e91906139fc565b610e13565b005b34801561049157600080fd5b506104ac60048036038101906104a79190613a29565b610ed3565b6040516104b991906139a1565b60405180910390f35b3480156104ce57600080fd5b506104d7610fca565b6040516104e491906137a2565b60405180910390f35b3480156104f957600080fd5b50610502610fee565b60405161050f9190613746565b60405180910390f35b34801561052457600080fd5b5061052d61106c565b60405161053a9190613a98565b60405180910390f35b34801561054f57600080fd5b5061056a60048036038101906105659190613946565b611083565b60405161057791906139a1565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906139fc565b611136565b6040516105b491906139a1565b60405180910390f35b3480156105c957600080fd5b506105d2611156565b6040516105df9190613746565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190613adf565b61115c565b005b34801561061d57600080fd5b50610638600480360381019061063391906139bc565b6111f5565b005b34801561064657600080fd5b50610661600480360381019061065c91906139fc565b611283565b60405161066e91906139a1565b60405180910390f35b34801561068357600080fd5b5061069e600480360381019061069991906139fc565b6112a3565b005b3480156106ac57600080fd5b506106c760048036038101906106c29190613b0c565b611363565b005b3480156106d557600080fd5b506106de6113e9565b6040516106eb91906139a1565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613b39565b6113fc565b005b34801561072957600080fd5b506107326114d3565b60405161073f91906139a1565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a91906139fc565b6114e6565b60405161077c9190613746565b60405180910390f35b34801561079157600080fd5b5061079a61152f565b005b3480156107a857600080fd5b506107c360048036038101906107be9190613b0c565b6115b7565b005b3480156107d157600080fd5b506107ec60048036038101906107e791906139fc565b61163d565b005b3480156107fa57600080fd5b506108036116fd565b6040516108109190613746565b60405180910390f35b34801561082557600080fd5b5061082e611703565b60405161083b9190613746565b60405180910390f35b34801561085057600080fd5b5061086b600480360381019061086691906139fc565b611709565b60405161087891906139a1565b60405180910390f35b34801561088d57600080fd5b50610896611729565b6040516108a391906137a2565b60405180910390f35b3480156108b857600080fd5b506108c1611752565b6040516108ce919061384d565b60405180910390f35b3480156108e357600080fd5b506108ec6117e4565b6040516108f99190613746565b60405180910390f35b34801561090e57600080fd5b5061092960048036038101906109249190613946565b6117ea565b60405161093691906139a1565b60405180910390f35b34801561094b57600080fd5b5061096660048036038101906109619190613946565b6118b7565b60405161097391906139a1565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613b39565b6118d6565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613b79565b6119ad565b005b3480156109da57600080fd5b506109e3611a69565b6040516109f091906137a2565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190613b39565b611a8f565b005b348015610a2e57600080fd5b50610a496004803603810190610a4491906139fc565b611bc4565b604051610a5691906139a1565b60405180910390f35b348015610a6b57600080fd5b50610a866004803603810190610a819190613a29565b611be4565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190613bcc565b611da2565b604051610abc9190613746565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190613b39565b611e29565b005b348015610afa57600080fd5b50610b03611f00565b005b348015610b1157600080fd5b50610b1a61202b565b604051610b2791906139a1565b60405180910390f35b348015610b3c57600080fd5b50610b576004803603810190610b529190613adf565b61203e565b005b348015610b6557600080fd5b50610b6e6120d7565b604051610b7b91906137a2565b60405180910390f35b348015610b9057600080fd5b50610bab6004803603810190610ba691906139fc565b6120fd565b005b348015610bb957600080fd5b50610bd46004803603810190610bcf91906139fc565b6121f4565b005b348015610be257600080fd5b50610beb6122b4565b604051610bf891906139a1565b60405180910390f35b60145481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054610c3c90613c3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6890613c3b565b8015610cb55780601f10610c8a57610100808354040283529160200191610cb5565b820191906000526020600020905b815481529060010190602001808311610c9857829003601f168201915b5050505050905090565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610d1d610d1661238b565b8484612393565b6001905092915050565b610d2f61238b565b73ffffffffffffffffffffffffffffffffffffffff16610d4d611729565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90613cb8565b60405180910390fd5b8160088190555080600981905550600a54600954600854610dc49190613d07565b1115610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90613d87565b60405180910390fd5b5050565b6000601154905090565b610e1b61238b565b73ffffffffffffffffffffffffffffffffffffffff16610e39611729565b73ffffffffffffffffffffffffffffffffffffffff1614610e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8690613cb8565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610ee084848461255c565b50610fbf84610eed61238b565b610fba856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f7061238b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b612393565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061106761101c7f00000000000000000000000000000000000000000000000000000000000000006114e6565b6110596110487f000000000000000000000000000000000000000000000000000000000000dead6114e6565b601154612b8c90919063ffffffff16565b612b8c90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061112c61109061238b565b8461112785600c60006110a161238b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b612393565b6001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60095481565b61116461238b565b73ffffffffffffffffffffffffffffffffffffffff16611182611729565b73ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90613cb8565b60405180910390fd5b80601560036101000a81548160ff02191690831515021790555050565b6111fd61238b565b73ffffffffffffffffffffffffffffffffffffffff1661121b611729565b73ffffffffffffffffffffffffffffffffffffffff1614611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890613cb8565b60405180910390fd5b81600481905550806005819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6112ab61238b565b73ffffffffffffffffffffffffffffffffffffffff166112c9611729565b73ffffffffffffffffffffffffffffffffffffffff161461131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690613cb8565b60405180910390fd5b80601560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61136b61238b565b73ffffffffffffffffffffffffffffffffffffffff16611389611729565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690613cb8565b60405180910390fd5b8060128190555050565b601560029054906101000a900460ff1681565b61140461238b565b73ffffffffffffffffffffffffffffffffffffffff16611422611729565b73ffffffffffffffffffffffffffffffffffffffff1614611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613cb8565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61153761238b565b73ffffffffffffffffffffffffffffffffffffffff16611555611729565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613cb8565b60405180910390fd5b6115b56000612c34565b565b6115bf61238b565b73ffffffffffffffffffffffffffffffffffffffff166115dd611729565b73ffffffffffffffffffffffffffffffffffffffff1614611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90613cb8565b60405180910390fd5b8060138190555050565b61164561238b565b73ffffffffffffffffffffffffffffffffffffffff16611663611729565b73ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090613cb8565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60135481565b60106020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461176190613c3b565b80601f016020809104026020016040519081016040528092919081815260200182805461178d90613c3b565b80156117da5780601f106117af576101008083540402835291602001916117da565b820191906000526020600020905b8154815290600101906020018083116117bd57829003601f168201915b5050505050905090565b60085481565b60006118ad6117f761238b565b846118a8856040518060600160405280602581526020016145df60259139600c600061182161238b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b612393565b6001905092915050565b60006118cb6118c461238b565b848461255c565b506001905092915050565b6118de61238b565b73ffffffffffffffffffffffffffffffffffffffff166118fc611729565b73ffffffffffffffffffffffffffffffffffffffff1614611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990613cb8565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6119b561238b565b73ffffffffffffffffffffffffffffffffffffffff166119d3611729565b73ffffffffffffffffffffffffffffffffffffffff1614611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2090613cb8565b60405180910390fd5b81601560006101000a81548160ff02191690831515021790555080601560016101000a81548160ff02191690831515021790555082601481905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a9761238b565b73ffffffffffffffffffffffffffffffffffffffff16611ab5611729565b73ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290613cb8565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611bc05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611bec61238b565b73ffffffffffffffffffffffffffffffffffffffff16611c0a611729565b73ffffffffffffffffffffffffffffffffffffffff1614611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5790613cb8565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168383604051602401611c8c929190613da7565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d169190613e17565b6000604051808303816000865af19150503d8060008114611d53576040519150601f19603f3d011682016040523d82523d6000602084013e611d58565b606091505b5050905080611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e7a565b60405180910390fd5b50505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e3161238b565b73ffffffffffffffffffffffffffffffffffffffff16611e4f611729565b73ffffffffffffffffffffffffffffffffffffffff1614611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c90613cb8565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f0861238b565b73ffffffffffffffffffffffffffffffffffffffff16611f26611729565b73ffffffffffffffffffffffffffffffffffffffff1614611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390613cb8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611fa290613ec0565b60006040518083038185875af1925050503d8060008114611fdf576040519150601f19603f3d011682016040523d82523d6000602084013e611fe4565b606091505b5050905080612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f90613f21565b60405180910390fd5b50565b601560019054906101000a900460ff1681565b61204661238b565b73ffffffffffffffffffffffffffffffffffffffff16612064611729565b73ffffffffffffffffffffffffffffffffffffffff16146120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190613cb8565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61210561238b565b73ffffffffffffffffffffffffffffffffffffffff16612123611729565b73ffffffffffffffffffffffffffffffffffffffff1614612179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217090613cb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121df90613fb3565b60405180910390fd5b6121f181612c34565b50565b6121fc61238b565b73ffffffffffffffffffffffffffffffffffffffff1661221a611729565b73ffffffffffffffffffffffffffffffffffffffff1614612270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226790613cb8565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560039054906101000a900460ff1681565b60008083036122d9576000905061233b565b600082846122e79190613fd3565b90508284826122f6919061405c565b14612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d906140ff565b60405180910390fd5b809150505b92915050565b600061238383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cf8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990614191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246890614223565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161254f9190613746565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361259657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125cf57600080fd5b600082116125dc57600080fd5b601660149054906101000a900460ff1615612603576125fc848484612d5b565b9050612b21565b600061260e306114e6565b9050600060145482101590508080156126345750601660149054906101000a900460ff16155b801561268a5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126a25750601560009054906101000a900460ff165b80156126f85750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561274e5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561275d5761275c82612f2e565b5b601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128015750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128195750601560029054906101000a900460ff165b1561286457601254841115612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a9061428f565b60405180910390fd5b5b6128ed846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061293c8787613121565b6129505761294b87878761328c565b612952565b845b9050601560039054906101000a900460ff1680156129ba5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1f576013546129dd826129cf896114e6565b612bd690919063ffffffff16565b1115612a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a15906142fb565b60405180910390fd5b5b612a7181600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b119190613746565b60405180910390a3600193505050505b9392505050565b6000838311158290612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b67919061384d565b60405180910390fd5b5060008385612b7f919061431b565b9050809150509392505050565b6000612bce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b28565b905092915050565b6000808284612be59190613d07565b905083811015612c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c219061439b565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083118290612d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d36919061384d565b60405180910390fd5b5060008385612d4e919061405c565b9050809150509392505050565b6000612de6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b289092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e7b82600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f1b9190613746565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff021916908315150217905550601560019054906101000a900460ff1615612f645760145490505b6000479050612f72826134b1565b6000612f878247612b8c90919063ffffffff16565b90506000612fb4600a54612fa6600854856122c790919063ffffffff16565b61234190919063ffffffff16565b90506000612fcb8284612b8c90919063ffffffff16565b90506000821115613066576000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161301e90613ec0565b60006040518083038185875af1925050503d806000811461305b576040519150601f19603f3d011682016040523d82523d6000602084013e613060565b606091505b50509050505b60008111156130ff576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130b790613ec0565b60006040518083038185875af1925050503d80600081146130f4576040519150601f19603f3d011682016040523d82523d6000602084013e6130f9565b606091505b50509050505b505050506000601660146101000a81548160ff02191690831515021790555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c45750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131d25760019050613286565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132735750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132815760009050613286565b600090505b92915050565b600080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133115761330a600a546132fc600454866122c790919063ffffffff16565b61234190919063ffffffff16565b9050613390565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338f5761338c600a5461337e600554866122c790919063ffffffff16565b61234190919063ffffffff16565b90505b5b6000811115613494576133eb81600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd690919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161348b9190613746565b60405180910390a35b6134a78184612b8c90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156134ce576134cd6143bb565b5b6040519080825280602002602001820160405280156134fc5781602001602082028036833780820191505090505b5090503081600081518110613514576135136143ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135df919061442e565b816001815181106135f3576135f26143ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061365a30601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612393565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016136be959493929190614554565b600060405180830381600087803b1580156136d857600080fd5b505af11580156136ec573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516137219291906145ae565b60405180910390a15050565b6000819050919050565b6137408161372d565b82525050565b600060208201905061375b6000830184613737565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061378c82613761565b9050919050565b61379c81613781565b82525050565b60006020820190506137b76000830184613793565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137f75780820151818401526020810190506137dc565b60008484015250505050565b6000601f19601f8301169050919050565b600061381f826137bd565b61382981856137c8565b93506138398185602086016137d9565b61384281613803565b840191505092915050565b600060208201905081810360008301526138678184613814565b905092915050565b6000819050919050565b600061389461388f61388a84613761565b61386f565b613761565b9050919050565b60006138a682613879565b9050919050565b60006138b88261389b565b9050919050565b6138c8816138ad565b82525050565b60006020820190506138e360008301846138bf565b92915050565b600080fd5b6138f781613781565b811461390257600080fd5b50565b600081359050613914816138ee565b92915050565b6139238161372d565b811461392e57600080fd5b50565b6000813590506139408161391a565b92915050565b6000806040838503121561395d5761395c6138e9565b5b600061396b85828601613905565b925050602061397c85828601613931565b9150509250929050565b60008115159050919050565b61399b81613986565b82525050565b60006020820190506139b66000830184613992565b92915050565b600080604083850312156139d3576139d26138e9565b5b60006139e185828601613931565b92505060206139f285828601613931565b9150509250929050565b600060208284031215613a1257613a116138e9565b5b6000613a2084828501613905565b91505092915050565b600080600060608486031215613a4257613a416138e9565b5b6000613a5086828701613905565b9350506020613a6186828701613905565b9250506040613a7286828701613931565b9150509250925092565b600060ff82169050919050565b613a9281613a7c565b82525050565b6000602082019050613aad6000830184613a89565b92915050565b613abc81613986565b8114613ac757600080fd5b50565b600081359050613ad981613ab3565b92915050565b600060208284031215613af557613af46138e9565b5b6000613b0384828501613aca565b91505092915050565b600060208284031215613b2257613b216138e9565b5b6000613b3084828501613931565b91505092915050565b60008060408385031215613b5057613b4f6138e9565b5b6000613b5e85828601613905565b9250506020613b6f85828601613aca565b9150509250929050565b600080600060608486031215613b9257613b916138e9565b5b6000613ba086828701613931565b9350506020613bb186828701613aca565b9250506040613bc286828701613aca565b9150509250925092565b60008060408385031215613be357613be26138e9565b5b6000613bf185828601613905565b9250506020613c0285828601613905565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c5357607f821691505b602082108103613c6657613c65613c0c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ca26020836137c8565b9150613cad82613c6c565b602082019050919050565b60006020820190508181036000830152613cd181613c95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d128261372d565b9150613d1d8361372d565b9250828201905080821115613d3557613d34613cd8565b5b92915050565b7f4d69736d61746368000000000000000000000000000000000000000000000000600082015250565b6000613d716008836137c8565b9150613d7c82613d3b565b602082019050919050565b60006020820190508181036000830152613da081613d64565b9050919050565b6000604082019050613dbc6000830185613793565b613dc96020830184613737565b9392505050565b600081519050919050565b600081905092915050565b6000613df182613dd0565b613dfb8185613ddb565b9350613e0b8185602086016137d9565b80840191505092915050565b6000613e238284613de6565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613e646014836137c8565b9150613e6f82613e2e565b602082019050919050565b60006020820190508181036000830152613e9381613e57565b9050919050565b50565b6000613eaa600083613ddb565b9150613eb582613e9a565b600082019050919050565b6000613ecb82613e9d565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000613f0b6014836137c8565b9150613f1682613ed5565b602082019050919050565b60006020820190508181036000830152613f3a81613efe565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f9d6026836137c8565b9150613fa882613f41565b604082019050919050565b60006020820190508181036000830152613fcc81613f90565b9050919050565b6000613fde8261372d565b9150613fe98361372d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561402257614021613cd8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140678261372d565b91506140728361372d565b9250826140825761408161402d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140e96021836137c8565b91506140f48261408d565b604082019050919050565b60006020820190508181036000830152614118816140dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061417b6024836137c8565b91506141868261411f565b604082019050919050565b600060208201905081810360008301526141aa8161416e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061420d6022836137c8565b9150614218826141b1565b604082019050919050565b6000602082019050818103600083015261423c81614200565b9050919050565b7f45786365656473206d61785478416d6f756e7400000000000000000000000000600082015250565b60006142796013836137c8565b915061428482614243565b602082019050919050565b600060208201905081810360008301526142a88161426c565b9050919050565b7f457863656564732057616c6c6574000000000000000000000000000000000000600082015250565b60006142e5600e836137c8565b91506142f0826142af565b602082019050919050565b60006020820190508181036000830152614314816142d8565b9050919050565b60006143268261372d565b91506143318361372d565b925082820390508181111561434957614348613cd8565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614385601b836137c8565b91506143908261434f565b602082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614428816138ee565b92915050565b600060208284031215614444576144436138e9565b5b600061445284828501614419565b91505092915050565b6000819050919050565b600061448061447b6144768461445b565b61386f565b61372d565b9050919050565b61449081614465565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144cb81613781565b82525050565b60006144dd83836144c2565b60208301905092915050565b6000602082019050919050565b600061450182614496565b61450b81856144a1565b9350614516836144b2565b8060005b8381101561454757815161452e88826144d1565b9750614539836144e9565b92505060018101905061451a565b5085935050505092915050565b600060a0820190506145696000830188613737565b6145766020830187614487565b818103604083015261458881866144f6565b90506145976060830185613793565b6145a46080830184613737565b9695505050505050565b60006040820190506145c36000830185613737565b81810360208301526145d581846144f6565b9050939250505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201de1ee05f5a595fa54c2f63c3af602d5bf2a0048459344fa2708579c16c56ced64736f6c63430008100033

Deployed Bytecode Sourcemap

14417:12647:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15760:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14961:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17604:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15989:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14704:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18942:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26349:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17881:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19716:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14616:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18275:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17790:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18439:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15364:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15108:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25053:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26219:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15307:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26843:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25674:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15906:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25296:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15831:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17989:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9085:94;;;;;;;;;;;;;:::i;:::-;;25560:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25995:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15606:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15682:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15475:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8776:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17695;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15056:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18665:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19541:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25432:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26606:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14868:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25783:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15416:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24667:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18120:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25166:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24481:178;;;;;;;;;;;;;:::i;:::-;;15868:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24947:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16027:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9187:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26966:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15945:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15760:61;;;;:::o;14961:82::-;;;;;;;;;;;;;:::o;17604:83::-;17641:13;17674:5;17667:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17604:83;:::o;15989:31::-;;;;;;;;;;;;;:::o;14704:81::-;;;:::o;18942:161::-;19017:4;19034:39;19043:12;:10;:12::i;:::-;19057:7;19066:6;19034:8;:39::i;:::-;19091:4;19084:11;;18942:161;;;;:::o;26349:249::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26461:12:::1;26441:17;:32;;;;26500:8;26484:13;:24;;;;26564:14;;26547:13;;26527:17;;:33;;;;:::i;:::-;:51;;26519:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26349:249:::0;;:::o;17881:100::-;17934:7;17961:12;;17954:19;;17881:100;:::o;26111:::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26198:5:::1;26182:13;;:21;;;;;;;;;;;;;;;;;;26111:100:::0;:::o;19716:297::-;19814:4;19831:36;19841:6;19849:9;19860:6;19831:9;:36::i;:::-;;19878:105;19887:6;19895:12;:10;:12::i;:::-;19909:73;19947:6;19909:73;;;;;;;;;;;;;;;;;:11;:19;19921:6;19909:19;;;;;;;;;;;;;;;:33;19929:12;:10;:12::i;:::-;19909:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;19878:8;:105::i;:::-;20001:4;19994:11;;19716:297;;;;;:::o;14616:81::-;;;:::o;18275:156::-;18328:7;18355:68;18400:22;18410:11;18400:9;:22::i;:::-;18355:40;18372:22;18382:11;18372:9;:22::i;:::-;18355:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;18348:75;;18275:156;:::o;17790:83::-;17831:5;17856:9;;;;;;;;;;;17849:16;;17790:83;:::o;18439:218::-;18527:4;18544:83;18553:12;:10;:12::i;:::-;18567:7;18576:50;18615:10;18576:11;:25;18588:12;:10;:12::i;:::-;18576:25;;;;;;;;;;;;;;;:34;18602:7;18576:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18544:8;:83::i;:::-;18645:4;18638:11;;18439:218;;;;:::o;15364:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15108:29::-;;;;:::o;25053:105::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25143:7:::1;25124:16;;:26;;;;;;;;;;;;;;;;;;25053:105:::0;:::o;26219:118::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26298:4:::1;26288:7;:14;;;;26324:5;26313:8;:16;;;;26219:118:::0;;:::o;15307:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;26843:115::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26942:7:::1;26915:9;;:35;;;;;;;;;;;;;;;;;;26843:115:::0;:::o;25674:101::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25759:8:::1;25744:12;:23;;;;25674:101:::0;:::o;15906:32::-;;;;;;;;;;;;;:::o;25296:128::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25409:7:::1;25381:19;:25;25401:4;25381:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25296:128:::0;;:::o;15831:30::-;;;;;;;;;;;;;:::o;17989:123::-;18055:7;18081:9;:18;18091:7;18081:18;;;;;;;;;;;;;;;;18074:25;;17989:123;;;:::o;9085:94::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9150:21:::1;9168:1;9150:9;:21::i;:::-;9085:94::o:0;25560:106::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25650:8:::1;25637:10;:21;;;;25560:106:::0;:::o;25995:108::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26090:5:::1;26070:17;;:25;;;;;;;;;;;;;;;;;;25995:108:::0;:::o;15606:59::-;;;;:::o;15682:56::-;;;;:::o;15475:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;8776:87::-;8822:7;8849:6;;;;;;;;;;;8842:13;;8776:87;:::o;17695:::-;17734:13;17767:7;17760:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17695:87;:::o;15056:36::-;;;;:::o;18665:269::-;18758:4;18775:129;18784:12;:10;:12::i;:::-;18798:7;18807:96;18846:15;18807:96;;;;;;;;;;;;;;;;;:11;:25;18819:12;:10;:12::i;:::-;18807:25;;;;;;;;;;;;;;;:34;18833:7;18807:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18775:8;:129::i;:::-;18922:4;18915:11;;18665:269;;;;:::o;19541:167::-;19619:4;19636:42;19646:12;:10;:12::i;:::-;19660:9;19671:6;19636:9;:42::i;:::-;;19696:4;19689:11;;19541:167;;;;:::o;25432:120::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25537:7:::1;25513:15;:21;25529:4;25513:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;25432:120:::0;;:::o;26606:229::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26749:8:::1;26735:11;;:22;;;;;;;;;;;;;;;;;;26782:8;26768:11;;:22;;;;;;;;;;;;;;;;;;26817:10;26801:13;:26;;;;26606:229:::0;;;:::o;14868:86::-;;;;;;;;;;;;;:::o;25783:204::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25887:7:::1;25865:12;:19;25878:5;25865:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25908:7;25905:75;;;25961:7;25932:19;:26;25952:5;25932:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;25905:75;25783:204:::0;;:::o;15416:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;24667:272::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24767:12:::1;24793:6;24785:20;;24860:9;24871:7;24806:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24785:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24766:114;;;24899:7;24891:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;24755:184;24667:272:::0;;;:::o;18120:143::-;18201:7;18228:11;:18;18240:5;18228:18;;;;;;;;;;;;;;;:27;18247:7;18228:27;;;;;;;;;;;;;;;;18221:34;;18120:143;;;;:::o;25166:122::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25273:7:::1;25247:17;:23;25265:4;25247:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;25166:122:::0;;:::o;24481:178::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24536:7:::1;24556:10;24548:24;;24580:21;24548:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24535:71;;;24625:2;24617:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;24523:136;24481:178::o:0;15868:31::-;;;;;;;;;;;;;:::o;24947:98::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25030:7:::1;25014:13;;:23;;;;;;;;;;;;;;;;;;24947:98:::0;:::o;16027:22::-;;;;;;;;;;;;;:::o;9187:229::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9310:1:::1;9290:22;;:8;:22;;::::0;9268:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9389:19;9399:8;9389:9;:19::i;:::-;9187:229:::0;:::o;26966:91::-;9008:12;:10;:12::i;:::-;8997:23;;:7;:5;:7::i;:::-;:23;;;8989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27044:5:::1;27034:7;;:15;;;;;;;;;;;;;;;;;;26966:91:::0;:::o;15945:35::-;;;;;;;;;;;;;:::o;10163:250::-;10221:7;10250:1;10245;:6;10241:47;;10275:1;10268:8;;;;10241:47;10300:9;10316:1;10312;:5;;;;:::i;:::-;10300:17;;10345:1;10340;10336;:5;;;;:::i;:::-;:10;10328:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10404:1;10397:8;;;10163:250;;;;;:::o;10421:132::-;10479:7;10506:39;10510:1;10513;10506:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10499:46;;10421:132;;;;:::o;7343:98::-;7396:7;7423:10;7416:17;;7343:98;:::o;19111:337::-;19221:1;19204:19;;:5;:19;;;19196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19302:1;19283:21;;:7;:21;;;19275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19386:6;19356:11;:18;19368:5;19356:18;;;;;;;;;;;;;;;:27;19375:7;19356:27;;;;;;;;;;;;;;;:36;;;;19424:7;19408:32;;19417:5;19408:32;;;19433:6;19408:32;;;;;;:::i;:::-;;;;;;;;19111:337;;;:::o;20021:1606::-;20108:4;20153:1;20135:20;;:6;:20;;;20127:29;;;;;;20196:1;20175:23;;:9;:23;;;20167:32;;;;;;20227:1;20218:6;:10;20210:19;;;;;;20250:6;;;;;;;;;;;20246:1372;;;20280:41;20295:6;20303:9;20314:6;20280:14;:41::i;:::-;20273:48;;;;20246:1372;20365:28;20396:24;20414:4;20396:9;:24::i;:::-;20365:55;;20435:28;20490:13;;20466:20;:37;;20435:68;;20542:23;:52;;;;;20588:6;;;;;;;;;;;20587:7;20542:52;:95;;;;;20617:12;:20;20630:6;20617:20;;;;;;;;;;;;;;;;;;;;;;;;;20616:21;20542:95;:128;;;;;20659:11;;;;;;;;;;;20542:128;:175;;;;;20692:17;:25;20710:6;20692:25;;;;;;;;;;;;;;;;;;;;;;;;;20691:26;20542:175;:225;;;;;20739:17;:28;20757:9;20739:28;;;;;;;;;;;;;;;;;;;;;;;;;20738:29;20542:225;20520:332;;;20806:30;20815:20;20806:8;:30::i;:::-;20520:332;20872:15;:23;20888:6;20872:23;;;;;;;;;;;;;;;;;;;;;;;;;20871:24;:55;;;;;20900:15;:26;20916:9;20900:26;;;;;;;;;;;;;;;;;;;;;;;;;20899:27;20871:55;:72;;;;;20930:13;;;;;;;;;;;20871:72;20868:166;;;20982:12;;20972:6;:22;;20964:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20868:166;21083:53;21105:6;21083:53;;;;;;;;;;;;;;;;;:9;:17;21093:6;21083:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21063:9;:17;21073:6;21063:17;;;;;;;;;;;;;;;:73;;;;21153:19;21175:34;21192:6;21199:9;21175:16;:34::i;:::-;:80;;21221:34;21229:6;21237:9;21248:6;21221:7;:34::i;:::-;21175:80;;;21212:6;21175:80;21153:102;;21275:16;;;;;;;;;;;:51;;;;;21296:19;:30;21316:9;21296:30;;;;;;;;;;;;;;;;;;;;;;;;;21295:31;21275:51;21272:168;;;21396:10;;21355:37;21380:11;21355:20;21365:9;21355;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;21347:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21272:168;21479:37;21504:11;21479:9;:20;21489:9;21479:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;21456:9;:20;21466:9;21456:20;;;;;;;;;;;;;;;:60;;;;21555:9;21538:40;;21547:6;21538:40;;;21566:11;21538:40;;;;;;:::i;:::-;;;;;;;;21600:4;21593:11;;;;;20021:1606;;;;;;:::o;9963:192::-;10049:7;10082:1;10077;:6;;10085:12;10069:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10109:9;10125:1;10121;:5;;;;:::i;:::-;10109:17;;10146:1;10139:8;;;9963:192;;;;;:::o;9819:136::-;9877:7;9904:43;9908:1;9911;9904:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9897:50;;9819:136;;;;:::o;9630:181::-;9688:7;9708:9;9724:1;9720;:5;;;;:::i;:::-;9708:17;;9749:1;9744;:6;;9736:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9802:1;9795:8;;;9630:181;;;;:::o;9424:173::-;9480:16;9499:6;;;;;;;;;;;9480:25;;9525:8;9516:6;;:17;;;;;;;;;;;;;;;;;;9580:8;9549:40;;9570:8;9549:40;;;;;;;;;;;;9469:128;9424:173;:::o;10561:278::-;10647:7;10679:1;10675;:5;10682:12;10667:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10706:9;10722:1;10718;:5;;;;:::i;:::-;10706:17;;10830:1;10823:8;;;10561:278;;;;;:::o;21635:330::-;21728:4;21765:53;21787:6;21765:53;;;;;;;;;;;;;;;;;:9;:17;21775:6;21765:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21745:9;:17;21755:6;21745:17;;;;;;;;;;;;;;;:73;;;;21852:32;21877:6;21852:9;:20;21862:9;21852:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;21829:9;:20;21839:9;21829:20;;;;;;;;;;;;;;;:55;;;;21917:9;21900:35;;21909:6;21900:35;;;21928:6;21900:35;;;;;;:::i;:::-;;;;;;;;21953:4;21946:11;;21635:330;;;;;:::o;23054:763::-;16118:4;16109:6;;:13;;;;;;;;;;;;;;;;;;23128:11:::1;;;;;;;;;;;23125:47;;;23159:13;;23141:31;;23125:47;23185:22;23210:21;23185:46;;23242:33;23259:15;23242:16;:33::i;:::-;23286:22;23311:41;23337:14;23311:21;:25;;:41;;;;:::i;:::-;23286:66;;23365:13;23381:57;23423:14;;23381:37;23400:17;;23381:14;:18;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;23365:73;;23449:17;23469:28;23488:8;23469:14;:18;;:28;;;;:::i;:::-;23449:48;;23524:1;23513:8;:12;23510:141;;;23543:12;23568:17;;;;;;;;;;;23560:31;;23599:8;23560:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23542:70;;;23527:124;23510:141;23679:1;23664:12;:16;23661:147;;;23698:13;23724;;;;;;;;;;;23716:27;;23751:12;23716:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23697:71;;;23682:126;23661:147;23112:705;;;;16154:5:::0;16145:6;;:14;;;;;;;;;;;;;;;;;;23054:763;:::o;21977:369::-;22061:4;22081:17;:25;22099:6;22081:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22110:17;:28;22128:9;22110:28;;;;;;;;;;;;;;;;;;;;;;;;;22081:57;22078:261;;;22162:4;22155:11;;;;22078:261;22197:12;:20;22210:6;22197:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;22221:12;:23;22234:9;22221:23;;;;;;;;;;;;;;;;;;;;;;;;;22197:47;22193:146;;;22268:5;22261:12;;;;22193:146;22322:5;22315:12;;21977:369;;;;;:::o;22354:692::-;22440:7;22470:14;22527:12;:20;22540:6;22527:20;;;;;;;;;;;;;;;;;;;;;;;;;22524:248;;;22581:39;22605:14;;22581:19;22592:7;;22581:6;:10;;:19;;;;:::i;:::-;:23;;:39;;;;:::i;:::-;22569:51;;22524:248;;;22659:12;:23;22672:9;22659:23;;;;;;;;;;;;;;;;;;;;;;;;;22656:116;;;22716:40;22741:14;;22716:20;22727:8;;22716:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;22704:52;;22656:116;22524:248;22803:1;22791:9;:13;22788:185;;;22852:39;22881:9;22852;:24;22870:4;22852:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22825:9;:24;22843:4;22825:24;;;;;;;;;;;;;;;:66;;;;22940:4;22915:42;;22924:6;22915:42;;;22947:9;22915:42;;;;;;:::i;:::-;;;;;;;;22788:185;22996:21;23007:9;22996:6;:10;;:21;;;;:::i;:::-;22989:28;;;22354:692;;;;;:::o;23825:648::-;23951:21;23989:1;23975:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23951:40;;24020:4;24002;24007:1;24002:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24046:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24036:4;24041:1;24036:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;24075:56;24092:4;24107:9;;;;;;;;;;;24119:11;24075:8;:56::i;:::-;24170:9;;;;;;;;;;;:60;;;24245:11;24271:1;24315:4;24342;24378:15;24170:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24430:35;24447:11;24460:4;24430:35;;;;;;;:::i;:::-;;;;;;;;23880:593;23825:648;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2370:60::-;2398:3;2419:5;2412:12;;2370:60;;;:::o;2436:142::-;2486:9;2519:53;2537:34;2546:24;2564:5;2546:24;:::i;:::-;2537:34;:::i;:::-;2519:53;:::i;:::-;2506:66;;2436:142;;;:::o;2584:126::-;2634:9;2667:37;2698:5;2667:37;:::i;:::-;2654:50;;2584:126;;;:::o;2716:148::-;2788:9;2821:37;2852:5;2821:37;:::i;:::-;2808:50;;2716:148;;;:::o;2870:175::-;2979:59;3032:5;2979:59;:::i;:::-;2974:3;2967:72;2870:175;;:::o;3051:266::-;3166:4;3204:2;3193:9;3189:18;3181:26;;3217:93;3307:1;3296:9;3292:17;3283:6;3217:93;:::i;:::-;3051:266;;;;:::o;3404:117::-;3513:1;3510;3503:12;3650:122;3723:24;3741:5;3723:24;:::i;:::-;3716:5;3713:35;3703:63;;3762:1;3759;3752:12;3703:63;3650:122;:::o;3778:139::-;3824:5;3862:6;3849:20;3840:29;;3878:33;3905:5;3878:33;:::i;:::-;3778:139;;;;:::o;3923:122::-;3996:24;4014:5;3996:24;:::i;:::-;3989:5;3986:35;3976:63;;4035:1;4032;4025:12;3976:63;3923:122;:::o;4051:139::-;4097:5;4135:6;4122:20;4113:29;;4151:33;4178:5;4151:33;:::i;:::-;4051:139;;;;:::o;4196:474::-;4264:6;4272;4321:2;4309:9;4300:7;4296:23;4292:32;4289:119;;;4327:79;;:::i;:::-;4289:119;4447:1;4472:53;4517:7;4508:6;4497:9;4493:22;4472:53;:::i;:::-;4462:63;;4418:117;4574:2;4600:53;4645:7;4636:6;4625:9;4621:22;4600:53;:::i;:::-;4590:63;;4545:118;4196:474;;;;;:::o;4676:90::-;4710:7;4753:5;4746:13;4739:21;4728:32;;4676:90;;;:::o;4772:109::-;4853:21;4868:5;4853:21;:::i;:::-;4848:3;4841:34;4772:109;;:::o;4887:210::-;4974:4;5012:2;5001:9;4997:18;4989:26;;5025:65;5087:1;5076:9;5072:17;5063:6;5025:65;:::i;:::-;4887:210;;;;:::o;5103:474::-;5171:6;5179;5228:2;5216:9;5207:7;5203:23;5199:32;5196:119;;;5234:79;;:::i;:::-;5196:119;5354:1;5379:53;5424:7;5415:6;5404:9;5400:22;5379:53;:::i;:::-;5369:63;;5325:117;5481:2;5507:53;5552:7;5543:6;5532:9;5528:22;5507:53;:::i;:::-;5497:63;;5452:118;5103:474;;;;;:::o;5583:329::-;5642:6;5691:2;5679:9;5670:7;5666:23;5662:32;5659:119;;;5697:79;;:::i;:::-;5659:119;5817:1;5842:53;5887:7;5878:6;5867:9;5863:22;5842:53;:::i;:::-;5832:63;;5788:117;5583:329;;;;:::o;5918:619::-;5995:6;6003;6011;6060:2;6048:9;6039:7;6035:23;6031:32;6028:119;;;6066:79;;:::i;:::-;6028:119;6186:1;6211:53;6256:7;6247:6;6236:9;6232:22;6211:53;:::i;:::-;6201:63;;6157:117;6313:2;6339:53;6384:7;6375:6;6364:9;6360:22;6339:53;:::i;:::-;6329:63;;6284:118;6441:2;6467:53;6512:7;6503:6;6492:9;6488:22;6467:53;:::i;:::-;6457:63;;6412:118;5918:619;;;;;:::o;6543:86::-;6578:7;6618:4;6611:5;6607:16;6596:27;;6543:86;;;:::o;6635:112::-;6718:22;6734:5;6718:22;:::i;:::-;6713:3;6706:35;6635:112;;:::o;6753:214::-;6842:4;6880:2;6869:9;6865:18;6857:26;;6893:67;6957:1;6946:9;6942:17;6933:6;6893:67;:::i;:::-;6753:214;;;;:::o;6973:116::-;7043:21;7058:5;7043:21;:::i;:::-;7036:5;7033:32;7023:60;;7079:1;7076;7069:12;7023:60;6973:116;:::o;7095:133::-;7138:5;7176:6;7163:20;7154:29;;7192:30;7216:5;7192:30;:::i;:::-;7095:133;;;;:::o;7234:323::-;7290:6;7339:2;7327:9;7318:7;7314:23;7310:32;7307:119;;;7345:79;;:::i;:::-;7307:119;7465:1;7490:50;7532:7;7523:6;7512:9;7508:22;7490:50;:::i;:::-;7480:60;;7436:114;7234:323;;;;:::o;7563:329::-;7622:6;7671:2;7659:9;7650:7;7646:23;7642:32;7639:119;;;7677:79;;:::i;:::-;7639:119;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7563:329;;;;:::o;7898:468::-;7963:6;7971;8020:2;8008:9;7999:7;7995:23;7991:32;7988:119;;;8026:79;;:::i;:::-;7988:119;8146:1;8171:53;8216:7;8207:6;8196:9;8192:22;8171:53;:::i;:::-;8161:63;;8117:117;8273:2;8299:50;8341:7;8332:6;8321:9;8317:22;8299:50;:::i;:::-;8289:60;;8244:115;7898:468;;;;;:::o;8372:607::-;8443:6;8451;8459;8508:2;8496:9;8487:7;8483:23;8479:32;8476:119;;;8514:79;;:::i;:::-;8476:119;8634:1;8659:53;8704:7;8695:6;8684:9;8680:22;8659:53;:::i;:::-;8649:63;;8605:117;8761:2;8787:50;8829:7;8820:6;8809:9;8805:22;8787:50;:::i;:::-;8777:60;;8732:115;8886:2;8912:50;8954:7;8945:6;8934:9;8930:22;8912:50;:::i;:::-;8902:60;;8857:115;8372:607;;;;;:::o;8985:474::-;9053:6;9061;9110:2;9098:9;9089:7;9085:23;9081:32;9078:119;;;9116:79;;:::i;:::-;9078:119;9236:1;9261:53;9306:7;9297:6;9286:9;9282:22;9261:53;:::i;:::-;9251:63;;9207:117;9363:2;9389:53;9434:7;9425:6;9414:9;9410:22;9389:53;:::i;:::-;9379:63;;9334:118;8985:474;;;;;:::o;9465:180::-;9513:77;9510:1;9503:88;9610:4;9607:1;9600:15;9634:4;9631:1;9624:15;9651:320;9695:6;9732:1;9726:4;9722:12;9712:22;;9779:1;9773:4;9769:12;9800:18;9790:81;;9856:4;9848:6;9844:17;9834:27;;9790:81;9918:2;9910:6;9907:14;9887:18;9884:38;9881:84;;9937:18;;:::i;:::-;9881:84;9702:269;9651:320;;;:::o;9977:182::-;10117:34;10113:1;10105:6;10101:14;10094:58;9977:182;:::o;10165:366::-;10307:3;10328:67;10392:2;10387:3;10328:67;:::i;:::-;10321:74;;10404:93;10493:3;10404:93;:::i;:::-;10522:2;10517:3;10513:12;10506:19;;10165:366;;;:::o;10537:419::-;10703:4;10741:2;10730:9;10726:18;10718:26;;10790:9;10784:4;10780:20;10776:1;10765:9;10761:17;10754:47;10818:131;10944:4;10818:131;:::i;:::-;10810:139;;10537:419;;;:::o;10962:180::-;11010:77;11007:1;11000:88;11107:4;11104:1;11097:15;11131:4;11128:1;11121:15;11148:191;11188:3;11207:20;11225:1;11207:20;:::i;:::-;11202:25;;11241:20;11259:1;11241:20;:::i;:::-;11236:25;;11284:1;11281;11277:9;11270:16;;11305:3;11302:1;11299:10;11296:36;;;11312:18;;:::i;:::-;11296:36;11148:191;;;;:::o;11345:158::-;11485:10;11481:1;11473:6;11469:14;11462:34;11345:158;:::o;11509:365::-;11651:3;11672:66;11736:1;11731:3;11672:66;:::i;:::-;11665:73;;11747:93;11836:3;11747:93;:::i;:::-;11865:2;11860:3;11856:12;11849:19;;11509:365;;;:::o;11880:419::-;12046:4;12084:2;12073:9;12069:18;12061:26;;12133:9;12127:4;12123:20;12119:1;12108:9;12104:17;12097:47;12161:131;12287:4;12161:131;:::i;:::-;12153:139;;11880:419;;;:::o;12305:332::-;12426:4;12464:2;12453:9;12449:18;12441:26;;12477:71;12545:1;12534:9;12530:17;12521:6;12477:71;:::i;:::-;12558:72;12626:2;12615:9;12611:18;12602:6;12558:72;:::i;:::-;12305:332;;;;;:::o;12643:98::-;12694:6;12728:5;12722:12;12712:22;;12643:98;;;:::o;12747:147::-;12848:11;12885:3;12870:18;;12747:147;;;;:::o;12900:386::-;13004:3;13032:38;13064:5;13032:38;:::i;:::-;13086:88;13167:6;13162:3;13086:88;:::i;:::-;13079:95;;13183:65;13241:6;13236:3;13229:4;13222:5;13218:16;13183:65;:::i;:::-;13273:6;13268:3;13264:16;13257:23;;13008:278;12900:386;;;;:::o;13292:271::-;13422:3;13444:93;13533:3;13524:6;13444:93;:::i;:::-;13437:100;;13554:3;13547:10;;13292:271;;;;:::o;13569:170::-;13709:22;13705:1;13697:6;13693:14;13686:46;13569:170;:::o;13745:366::-;13887:3;13908:67;13972:2;13967:3;13908:67;:::i;:::-;13901:74;;13984:93;14073:3;13984:93;:::i;:::-;14102:2;14097:3;14093:12;14086:19;;13745:366;;;:::o;14117:419::-;14283:4;14321:2;14310:9;14306:18;14298:26;;14370:9;14364:4;14360:20;14356:1;14345:9;14341:17;14334:47;14398:131;14524:4;14398:131;:::i;:::-;14390:139;;14117:419;;;:::o;14542:114::-;;:::o;14662:398::-;14821:3;14842:83;14923:1;14918:3;14842:83;:::i;:::-;14835:90;;14934:93;15023:3;14934:93;:::i;:::-;15052:1;15047:3;15043:11;15036:18;;14662:398;;;:::o;15066:379::-;15250:3;15272:147;15415:3;15272:147;:::i;:::-;15265:154;;15436:3;15429:10;;15066:379;;;:::o;15451:170::-;15591:22;15587:1;15579:6;15575:14;15568:46;15451:170;:::o;15627:366::-;15769:3;15790:67;15854:2;15849:3;15790:67;:::i;:::-;15783:74;;15866:93;15955:3;15866:93;:::i;:::-;15984:2;15979:3;15975:12;15968:19;;15627:366;;;:::o;15999:419::-;16165:4;16203:2;16192:9;16188:18;16180:26;;16252:9;16246:4;16242:20;16238:1;16227:9;16223:17;16216:47;16280:131;16406:4;16280:131;:::i;:::-;16272:139;;15999:419;;;:::o;16424:225::-;16564:34;16560:1;16552:6;16548:14;16541:58;16633:8;16628:2;16620:6;16616:15;16609:33;16424:225;:::o;16655:366::-;16797:3;16818:67;16882:2;16877:3;16818:67;:::i;:::-;16811:74;;16894:93;16983:3;16894:93;:::i;:::-;17012:2;17007:3;17003:12;16996:19;;16655:366;;;:::o;17027:419::-;17193:4;17231:2;17220:9;17216:18;17208:26;;17280:9;17274:4;17270:20;17266:1;17255:9;17251:17;17244:47;17308:131;17434:4;17308:131;:::i;:::-;17300:139;;17027:419;;;:::o;17452:348::-;17492:7;17515:20;17533:1;17515:20;:::i;:::-;17510:25;;17549:20;17567:1;17549:20;:::i;:::-;17544:25;;17737:1;17669:66;17665:74;17662:1;17659:81;17654:1;17647:9;17640:17;17636:105;17633:131;;;17744:18;;:::i;:::-;17633:131;17792:1;17789;17785:9;17774:20;;17452:348;;;;:::o;17806:180::-;17854:77;17851:1;17844:88;17951:4;17948:1;17941:15;17975:4;17972:1;17965:15;17992:185;18032:1;18049:20;18067:1;18049:20;:::i;:::-;18044:25;;18083:20;18101:1;18083:20;:::i;:::-;18078:25;;18122:1;18112:35;;18127:18;;:::i;:::-;18112:35;18169:1;18166;18162:9;18157:14;;17992:185;;;;:::o;18183:220::-;18323:34;18319:1;18311:6;18307:14;18300:58;18392:3;18387:2;18379:6;18375:15;18368:28;18183:220;:::o;18409:366::-;18551:3;18572:67;18636:2;18631:3;18572:67;:::i;:::-;18565:74;;18648:93;18737:3;18648:93;:::i;:::-;18766:2;18761:3;18757:12;18750:19;;18409:366;;;:::o;18781:419::-;18947:4;18985:2;18974:9;18970:18;18962:26;;19034:9;19028:4;19024:20;19020:1;19009:9;19005:17;18998:47;19062:131;19188:4;19062:131;:::i;:::-;19054:139;;18781:419;;;:::o;19206:223::-;19346:34;19342:1;19334:6;19330:14;19323:58;19415:6;19410:2;19402:6;19398:15;19391:31;19206:223;:::o;19435:366::-;19577:3;19598:67;19662:2;19657:3;19598:67;:::i;:::-;19591:74;;19674:93;19763:3;19674:93;:::i;:::-;19792:2;19787:3;19783:12;19776:19;;19435:366;;;:::o;19807:419::-;19973:4;20011:2;20000:9;19996:18;19988:26;;20060:9;20054:4;20050:20;20046:1;20035:9;20031:17;20024:47;20088:131;20214:4;20088:131;:::i;:::-;20080:139;;19807:419;;;:::o;20232:221::-;20372:34;20368:1;20360:6;20356:14;20349:58;20441:4;20436:2;20428:6;20424:15;20417:29;20232:221;:::o;20459:366::-;20601:3;20622:67;20686:2;20681:3;20622:67;:::i;:::-;20615:74;;20698:93;20787:3;20698:93;:::i;:::-;20816:2;20811:3;20807:12;20800:19;;20459:366;;;:::o;20831:419::-;20997:4;21035:2;21024:9;21020:18;21012:26;;21084:9;21078:4;21074:20;21070:1;21059:9;21055:17;21048:47;21112:131;21238:4;21112:131;:::i;:::-;21104:139;;20831:419;;;:::o;21256:169::-;21396:21;21392:1;21384:6;21380:14;21373:45;21256:169;:::o;21431:366::-;21573:3;21594:67;21658:2;21653:3;21594:67;:::i;:::-;21587:74;;21670:93;21759:3;21670:93;:::i;:::-;21788:2;21783:3;21779:12;21772:19;;21431:366;;;:::o;21803:419::-;21969:4;22007:2;21996:9;21992:18;21984:26;;22056:9;22050:4;22046:20;22042:1;22031:9;22027:17;22020:47;22084:131;22210:4;22084:131;:::i;:::-;22076:139;;21803:419;;;:::o;22228:164::-;22368:16;22364:1;22356:6;22352:14;22345:40;22228:164;:::o;22398:366::-;22540:3;22561:67;22625:2;22620:3;22561:67;:::i;:::-;22554:74;;22637:93;22726:3;22637:93;:::i;:::-;22755:2;22750:3;22746:12;22739:19;;22398:366;;;:::o;22770:419::-;22936:4;22974:2;22963:9;22959:18;22951:26;;23023:9;23017:4;23013:20;23009:1;22998:9;22994:17;22987:47;23051:131;23177:4;23051:131;:::i;:::-;23043:139;;22770:419;;;:::o;23195:194::-;23235:4;23255:20;23273:1;23255:20;:::i;:::-;23250:25;;23289:20;23307:1;23289:20;:::i;:::-;23284:25;;23333:1;23330;23326:9;23318:17;;23357:1;23351:4;23348:11;23345:37;;;23362:18;;:::i;:::-;23345:37;23195:194;;;;:::o;23395:177::-;23535:29;23531:1;23523:6;23519:14;23512:53;23395:177;:::o;23578:366::-;23720:3;23741:67;23805:2;23800:3;23741:67;:::i;:::-;23734:74;;23817:93;23906:3;23817:93;:::i;:::-;23935:2;23930:3;23926:12;23919:19;;23578:366;;;:::o;23950:419::-;24116:4;24154:2;24143:9;24139:18;24131:26;;24203:9;24197:4;24193:20;24189:1;24178:9;24174:17;24167:47;24231:131;24357:4;24231:131;:::i;:::-;24223:139;;23950:419;;;:::o;24375:180::-;24423:77;24420:1;24413:88;24520:4;24517:1;24510:15;24544:4;24541:1;24534:15;24561:180;24609:77;24606:1;24599:88;24706:4;24703:1;24696:15;24730:4;24727:1;24720:15;24747:143;24804:5;24835:6;24829:13;24820:22;;24851:33;24878:5;24851:33;:::i;:::-;24747:143;;;;:::o;24896:351::-;24966:6;25015:2;25003:9;24994:7;24990:23;24986:32;24983:119;;;25021:79;;:::i;:::-;24983:119;25141:1;25166:64;25222:7;25213:6;25202:9;25198:22;25166:64;:::i;:::-;25156:74;;25112:128;24896:351;;;;:::o;25253:85::-;25298:7;25327:5;25316:16;;25253:85;;;:::o;25344:158::-;25402:9;25435:61;25453:42;25462:32;25488:5;25462:32;:::i;:::-;25453:42;:::i;:::-;25435:61;:::i;:::-;25422:74;;25344:158;;;:::o;25508:147::-;25603:45;25642:5;25603:45;:::i;:::-;25598:3;25591:58;25508:147;;:::o;25661:114::-;25728:6;25762:5;25756:12;25746:22;;25661:114;;;:::o;25781:184::-;25880:11;25914:6;25909:3;25902:19;25954:4;25949:3;25945:14;25930:29;;25781:184;;;;:::o;25971:132::-;26038:4;26061:3;26053:11;;26091:4;26086:3;26082:14;26074:22;;25971:132;;;:::o;26109:108::-;26186:24;26204:5;26186:24;:::i;:::-;26181:3;26174:37;26109:108;;:::o;26223:179::-;26292:10;26313:46;26355:3;26347:6;26313:46;:::i;:::-;26391:4;26386:3;26382:14;26368:28;;26223:179;;;;:::o;26408:113::-;26478:4;26510;26505:3;26501:14;26493:22;;26408:113;;;:::o;26557:732::-;26676:3;26705:54;26753:5;26705:54;:::i;:::-;26775:86;26854:6;26849:3;26775:86;:::i;:::-;26768:93;;26885:56;26935:5;26885:56;:::i;:::-;26964:7;26995:1;26980:284;27005:6;27002:1;26999:13;26980:284;;;27081:6;27075:13;27108:63;27167:3;27152:13;27108:63;:::i;:::-;27101:70;;27194:60;27247:6;27194:60;:::i;:::-;27184:70;;27040:224;27027:1;27024;27020:9;27015:14;;26980:284;;;26984:14;27280:3;27273:10;;26681:608;;;26557:732;;;;:::o;27295:831::-;27558:4;27596:3;27585:9;27581:19;27573:27;;27610:71;27678:1;27667:9;27663:17;27654:6;27610:71;:::i;:::-;27691:80;27767:2;27756:9;27752:18;27743:6;27691:80;:::i;:::-;27818:9;27812:4;27808:20;27803:2;27792:9;27788:18;27781:48;27846:108;27949:4;27940:6;27846:108;:::i;:::-;27838:116;;27964:72;28032:2;28021:9;28017:18;28008:6;27964:72;:::i;:::-;28046:73;28114:3;28103:9;28099:19;28090:6;28046:73;:::i;:::-;27295:831;;;;;;;;:::o;28132:483::-;28303:4;28341:2;28330:9;28326:18;28318:26;;28354:71;28422:1;28411:9;28407:17;28398:6;28354:71;:::i;:::-;28472:9;28466:4;28462:20;28457:2;28446:9;28442:18;28435:48;28500:108;28603:4;28594:6;28500:108;:::i;:::-;28492:116;;28132:483;;;;;:::o

Swarm Source

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