ETH Price: $3,424.33 (+0.19%)
Gas: 4 Gwei

Token

Token of Fire ($Rhllor Inu)
 

Overview

Max Total Supply

9,420,758,417.432977 $Rhllor Inu

Holders

165

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
147,723.889554 $Rhllor Inu

Value
$0.00
0xf48300ac56942f20b0cd339b8fedb0c6b9b451a6
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:
RhllorInu

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-23
*/

/**
*
*
People>Profits
--------------
为了文化.
--------------
People>Profits
*
*
-Everything you think you know about defi is a lie. You live in chains. Those you worship are the very ones who betray you. 

-R'hllor Inu will show you the light.

-To honor the Lord of Light, we will shine the greatest larp defi has ever seen. We remember the darkness. Now, the light has set us free. 

-It purifies all and everything burns.

-Even members of the BAYC are within our reach. 
*
*
-Website-  https://www.rhllorinu.net/
-Twitter-  https://twitter.com/tokenoffire
-Telegram- https://t.me/RHLLORerc
-Owner-    0x282Aae83497763Cf32006eEBE86495C5FD5A58BB
*
*
---------------------------------------------------------------------------------------------
 ______       ___   ___      ______        ______        ______        _________   __       
/_____/\     /___/\/__/\    /_____/\      /_____/\      /_____/\      /________/\ /__/\     
\::::_\/_    \::.\ \\ \ \   \:::_ \ \     \:::_ \ \     \:::_ \ \     \__.::.__\/ \.:\ \    
 \:\/___/\    \:: \/_) \ \   \:(_) ) )_    \:(_) ) )_    \:(_) ) )_      \::\ \    \::\ \   
  \_::._\:\    \:. __  ( (    \: __ `\ \    \: __ `\ \    \: __ `\ \      \::\ \    \__\/_  
    /____\:\    \: \ )  \ \    \ \ `\ \ \    \ \ `\ \ \    \ \ `\ \ \      \::\ \     /__/\ 
    \_____\/     \__\/\__\/     \_\/ \_\/     \_\/ \_\/     \_\/ \_\/       \__\/     \__\/ 
                                                                                            
---------------------------------------------------------------------------------------------
*
*
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.15;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
interface IERC20 {
    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);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 6;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    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 _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
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;
        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;
    }
}
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);
        return a / b;
    }
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
contract RhllorInu is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public supply;
    address public devWallet;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 public buyBurnFee;
    uint256 public buyDevFee;
    uint256 public buyTotalFees;
    uint256 public sellBurnFee;
    uint256 public sellDevFee;
    uint256 public sellTotalFees;   
    uint256 public tokensForBurn;
    uint256 public tokensForDev;
    uint256 public walletDigit;
    uint256 public transDigit;
    uint256 public delayDigit;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public bots;
    mapping (address => bool) public floorControl;
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    constructor() ERC20("Token of Fire", "$Rhllor Inu") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        uint256 _buyBurnFee = 1;
        uint256 _buyDevFee = 9;
        uint256 _sellBurnFee = 1;
        uint256 _sellDevFee = 9;
        uint256 totalSupply = 10000 * 1e6 * 1e6;
        supply += totalSupply;
        walletDigit = 1;
        transDigit = 1;
        delayDigit = 0;
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; 
        maxWallet = supply * walletDigit / 100;
        buyBurnFee = _buyBurnFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        sellBurnFee = _sellBurnFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        devWallet = 0x431c71594CAE3a8935AFCf2133D294e37b84e6F2;
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _approve(owner(), address(uniswapV2Router), totalSupply);
        _mint(msg.sender, totalSupply);
    }
    receive() external payable {
  	}
    function enableTrading() external onlyOwner {
        buyBurnFee = 1;
        buyDevFee = 9;
        buyTotalFees = buyBurnFee + buyDevFee;
        sellBurnFee = 1;
        sellDevFee = 9;
        sellTotalFees = sellBurnFee + sellDevFee;
        delayDigit = 5;
        tradingActive = true;
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        delete bots[notbot];
    }
    function updateTransDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        transDigit = newNum;
        updateLimits();
    }
    function updateWalletDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        walletDigit = newNum;
        updateLimits();
    }
    function updateDelayDigit(uint256 newNum) external onlyOwner{
        delayDigit = newNum;
    }
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    function updateBuyFees(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        buyBurnFee = _burnFee;
        buyDevFee = _devFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        require(buyTotalFees <= 15, "Must keep fees at 20% or less");
    }
    function updateSellFees(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        sellBurnFee = _burnFee;
        sellDevFee = _devFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        require(sellTotalFees <= 15, "Must keep fees at 25% or less");
    }
    function updateDevWallet(address newWallet) external onlyOwner {
        devWallet = newWallet;
    }
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
    function updateLimits() private {
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; 
        maxWallet = supply * walletDigit / 100;
    }
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to] || floorControl[from] || floorControl[to], "Trading is not active.");
                }                
                require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number + delayDigit;
                    }
                }
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if( 
            canSwap &&
            !swapping &&
            swapEnabled &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        bool takeFee = !swapping;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        uint256 fees = 0;
        if(takeFee){
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
            }
            if(fees > 0){    
                super._transfer(from, address(this), fees);
                if (tokensForBurn > 0) {
                    _burn(address(this), tokensForBurn);
                    supply = totalSupply();
                    updateLimits();
                    tokensForBurn = 0;
                }
            }
        	amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        if(contractBalance == 0) {return;}
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        swapTokensForEth(contractBalance); 
        tokensForDev = 0;
        (success,) = address(devWallet).call{value: address(this).balance}("");
    }
    
    function allowFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 floorControl[accounts[i]] = true;
        }
    }

    function removeFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 delete floorControl[accounts[i]];
        }
    }
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowFloorControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"floorControl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeFloorControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transDigit","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateDelayDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateTransDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateWalletDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600d81526020017f546f6b656e206f662046697265000000000000000000000000000000000000008152506040518060400160405280600b81526020017f2452686c6c6f7220496e750000000000000000000000000000000000000000008152508160039081620000fb919062000fa1565b5080600490816200010d919062000fa1565b5050506000620001226200062360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200062b60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002939190620010f2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003219190620010f2565b6040518363ffffffff1660e01b81526004016200034092919062001135565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003869190620010f2565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200062b60201b60201c565b620003e360a05160016200072860201b60201c565b6000600190506000600990506000600190506000600990506000662386f26fc10000905080600960008282546200041b919062001191565b9250508190555060016015819055506001601681905550600060178190555060646016546009546200044e9190620011ee565b6200045a91906200127e565b6006819055506127106005600954620004749190620011ee565b6200048091906200127e565b60078190555060646015546009546200049a9190620011ee565b620004a691906200127e565b60088190555084600d8190555083600e81905550600e54600d54620004cc919062001191565b600f819055508260108190555081601181905550601154601054620004f2919062001191565b60128190555073431c71594cae3a8935afcf2133d294e37b84e6f2600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200056f62000561620007c960201b60201c565b6001620007f360201b60201c565b62000582306001620007f360201b60201c565b6200059761dead6001620007f360201b60201c565b620005b9620005ab620007c960201b60201c565b60016200062b60201b60201c565b620005cc3060016200062b60201b60201c565b620005e161dead60016200062b60201b60201c565b62000605620005f5620007c960201b60201c565b608051836200094060201b60201c565b62000617338262000b1160201b60201c565b505050505050620015b5565b600033905090565b6200063b6200062360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c49062001317565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008036200062360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000895576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200088c9062001317565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000934919062001356565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a990620013e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1b9062001481565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b049190620014b4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7a9062001521565b60405180910390fd5b62000b976000838362000cbf60201b60201c565b62000bb38160025462000cc460201b6200252d1790919060201c565b60028190555062000c11816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cc460201b6200252d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cb39190620014b4565b60405180910390a35050565b505050565b600080828462000cd5919062001191565b90508381101562000d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d149062001593565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000da957607f821691505b60208210810362000dbf5762000dbe62000d61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e297fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dea565b62000e35868362000dea565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e8262000e7c62000e768462000e4d565b62000e57565b62000e4d565b9050919050565b6000819050919050565b62000e9e8362000e61565b62000eb662000ead8262000e89565b84845462000df7565b825550505050565b600090565b62000ecd62000ebe565b62000eda81848462000e93565b505050565b5b8181101562000f025762000ef660008262000ec3565b60018101905062000ee0565b5050565b601f82111562000f515762000f1b8162000dc5565b62000f268462000dda565b8101602085101562000f36578190505b62000f4e62000f458562000dda565b83018262000edf565b50505b505050565b600082821c905092915050565b600062000f766000198460080262000f56565b1980831691505092915050565b600062000f91838362000f63565b9150826002028217905092915050565b62000fac8262000d27565b67ffffffffffffffff81111562000fc85762000fc762000d32565b5b62000fd4825462000d90565b62000fe182828562000f06565b600060209050601f83116001811462001019576000841562001004578287015190505b62001010858262000f83565b86555062001080565b601f198416620010298662000dc5565b60005b8281101562001053578489015182556001820191506020850194506020810190506200102c565b868310156200107357848901516200106f601f89168262000f63565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010ba826200108d565b9050919050565b620010cc81620010ad565b8114620010d857600080fd5b50565b600081519050620010ec81620010c1565b92915050565b6000602082840312156200110b576200110a62001088565b5b60006200111b84828501620010db565b91505092915050565b6200112f81620010ad565b82525050565b60006040820190506200114c600083018562001124565b6200115b602083018462001124565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200119e8262000e4d565b9150620011ab8362000e4d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011e357620011e262001162565b5b828201905092915050565b6000620011fb8262000e4d565b9150620012088362000e4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001244576200124362001162565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200128b8262000e4d565b9150620012988362000e4d565b925082620012ab57620012aa6200124f565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012ff602083620012b6565b91506200130c82620012c7565b602082019050919050565b600060208201905081810360008301526200133281620012f0565b9050919050565b60008115159050919050565b620013508162001339565b82525050565b60006020820190506200136d600083018462001345565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620013d1602483620012b6565b9150620013de8262001373565b604082019050919050565b600060208201905081810360008301526200140481620013c2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062001469602283620012b6565b915062001476826200140b565b604082019050919050565b600060208201905081810360008301526200149c816200145a565b9050919050565b620014ae8162000e4d565b82525050565b6000602082019050620014cb6000830184620014a3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001509601f83620012b6565b91506200151682620014d1565b602082019050919050565b600060208201905081810360008301526200153c81620014fa565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200157b601b83620012b6565b9150620015888262001543565b602082019050919050565b60006020820190508181036000830152620015ae816200156c565b9050919050565b60805160a0516154ca620016056000396000818161149701528181611d7c0152612d0401526000818161113601528181612cac01528181613d5901528181613e3a0152613e6101526154ca6000f3fe60806040526004361061036e5760003560e01c80638a8c523c116101c6578063b5a8b298116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610ccc578063f203acb614610cf7578063f2fde38b14610d22578063f8b45b0514610d4b57610375565b8063d85ba06314610c39578063dd62ed3e14610c64578063e2f4560514610ca157610375565b8063bfd79284116100d1578063bfd7928414610b7d578063c024666814610bba578063c876d0b914610be3578063c8c8ebe414610c0e57610375565b8063b5a8b29814610aec578063b62496f514610b15578063bbc0c74214610b5257610375565b80639c71cc7011610164578063a0d82dc51161013e578063a0d82dc514610a1c578063a457c2d714610a47578063a9059cbb14610a84578063adb873bd14610ac157610375565b80639c71cc701461098b5780639fccce32146109c85780639fdc4824146109f357610375565b806395d89b41116101a057806395d89b41146108e1578063975d71e21461090c5780639a7a23d6146109375780639c3b4fdc1461096057610375565b80638a8c523c146108745780638da5cb5b1461088b5780638ea5220f146108b657610375565b8063313ce567116102a05780636a486a8e1161023e57806370a082311161021857806370a08231146107cc578063715018a6146108095780637571336a146108205780637ab439831461084957610375565b80636a486a8e1461074d5780636b999053146107785780636ddd1713146107a157610375565b80634a62bb651161027a5780634a62bb65146106935780634ab736c0146106be5780634fbee193146106e757806366ca9b831461072457610375565b8063313ce56714610600578063395093511461062b57806349bd5a5e1461066857610375565b80631694505e1161030d5780631d777856116102e75780631d777856146105445780631fa07da51461056f57806323b872dd1461059857806327c8f835146105d557610375565b80631694505e146104c557806318160ddd146104f05780631816467f1461051b57610375565b806306fdde031161034957806306fdde03146103f7578063095ea7b31461042257806310d5de531461045f578063150de0bb1461049c57610375565b8062b8cf2a1461037a57806302dbd8f8146103a3578063047fc9aa146103cc57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c919061416f565b610d76565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906141ee565b610ea2565b005b3480156103d857600080fd5b506103e1610fa7565b6040516103ee919061423d565b60405180910390f35b34801561040357600080fd5b5061040c610fad565b60405161041991906142e0565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190614302565b61103f565b604051610456919061435d565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190614378565b61105d565b604051610493919061435d565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143a5565b61107d565b005b3480156104d157600080fd5b506104da611134565b6040516104e79190614431565b60405180910390f35b3480156104fc57600080fd5b50610505611158565b604051610512919061423d565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190614378565b611162565b005b34801561055057600080fd5b5061055961123d565b604051610566919061423d565b60405180910390f35b34801561057b57600080fd5b50610596600480360381019061059191906143a5565b611243565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061444c565b6112fa565b6040516105cc919061435d565b60405180910390f35b3480156105e157600080fd5b506105ea6113d3565b6040516105f791906144ae565b60405180910390f35b34801561060c57600080fd5b506106156113d9565b60405161062291906144e5565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190614302565b6113e2565b60405161065f919061435d565b60405180910390f35b34801561067457600080fd5b5061067d611495565b60405161068a91906144ae565b60405180910390f35b34801561069f57600080fd5b506106a86114b9565b6040516106b5919061435d565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061455b565b6114cc565b005b3480156106f357600080fd5b5061070e60048036038101906107099190614378565b6115ff565b60405161071b919061435d565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906141ee565b611655565b005b34801561075957600080fd5b50610762611759565b60405161076f919061423d565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a9190614378565b61175f565b005b3480156107ad57600080fd5b506107b6611848565b6040516107c3919061435d565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190614378565b61185b565b604051610800919061423d565b60405180910390f35b34801561081557600080fd5b5061081e6118a3565b005b34801561082c57600080fd5b50610847600480360381019061084291906145d4565b6119fb565b005b34801561085557600080fd5b5061085e611aed565b60405161086b919061423d565b60405180910390f35b34801561088057600080fd5b50610889611af3565b005b34801561089757600080fd5b506108a0611bfb565b6040516108ad91906144ae565b60405180910390f35b3480156108c257600080fd5b506108cb611c25565b6040516108d891906144ae565b60405180910390f35b3480156108ed57600080fd5b506108f6611c4b565b60405161090391906142e0565b60405180910390f35b34801561091857600080fd5b50610921611cdd565b60405161092e919061423d565b60405180910390f35b34801561094357600080fd5b5061095e600480360381019061095991906145d4565b611ce3565b005b34801561096c57600080fd5b50610975611e16565b604051610982919061423d565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614378565b611e1c565b6040516109bf919061435d565b60405180910390f35b3480156109d457600080fd5b506109dd611e3c565b6040516109ea919061423d565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906143a5565b611e42565b005b348015610a2857600080fd5b50610a31611ee3565b604051610a3e919061423d565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190614302565b611ee9565b604051610a7b919061435d565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa69190614302565b611fb6565b604051610ab8919061435d565b60405180910390f35b348015610acd57600080fd5b50610ad6611fd4565b604051610ae3919061423d565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e919061455b565b611fda565b005b348015610b2157600080fd5b50610b3c6004803603810190610b379190614378565b612116565b604051610b49919061435d565b60405180910390f35b348015610b5e57600080fd5b50610b67612136565b604051610b74919061435d565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f9190614378565b612149565b604051610bb1919061435d565b60405180910390f35b348015610bc657600080fd5b50610be16004803603810190610bdc91906145d4565b612169565b005b348015610bef57600080fd5b50610bf86122a9565b604051610c05919061435d565b60405180910390f35b348015610c1a57600080fd5b50610c236122bc565b604051610c30919061423d565b60405180910390f35b348015610c4557600080fd5b50610c4e6122c2565b604051610c5b919061423d565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c869190614614565b6122c8565b604051610c98919061423d565b60405180910390f35b348015610cad57600080fd5b50610cb661234f565b604051610cc3919061423d565b60405180910390f35b348015610cd857600080fd5b50610ce1612355565b604051610cee919061423d565b60405180910390f35b348015610d0357600080fd5b50610d0c61235b565b604051610d19919061423d565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d449190614378565b612361565b005b348015610d5757600080fd5b50610d60612527565b604051610d6d919061423d565b60405180910390f35b610d7e61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906146a0565b60405180910390fd5b60005b8151811015610e9e576001601b6000848481518110610e3257610e316146c0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e969061471e565b915050610e10565b5050565b610eaa61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f30906146a0565b60405180910390fd5b8160108190555080601181905550601154601054610f579190614766565b601281905550600f6012541115610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614808565b60405180910390fd5b5050565b60095481565b606060038054610fbc90614857565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe890614857565b80156110355780601f1061100a57610100808354040283529160200191611035565b820191906000526020600020905b81548152906001019060200180831161101857829003601f168201915b5050505050905090565b600061105361104c61258b565b8484612593565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b61108561258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906146a0565b60405180910390fd5b600181101561112257600080fd5b8060158190555061113161275c565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b61116a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906146a0565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61124b61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906146a0565b60405180910390fd5b60018110156112e857600080fd5b806016819055506112f761275c565b50565b60006113078484846127c4565b6113c88461131361258b565b6113c38560405180606001604052806028815260200161544860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137961258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b600190509392505050565b61dead81565b60006006905090565b600061148b6113ef61258b565b84611486856001600061140061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b612593565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60149054906101000a900460ff1681565b6114d461258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a906146a0565b60405180910390fd5b60005b828290508110156115fa57601c6000848484818110611588576115876146c0565b5b905060200201602081019061159d9190614378565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905580806115f29061471e565b915050611566565b505050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61165d61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906146a0565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461170a9190614766565b600f81905550600f80541115611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906148d4565b60405180910390fd5b5050565b60125481565b61176761258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed906146a0565b60405180910390fd5b601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ab61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906146a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a0361258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906146a0565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611afb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b81906146a0565b60405180910390fd5b6001600d819055506009600e81905550600e54600d54611baa9190614766565b600f8190555060016010819055506009601181905550601154601054611bd09190614766565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611c5a90614857565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8690614857565b8015611cd35780601f10611ca857610100808354040283529160200191611cd3565b820191906000526020600020905b815481529060010190602001808311611cb657829003601f168201915b5050505050905090565b60165481565b611ceb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d71906146a0565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff90614966565b60405180910390fd5b611e128282613627565b5050565b600e5481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b611e4a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed0906146a0565b60405180910390fd5b8060178190555050565b60115481565b6000611fac611ef661258b565b84611fa7856040518060600160405280602581526020016154706025913960016000611f2061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b6001905092915050565b6000611fca611fc361258b565b84846127c4565b6001905092915050565b60105481565b611fe261258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612071576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612068906146a0565b60405180910390fd5b60005b82829050811015612111576001601c6000858585818110612098576120976146c0565b5b90506020020160208101906120ad9190614378565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806121099061471e565b915050612074565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61217161258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f7906146a0565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161229d919061435d565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b60175481565b61236961258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef906146a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e906149f8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600080828461253c9190614766565b905083811015612581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257890614a64565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614af6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266890614b88565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274f919061423d565b60405180910390a3505050565b606460165460095461276e9190614ba8565b6127789190614c31565b60068190555061271060056009546127909190614ba8565b61279a9190614c31565b60078190555060646015546009546127b29190614ba8565b6127bc9190614c31565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614d66565b60405180910390fd5b600081036128bb576128b6838360006136c8565b6135be565b600a60149054906101000a900460ff1615613116576128d8611bfb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129465750612916611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d25750600560149054906101000a900460ff16155b1561311557600a60159054906101000a900460ff16612b7457601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a8c5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ae05750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b345750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90614dd2565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c185750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614e64565b60405180910390fd5b600c60009054906101000a900460ff1615612e2c57612c74611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cfb57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2b5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd090614f1c565b60405180910390fd5b60175443612de79190614766565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecf5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7657600654811115612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1090614fae565b60405180910390fd5b600854612f258361185b565b82612f309190614766565b1115612f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f689061501a565b60405180910390fd5b613114565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130195750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306857600654811115613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a906150ac565b60405180910390fd5b613113565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613112576008546130c58361185b565b826130d09190614766565b1115613111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131089061501a565b60405180910390fd5b5b5b5b5b5b60006131213061185b565b9050600060075482101590508080156131475750600560149054906101000a900460ff16155b801561315f5750600a60169054906101000a900460ff165b80156131b55750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132615750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132a5576001600560146101000a81548160ff02191690831515021790555061328961395b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061335b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561336557600090505b600081156135ae57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133c857506000601254115b15613462576133f560646133e760125488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050601254601054826134089190614ba8565b6134129190614c31565b601360008282546134239190614766565b925050819055506012546011548261343b9190614ba8565b6134459190614c31565b601460008282546134569190614766565b92505081905550613554565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134bd57506000600f54115b15613553576134ea60646134dc600f5488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050600f54600d54826134fd9190614ba8565b6135079190614c31565b601360008282546135189190614766565b92505081905550600f54600e54826135309190614ba8565b61353a9190614c31565b6014600082825461354b9190614766565b925050819055505b5b600081111561359f576135688730836136c8565b6000601354111561359e5761357f30601354613b08565b613587611158565b60098190555061359561275c565b60006013819055505b5b80856135ab91906150cc565b94505b6135b98787876136c8565b505050505b505050565b600083831115829061360b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360291906142e0565b60405180910390fd5b506000838561361a91906150cc565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90614cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379d90614d66565b60405180910390fd5b6137b1838383613cb5565b61381c81604051806060016040528060268152602001615422602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161394e919061423d565b60405180910390a3505050565b60006139663061185b565b90506000808203613978575050613a42565b60146007546139879190614ba8565b8211156139a057601460075461399d9190614ba8565b91505b6139a982613cba565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f790615131565b60006040518083038185875af1925050503d8060008114613a34576040519150601f19603f3d011682016040523d82523d6000602084013e613a39565b606091505b50508091505050505b565b6000808303613a565760009050613ab8565b60008284613a649190614ba8565b9050828482613a739190614c31565b14613ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aaa906151b8565b60405180910390fd5b809150505b92915050565b6000613b0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ef7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6e9061524a565b60405180910390fd5b613b8382600083613cb5565b613bee81604051806060016040528060228152602001615400602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4581600254613f5a90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ca9919061423d565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115613cd757613cd6613fce565b5b604051908082528060200260200182016040528015613d055781602001602082028036833780820191505090505b5090503081600081518110613d1d57613d1c6146c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de6919061527f565b81600181518110613dfa57613df96146c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e5f307f000000000000000000000000000000000000000000000000000000000000000084612593565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ec19594939291906153a5565b600060405180830381600087803b158015613edb57600080fd5b505af1158015613eef573d6000803e3d6000fd5b505050505050565b60008083118290613f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3591906142e0565b60405180910390fd5b5060008385613f4d9190614c31565b9050809150509392505050565b6000613f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135c3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61400682613fbd565b810181811067ffffffffffffffff8211171561402557614024613fce565b5b80604052505050565b6000614038613fa4565b90506140448282613ffd565b919050565b600067ffffffffffffffff82111561406457614063613fce565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a58261407a565b9050919050565b6140b58161409a565b81146140c057600080fd5b50565b6000813590506140d2816140ac565b92915050565b60006140eb6140e684614049565b61402e565b9050808382526020820190506020840283018581111561410e5761410d614075565b5b835b81811015614137578061412388826140c3565b845260208401935050602081019050614110565b5050509392505050565b600082601f83011261415657614155613fb8565b5b81356141668482602086016140d8565b91505092915050565b60006020828403121561418557614184613fae565b5b600082013567ffffffffffffffff8111156141a3576141a2613fb3565b5b6141af84828501614141565b91505092915050565b6000819050919050565b6141cb816141b8565b81146141d657600080fd5b50565b6000813590506141e8816141c2565b92915050565b6000806040838503121561420557614204613fae565b5b6000614213858286016141d9565b9250506020614224858286016141d9565b9150509250929050565b614237816141b8565b82525050565b6000602082019050614252600083018461422e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614292578082015181840152602081019050614277565b838111156142a1576000848401525b50505050565b60006142b282614258565b6142bc8185614263565b93506142cc818560208601614274565b6142d581613fbd565b840191505092915050565b600060208201905081810360008301526142fa81846142a7565b905092915050565b6000806040838503121561431957614318613fae565b5b6000614327858286016140c3565b9250506020614338858286016141d9565b9150509250929050565b60008115159050919050565b61435781614342565b82525050565b6000602082019050614372600083018461434e565b92915050565b60006020828403121561438e5761438d613fae565b5b600061439c848285016140c3565b91505092915050565b6000602082840312156143bb576143ba613fae565b5b60006143c9848285016141d9565b91505092915050565b6000819050919050565b60006143f76143f26143ed8461407a565b6143d2565b61407a565b9050919050565b6000614409826143dc565b9050919050565b600061441b826143fe565b9050919050565b61442b81614410565b82525050565b60006020820190506144466000830184614422565b92915050565b60008060006060848603121561446557614464613fae565b5b6000614473868287016140c3565b9350506020614484868287016140c3565b9250506040614495868287016141d9565b9150509250925092565b6144a88161409a565b82525050565b60006020820190506144c3600083018461449f565b92915050565b600060ff82169050919050565b6144df816144c9565b82525050565b60006020820190506144fa60008301846144d6565b92915050565b600080fd5b60008083601f84011261451b5761451a613fb8565b5b8235905067ffffffffffffffff81111561453857614537614500565b5b60208301915083602082028301111561455457614553614075565b5b9250929050565b6000806020838503121561457257614571613fae565b5b600083013567ffffffffffffffff8111156145905761458f613fb3565b5b61459c85828601614505565b92509250509250929050565b6145b181614342565b81146145bc57600080fd5b50565b6000813590506145ce816145a8565b92915050565b600080604083850312156145eb576145ea613fae565b5b60006145f9858286016140c3565b925050602061460a858286016145bf565b9150509250929050565b6000806040838503121561462b5761462a613fae565b5b6000614639858286016140c3565b925050602061464a858286016140c3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061468a602083614263565b915061469582614654565b602082019050919050565b600060208201905081810360008301526146b98161467d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614729826141b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361475b5761475a6146ef565b5b600182019050919050565b6000614771826141b8565b915061477c836141b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b1576147b06146ef565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006147f2601d83614263565b91506147fd826147bc565b602082019050919050565b60006020820190508181036000830152614821816147e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486f57607f821691505b60208210810361488257614881614828565b5b50919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006148be601d83614263565b91506148c982614888565b602082019050919050565b600060208201905081810360008301526148ed816148b1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614950603983614263565b915061495b826148f4565b604082019050919050565b6000602082019050818103600083015261497f81614943565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006149e2602683614263565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614a4e601b83614263565b9150614a5982614a18565b602082019050919050565b60006020820190508181036000830152614a7d81614a41565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ae0602483614263565b9150614aeb82614a84565b604082019050919050565b60006020820190508181036000830152614b0f81614ad3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b72602283614263565b9150614b7d82614b16565b604082019050919050565b60006020820190508181036000830152614ba181614b65565b9050919050565b6000614bb3826141b8565b9150614bbe836141b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bf757614bf66146ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c3c826141b8565b9150614c47836141b8565b925082614c5757614c56614c02565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614cbe602583614263565b9150614cc982614c62565b604082019050919050565b60006020820190508181036000830152614ced81614cb1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d50602383614263565b9150614d5b82614cf4565b604082019050919050565b60006020820190508181036000830152614d7f81614d43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614dbc601683614263565b9150614dc782614d86565b602082019050919050565b60006020820190508181036000830152614deb81614daf565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614e4e602383614263565b9150614e5982614df2565b604082019050919050565b60006020820190508181036000830152614e7d81614e41565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f06604983614263565b9150614f1182614e84565b606082019050919050565b60006020820190508181036000830152614f3581614ef9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f98603583614263565b9150614fa382614f3c565b604082019050919050565b60006020820190508181036000830152614fc781614f8b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615004601383614263565b915061500f82614fce565b602082019050919050565b6000602082019050818103600083015261503381614ff7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615096603683614263565b91506150a18261503a565b604082019050919050565b600060208201905081810360008301526150c581615089565b9050919050565b60006150d7826141b8565b91506150e2836141b8565b9250828210156150f5576150f46146ef565b5b828203905092915050565b600081905092915050565b50565b600061511b600083615100565b91506151268261510b565b600082019050919050565b600061513c8261510e565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151a2602183614263565b91506151ad82615146565b604082019050919050565b600060208201905081810360008301526151d181615195565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615234602183614263565b915061523f826151d8565b604082019050919050565b6000602082019050818103600083015261526381615227565b9050919050565b600081519050615279816140ac565b92915050565b60006020828403121561529557615294613fae565b5b60006152a38482850161526a565b91505092915050565b6000819050919050565b60006152d16152cc6152c7846152ac565b6143d2565b6141b8565b9050919050565b6152e1816152b6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61531c8161409a565b82525050565b600061532e8383615313565b60208301905092915050565b6000602082019050919050565b6000615352826152e7565b61535c81856152f2565b935061536783615303565b8060005b8381101561539857815161537f8882615322565b975061538a8361533a565b92505060018101905061536b565b5085935050505092915050565b600060a0820190506153ba600083018861422e565b6153c760208301876152d8565b81810360408301526153d98186615347565b90506153e8606083018561449f565b6153f5608083018461422e565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f884d6255d11a9e7d2d696053b6d43152768a2595245af7a1f029e6989192ba464736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061036e5760003560e01c80638a8c523c116101c6578063b5a8b298116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610ccc578063f203acb614610cf7578063f2fde38b14610d22578063f8b45b0514610d4b57610375565b8063d85ba06314610c39578063dd62ed3e14610c64578063e2f4560514610ca157610375565b8063bfd79284116100d1578063bfd7928414610b7d578063c024666814610bba578063c876d0b914610be3578063c8c8ebe414610c0e57610375565b8063b5a8b29814610aec578063b62496f514610b15578063bbc0c74214610b5257610375565b80639c71cc7011610164578063a0d82dc51161013e578063a0d82dc514610a1c578063a457c2d714610a47578063a9059cbb14610a84578063adb873bd14610ac157610375565b80639c71cc701461098b5780639fccce32146109c85780639fdc4824146109f357610375565b806395d89b41116101a057806395d89b41146108e1578063975d71e21461090c5780639a7a23d6146109375780639c3b4fdc1461096057610375565b80638a8c523c146108745780638da5cb5b1461088b5780638ea5220f146108b657610375565b8063313ce567116102a05780636a486a8e1161023e57806370a082311161021857806370a08231146107cc578063715018a6146108095780637571336a146108205780637ab439831461084957610375565b80636a486a8e1461074d5780636b999053146107785780636ddd1713146107a157610375565b80634a62bb651161027a5780634a62bb65146106935780634ab736c0146106be5780634fbee193146106e757806366ca9b831461072457610375565b8063313ce56714610600578063395093511461062b57806349bd5a5e1461066857610375565b80631694505e1161030d5780631d777856116102e75780631d777856146105445780631fa07da51461056f57806323b872dd1461059857806327c8f835146105d557610375565b80631694505e146104c557806318160ddd146104f05780631816467f1461051b57610375565b806306fdde031161034957806306fdde03146103f7578063095ea7b31461042257806310d5de531461045f578063150de0bb1461049c57610375565b8062b8cf2a1461037a57806302dbd8f8146103a3578063047fc9aa146103cc57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c919061416f565b610d76565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906141ee565b610ea2565b005b3480156103d857600080fd5b506103e1610fa7565b6040516103ee919061423d565b60405180910390f35b34801561040357600080fd5b5061040c610fad565b60405161041991906142e0565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190614302565b61103f565b604051610456919061435d565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190614378565b61105d565b604051610493919061435d565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143a5565b61107d565b005b3480156104d157600080fd5b506104da611134565b6040516104e79190614431565b60405180910390f35b3480156104fc57600080fd5b50610505611158565b604051610512919061423d565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190614378565b611162565b005b34801561055057600080fd5b5061055961123d565b604051610566919061423d565b60405180910390f35b34801561057b57600080fd5b50610596600480360381019061059191906143a5565b611243565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061444c565b6112fa565b6040516105cc919061435d565b60405180910390f35b3480156105e157600080fd5b506105ea6113d3565b6040516105f791906144ae565b60405180910390f35b34801561060c57600080fd5b506106156113d9565b60405161062291906144e5565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190614302565b6113e2565b60405161065f919061435d565b60405180910390f35b34801561067457600080fd5b5061067d611495565b60405161068a91906144ae565b60405180910390f35b34801561069f57600080fd5b506106a86114b9565b6040516106b5919061435d565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061455b565b6114cc565b005b3480156106f357600080fd5b5061070e60048036038101906107099190614378565b6115ff565b60405161071b919061435d565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906141ee565b611655565b005b34801561075957600080fd5b50610762611759565b60405161076f919061423d565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a9190614378565b61175f565b005b3480156107ad57600080fd5b506107b6611848565b6040516107c3919061435d565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190614378565b61185b565b604051610800919061423d565b60405180910390f35b34801561081557600080fd5b5061081e6118a3565b005b34801561082c57600080fd5b50610847600480360381019061084291906145d4565b6119fb565b005b34801561085557600080fd5b5061085e611aed565b60405161086b919061423d565b60405180910390f35b34801561088057600080fd5b50610889611af3565b005b34801561089757600080fd5b506108a0611bfb565b6040516108ad91906144ae565b60405180910390f35b3480156108c257600080fd5b506108cb611c25565b6040516108d891906144ae565b60405180910390f35b3480156108ed57600080fd5b506108f6611c4b565b60405161090391906142e0565b60405180910390f35b34801561091857600080fd5b50610921611cdd565b60405161092e919061423d565b60405180910390f35b34801561094357600080fd5b5061095e600480360381019061095991906145d4565b611ce3565b005b34801561096c57600080fd5b50610975611e16565b604051610982919061423d565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614378565b611e1c565b6040516109bf919061435d565b60405180910390f35b3480156109d457600080fd5b506109dd611e3c565b6040516109ea919061423d565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906143a5565b611e42565b005b348015610a2857600080fd5b50610a31611ee3565b604051610a3e919061423d565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190614302565b611ee9565b604051610a7b919061435d565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa69190614302565b611fb6565b604051610ab8919061435d565b60405180910390f35b348015610acd57600080fd5b50610ad6611fd4565b604051610ae3919061423d565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e919061455b565b611fda565b005b348015610b2157600080fd5b50610b3c6004803603810190610b379190614378565b612116565b604051610b49919061435d565b60405180910390f35b348015610b5e57600080fd5b50610b67612136565b604051610b74919061435d565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f9190614378565b612149565b604051610bb1919061435d565b60405180910390f35b348015610bc657600080fd5b50610be16004803603810190610bdc91906145d4565b612169565b005b348015610bef57600080fd5b50610bf86122a9565b604051610c05919061435d565b60405180910390f35b348015610c1a57600080fd5b50610c236122bc565b604051610c30919061423d565b60405180910390f35b348015610c4557600080fd5b50610c4e6122c2565b604051610c5b919061423d565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c869190614614565b6122c8565b604051610c98919061423d565b60405180910390f35b348015610cad57600080fd5b50610cb661234f565b604051610cc3919061423d565b60405180910390f35b348015610cd857600080fd5b50610ce1612355565b604051610cee919061423d565b60405180910390f35b348015610d0357600080fd5b50610d0c61235b565b604051610d19919061423d565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d449190614378565b612361565b005b348015610d5757600080fd5b50610d60612527565b604051610d6d919061423d565b60405180910390f35b610d7e61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906146a0565b60405180910390fd5b60005b8151811015610e9e576001601b6000848481518110610e3257610e316146c0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e969061471e565b915050610e10565b5050565b610eaa61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f30906146a0565b60405180910390fd5b8160108190555080601181905550601154601054610f579190614766565b601281905550600f6012541115610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614808565b60405180910390fd5b5050565b60095481565b606060038054610fbc90614857565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe890614857565b80156110355780601f1061100a57610100808354040283529160200191611035565b820191906000526020600020905b81548152906001019060200180831161101857829003601f168201915b5050505050905090565b600061105361104c61258b565b8484612593565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b61108561258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906146a0565b60405180910390fd5b600181101561112257600080fd5b8060158190555061113161275c565b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b61116a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906146a0565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61124b61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906146a0565b60405180910390fd5b60018110156112e857600080fd5b806016819055506112f761275c565b50565b60006113078484846127c4565b6113c88461131361258b565b6113c38560405180606001604052806028815260200161544860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137961258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b600190509392505050565b61dead81565b60006006905090565b600061148b6113ef61258b565b84611486856001600061140061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b612593565b6001905092915050565b7f000000000000000000000000632658ade70951cadc6cd116b966c51f89ed522d81565b600a60149054906101000a900460ff1681565b6114d461258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a906146a0565b60405180910390fd5b60005b828290508110156115fa57601c6000848484818110611588576115876146c0565b5b905060200201602081019061159d9190614378565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905580806115f29061471e565b915050611566565b505050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61165d61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906146a0565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461170a9190614766565b600f81905550600f80541115611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906148d4565b60405180910390fd5b5050565b60125481565b61176761258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed906146a0565b60405180910390fd5b601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ab61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906146a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a0361258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906146a0565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611afb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b81906146a0565b60405180910390fd5b6001600d819055506009600e81905550600e54600d54611baa9190614766565b600f8190555060016010819055506009601181905550601154601054611bd09190614766565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611c5a90614857565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8690614857565b8015611cd35780601f10611ca857610100808354040283529160200191611cd3565b820191906000526020600020905b815481529060010190602001808311611cb657829003601f168201915b5050505050905090565b60165481565b611ceb61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d71906146a0565b60405180910390fd5b7f000000000000000000000000632658ade70951cadc6cd116b966c51f89ed522d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff90614966565b60405180910390fd5b611e128282613627565b5050565b600e5481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b611e4a61258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed0906146a0565b60405180910390fd5b8060178190555050565b60115481565b6000611fac611ef661258b565b84611fa7856040518060600160405280602581526020016154706025913960016000611f2061258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b612593565b6001905092915050565b6000611fca611fc361258b565b84846127c4565b6001905092915050565b60105481565b611fe261258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612071576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612068906146a0565b60405180910390fd5b60005b82829050811015612111576001601c6000858585818110612098576120976146c0565b5b90506020020160208101906120ad9190614378565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806121099061471e565b915050612074565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61217161258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f7906146a0565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161229d919061435d565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b60175481565b61236961258b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef906146a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e906149f8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600080828461253c9190614766565b905083811015612581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257890614a64565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614af6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266890614b88565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274f919061423d565b60405180910390a3505050565b606460165460095461276e9190614ba8565b6127789190614c31565b60068190555061271060056009546127909190614ba8565b61279a9190614c31565b60078190555060646015546009546127b29190614ba8565b6127bc9190614c31565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614d66565b60405180910390fd5b600081036128bb576128b6838360006136c8565b6135be565b600a60149054906101000a900460ff1615613116576128d8611bfb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129465750612916611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d25750600560149054906101000a900460ff16155b1561311557600a60159054906101000a900460ff16612b7457601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a8c5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ae05750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b345750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90614dd2565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c185750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614e64565b60405180910390fd5b600c60009054906101000a900460ff1615612e2c57612c74611bfb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cfb57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5357507f000000000000000000000000632658ade70951cadc6cd116b966c51f89ed522d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2b5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd090614f1c565b60405180910390fd5b60175443612de79190614766565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecf5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7657600654811115612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1090614fae565b60405180910390fd5b600854612f258361185b565b82612f309190614766565b1115612f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f689061501a565b60405180910390fd5b613114565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130195750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306857600654811115613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a906150ac565b60405180910390fd5b613113565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613112576008546130c58361185b565b826130d09190614766565b1115613111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131089061501a565b60405180910390fd5b5b5b5b5b5b60006131213061185b565b9050600060075482101590508080156131475750600560149054906101000a900460ff16155b801561315f5750600a60169054906101000a900460ff165b80156131b55750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132615750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132a5576001600560146101000a81548160ff02191690831515021790555061328961395b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061335b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561336557600090505b600081156135ae57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133c857506000601254115b15613462576133f560646133e760125488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050601254601054826134089190614ba8565b6134129190614c31565b601360008282546134239190614766565b925050819055506012546011548261343b9190614ba8565b6134459190614c31565b601460008282546134569190614766565b92505081905550613554565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134bd57506000600f54115b15613553576134ea60646134dc600f5488613a4490919063ffffffff16565b613abe90919063ffffffff16565b9050600f54600d54826134fd9190614ba8565b6135079190614c31565b601360008282546135189190614766565b92505081905550600f54600e54826135309190614ba8565b61353a9190614c31565b6014600082825461354b9190614766565b925050819055505b5b600081111561359f576135688730836136c8565b6000601354111561359e5761357f30601354613b08565b613587611158565b60098190555061359561275c565b60006013819055505b5b80856135ab91906150cc565b94505b6135b98787876136c8565b505050505b505050565b600083831115829061360b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360291906142e0565b60405180910390fd5b506000838561361a91906150cc565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372e90614cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379d90614d66565b60405180910390fd5b6137b1838383613cb5565b61381c81604051806060016040528060268152602001615422602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161394e919061423d565b60405180910390a3505050565b60006139663061185b565b90506000808203613978575050613a42565b60146007546139879190614ba8565b8211156139a057601460075461399d9190614ba8565b91505b6139a982613cba565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f790615131565b60006040518083038185875af1925050503d8060008114613a34576040519150601f19603f3d011682016040523d82523d6000602084013e613a39565b606091505b50508091505050505b565b6000808303613a565760009050613ab8565b60008284613a649190614ba8565b9050828482613a739190614c31565b14613ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aaa906151b8565b60405180910390fd5b809150505b92915050565b6000613b0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ef7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6e9061524a565b60405180910390fd5b613b8382600083613cb5565b613bee81604051806060016040528060228152602001615400602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c39092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4581600254613f5a90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ca9919061423d565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115613cd757613cd6613fce565b5b604051908082528060200260200182016040528015613d055781602001602082028036833780820191505090505b5090503081600081518110613d1d57613d1c6146c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de6919061527f565b81600181518110613dfa57613df96146c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e5f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612593565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ec19594939291906153a5565b600060405180830381600087803b158015613edb57600080fd5b505af1158015613eef573d6000803e3d6000fd5b505050505050565b60008083118290613f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3591906142e0565b60405180910390fd5b5060008385613f4d9190614c31565b9050809150509392505050565b6000613f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135c3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61400682613fbd565b810181811067ffffffffffffffff8211171561402557614024613fce565b5b80604052505050565b6000614038613fa4565b90506140448282613ffd565b919050565b600067ffffffffffffffff82111561406457614063613fce565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a58261407a565b9050919050565b6140b58161409a565b81146140c057600080fd5b50565b6000813590506140d2816140ac565b92915050565b60006140eb6140e684614049565b61402e565b9050808382526020820190506020840283018581111561410e5761410d614075565b5b835b81811015614137578061412388826140c3565b845260208401935050602081019050614110565b5050509392505050565b600082601f83011261415657614155613fb8565b5b81356141668482602086016140d8565b91505092915050565b60006020828403121561418557614184613fae565b5b600082013567ffffffffffffffff8111156141a3576141a2613fb3565b5b6141af84828501614141565b91505092915050565b6000819050919050565b6141cb816141b8565b81146141d657600080fd5b50565b6000813590506141e8816141c2565b92915050565b6000806040838503121561420557614204613fae565b5b6000614213858286016141d9565b9250506020614224858286016141d9565b9150509250929050565b614237816141b8565b82525050565b6000602082019050614252600083018461422e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614292578082015181840152602081019050614277565b838111156142a1576000848401525b50505050565b60006142b282614258565b6142bc8185614263565b93506142cc818560208601614274565b6142d581613fbd565b840191505092915050565b600060208201905081810360008301526142fa81846142a7565b905092915050565b6000806040838503121561431957614318613fae565b5b6000614327858286016140c3565b9250506020614338858286016141d9565b9150509250929050565b60008115159050919050565b61435781614342565b82525050565b6000602082019050614372600083018461434e565b92915050565b60006020828403121561438e5761438d613fae565b5b600061439c848285016140c3565b91505092915050565b6000602082840312156143bb576143ba613fae565b5b60006143c9848285016141d9565b91505092915050565b6000819050919050565b60006143f76143f26143ed8461407a565b6143d2565b61407a565b9050919050565b6000614409826143dc565b9050919050565b600061441b826143fe565b9050919050565b61442b81614410565b82525050565b60006020820190506144466000830184614422565b92915050565b60008060006060848603121561446557614464613fae565b5b6000614473868287016140c3565b9350506020614484868287016140c3565b9250506040614495868287016141d9565b9150509250925092565b6144a88161409a565b82525050565b60006020820190506144c3600083018461449f565b92915050565b600060ff82169050919050565b6144df816144c9565b82525050565b60006020820190506144fa60008301846144d6565b92915050565b600080fd5b60008083601f84011261451b5761451a613fb8565b5b8235905067ffffffffffffffff81111561453857614537614500565b5b60208301915083602082028301111561455457614553614075565b5b9250929050565b6000806020838503121561457257614571613fae565b5b600083013567ffffffffffffffff8111156145905761458f613fb3565b5b61459c85828601614505565b92509250509250929050565b6145b181614342565b81146145bc57600080fd5b50565b6000813590506145ce816145a8565b92915050565b600080604083850312156145eb576145ea613fae565b5b60006145f9858286016140c3565b925050602061460a858286016145bf565b9150509250929050565b6000806040838503121561462b5761462a613fae565b5b6000614639858286016140c3565b925050602061464a858286016140c3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061468a602083614263565b915061469582614654565b602082019050919050565b600060208201905081810360008301526146b98161467d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614729826141b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361475b5761475a6146ef565b5b600182019050919050565b6000614771826141b8565b915061477c836141b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b1576147b06146ef565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006147f2601d83614263565b91506147fd826147bc565b602082019050919050565b60006020820190508181036000830152614821816147e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061486f57607f821691505b60208210810361488257614881614828565b5b50919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006148be601d83614263565b91506148c982614888565b602082019050919050565b600060208201905081810360008301526148ed816148b1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614950603983614263565b915061495b826148f4565b604082019050919050565b6000602082019050818103600083015261497f81614943565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006149e2602683614263565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614a4e601b83614263565b9150614a5982614a18565b602082019050919050565b60006020820190508181036000830152614a7d81614a41565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ae0602483614263565b9150614aeb82614a84565b604082019050919050565b60006020820190508181036000830152614b0f81614ad3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b72602283614263565b9150614b7d82614b16565b604082019050919050565b60006020820190508181036000830152614ba181614b65565b9050919050565b6000614bb3826141b8565b9150614bbe836141b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bf757614bf66146ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c3c826141b8565b9150614c47836141b8565b925082614c5757614c56614c02565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614cbe602583614263565b9150614cc982614c62565b604082019050919050565b60006020820190508181036000830152614ced81614cb1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d50602383614263565b9150614d5b82614cf4565b604082019050919050565b60006020820190508181036000830152614d7f81614d43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614dbc601683614263565b9150614dc782614d86565b602082019050919050565b60006020820190508181036000830152614deb81614daf565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614e4e602383614263565b9150614e5982614df2565b604082019050919050565b60006020820190508181036000830152614e7d81614e41565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f06604983614263565b9150614f1182614e84565b606082019050919050565b60006020820190508181036000830152614f3581614ef9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f98603583614263565b9150614fa382614f3c565b604082019050919050565b60006020820190508181036000830152614fc781614f8b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615004601383614263565b915061500f82614fce565b602082019050919050565b6000602082019050818103600083015261503381614ff7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615096603683614263565b91506150a18261503a565b604082019050919050565b600060208201905081810360008301526150c581615089565b9050919050565b60006150d7826141b8565b91506150e2836141b8565b9250828210156150f5576150f46146ef565b5b828203905092915050565b600081905092915050565b50565b600061511b600083615100565b91506151268261510b565b600082019050919050565b600061513c8261510e565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151a2602183614263565b91506151ad82615146565b604082019050919050565b600060208201905081810360008301526151d181615195565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615234602183614263565b915061523f826151d8565b604082019050919050565b6000602082019050818103600083015261526381615227565b9050919050565b600081519050615279816140ac565b92915050565b60006020828403121561529557615294613fae565b5b60006152a38482850161526a565b91505092915050565b6000819050919050565b60006152d16152cc6152c7846152ac565b6143d2565b6141b8565b9050919050565b6152e1816152b6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61531c8161409a565b82525050565b600061532e8383615313565b60208301905092915050565b6000602082019050919050565b6000615352826152e7565b61535c81856152f2565b935061536783615303565b8060005b8381101561539857815161537f8882615322565b975061538a8361533a565b92505060018101905061536b565b5085935050505092915050565b600060a0820190506153ba600083018861422e565b6153c760208301876152d8565b81810360408301526153d98186615347565b90506153e8606083018561449f565b6153f5608083018461422e565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f884d6255d11a9e7d2d696053b6d43152768a2595245af7a1f029e6989192ba464736f6c634300080f0033

Deployed Bytecode Sourcemap

18771:11278:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22417:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23541:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19152:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6395:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7294:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19871:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22852:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18848:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6709:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23820:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19645:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22691:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7469:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18951:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6611:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7830:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18906:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19211:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29845:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24762:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23269:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19607:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22594:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19291:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6823:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12181:148;;;;;;;;;;;;;:::i;:::-;;23119:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19714:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22102:307;;;;;;;;;;;;;:::i;:::-;;11971:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19180:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6501:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19747:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24322:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19477:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20050:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19680:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23015:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19575:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8054:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6956:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19542:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29637:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19942:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19251:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20007:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23929:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19399:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19039:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19508:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7137:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19081:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19445:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19779;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12335:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19121:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22417:169;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22493:9:::1;22488:91;22512:5;:12;22508:1;:16;22488:91;;;22563:4;22546;:14;22551:5;22557:1;22551:8;;;;;;;;:::i;:::-;;;;;;;;22546:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;22526:3;;;;;:::i;:::-;;;;22488:91;;;;22417:169:::0;:::o;23541:273::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23644:8:::1;23630:11;:22;;;;23676:7;23663:10;:20;;;;23724:10;;23710:11;;:24;;;;:::i;:::-;23694:13;:40;;;;23770:2;23753:13;;:19;;23745:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23541:273:::0;;:::o;19152:21::-;;;;:::o;6395:100::-;6449:13;6482:5;6475:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6395:100;:::o;7294:169::-;7377:4;7394:39;7403:12;:10;:12::i;:::-;7417:7;7426:6;7394:8;:39::i;:::-;7451:4;7444:11;;7294:169;;;;:::o;19871:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;22852:157::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22943:1:::1;22933:6;:11;;22925:20;;;::::0;::::1;;22970:6;22956:11;:20;;;;22987:14;:12;:14::i;:::-;22852:157:::0;:::o;18848:51::-;;;:::o;6709:108::-;6770:7;6797:12;;6790:19;;6709:108;:::o;23820:103::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23906:9:::1;23894;;:21;;;;;;;;;;;;;;;;;;23820:103:::0;:::o;19645:28::-;;;;:::o;22691:155::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22781:1:::1;22771:6;:11;;22763:20;;;::::0;::::1;;22807:6;22794:10;:19;;;;22824:14;:12;:14::i;:::-;22691:155:::0;:::o;7469:355::-;7609:4;7626:36;7636:6;7644:9;7655:6;7626:9;:36::i;:::-;7673:121;7682:6;7690:12;:10;:12::i;:::-;7704:89;7742:6;7704:89;;;;;;;;;;;;;;;;;:11;:19;7716:6;7704:19;;;;;;;;;;;;;;;:33;7724:12;:10;:12::i;:::-;7704:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7673:8;:121::i;:::-;7812:4;7805:11;;7469:355;;;;;:::o;18951:53::-;18997:6;18951:53;:::o;6611:92::-;6669:5;6694:1;6687:8;;6611:92;:::o;7830:218::-;7918:4;7935:83;7944:12;:10;:12::i;:::-;7958:7;7967:50;8006:10;7967:11;:25;7979:12;:10;:12::i;:::-;7967:25;;;;;;;;;;;;;;;:34;7993:7;7967:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7935:8;:83::i;:::-;8036:4;8029:11;;7830:218;;;;:::o;18906:38::-;;;:::o;19211:33::-;;;;;;;;;;;;;:::o;29845:201::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29934:9:::1;29930:109;29953:8;;:15;;29949:1;:19;29930:109;;;30002:12;:25;30015:8;;30024:1;30015:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30002:25;;;;;;;;;;;;;;;;29995:32;;;;;;;;;;;29970:3;;;;;:::i;:::-;;;;29930:109;;;;29845:201:::0;;:::o;24762:125::-;24827:4;24851:19;:28;24871:7;24851:28;;;;;;;;;;;;;;;;;;;;;;;;;24844:35;;24762:125;;;:::o;23269:266::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23370:8:::1;23357:10;:21;;;;23401:7;23389:9;:19;;;;23447:9;;23434:10;;:22;;;;:::i;:::-;23419:12;:37;;;;23491:2;23475:12:::0;::::1;:18;;23467:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23269:266:::0;;:::o;19607:28::-;;;;:::o;22594:91::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22665:4:::1;:12;22670:6;22665:12;;;;;;;;;;;;;;;;22658:19;;;;;;;;;;;22594:91:::0;:::o;19291:30::-;;;;;;;;;;;;;:::o;6823:127::-;6897:7;6924:9;:18;6934:7;6924:18;;;;;;;;;;;;;;;;6917:25;;6823:127;;;:::o;12181:148::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12288:1:::1;12251:40;;12272:6;;;;;;;;;;;12251:40;;;;;;;;;;;;12319:1;12302:6;;:19;;;;;;;;;;;;;;;;;;12181:148::o:0;23119:144::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23251:4:::1;23209:31;:39;23241:6;23209:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23119:144:::0;;:::o;19714:26::-;;;;:::o;22102:307::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22170:1:::1;22157:10;:14;;;;22194:1;22182:9;:13;;;;22234:9;;22221:10;;:22;;;;:::i;:::-;22206:12;:37;;;;22268:1;22254:11;:15;;;;22293:1;22280:10;:14;;;;22335:10;;22321:11;;:24;;;;:::i;:::-;22305:13;:40;;;;22369:1;22356:10;:14;;;;22397:4;22381:13;;:20;;;;;;;;;;;;;;;;;;22102:307::o:0;11971:79::-;12009:7;12036:6;;;;;;;;;;;12029:13;;11971:79;:::o;19180:24::-;;;;;;;;;;;;;:::o;6501:104::-;6557:13;6590:7;6583:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6501:104;:::o;19747:25::-;;;;:::o;24322:242::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24429:13:::1;24421:21;;:4;:21;;::::0;24413:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24515:41;24544:4;24550:5;24515:28;:41::i;:::-;24322:242:::0;;:::o;19477:24::-;;;;:::o;20050:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;19680:27::-;;;;:::o;23015:98::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23099:6:::1;23086:10;:19;;;;23015:98:::0;:::o;19575:25::-;;;;:::o;8054:269::-;8147:4;8164:129;8173:12;:10;:12::i;:::-;8187:7;8196:96;8235:15;8196:96;;;;;;;;;;;;;;;;;:11;:25;8208:12;:10;:12::i;:::-;8196:25;;;;;;;;;;;;;;;:34;8222:7;8196:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8164:8;:129::i;:::-;8311:4;8304:11;;8054:269;;;;:::o;6956:175::-;7042:4;7059:42;7069:12;:10;:12::i;:::-;7083:9;7094:6;7059:9;:42::i;:::-;7119:4;7112:11;;6956:175;;;;:::o;19542:26::-;;;;:::o;29637:200::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29725:9:::1;29721:109;29744:8;;:15;;29740:1;:19;29721:109;;;29814:4;29786:12;:25;29799:8;;29808:1;29799:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29786:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;29761:3;;;;;:::i;:::-;;;;29721:109;;;;29637:200:::0;;:::o;19942:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;19251:33::-;;;;;;;;;;;;;:::o;20007:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;23929:182::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24045:8:::1;24014:19;:28;24034:7;24014:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24085:7;24069:34;;;24094:8;24069:34;;;;;;:::i;:::-;;;;;;;;23929:182:::0;;:::o;19399:39::-;;;;;;;;;;;;;:::o;19039:35::-;;;;:::o;19508:27::-;;;;:::o;7137:151::-;7226:7;7253:11;:18;7265:5;7253:18;;;;;;;;;;;;;;;:27;7272:7;7253:27;;;;;;;;;;;;;;;;7246:34;;7137:151;;;;:::o;19081:33::-;;;;:::o;19445:25::-;;;;:::o;19779:::-;;;;:::o;12335:244::-;12106:12;:10;:12::i;:::-;12096:22;;:6;;;;;;;;;;;:22;;;12088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12444:1:::1;12424:22;;:8;:22;;::::0;12416:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12534:8;12505:38;;12526:6;;;;;;;;;;;12505:38;;;;;;;;;;;;12563:8;12554:6;;:17;;;;;;;;;;;;;;;;;;12335:244:::0;:::o;19121:24::-;;;;:::o;10242:179::-;10300:7;10320:9;10336:1;10332;:5;;;;:::i;:::-;10320:17;;10361:1;10356;:6;;10348:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10412:1;10405:8;;;10242:179;;;;:::o;1738:98::-;1791:7;1818:10;1811:17;;1738:98;:::o;9704:378::-;9857:1;9840:19;;:5;:19;;;9832:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9938:1;9919:21;;:7;:21;;;9911:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10020:6;9990:11;:18;10002:5;9990:18;;;;;;;;;;;;;;;:27;10009:7;9990:27;;;;;;;;;;;;;;;:36;;;;10058:7;10042:32;;10051:5;10042:32;;;10067:6;10042:32;;;;;;:::i;:::-;;;;;;;;9704:378;;;:::o;24117:199::-;24205:3;24192:10;;24183:6;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;24160:20;:48;;;;24253:5;24249:1;24240:6;;:10;;;;:::i;:::-;:18;;;;:::i;:::-;24219;:39;;;;24305:3;24291:11;;24282:6;;:20;;;;:::i;:::-;:26;;;;:::i;:::-;24270:9;:38;;;;24117:199::o;24893:3810::-;25041:1;25025:18;;:4;:18;;;25017:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25118:1;25104:16;;:2;:16;;;25096:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25185:1;25175:6;:11;25172:92;;25203:28;25219:4;25225:2;25229:1;25203:15;:28::i;:::-;25246:7;;25172:92;25277:14;;;;;;;;;;;25274:1773;;;25337:7;:5;:7::i;:::-;25329:15;;:4;:15;;;;:49;;;;;25371:7;:5;:7::i;:::-;25365:13;;:2;:13;;;;25329:49;:86;;;;;25413:1;25399:16;;:2;:16;;;;25329:86;:128;;;;;25450:6;25436:21;;:2;:21;;;;25329:128;:158;;;;;25479:8;;;;;;;;;;;25478:9;25329:158;25307:1729;;;25525:13;;;;;;;;;;;25521:190;;25570:19;:25;25590:4;25570:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25599:19;:23;25619:2;25599:23;;;;;;;;;;;;;;;;;;;;;;;;;25570:52;:74;;;;25626:12;:18;25639:4;25626:18;;;;;;;;;;;;;;;;;;;;;;;;;25570:74;:94;;;;25648:12;:16;25661:2;25648:16;;;;;;;;;;;;;;;;;;;;;;;;;25570:94;25562:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;25521:190;25754:4;:10;25759:4;25754:10;;;;;;;;;;;;;;;;;;;;;;;;;25753:11;:24;;;;;25769:4;:8;25774:2;25769:8;;;;;;;;;;;;;;;;;;;;;;;;;25768:9;25753:24;25745:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;25840:20;;;;;;;;;;;25836:436;;;25894:7;:5;:7::i;:::-;25888:13;;:2;:13;;;;:47;;;;;25919:15;25905:30;;:2;:30;;;;25888:47;:79;;;;;25953:13;25939:28;;:2;:28;;;;25888:79;25884:369;;;26045:12;26003:28;:39;26032:9;26003:39;;;;;;;;;;;;;;;;:54;25995:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26219:10;;26204:12;:25;;;;:::i;:::-;26162:28;:39;26191:9;26162:39;;;;;;;;;;;;;;;:67;;;;25884:369;25836:436;26294:25;:31;26320:4;26294:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;26330:31;:35;26362:2;26330:35;;;;;;;;;;;;;;;;;;;;;;;;;26329:36;26294:71;26290:731;;;26412:20;;26402:6;:30;;26394:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;26551:9;;26534:13;26544:2;26534:9;:13::i;:::-;26525:6;:22;;;;:::i;:::-;:35;;26517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26290:731;;;26631:25;:29;26657:2;26631:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;26665:31;:37;26697:4;26665:37;;;;;;;;;;;;;;;;;;;;;;;;;26664:38;26631:71;26627:394;;;26749:20;;26739:6;:30;;26731:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;26627:394;;;26875:31;:35;26907:2;26875:35;;;;;;;;;;;;;;;;;;;;;;;;;26871:150;;26968:9;;26951:13;26961:2;26951:9;:13::i;:::-;26942:6;:22;;;;:::i;:::-;:35;;26934:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26871:150;26627:394;26290:731;25307:1729;25274:1773;27057:28;27088:24;27106:4;27088:9;:24::i;:::-;27057:55;;27123:12;27162:18;;27138:20;:42;;27123:57;;27209:7;:33;;;;;27234:8;;;;;;;;;;;27233:9;27209:33;:61;;;;;27259:11;;;;;;;;;;;27209:61;:110;;;;;27288:25;:31;27314:4;27288:31;;;;;;;;;;;;;;;;;;;;;;;;;27287:32;27209:110;:153;;;;;27337:19;:25;27357:4;27337:25;;;;;;;;;;;;;;;;;;;;;;;;;27336:26;27209:153;:194;;;;;27380:19;:23;27400:2;27380:23;;;;;;;;;;;;;;;;;;;;;;;;;27379:24;27209:194;27191:322;;;27441:4;27430:8;;:15;;;;;;;;;;;;;;;;;;27460:10;:8;:10::i;:::-;27496:5;27485:8;;:16;;;;;;;;;;;;;;;;;;27191:322;27523:12;27539:8;;;;;;;;;;;27538:9;27523:24;;27561:19;:25;27581:4;27561:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27590:19;:23;27610:2;27590:23;;;;;;;;;;;;;;;;;;;;;;;;;27561:52;27558:99;;;27640:5;27630:15;;27558:99;27667:12;27697:7;27694:958;;;27724:25;:29;27750:2;27724:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27773:1;27757:13;;:17;27724:50;27720:547;;;27801:34;27831:3;27801:25;27812:13;;27801:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;27794:41;;27892:13;;27878:11;;27871:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;27854:13;;:51;;;;;;;:::i;:::-;;;;;;;;27960:13;;27947:10;;27940:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;27924:12;;:49;;;;;;;:::i;:::-;;;;;;;;27720:547;;;28011:25;:31;28037:4;28011:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;28061:1;28046:12;;:16;28011:51;28008:259;;;28087:33;28116:3;28087:24;28098:12;;28087:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;28080:40;;28173:12;;28160:10;;28153:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;28136:13;;:49;;;;;;;:::i;:::-;;;;;;;;28239:12;;28227:9;;28220:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;28204:12;;:47;;;;;;;:::i;:::-;;;;;;;;28008:259;27720:547;28291:1;28284:4;:8;28281:334;;;28316:42;28332:4;28346;28353;28316:15;:42::i;:::-;28397:1;28381:13;;:17;28377:223;;;28423:35;28437:4;28444:13;;28423:5;:35::i;:::-;28490:13;:11;:13::i;:::-;28481:6;:22;;;;28526:14;:12;:14::i;:::-;28579:1;28563:13;:17;;;;28377:223;28281:334;28636:4;28626:14;;;;;:::i;:::-;;;27694:958;28662:33;28678:4;28684:2;28688:6;28662:15;:33::i;:::-;25006:3697;;;;24893:3810;;;;:::o;10569:190::-;10655:7;10688:1;10683;:6;;10691:12;10675:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10715:9;10731:1;10727;:5;;;;:::i;:::-;10715:17;;10750:1;10743:8;;;10569:190;;;;;:::o;24570:186::-;24687:5;24653:25;:31;24679:4;24653:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24742:5;24708:40;;24736:4;24708:40;;;;;;;;;;;;24570:186;;:::o;8329:569::-;8487:1;8469:20;;:6;:20;;;8461:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8571:1;8550:23;;:9;:23;;;8542:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8624:47;8645:6;8653:9;8664:6;8624:20;:47::i;:::-;8702:71;8724:6;8702:71;;;;;;;;;;;;;;;;;:9;:17;8712:6;8702:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;8682:9;:17;8692:6;8682:17;;;;;;;;;;;;;;;:91;;;;8807:32;8832:6;8807:9;:20;8817:9;8807:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8784:9;:20;8794:9;8784:20;;;;;;;;;;;;;;;:55;;;;8872:9;8855:35;;8864:6;8855:35;;;8883:6;8855:35;;;;;;:::i;:::-;;;;;;;;8329:569;;;:::o;29187:438::-;29226:23;29252:24;29270:4;29252:9;:24::i;:::-;29226:50;;29287:12;29332:1;29313:15;:20;29310:34;;29336:7;;;;29310:34;29396:2;29375:18;;:23;;;;:::i;:::-;29357:15;:41;29354:111;;;29451:2;29430:18;;:23;;;;:::i;:::-;29412:41;;29354:111;29475:33;29492:15;29475:16;:33::i;:::-;29535:1;29520:12;:16;;;;29568:9;;;;;;;;;;;29560:23;;29591:21;29560:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29547:70;;;;;29215:410;;29187:438;:::o;10765:246::-;10823:7;10852:1;10847;:6;10843:47;;10877:1;10870:8;;;;10843:47;10900:9;10916:1;10912;:5;;;;:::i;:::-;10900:17;;10945:1;10940;10936;:5;;;;:::i;:::-;:10;10928:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11002:1;10995:8;;;10765:246;;;;;:::o;11017:132::-;11075:7;11102:39;11106:1;11109;11102:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11095:46;;11017:132;;;;:::o;9284:414::-;9387:1;9368:21;;:7;:21;;;9360:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9438:49;9459:7;9476:1;9480:6;9438:20;:49::i;:::-;9519:68;9542:6;9519:68;;;;;;;;;;;;;;;;;:9;:18;9529:7;9519:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;9498:9;:18;9508:7;9498:18;;;;;;;;;;;;;;;:89;;;;9613:24;9630:6;9613:12;;:16;;:24;;;;:::i;:::-;9598:12;:39;;;;9679:1;9653:37;;9662:7;9653:37;;;9683:6;9653:37;;;;;;:::i;:::-;;;;;;;;9284:414;;:::o;10088:125::-;;;;:::o;28709:472::-;28775:21;28813:1;28799:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28775:40;;28844:4;28826;28831:1;28826:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28870:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28860:4;28865:1;28860:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28903:62;28920:4;28935:15;28953:11;28903:8;:62::i;:::-;28976:15;:66;;;29057:11;29083:1;29100:4;29127;29147:15;28976:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28764:417;28709:472;:::o;11155:189::-;11241:7;11273:1;11269;:5;11276:12;11261:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11300:9;11316:1;11312;:5;;;;:::i;:::-;11300:17;;11335:1;11328:8;;;11155:189;;;;;:::o;10427:136::-;10485:7;10512:43;10516:1;10519;10512:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10505:50;;10427:136;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:474::-;4215:6;4223;4272:2;4260:9;4251:7;4247:23;4243:32;4240:119;;;4278:79;;:::i;:::-;4240:119;4398:1;4423:53;4468:7;4459:6;4448:9;4444:22;4423:53;:::i;:::-;4413:63;;4369:117;4525:2;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4496:118;4147:474;;;;;:::o;4627:118::-;4714:24;4732:5;4714:24;:::i;:::-;4709:3;4702:37;4627:118;;:::o;4751:222::-;4844:4;4882:2;4871:9;4867:18;4859:26;;4895:71;4963:1;4952:9;4948:17;4939:6;4895:71;:::i;:::-;4751:222;;;;:::o;4979:99::-;5031:6;5065:5;5059:12;5049:22;;4979:99;;;:::o;5084:169::-;5168:11;5202:6;5197:3;5190:19;5242:4;5237:3;5233:14;5218:29;;5084:169;;;;:::o;5259:307::-;5327:1;5337:113;5351:6;5348:1;5345:13;5337:113;;;5436:1;5431:3;5427:11;5421:18;5417:1;5412:3;5408:11;5401:39;5373:2;5370:1;5366:10;5361:15;;5337:113;;;5468:6;5465:1;5462:13;5459:101;;;5548:1;5539:6;5534:3;5530:16;5523:27;5459:101;5308:258;5259:307;;;:::o;5572:364::-;5660:3;5688:39;5721:5;5688:39;:::i;:::-;5743:71;5807:6;5802:3;5743:71;:::i;:::-;5736:78;;5823:52;5868:6;5863:3;5856:4;5849:5;5845:16;5823:52;:::i;:::-;5900:29;5922:6;5900:29;:::i;:::-;5895:3;5891:39;5884:46;;5664:272;5572:364;;;;:::o;5942:313::-;6055:4;6093:2;6082:9;6078:18;6070:26;;6142:9;6136:4;6132:20;6128:1;6117:9;6113:17;6106:47;6170:78;6243:4;6234:6;6170:78;:::i;:::-;6162:86;;5942:313;;;;:::o;6261:474::-;6329:6;6337;6386:2;6374:9;6365:7;6361:23;6357:32;6354:119;;;6392:79;;:::i;:::-;6354:119;6512:1;6537:53;6582:7;6573:6;6562:9;6558:22;6537:53;:::i;:::-;6527:63;;6483:117;6639:2;6665:53;6710:7;6701:6;6690:9;6686:22;6665:53;:::i;:::-;6655:63;;6610:118;6261:474;;;;;:::o;6741:90::-;6775:7;6818:5;6811:13;6804:21;6793:32;;6741:90;;;:::o;6837:109::-;6918:21;6933:5;6918:21;:::i;:::-;6913:3;6906:34;6837:109;;:::o;6952:210::-;7039:4;7077:2;7066:9;7062:18;7054:26;;7090:65;7152:1;7141:9;7137:17;7128:6;7090:65;:::i;:::-;6952:210;;;;:::o;7168:329::-;7227:6;7276:2;7264:9;7255:7;7251:23;7247:32;7244:119;;;7282:79;;:::i;:::-;7244:119;7402:1;7427:53;7472:7;7463:6;7452:9;7448:22;7427:53;:::i;:::-;7417:63;;7373:117;7168:329;;;;:::o;7503:::-;7562:6;7611:2;7599:9;7590:7;7586:23;7582:32;7579:119;;;7617:79;;:::i;:::-;7579:119;7737:1;7762:53;7807:7;7798:6;7787:9;7783:22;7762:53;:::i;:::-;7752:63;;7708:117;7503:329;;;;:::o;7838:60::-;7866:3;7887:5;7880:12;;7838:60;;;:::o;7904:142::-;7954:9;7987:53;8005:34;8014:24;8032:5;8014:24;:::i;:::-;8005:34;:::i;:::-;7987:53;:::i;:::-;7974:66;;7904:142;;;:::o;8052:126::-;8102:9;8135:37;8166:5;8135:37;:::i;:::-;8122:50;;8052:126;;;:::o;8184:153::-;8261:9;8294:37;8325:5;8294:37;:::i;:::-;8281:50;;8184:153;;;:::o;8343:185::-;8457:64;8515:5;8457:64;:::i;:::-;8452:3;8445:77;8343:185;;:::o;8534:276::-;8654:4;8692:2;8681:9;8677:18;8669:26;;8705:98;8800:1;8789:9;8785:17;8776:6;8705:98;:::i;:::-;8534:276;;;;:::o;8816:619::-;8893:6;8901;8909;8958:2;8946:9;8937:7;8933:23;8929:32;8926:119;;;8964:79;;:::i;:::-;8926:119;9084:1;9109:53;9154:7;9145:6;9134:9;9130:22;9109:53;:::i;:::-;9099:63;;9055:117;9211:2;9237:53;9282:7;9273:6;9262:9;9258:22;9237:53;:::i;:::-;9227:63;;9182:118;9339:2;9365:53;9410:7;9401:6;9390:9;9386:22;9365:53;:::i;:::-;9355:63;;9310:118;8816:619;;;;;:::o;9441:118::-;9528:24;9546:5;9528:24;:::i;:::-;9523:3;9516:37;9441:118;;:::o;9565:222::-;9658:4;9696:2;9685:9;9681:18;9673:26;;9709:71;9777:1;9766:9;9762:17;9753:6;9709:71;:::i;:::-;9565:222;;;;:::o;9793:86::-;9828:7;9868:4;9861:5;9857:16;9846:27;;9793:86;;;:::o;9885:112::-;9968:22;9984:5;9968:22;:::i;:::-;9963:3;9956:35;9885:112;;:::o;10003:214::-;10092:4;10130:2;10119:9;10115:18;10107:26;;10143:67;10207:1;10196:9;10192:17;10183:6;10143:67;:::i;:::-;10003:214;;;;:::o;10223:117::-;10332:1;10329;10322:12;10363:568;10436:8;10446:6;10496:3;10489:4;10481:6;10477:17;10473:27;10463:122;;10504:79;;:::i;:::-;10463:122;10617:6;10604:20;10594:30;;10647:18;10639:6;10636:30;10633:117;;;10669:79;;:::i;:::-;10633:117;10783:4;10775:6;10771:17;10759:29;;10837:3;10829:4;10821:6;10817:17;10807:8;10803:32;10800:41;10797:128;;;10844:79;;:::i;:::-;10797:128;10363:568;;;;;:::o;10937:559::-;11023:6;11031;11080:2;11068:9;11059:7;11055:23;11051:32;11048:119;;;11086:79;;:::i;:::-;11048:119;11234:1;11223:9;11219:17;11206:31;11264:18;11256:6;11253:30;11250:117;;;11286:79;;:::i;:::-;11250:117;11399:80;11471:7;11462:6;11451:9;11447:22;11399:80;:::i;:::-;11381:98;;;;11177:312;10937:559;;;;;:::o;11502:116::-;11572:21;11587:5;11572:21;:::i;:::-;11565:5;11562:32;11552:60;;11608:1;11605;11598:12;11552:60;11502:116;:::o;11624:133::-;11667:5;11705:6;11692:20;11683:29;;11721:30;11745:5;11721:30;:::i;:::-;11624:133;;;;:::o;11763:468::-;11828:6;11836;11885:2;11873:9;11864:7;11860:23;11856:32;11853:119;;;11891:79;;:::i;:::-;11853:119;12011:1;12036:53;12081:7;12072:6;12061:9;12057:22;12036:53;:::i;:::-;12026:63;;11982:117;12138:2;12164:50;12206:7;12197:6;12186:9;12182:22;12164:50;:::i;:::-;12154:60;;12109:115;11763:468;;;;;:::o;12237:474::-;12305:6;12313;12362:2;12350:9;12341:7;12337:23;12333:32;12330:119;;;12368:79;;:::i;:::-;12330:119;12488:1;12513:53;12558:7;12549:6;12538:9;12534:22;12513:53;:::i;:::-;12503:63;;12459:117;12615:2;12641:53;12686:7;12677:6;12666:9;12662:22;12641:53;:::i;:::-;12631:63;;12586:118;12237:474;;;;;:::o;12717:182::-;12857:34;12853:1;12845:6;12841:14;12834:58;12717:182;:::o;12905:366::-;13047:3;13068:67;13132:2;13127:3;13068:67;:::i;:::-;13061:74;;13144:93;13233:3;13144:93;:::i;:::-;13262:2;13257:3;13253:12;13246:19;;12905:366;;;:::o;13277:419::-;13443:4;13481:2;13470:9;13466:18;13458:26;;13530:9;13524:4;13520:20;13516:1;13505:9;13501:17;13494:47;13558:131;13684:4;13558:131;:::i;:::-;13550:139;;13277:419;;;:::o;13702:180::-;13750:77;13747:1;13740:88;13847:4;13844:1;13837:15;13871:4;13868:1;13861:15;13888:180;13936:77;13933:1;13926:88;14033:4;14030:1;14023:15;14057:4;14054:1;14047:15;14074:233;14113:3;14136:24;14154:5;14136:24;:::i;:::-;14127:33;;14182:66;14175:5;14172:77;14169:103;;14252:18;;:::i;:::-;14169:103;14299:1;14292:5;14288:13;14281:20;;14074:233;;;:::o;14313:305::-;14353:3;14372:20;14390:1;14372:20;:::i;:::-;14367:25;;14406:20;14424:1;14406:20;:::i;:::-;14401:25;;14560:1;14492:66;14488:74;14485:1;14482:81;14479:107;;;14566:18;;:::i;:::-;14479:107;14610:1;14607;14603:9;14596:16;;14313:305;;;;:::o;14624:179::-;14764:31;14760:1;14752:6;14748:14;14741:55;14624:179;:::o;14809:366::-;14951:3;14972:67;15036:2;15031:3;14972:67;:::i;:::-;14965:74;;15048:93;15137:3;15048:93;:::i;:::-;15166:2;15161:3;15157:12;15150:19;;14809:366;;;:::o;15181:419::-;15347:4;15385:2;15374:9;15370:18;15362:26;;15434:9;15428:4;15424:20;15420:1;15409:9;15405:17;15398:47;15462:131;15588:4;15462:131;:::i;:::-;15454:139;;15181:419;;;:::o;15606:180::-;15654:77;15651:1;15644:88;15751:4;15748:1;15741:15;15775:4;15772:1;15765:15;15792:320;15836:6;15873:1;15867:4;15863:12;15853:22;;15920:1;15914:4;15910:12;15941:18;15931:81;;15997:4;15989:6;15985:17;15975:27;;15931:81;16059:2;16051:6;16048:14;16028:18;16025:38;16022:84;;16078:18;;:::i;:::-;16022:84;15843:269;15792:320;;;:::o;16118:179::-;16258:31;16254:1;16246:6;16242:14;16235:55;16118:179;:::o;16303:366::-;16445:3;16466:67;16530:2;16525:3;16466:67;:::i;:::-;16459:74;;16542:93;16631:3;16542:93;:::i;:::-;16660:2;16655:3;16651:12;16644:19;;16303:366;;;:::o;16675:419::-;16841:4;16879:2;16868:9;16864:18;16856:26;;16928:9;16922:4;16918:20;16914:1;16903:9;16899:17;16892:47;16956:131;17082:4;16956:131;:::i;:::-;16948:139;;16675:419;;;:::o;17100:244::-;17240:34;17236:1;17228:6;17224:14;17217:58;17309:27;17304:2;17296:6;17292:15;17285:52;17100:244;:::o;17350:366::-;17492:3;17513:67;17577:2;17572:3;17513:67;:::i;:::-;17506:74;;17589:93;17678:3;17589:93;:::i;:::-;17707:2;17702:3;17698:12;17691:19;;17350:366;;;:::o;17722:419::-;17888:4;17926:2;17915:9;17911:18;17903:26;;17975:9;17969:4;17965:20;17961:1;17950:9;17946:17;17939:47;18003:131;18129:4;18003:131;:::i;:::-;17995:139;;17722:419;;;:::o;18147:225::-;18287:34;18283:1;18275:6;18271:14;18264:58;18356:8;18351:2;18343:6;18339:15;18332:33;18147:225;:::o;18378:366::-;18520:3;18541:67;18605:2;18600:3;18541:67;:::i;:::-;18534:74;;18617:93;18706:3;18617:93;:::i;:::-;18735:2;18730:3;18726:12;18719:19;;18378:366;;;:::o;18750:419::-;18916:4;18954:2;18943:9;18939:18;18931:26;;19003:9;18997:4;18993:20;18989:1;18978:9;18974:17;18967:47;19031:131;19157:4;19031:131;:::i;:::-;19023:139;;18750:419;;;:::o;19175:177::-;19315:29;19311:1;19303:6;19299:14;19292:53;19175:177;:::o;19358:366::-;19500:3;19521:67;19585:2;19580:3;19521:67;:::i;:::-;19514:74;;19597:93;19686:3;19597:93;:::i;:::-;19715:2;19710:3;19706:12;19699:19;;19358:366;;;:::o;19730:419::-;19896:4;19934:2;19923:9;19919:18;19911:26;;19983:9;19977:4;19973:20;19969:1;19958:9;19954:17;19947:47;20011:131;20137:4;20011:131;:::i;:::-;20003:139;;19730:419;;;:::o;20155:223::-;20295:34;20291:1;20283:6;20279:14;20272:58;20364:6;20359:2;20351:6;20347:15;20340:31;20155:223;:::o;20384:366::-;20526:3;20547:67;20611:2;20606:3;20547:67;:::i;:::-;20540:74;;20623:93;20712:3;20623:93;:::i;:::-;20741:2;20736:3;20732:12;20725:19;;20384:366;;;:::o;20756:419::-;20922:4;20960:2;20949:9;20945:18;20937:26;;21009:9;21003:4;20999:20;20995:1;20984:9;20980:17;20973:47;21037:131;21163:4;21037:131;:::i;:::-;21029:139;;20756:419;;;:::o;21181:221::-;21321:34;21317:1;21309:6;21305:14;21298:58;21390:4;21385:2;21377:6;21373:15;21366:29;21181:221;:::o;21408:366::-;21550:3;21571:67;21635:2;21630:3;21571:67;:::i;:::-;21564:74;;21647:93;21736:3;21647:93;:::i;:::-;21765:2;21760:3;21756:12;21749:19;;21408:366;;;:::o;21780:419::-;21946:4;21984:2;21973:9;21969:18;21961:26;;22033:9;22027:4;22023:20;22019:1;22008:9;22004:17;21997:47;22061:131;22187:4;22061:131;:::i;:::-;22053:139;;21780:419;;;:::o;22205:348::-;22245:7;22268:20;22286:1;22268:20;:::i;:::-;22263:25;;22302:20;22320:1;22302:20;:::i;:::-;22297:25;;22490:1;22422:66;22418:74;22415:1;22412:81;22407:1;22400:9;22393:17;22389:105;22386:131;;;22497:18;;:::i;:::-;22386:131;22545:1;22542;22538:9;22527:20;;22205:348;;;;:::o;22559:180::-;22607:77;22604:1;22597:88;22704:4;22701:1;22694:15;22728:4;22725:1;22718:15;22745:185;22785:1;22802:20;22820:1;22802:20;:::i;:::-;22797:25;;22836:20;22854:1;22836:20;:::i;:::-;22831:25;;22875:1;22865:35;;22880:18;;:::i;:::-;22865:35;22922:1;22919;22915:9;22910:14;;22745:185;;;;:::o;22936:224::-;23076:34;23072:1;23064:6;23060:14;23053:58;23145:7;23140:2;23132:6;23128:15;23121:32;22936:224;:::o;23166:366::-;23308:3;23329:67;23393:2;23388:3;23329:67;:::i;:::-;23322:74;;23405:93;23494:3;23405:93;:::i;:::-;23523:2;23518:3;23514:12;23507:19;;23166:366;;;:::o;23538:419::-;23704:4;23742:2;23731:9;23727:18;23719:26;;23791:9;23785:4;23781:20;23777:1;23766:9;23762:17;23755:47;23819:131;23945:4;23819:131;:::i;:::-;23811:139;;23538:419;;;:::o;23963:222::-;24103:34;24099:1;24091:6;24087:14;24080:58;24172:5;24167:2;24159:6;24155:15;24148:30;23963:222;:::o;24191:366::-;24333:3;24354:67;24418:2;24413:3;24354:67;:::i;:::-;24347:74;;24430:93;24519:3;24430:93;:::i;:::-;24548:2;24543:3;24539:12;24532:19;;24191:366;;;:::o;24563:419::-;24729:4;24767:2;24756:9;24752:18;24744:26;;24816:9;24810:4;24806:20;24802:1;24791:9;24787:17;24780:47;24844:131;24970:4;24844:131;:::i;:::-;24836:139;;24563:419;;;:::o;24988:172::-;25128:24;25124:1;25116:6;25112:14;25105:48;24988:172;:::o;25166:366::-;25308:3;25329:67;25393:2;25388:3;25329:67;:::i;:::-;25322:74;;25405:93;25494:3;25405:93;:::i;:::-;25523:2;25518:3;25514:12;25507:19;;25166:366;;;:::o;25538:419::-;25704:4;25742:2;25731:9;25727:18;25719:26;;25791:9;25785:4;25781:20;25777:1;25766:9;25762:17;25755:47;25819:131;25945:4;25819:131;:::i;:::-;25811:139;;25538:419;;;:::o;25963:222::-;26103:34;26099:1;26091:6;26087:14;26080:58;26172:5;26167:2;26159:6;26155:15;26148:30;25963:222;:::o;26191:366::-;26333:3;26354:67;26418:2;26413:3;26354:67;:::i;:::-;26347:74;;26430:93;26519:3;26430:93;:::i;:::-;26548:2;26543:3;26539:12;26532:19;;26191:366;;;:::o;26563:419::-;26729:4;26767:2;26756:9;26752:18;26744:26;;26816:9;26810:4;26806:20;26802:1;26791:9;26787:17;26780:47;26844:131;26970:4;26844:131;:::i;:::-;26836:139;;26563:419;;;:::o;26988:297::-;27128:34;27124:1;27116:6;27112:14;27105:58;27197:34;27192:2;27184:6;27180:15;27173:59;27266:11;27261:2;27253:6;27249:15;27242:36;26988:297;:::o;27291:366::-;27433:3;27454:67;27518:2;27513:3;27454:67;:::i;:::-;27447:74;;27530:93;27619:3;27530:93;:::i;:::-;27648:2;27643:3;27639:12;27632:19;;27291:366;;;:::o;27663:419::-;27829:4;27867:2;27856:9;27852:18;27844:26;;27916:9;27910:4;27906:20;27902:1;27891:9;27887:17;27880:47;27944:131;28070:4;27944:131;:::i;:::-;27936:139;;27663:419;;;:::o;28088:240::-;28228:34;28224:1;28216:6;28212:14;28205:58;28297:23;28292:2;28284:6;28280:15;28273:48;28088:240;:::o;28334:366::-;28476:3;28497:67;28561:2;28556:3;28497:67;:::i;:::-;28490:74;;28573:93;28662:3;28573:93;:::i;:::-;28691:2;28686:3;28682:12;28675:19;;28334:366;;;:::o;28706:419::-;28872:4;28910:2;28899:9;28895:18;28887:26;;28959:9;28953:4;28949:20;28945:1;28934:9;28930:17;28923:47;28987:131;29113:4;28987:131;:::i;:::-;28979:139;;28706:419;;;:::o;29131:169::-;29271:21;29267:1;29259:6;29255:14;29248:45;29131:169;:::o;29306:366::-;29448:3;29469:67;29533:2;29528:3;29469:67;:::i;:::-;29462:74;;29545:93;29634:3;29545:93;:::i;:::-;29663:2;29658:3;29654:12;29647:19;;29306:366;;;:::o;29678:419::-;29844:4;29882:2;29871:9;29867:18;29859:26;;29931:9;29925:4;29921:20;29917:1;29906:9;29902:17;29895:47;29959:131;30085:4;29959:131;:::i;:::-;29951:139;;29678:419;;;:::o;30103:241::-;30243:34;30239:1;30231:6;30227:14;30220:58;30312:24;30307:2;30299:6;30295:15;30288:49;30103:241;:::o;30350:366::-;30492:3;30513:67;30577:2;30572:3;30513:67;:::i;:::-;30506:74;;30589:93;30678:3;30589:93;:::i;:::-;30707:2;30702:3;30698:12;30691:19;;30350:366;;;:::o;30722:419::-;30888:4;30926:2;30915:9;30911:18;30903:26;;30975:9;30969:4;30965:20;30961:1;30950:9;30946:17;30939:47;31003:131;31129:4;31003:131;:::i;:::-;30995:139;;30722:419;;;:::o;31147:191::-;31187:4;31207:20;31225:1;31207:20;:::i;:::-;31202:25;;31241:20;31259:1;31241:20;:::i;:::-;31236:25;;31280:1;31277;31274:8;31271:34;;;31285:18;;:::i;:::-;31271:34;31330:1;31327;31323:9;31315:17;;31147:191;;;;:::o;31344:147::-;31445:11;31482:3;31467:18;;31344:147;;;;:::o;31497:114::-;;:::o;31617:398::-;31776:3;31797:83;31878:1;31873:3;31797:83;:::i;:::-;31790:90;;31889:93;31978:3;31889:93;:::i;:::-;32007:1;32002:3;31998:11;31991:18;;31617:398;;;:::o;32021:379::-;32205:3;32227:147;32370:3;32227:147;:::i;:::-;32220:154;;32391:3;32384:10;;32021:379;;;:::o;32406:220::-;32546:34;32542:1;32534:6;32530:14;32523:58;32615:3;32610:2;32602:6;32598:15;32591:28;32406:220;:::o;32632:366::-;32774:3;32795:67;32859:2;32854:3;32795:67;:::i;:::-;32788:74;;32871:93;32960:3;32871:93;:::i;:::-;32989:2;32984:3;32980:12;32973:19;;32632:366;;;:::o;33004:419::-;33170:4;33208:2;33197:9;33193:18;33185:26;;33257:9;33251:4;33247:20;33243:1;33232:9;33228:17;33221:47;33285:131;33411:4;33285:131;:::i;:::-;33277:139;;33004:419;;;:::o;33429:220::-;33569:34;33565:1;33557:6;33553:14;33546:58;33638:3;33633:2;33625:6;33621:15;33614:28;33429:220;:::o;33655:366::-;33797:3;33818:67;33882:2;33877:3;33818:67;:::i;:::-;33811:74;;33894:93;33983:3;33894:93;:::i;:::-;34012:2;34007:3;34003:12;33996:19;;33655:366;;;:::o;34027:419::-;34193:4;34231:2;34220:9;34216:18;34208:26;;34280:9;34274:4;34270:20;34266:1;34255:9;34251:17;34244:47;34308:131;34434:4;34308:131;:::i;:::-;34300:139;;34027:419;;;:::o;34452:143::-;34509:5;34540:6;34534:13;34525:22;;34556:33;34583:5;34556:33;:::i;:::-;34452:143;;;;:::o;34601:351::-;34671:6;34720:2;34708:9;34699:7;34695:23;34691:32;34688:119;;;34726:79;;:::i;:::-;34688:119;34846:1;34871:64;34927:7;34918:6;34907:9;34903:22;34871:64;:::i;:::-;34861:74;;34817:128;34601:351;;;;:::o;34958:85::-;35003:7;35032:5;35021:16;;34958:85;;;:::o;35049:158::-;35107:9;35140:61;35158:42;35167:32;35193:5;35167:32;:::i;:::-;35158:42;:::i;:::-;35140:61;:::i;:::-;35127:74;;35049:158;;;:::o;35213:147::-;35308:45;35347:5;35308:45;:::i;:::-;35303:3;35296:58;35213:147;;:::o;35366:114::-;35433:6;35467:5;35461:12;35451:22;;35366:114;;;:::o;35486:184::-;35585:11;35619:6;35614:3;35607:19;35659:4;35654:3;35650:14;35635:29;;35486:184;;;;:::o;35676:132::-;35743:4;35766:3;35758:11;;35796:4;35791:3;35787:14;35779:22;;35676:132;;;:::o;35814:108::-;35891:24;35909:5;35891:24;:::i;:::-;35886:3;35879:37;35814:108;;:::o;35928:179::-;35997:10;36018:46;36060:3;36052:6;36018:46;:::i;:::-;36096:4;36091:3;36087:14;36073:28;;35928:179;;;;:::o;36113:113::-;36183:4;36215;36210:3;36206:14;36198:22;;36113:113;;;:::o;36262:732::-;36381:3;36410:54;36458:5;36410:54;:::i;:::-;36480:86;36559:6;36554:3;36480:86;:::i;:::-;36473:93;;36590:56;36640:5;36590:56;:::i;:::-;36669:7;36700:1;36685:284;36710:6;36707:1;36704:13;36685:284;;;36786:6;36780:13;36813:63;36872:3;36857:13;36813:63;:::i;:::-;36806:70;;36899:60;36952:6;36899:60;:::i;:::-;36889:70;;36745:224;36732:1;36729;36725:9;36720:14;;36685:284;;;36689:14;36985:3;36978:10;;36386:608;;;36262:732;;;;:::o;37000:831::-;37263:4;37301:3;37290:9;37286:19;37278:27;;37315:71;37383:1;37372:9;37368:17;37359:6;37315:71;:::i;:::-;37396:80;37472:2;37461:9;37457:18;37448:6;37396:80;:::i;:::-;37523:9;37517:4;37513:20;37508:2;37497:9;37493:18;37486:48;37551:108;37654:4;37645:6;37551:108;:::i;:::-;37543:116;;37669:72;37737:2;37726:9;37722:18;37713:6;37669:72;:::i;:::-;37751:73;37819:3;37808:9;37804:19;37795:6;37751:73;:::i;:::-;37000:831;;;;;;;;:::o

Swarm Source

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